commit e908ab2355d3036f0750647476d0d7b62a3dbb54 Author: nitrogenoliquido <203537016+nitrogenoliquido@users.noreply.github.com> Date: Wed Oct 14 22:15:53 2026 -0500 added files. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5be2b4c --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# CMake build directories +build/ +bin/ +lib/ +out/ +CMakeSettings.json + +# Visual Studio files +.vs/ +*.user +*.suo +*.userosscache +*.sln.docstates +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Gradle and JVM files +.gradle/ +**/build/ +*.class +*.log + +# Eclipse / IDE metadata +.settings/ +.classpath +.project + +# Temporary / backup files +*.tmp +*.bak +*.swp +*~ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e3299b9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.15) +project(Slinky VERSION 1.0.0 LANGUAGES C CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + +if(MSVC) + add_compile_options(/W3 /utf-8 /MP) +endif() + +add_subdirectory(Slinky) +add_subdirectory(SlinkyNative) + +add_dependencies(Slinky SlinkyNative) diff --git a/README.md b/README.md new file mode 100644 index 0000000..84b509e --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +

+ Open Slinky Banner +
+ Open Slinky +
+ by Skid Solutions +

+ +--- + +

+ jak + hack + deobf2 + deobf +

+ +--- + +## How to build + +### Prerequisites +- **C++ Compiler**: Visual Studio 2019 / 2022 (MSVC with C++17 support) +- **CMake**: Version 3.15 or newer +- **Java Development Kit**: + - **JDK 17**: Required by Gradle to compile `SlinkyClient` + - **JDK 8**: Runtime environment for Minecraft 1.8.9 + +--- + +### 1. Building the Loader (`Slinky.exe` & `SlinkyNative.dll`) + +The loader and native injector DLL are configured as a unified CMake project: + +```powershell +cmake -B build -A x64 + +cmake --build build --config Release +``` + +Output binaries will be placed in `build/bin/Release/`: +- `Slinky.exe` +- `SlinkyNative.dll` + +--- + +### 2. Building the Client (`SlinkyClient`) + +The client is a standalone Gradle project using [Unimined](https://github.com/unimined/Unimined) to resolve Minecraft 1.8.9 dependencies and MCP mappings automatically: + +```powershell +cd SlinkyClient + +$env:JAVA_HOME = "C:\Program Files\Java\jdk-17" + +.\gradlew.bat clean build +``` + +Generated `SlinkyClient/build/libs/`: +- `Slinky-0.5.0-settings.jar` +- `Slinky-0.5.0-settings-sources.jar` diff --git a/Slinky/CMakeLists.txt b/Slinky/CMakeLists.txt new file mode 100644 index 0000000..47b92e3 --- /dev/null +++ b/Slinky/CMakeLists.txt @@ -0,0 +1,22 @@ +add_executable(Slinky + src/Main.cpp + src/Injector.cpp + src/ProcessUtil.cpp + src/ConsoleUI.cpp + Slinky.rc +) + +target_include_directories(Slinky PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +target_compile_definitions(Slinky PRIVATE + _CRT_SECURE_NO_WARNINGS + WIN32_LEAN_AND_MEAN +) + +set_target_properties(Slinky PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + OUTPUT_NAME "Slinky" +) diff --git a/Slinky/Slinky.rc b/Slinky/Slinky.rc new file mode 100644 index 0000000..8bc2070 --- /dev/null +++ b/Slinky/Slinky.rc @@ -0,0 +1,5 @@ +#include "include/Resource.h" + +#ifdef EMBED_BUNDLED_DLL +IDR_BUNDLED_DLL RCDATA "SlinkyNative.dll" +#endif diff --git a/Slinky/include/ConsoleUI.hpp b/Slinky/include/ConsoleUI.hpp new file mode 100644 index 0000000..76e00d0 --- /dev/null +++ b/Slinky/include/ConsoleUI.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include + +namespace Slinky { + +class ConsoleUI { +public: + static void Initialize(); + static void Shutdown(); + + static void PrintBanner(); + static void StartAnimation(); + static void StopAnimation(); + + static void SetStatusText(const char* text); + static void PrintError(const char* action, DWORD errorCode); + +private: + static DWORD WINAPI AnimationThread(LPVOID lpParam); + + static CRITICAL_SECTION s_CriticalSection; + static char s_StatusText[512]; + static std::atomic s_Running; + static HANDLE s_hAnimationThread; + static DWORD s_OriginalConsoleMode; + static HANDLE s_hConsole; +}; + +} // namespace Slinky diff --git a/Slinky/include/Injector.hpp b/Slinky/include/Injector.hpp new file mode 100644 index 0000000..c0a0549 --- /dev/null +++ b/Slinky/include/Injector.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +namespace Slinky { + +class Injector { +public: + static bool ExtractBundledDll(std::wstring& outDllPath, std::wstring& outLogPath); + static bool InjectDll(DWORD pid, const std::wstring& dllPath); + static bool MonitorStartup(DWORD pid, const std::wstring& logPath); +}; + +} // namespace Slinky diff --git a/Slinky/include/ProcessUtil.hpp b/Slinky/include/ProcessUtil.hpp new file mode 100644 index 0000000..8bbb173 --- /dev/null +++ b/Slinky/include/ProcessUtil.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include + +namespace Slinky { + +struct TargetWindow { + HWND hWnd = nullptr; + DWORD pid = 0; + std::wstring title; +}; + +class ProcessUtil { +public: + static std::vector GetJavaProcessIds(); + static std::vector FindMinecraftWindows(); + static bool IsModuleLoaded(DWORD pid, const wchar_t* moduleName); + static bool WaitForModuleLoad(DWORD pid, const wchar_t* moduleName, DWORD timeoutMs); +}; + +} // namespace Slinky diff --git a/Slinky/include/Resource.h b/Slinky/include/Resource.h new file mode 100644 index 0000000..b746c37 --- /dev/null +++ b/Slinky/include/Resource.h @@ -0,0 +1,3 @@ +#pragma once + +#define IDR_BUNDLED_DLL 200 diff --git a/Slinky/src/ConsoleUI.cpp b/Slinky/src/ConsoleUI.cpp new file mode 100644 index 0000000..ccf6dd3 --- /dev/null +++ b/Slinky/src/ConsoleUI.cpp @@ -0,0 +1,144 @@ +#include "ConsoleUI.hpp" +#include +#include + +namespace Slinky { + +CRITICAL_SECTION ConsoleUI::s_CriticalSection; +char ConsoleUI::s_StatusText[512] = { 0 }; +std::atomic ConsoleUI::s_Running(false); +HANDLE ConsoleUI::s_hAnimationThread = nullptr; +DWORD ConsoleUI::s_OriginalConsoleMode = 0; +HANDLE ConsoleUI::s_hConsole = INVALID_HANDLE_VALUE; + +void ConsoleUI::PrintBanner() { + const char* bannerLines[] = { + " _____ __ _ __", + " / ___// /__ (_)___/ /", + " \\__ \\/ //_// / __ / ", + " ___/ / ,< / / /_/ / ", + "/____/_/|_|/_/\\__,_/ ", + " _____ __ __ _ ", + " / ___/____ / /_ __/ /_(_)___ ____ _____", + " \\__ \\/ __ \\/ / / / / __/ / __ \\/ __ \\/ ___/", + " ___/ / /_/ / / /_/ / /_/ / /_/ / / / (__ ) ", + "/____/\\____/_/\\__,_/\\__/_/\\____/_/ /_/____/ " + }; + + for (size_t lineIdx = 0; lineIdx < 10; ++lineIdx) { + const char* line = bannerLines[lineIdx]; + size_t blockWidth = (lineIdx < 5) ? 24 : 45; + size_t len = strlen(line); + for (size_t i = 0; i < len; ++i) { + float ratio = (float)i / (float)(blockWidth - 1); + if (ratio > 1.0f) ratio = 1.0f; + int val = (int)(255 - ratio * 200.0f); + if (val < 45) val = 45; + printf("\x1b[38;2;%d;%d;%dm%c", val, val, val, line[i]); + } + printf("\x1b[0m\n"); + } + printf("\n"); + fflush(stdout); +} + +void ConsoleUI::Initialize() { + InitializeCriticalSection(&s_CriticalSection); + s_hConsole = GetStdHandle(STD_OUTPUT_HANDLE); + + if (s_hConsole != INVALID_HANDLE_VALUE) { + GetConsoleMode(s_hConsole, &s_OriginalConsoleMode); + SetConsoleMode(s_hConsole, s_OriginalConsoleMode | 0x0004); + } + + SetConsoleTitleW(L"Slinky"); + strcpy_s(s_StatusText, "SCANNING"); + + PrintBanner(); +} + +void ConsoleUI::Shutdown() { + StopAnimation(); + if (s_hConsole != INVALID_HANDLE_VALUE && s_OriginalConsoleMode != 0) { + SetConsoleMode(s_hConsole, s_OriginalConsoleMode); + } + DeleteCriticalSection(&s_CriticalSection); +} + +void ConsoleUI::SetStatusText(const char* text) { + EnterCriticalSection(&s_CriticalSection); + strncpy_s(s_StatusText, text, _TRUNCATE); + LeaveCriticalSection(&s_CriticalSection); +} + +void ConsoleUI::PrintError(const char* action, DWORD errorCode) { + wchar_t* msgBuf = nullptr; + FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + nullptr, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPWSTR)&msgBuf, 0, nullptr); + + char errorStr[512] = "unknown"; + if (msgBuf) { + WideCharToMultiByte(CP_UTF8, 0, msgBuf, -1, errorStr, 512, nullptr, nullptr); + LocalFree(msgBuf); + + size_t len = strlen(errorStr); + while (len > 0 && (errorStr[len - 1] == '\r' || errorStr[len - 1] == '\n')) { + errorStr[--len] = '\0'; + } + } + + EnterCriticalSection(&s_CriticalSection); + printf("\n[!] %s failed with error %lu: %s\n", action, errorCode, errorStr); + fflush(stdout); + LeaveCriticalSection(&s_CriticalSection); +} + +void ConsoleUI::StartAnimation() { + if (s_Running) return; + s_Running = true; + s_hAnimationThread = CreateThread(nullptr, 0, AnimationThread, nullptr, 0, nullptr); +} + +void ConsoleUI::StopAnimation() { + if (!s_Running) return; + s_Running = false; + if (s_hAnimationThread) { + WaitForSingleObject(s_hAnimationThread, 1000); + CloseHandle(s_hAnimationThread); + s_hAnimationThread = nullptr; + } + printf("\n"); + fflush(stdout); +} + +DWORD WINAPI ConsoleUI::AnimationThread(LPVOID lpParam) { + const char* spinner[] = { "-", "\\", "|", "/" }; + int frame = 0; + + while (s_Running) { + char currentStatus[512] = { 0 }; + EnterCriticalSection(&s_CriticalSection); + strncpy_s(currentStatus, s_StatusText, _TRUNCATE); + LeaveCriticalSection(&s_CriticalSection); + + printf("\r\x1b[2K [%s] %s", spinner[frame % 4], currentStatus); + fflush(stdout); + + frame++; + Sleep(160); + } + + char finalStatus[512] = { 0 }; + EnterCriticalSection(&s_CriticalSection); + strncpy_s(finalStatus, s_StatusText, _TRUNCATE); + LeaveCriticalSection(&s_CriticalSection); + + printf("\r\x1b[2K [+] %s\n", finalStatus); + fflush(stdout); + + return 0; +} + +} // namespace Slinky diff --git a/Slinky/src/Injector.cpp b/Slinky/src/Injector.cpp new file mode 100644 index 0000000..4171a76 --- /dev/null +++ b/Slinky/src/Injector.cpp @@ -0,0 +1,201 @@ +#include "Injector.hpp" +#include "ProcessUtil.hpp" +#include "ConsoleUI.hpp" +#include "Resource.h" +#include +#include + +namespace Slinky { + +bool Injector::ExtractBundledDll(std::wstring& outDllPath, std::wstring& outLogPath) { + wchar_t tempPath[MAX_PATH] = { 0 }; + if (!GetTempPathW(MAX_PATH, tempPath)) { + ConsoleUI::PrintError("Finding temp folder", GetLastError()); + return false; + } + + wchar_t slinkyTempDir[MAX_PATH] = { 0 }; + swprintf_s(slinkyTempDir, L"%lsslinky-%lu", tempPath, GetCurrentProcessId()); + + if (!CreateDirectoryW(slinkyTempDir, nullptr) && GetLastError() != ERROR_ALREADY_EXISTS) { + ConsoleUI::PrintError("Creating temp folder", GetLastError()); + return false; + } + + outDllPath = std::wstring(slinkyTempDir) + L"\\SlinkyNative.dll"; + outLogPath = std::wstring(slinkyTempDir) + L"\\slinky-native.log"; + + DeleteFileW(outLogPath.c_str()); + + HRSRC hRes = FindResourceW(nullptr, MAKEINTRESOURCEW(IDR_BUNDLED_DLL), (LPCWSTR)10); + if (hRes) { + DWORD resSize = SizeofResource(nullptr, hRes); + HGLOBAL hLoad = LoadResource(nullptr, hRes); + if (hLoad && resSize > 0) { + const void* pData = LockResource(hLoad); + if (pData) { + HANDLE hFile = CreateFileW(outDllPath.c_str(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + if (hFile != INVALID_HANDLE_VALUE) { + DWORD written = 0; + WriteFile(hFile, pData, resSize, &written, nullptr); + CloseHandle(hFile); + return true; + } + } + } + } + + wchar_t exePath[MAX_PATH] = { 0 }; + if (GetModuleFileNameW(nullptr, exePath, MAX_PATH) > 0) { + wchar_t* lastSlash = wcsrchr(exePath, L'\\'); + if (lastSlash) { + *lastSlash = L'\0'; + std::wstring localDll = std::wstring(exePath) + L"\\SlinkyNative.dll"; + if (GetFileAttributesW(localDll.c_str()) != INVALID_FILE_ATTRIBUTES) { + if (CopyFileW(localDll.c_str(), outDllPath.c_str(), FALSE)) { + return true; + } + outDllPath = localDll; + outLogPath = std::wstring(exePath) + L"\\slinky-native.log"; + DeleteFileW(outLogPath.c_str()); + return true; + } + } + } + + ConsoleUI::SetStatusText("Could not extract bundled DLL."); + ConsoleUI::PrintError("Reading bundled DLL", ERROR_FILE_NOT_FOUND); + return false; +} + +bool Injector::InjectDll(DWORD pid, const std::wstring& dllPath) { + if (ProcessUtil::IsModuleLoaded(pid, L"SlinkyNative.dll")) { + ConsoleUI::SetStatusText("DLL already loaded."); + return true; + } + + ConsoleUI::SetStatusText("Opening game process"); + HANDLE hProcess = OpenProcess( + PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, + FALSE, pid); + + if (!hProcess) { + ConsoleUI::PrintError("OpenProcess", GetLastError()); + return false; + } + + ConsoleUI::SetStatusText("Allocating DLL path in game"); + SIZE_T pathSizeBytes = (dllPath.length() + 1) * sizeof(wchar_t); + LPVOID pRemotePath = VirtualAllocEx(hProcess, nullptr, pathSizeBytes, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + + if (!pRemotePath) { + ConsoleUI::PrintError("Allocating DLL path in game", GetLastError()); + CloseHandle(hProcess); + return false; + } + + ConsoleUI::SetStatusText("Copying DLL path into game"); + if (!WriteProcessMemory(hProcess, pRemotePath, dllPath.c_str(), pathSizeBytes, nullptr)) { + ConsoleUI::PrintError("Copying DLL path into game", GetLastError()); + VirtualFreeEx(hProcess, pRemotePath, 0, MEM_RELEASE); + CloseHandle(hProcess); + return false; + } + + ConsoleUI::SetStatusText("Finding Windows DLL loader"); + HMODULE hKernel32 = GetModuleHandleW(L"kernel32.dll"); + LPTHREAD_START_ROUTINE pLoadLibraryW = (LPTHREAD_START_ROUTINE)GetProcAddress(hKernel32, "LoadLibraryW"); + + if (!pLoadLibraryW) { + ConsoleUI::PrintError("Finding Windows DLL loader", GetLastError()); + VirtualFreeEx(hProcess, pRemotePath, 0, MEM_RELEASE); + CloseHandle(hProcess); + return false; + } + + ConsoleUI::SetStatusText("Starting DLL loader in game"); + HANDLE hThread = CreateRemoteThread(hProcess, nullptr, 0, pLoadLibraryW, pRemotePath, 0, nullptr); + if (!hThread) { + ConsoleUI::PrintError("Starting DLL loader in game", GetLastError()); + VirtualFreeEx(hProcess, pRemotePath, 0, MEM_RELEASE); + CloseHandle(hProcess); + return false; + } + + ConsoleUI::SetStatusText("Reading DLL loader result"); + DWORD waitRes = WaitForSingleObject(hThread, 30000); + if (waitRes != WAIT_OBJECT_0) { + ConsoleUI::SetStatusText("Game did not finish loading the DLL."); + CloseHandle(hThread); + VirtualFreeEx(hProcess, pRemotePath, 0, MEM_RELEASE); + CloseHandle(hProcess); + return false; + } + + DWORD dwExitCode = 0; + GetExitCodeThread(hThread, &dwExitCode); + CloseHandle(hThread); + VirtualFreeEx(hProcess, pRemotePath, 0, MEM_RELEASE); + CloseHandle(hProcess); + + if (!ProcessUtil::WaitForModuleLoad(pid, L"SlinkyNative.dll", 5000)) { + ConsoleUI::SetStatusText("DLL not in game after load attempt."); + return false; + } + + ConsoleUI::SetStatusText("Injected successfully"); + return true; +} + +bool Injector::MonitorStartup(DWORD pid, const std::wstring& logPath) { + HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, pid); + + ConsoleUI::SetStatusText("Still loading..."); + DWORD startTime = GetTickCount(); + const DWORD timeoutMs = 30000; + + while (GetTickCount() - startTime < timeoutMs) { + if (hProcess && WaitForSingleObject(hProcess, 0) == WAIT_OBJECT_0) { + ConsoleUI::SetStatusText("Game process closed before startup finished."); + CloseHandle(hProcess); + return false; + } + + FILE* fp = nullptr; + if (_wfopen_s(&fp, logPath.c_str(), L"r, ccs=UTF-8") == 0 && fp) { + wchar_t line[1024]; + while (fgetws(line, 1024, fp)) { + if (wcsstr(line, L"FINAL STATUS: RUNNING")) { + ConsoleUI::SetStatusText("Press Right Shift in Minecraft."); + fclose(fp); + if (hProcess) CloseHandle(hProcess); + return true; + } else if (wcsstr(line, L"FINAL STATUS: RELOADED")) { + ConsoleUI::SetStatusText("Slinky reloaded. Press Right Shift."); + fclose(fp); + if (hProcess) CloseHandle(hProcess); + return true; + } else if (wcsstr(line, L"FINAL STATUS: ALREADY_RUNNING")) { + ConsoleUI::SetStatusText("Already running. Unload from menu first."); + fclose(fp); + if (hProcess) CloseHandle(hProcess); + return false; + } else if (wcsstr(line, L"FINAL STATUS: FAILED")) { + ConsoleUI::SetStatusText("Slinky could not start."); + fclose(fp); + if (hProcess) CloseHandle(hProcess); + return false; + } + } + fclose(fp); + } + + Sleep(150); + } + + if (hProcess) CloseHandle(hProcess); + ConsoleUI::SetStatusText("DLL loaded but Slinky never confirmed startup."); + return false; +} + +} // namespace Slinky diff --git a/Slinky/src/Main.cpp b/Slinky/src/Main.cpp new file mode 100644 index 0000000..f69b5a6 --- /dev/null +++ b/Slinky/src/Main.cpp @@ -0,0 +1,80 @@ +#include +#include "ConsoleUI.hpp" +#include "Injector.hpp" +#include "ProcessUtil.hpp" +#include +#include + +using namespace Slinky; + +int main() { + ConsoleUI::Initialize(); + ConsoleUI::StartAnimation(); + + ConsoleUI::SetStatusText("Finding bundled DLL"); + std::wstring dllPath; + std::wstring logPath; + + if (!Injector::ExtractBundledDll(dllPath, logPath)) { + Sleep(2500); + ConsoleUI::StopAnimation(); + ConsoleUI::Shutdown(); + return 1; + } + + ConsoleUI::SetStatusText("SCANNING"); + + DWORD startWait = GetTickCount(); + const DWORD timeoutWait = 180000; + std::vector windows; + int dotCount = 0; + + while (GetTickCount() - startWait < timeoutWait) { + windows = ProcessUtil::FindMinecraftWindows(); + if (!windows.empty()) { + break; + } + + const char* dots[] = { "", ".", "..", "..." }; + char waitMsg[64]; + sprintf_s(waitMsg, "Waiting for Minecraft%s", dots[dotCount % 4]); + ConsoleUI::SetStatusText(waitMsg); + dotCount++; + + Sleep(500); + } + + if (windows.empty()) { + ConsoleUI::SetStatusText("Minecraft not found after 3 minutes."); + Sleep(3000); + ConsoleUI::StopAnimation(); + ConsoleUI::Shutdown(); + return 1; + } + + TargetWindow target = windows[0]; + + char foundMsg[256]; + char titleUtf8[256] = { 0 }; + WideCharToMultiByte(CP_UTF8, 0, target.title.c_str(), -1, titleUtf8, 256, nullptr, nullptr); + sprintf_s(foundMsg, "Found Minecraft %s", titleUtf8); + ConsoleUI::SetStatusText(foundMsg); + + Sleep(500); + + ConsoleUI::SetStatusText("INJECTING ..."); + if (!Injector::InjectDll(target.pid, dllPath)) { + Sleep(3000); + ConsoleUI::StopAnimation(); + ConsoleUI::Shutdown(); + return 1; + } + + bool success = Injector::MonitorStartup(target.pid, logPath); + + Sleep(3000); + ConsoleUI::StopAnimation(); + ConsoleUI::Shutdown(); + + return success ? 0 : 1; +} diff --git a/Slinky/src/ProcessUtil.cpp b/Slinky/src/ProcessUtil.cpp new file mode 100644 index 0000000..f9a387a --- /dev/null +++ b/Slinky/src/ProcessUtil.cpp @@ -0,0 +1,100 @@ +#include "ProcessUtil.hpp" +#include +#include + +namespace Slinky { + +std::vector ProcessUtil::GetJavaProcessIds() { + std::vector pids; + HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); + if (hSnap == INVALID_HANDLE_VALUE) return pids; + + PROCESSENTRY32W pe; + pe.dwSize = sizeof(pe); + + if (Process32FirstW(hSnap, &pe)) { + do { + if (_wcsicmp(pe.szExeFile, L"javaw.exe") == 0 || + _wcsicmp(pe.szExeFile, L"java.exe") == 0) + { + pids.push_back(pe.th32ProcessID); + } + } while (Process32NextW(hSnap, &pe)); + } + + CloseHandle(hSnap); + return pids; +} + +struct EnumData { + std::vector javaPids; + std::vector windows; +}; + +static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) { + if (!IsWindowVisible(hWnd)) return TRUE; + if (GetWindowTextLengthW(hWnd) == 0) return TRUE; + + DWORD pid = 0; + GetWindowThreadProcessId(hWnd, &pid); + + EnumData* data = (EnumData*)lParam; + if (std::find(data->javaPids.begin(), data->javaPids.end(), pid) == data->javaPids.end()) { + return TRUE; + } + + wchar_t titleBuf[512] = { 0 }; + if (GetWindowTextW(hWnd, titleBuf, 512) > 0) { + TargetWindow tw; + tw.hWnd = hWnd; + tw.pid = pid; + tw.title = titleBuf; + data->windows.push_back(tw); + } + + return TRUE; +} + +std::vector ProcessUtil::FindMinecraftWindows() { + EnumData data; + data.javaPids = GetJavaProcessIds(); + if (data.javaPids.empty()) return {}; + + EnumWindows(EnumWindowsProc, (LPARAM)&data); + return data.windows; +} + +bool ProcessUtil::IsModuleLoaded(DWORD pid, const wchar_t* moduleName) { + HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pid); + if (hSnap == INVALID_HANDLE_VALUE) return false; + + MODULEENTRY32W me; + me.dwSize = sizeof(me); + + bool found = false; + if (Module32FirstW(hSnap, &me)) { + do { + if (_wcsicmp(me.szModule, moduleName) == 0 || + wcsstr(me.szExePath, moduleName) != nullptr) + { + found = true; + break; + } + } while (Module32NextW(hSnap, &me)); + } + + CloseHandle(hSnap); + return found; +} + +bool ProcessUtil::WaitForModuleLoad(DWORD pid, const wchar_t* moduleName, DWORD timeoutMs) { + DWORD elapsed = 0; + while (elapsed < timeoutMs) { + if (IsModuleLoaded(pid, moduleName)) return true; + Sleep(50); + elapsed += 50; + } + return false; +} + +} // namespace Slinky diff --git a/SlinkyClient/.editorconfig b/SlinkyClient/.editorconfig new file mode 100644 index 0000000..581389f --- /dev/null +++ b/SlinkyClient/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true + +[*.java] +indent_style = space +indent_size = 3 + +[*.gradle] +indent_style = space +indent_size = 4 diff --git a/SlinkyClient/.gitattributes b/SlinkyClient/.gitattributes new file mode 100644 index 0000000..1a5ec39 --- /dev/null +++ b/SlinkyClient/.gitattributes @@ -0,0 +1,9 @@ +* text=auto +*.java text eol=lf +*.gradle text eol=lf +*.md text eol=lf +gradlew text eol=lf +gradlew.bat text eol=crlf +*.jar binary +*.ttf binary +*.bin binary diff --git a/SlinkyClient/.gitignore b/SlinkyClient/.gitignore new file mode 100644 index 0000000..7f67f57 --- /dev/null +++ b/SlinkyClient/.gitignore @@ -0,0 +1,14 @@ +.gradle/ +.unimined/ +build/ +out/ +run/ +.idea/ +*.iml +*.ipr +*.iws +bin/ +.classpath +.project +.settings/ +.vscode/ diff --git a/SlinkyClient/README.md b/SlinkyClient/README.md new file mode 100644 index 0000000..e29f84b --- /dev/null +++ b/SlinkyClient/README.md @@ -0,0 +1,31 @@ +# Slinky + +Open this folder as a Gradle project. Set the project's SDK and **Gradle JVM to JDK 17**, and use the included Gradle wrapper. [Unimined](https://github.com/unimined/Unimined/tree/lts/1.4) resolves the Forge 1.8.9 SDK and MCP stable 22 mappings automatically; no local Minecraft jar or hand-written IDE classpath is needed. + +Build and verify on Windows: + +```powershell +.\gradlew.bat clean build +``` + +On macOS/Linux, run `bash ./gradlew clean build`. Gradle's daemon and compiler are pinned to JDK 17; the build emits Java 8 compatible bytecode for Minecraft 1.8.9. `build` includes a headless smoke check for module registration, configuration JSON, and injected class references. Run it separately with `gradlew.bat smokeCheck`. + +The named development jar and sources jar are written to `build/libs/`. This is an injection payload, whose entry point is `dev.slinky.inject.Bootstrap.start(namespace, payloadPath)`. The native injector is not included; the jar is not an automatically loaded Forge mod. Runtime mappings remain in `mappings/srg.txt` and `mappings/official.txt`. + +Source packages follow their responsibilities: + +- `module`: registry and lifecycle; implementations in `combat`, `movement`, `render`, `world`, and `utility`; catalog metadata in `catalog`. Implementation groups follow the catalog's GUI categories, with source categories for the two source-only modules. +- `client.input`, `client.event`, `client.command`: input routing, event bridge, and commands. +- `client.gui`: screens and widgets, with `settings` and `profile` subpackages. +- `client.render`: shared drawing operations, with `canvas`, `font`, `hook`, `text`, and `world` subpackages. +- `client.action`, `client.inventory`, `client.packet`, `client.placement`, `client.rotation`, `client.target`: gameplay services. +- `config`: persistence and module serialization; the JSON engine is in `config.json`. +- `inject`: bootstrap, reflection, runtime mappings, and bytecode transformation. +- `setting`: setting types. `shaded.asm`: bundled bytecode library. + +Recovered arithmetic, configuration keys, resource paths, and module IDs are preserved. `SOURCE-REPAIRS.txt` and `STRUCTURAL-COMPARISON.json` describe the original source recovery before this reorganization. + +Srced by 1113716173461266492(brboy) & 1479899069655547956(xMqrO) +nothing-ever-happens-nothing + +https://discord.gg/XzQHeUFcY9 diff --git a/SlinkyClient/build.gradle b/SlinkyClient/build.gradle new file mode 100644 index 0000000..18a2ff8 --- /dev/null +++ b/SlinkyClient/build.gradle @@ -0,0 +1,69 @@ +plugins { + id 'java' + id 'idea' + id 'eclipse' + id 'xyz.wagyourtail.unimined' version '1.4.1' +} + +group = 'dev.slinky' +version = '0.5.0-settings' + +java { + toolchain.languageVersion = JavaLanguageVersion.of(17) + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + withSourcesJar() +} + +repositories { + mavenCentral() +} + +unimined.minecraft { + version '1.8.9' + mappings { + searge() + mcp('stable', '22-1.8.9') + } + minecraftForge { + loader '11.15.1.2318-1.8.9' + } + defaultRemapJar = false + runs.off = true +} + +configurations.compileOnly { + extendsFrom configurations.minecraft, configurations.minecraftLibraries + transitive = false +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' + options.release = 8 +} + +idea.module { + downloadSources = true +} + +eclipse { + jdt.javaRuntimeName = 'JavaSE-17' + classpath.downloadSources = true +} + +sourceSets.test { + compileClasspath += sourceSets.main.compileClasspath + runtimeClasspath += sourceSets.main.runtimeClasspath +} + +tasks.register('smokeCheck', JavaExec) { + group = 'verification' + description = 'Checks module registration, configuration JSON, and injected class references.' + dependsOn testClasses + classpath = sourceSets.test.runtimeClasspath + mainClass = 'dev.slinky.ProjectSmokeTest' + javaLauncher = javaToolchains.launcherFor(java.toolchain) + enableAssertions = true +} + +check.dependsOn smokeCheck diff --git a/SlinkyClient/gradle.properties b/SlinkyClient/gradle.properties new file mode 100644 index 0000000..6ca9d02 --- /dev/null +++ b/SlinkyClient/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx2G -Dfile.encoding=UTF-8 diff --git a/SlinkyClient/gradle/gradle-daemon-jvm.properties b/SlinkyClient/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..858feb7 --- /dev/null +++ b/SlinkyClient/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,2 @@ +#This file is generated by updateDaemonJvm +toolchainVersion=17 diff --git a/SlinkyClient/gradle/wrapper/gradle-wrapper.jar b/SlinkyClient/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..a4b76b9 Binary files /dev/null and b/SlinkyClient/gradle/wrapper/gradle-wrapper.jar differ diff --git a/SlinkyClient/gradle/wrapper/gradle-wrapper.properties b/SlinkyClient/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..3871bcf --- /dev/null +++ b/SlinkyClient/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,8 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 diff --git a/SlinkyClient/gradlew b/SlinkyClient/gradlew new file mode 100644 index 0000000..f5feea6 --- /dev/null +++ b/SlinkyClient/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/SlinkyClient/gradlew.bat b/SlinkyClient/gradlew.bat new file mode 100644 index 0000000..9d21a21 --- /dev/null +++ b/SlinkyClient/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/SlinkyClient/mappings/official.txt b/SlinkyClient/mappings/official.txt new file mode 100644 index 0000000..d41a994 --- /dev/null +++ b/SlinkyClient/mappings/official.txt @@ -0,0 +1,20729 @@ +CL net/minecraft/util/EnumChatFormatting a +CL net/minecraft/crash/CrashReport b +CL net/minecraft/crash/CrashReport$1 b$1 +CL net/minecraft/crash/CrashReport$2 b$2 +CL net/minecraft/crash/CrashReport$3 b$3 +CL net/minecraft/crash/CrashReport$4 b$4 +CL net/minecraft/crash/CrashReport$5 b$5 +CL net/minecraft/crash/CrashReport$6 b$6 +CL net/minecraft/crash/CrashReport$7 b$7 +CL net/minecraft/crash/CrashReportCategory c +CL net/minecraft/crash/CrashReportCategory$1 c$1 +CL net/minecraft/crash/CrashReportCategory$2 c$2 +CL net/minecraft/crash/CrashReportCategory$3 c$3 +CL net/minecraft/crash/CrashReportCategory$6 c$6 +CL net/minecraft/crash/CrashReportCategory$7 c$7 +CL net/minecraft/crash/CrashReportCategory$Entry c$a +CL net/minecraft/util/ReportedException e +CL net/minecraft/util/ChatAllowedCharacters f +CL net/minecraft/util/Util g +CL net/minecraft/util/Util$EnumOS g$a +CL net/minecraft/command/IAdminCommand h +CL net/minecraft/command/CommandBase i +CL net/minecraft/command/CommandBase$CoordinateArg i$a +CL net/minecraft/command/CommandHandler j +CL net/minecraft/command/ICommand k +CL net/minecraft/command/ICommandManager l +CL net/minecraft/command/ICommandSender m +CL net/minecraft/command/CommandResultStats n +CL net/minecraft/command/CommandResultStats$1 n$1 +CL net/minecraft/command/CommandResultStats$Type n$a +CL net/minecraft/command/PlayerSelector o +CL net/minecraft/command/PlayerSelector$1 o$1 +CL net/minecraft/command/PlayerSelector$2 o$2 +CL net/minecraft/command/PlayerSelector$3 o$3 +CL net/minecraft/command/PlayerSelector$4 o$4 +CL net/minecraft/command/PlayerSelector$5 o$5 +CL net/minecraft/command/PlayerSelector$6 o$6 +CL net/minecraft/command/PlayerSelector$7 o$7 +CL net/minecraft/command/PlayerSelector$8 o$8 +CL net/minecraft/command/PlayerSelector$9 o$9 +CL net/minecraft/command/PlayerSelector$10 o$10 +CL net/minecraft/command/PlayerSelector$11 o$11 +CL net/minecraft/command/PlayerSelector$12 o$12 +CL net/minecraft/command/server/CommandAchievement p +CL net/minecraft/command/server/CommandAchievement$1 p$1 +CL net/minecraft/command/server/CommandBanIp q +CL net/minecraft/command/server/CommandBanPlayer r +CL net/minecraft/command/CommandBlockData s +CL net/minecraft/command/CommandClearInventory t +CL net/minecraft/command/CommandClone u +CL net/minecraft/command/CommandClone$StaticCloneData u$a +CL net/minecraft/command/CommandCompare v +CL net/minecraft/command/server/CommandDeOp w +CL net/minecraft/command/CommandDebug x +CL net/minecraft/command/CommandDefaultGameMode y +CL net/minecraft/command/CommandEffect z +CL net/minecraft/command/server/CommandEmote aa +CL net/minecraft/command/CommandEnchant ab +CL net/minecraft/command/CommandEntityData ac +CL net/minecraft/command/CommandExecuteAt ad +CL net/minecraft/command/CommandExecuteAt$1 ad$1 +CL net/minecraft/command/CommandXP ae +CL net/minecraft/command/CommandFill af +CL net/minecraft/command/CommandDifficulty ag +CL net/minecraft/command/CommandGameMode ah +CL net/minecraft/command/CommandGameRule ai +CL net/minecraft/command/CommandGive aj +CL net/minecraft/command/CommandHelp ak +CL net/minecraft/command/CommandServerKick al +CL net/minecraft/command/CommandKill am +CL net/minecraft/command/server/CommandListBans an +CL net/minecraft/command/server/CommandListPlayers ao +CL net/minecraft/command/server/CommandMessage ap +CL net/minecraft/command/server/CommandMessageRaw aq +CL net/minecraft/command/server/CommandOp ar +CL net/minecraft/command/server/CommandPardonIp as +CL net/minecraft/command/server/CommandPardonPlayer at +CL net/minecraft/command/CommandParticle au +CL net/minecraft/command/CommandPlaySound av +CL net/minecraft/command/server/CommandPublishLocalServer aw +CL net/minecraft/command/CommandReplaceItem ax +CL net/minecraft/command/server/CommandSaveAll ay +CL net/minecraft/command/server/CommandSaveOff az +CL net/minecraft/command/server/CommandSaveOn ba +CL net/minecraft/command/server/CommandBroadcast bb +CL net/minecraft/command/server/CommandScoreboard bc +CL net/minecraft/command/ServerCommandManager bd +CL net/minecraft/command/server/CommandSetBlock be +CL net/minecraft/command/server/CommandSetDefaultSpawnpoint bf +CL net/minecraft/command/CommandSetPlayerTimeout bg +CL net/minecraft/command/CommandSetSpawnpoint bh +CL net/minecraft/command/CommandShowSeed bi +CL net/minecraft/command/CommandSpreadPlayers bj +CL net/minecraft/command/CommandSpreadPlayers$Position bj$a +CL net/minecraft/command/CommandStats bk +CL net/minecraft/command/server/CommandStop bl +CL net/minecraft/command/server/CommandSummon bm +CL net/minecraft/command/server/CommandTeleport bn +CL net/minecraft/command/server/CommandTestForBlock bp +CL net/minecraft/command/server/CommandTestFor bq +CL net/minecraft/command/CommandTime br +CL net/minecraft/command/CommandTitle bs +CL net/minecraft/command/CommandToggleDownfall bt +CL net/minecraft/command/CommandTrigger bu +CL net/minecraft/command/CommandWeather bv +CL net/minecraft/command/server/CommandWhitelist bw +CL net/minecraft/command/CommandWorldBorder bx +CL net/minecraft/command/CommandException bz +CL net/minecraft/command/EntityNotFoundException ca +CL net/minecraft/command/NumberInvalidException cb +CL net/minecraft/command/SyntaxErrorException cc +CL net/minecraft/command/PlayerNotFoundException cd +CL net/minecraft/command/CommandNotFoundException ce +CL net/minecraft/command/WrongUsageException cf +CL net/minecraft/util/BlockPos cj +CL net/minecraft/util/BlockPos$1 cj$1 +CL net/minecraft/util/BlockPos$1$1 cj$1$1 +CL net/minecraft/util/BlockPos$2 cj$2 +CL net/minecraft/util/BlockPos$2$1 cj$2$1 +CL net/minecraft/util/BlockPos$MutableBlockPos cj$a +CL net/minecraft/dispenser/IBlockSource ck +CL net/minecraft/block/BlockSourceImpl cl +CL net/minecraft/util/Cartesian cm +CL net/minecraft/util/Cartesian$1 cm$1 +CL net/minecraft/util/Cartesian$GetList cm$a +CL net/minecraft/util/Cartesian$Product cm$b +CL net/minecraft/util/Cartesian$Product$ProductIterator cm$b$a +CL net/minecraft/dispenser/BehaviorDefaultDispenseItem cn +CL net/minecraft/util/RegistryNamespacedDefaultedByKey co +CL net/minecraft/util/RegistryDefaulted cp +CL net/minecraft/util/EnumFacing cq +CL net/minecraft/util/EnumFacing$1 cq$1 +CL net/minecraft/util/EnumFacing$Axis cq$a +CL net/minecraft/util/EnumFacing$AxisDirection cq$b +CL net/minecraft/util/EnumFacing$Plane cq$c +CL net/minecraft/dispenser/IBehaviorDispenseItem cr +CL net/minecraft/dispenser/IBehaviorDispenseItem$1 cr$1 +CL net/minecraft/util/IObjectIntIterable cs +CL net/minecraft/util/ObjectIntIdentityMap ct +CL net/minecraft/dispenser/ILocatableSource cu +CL net/minecraft/dispenser/ILocation cv +CL net/minecraft/util/MapPopulator cw +CL net/minecraft/util/RegistryNamespaced cx +CL net/minecraft/util/EnumParticleTypes cy +CL net/minecraft/dispenser/IPosition cz +CL net/minecraft/dispenser/PositionImpl da +CL net/minecraft/util/IRegistry db +CL net/minecraft/util/Rotations dc +CL net/minecraft/util/RegistrySimple dd +CL net/minecraft/util/Vec3i df +CL net/minecraft/util/StatCollector di +CL net/minecraft/util/StringTranslate dj +CL net/minecraft/nbt/NBTTagByteArray dl +CL net/minecraft/nbt/NBTTagByte dm +CL net/minecraft/nbt/NBTTagCompound dn +CL net/minecraft/nbt/NBTTagCompound$1 dn$1 +CL net/minecraft/nbt/NBTTagCompound$2 dn$2 +CL net/minecraft/nbt/NBTTagDouble dp +CL net/minecraft/nbt/NBTTagEnd dq +CL net/minecraft/nbt/NBTTagFloat dr +CL net/minecraft/nbt/NBTTagIntArray ds +CL net/minecraft/nbt/NBTTagInt dt +CL net/minecraft/nbt/NBTTagList du +CL net/minecraft/nbt/NBTTagLong dv +CL net/minecraft/nbt/NBTSizeTracker dw +CL net/minecraft/nbt/NBTSizeTracker$1 dw$1 +CL net/minecraft/nbt/CompressedStreamTools dx +CL net/minecraft/nbt/NBTUtil dy +CL net/minecraft/nbt/NBTTagShort dz +CL net/minecraft/nbt/NBTTagString ea +CL net/minecraft/nbt/NBTBase eb +CL net/minecraft/nbt/NBTBase$NBTPrimitive eb$a +CL net/minecraft/nbt/NBTException ec +CL net/minecraft/nbt/JsonToNBT ed +CL net/minecraft/nbt/JsonToNBT$Any ed$a +CL net/minecraft/nbt/JsonToNBT$Compound ed$b +CL net/minecraft/nbt/JsonToNBT$List ed$c +CL net/minecraft/nbt/JsonToNBT$Primitive ed$d +CL net/minecraft/network/NettyEncryptionTranslator ef +CL net/minecraft/network/NettyEncryptingDecoder eg +CL net/minecraft/network/NettyEncryptingEncoder eh +CL net/minecraft/network/NettyCompressionDecoder ei +CL net/minecraft/network/NettyCompressionEncoder ej +CL net/minecraft/network/NetworkManager ek +CL net/minecraft/network/NetworkManager$1 ek$1 +CL net/minecraft/network/NetworkManager$2 ek$2 +CL net/minecraft/network/NetworkManager$3 ek$3 +CL net/minecraft/network/NetworkManager$4 ek$4 +CL net/minecraft/network/NetworkManager$5 ek$5 +CL net/minecraft/network/NetworkManager$6 ek$6 +CL net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener ek$a +CL net/minecraft/network/EnumConnectionState el +CL net/minecraft/network/EnumConnectionState$1 el$1 +CL net/minecraft/network/EnumConnectionState$2 el$2 +CL net/minecraft/network/EnumConnectionState$3 el$3 +CL net/minecraft/network/EnumConnectionState$4 el$4 +CL net/minecraft/network/PacketBuffer em +CL net/minecraft/util/MessageDeserializer en +CL net/minecraft/util/MessageSerializer eo +CL net/minecraft/network/INetHandler ep +CL net/minecraft/util/MessageDeserializer2 eq +CL net/minecraft/util/MessageSerializer2 er +CL net/minecraft/util/ChatComponentStyle es +CL net/minecraft/util/ChatComponentStyle$1 es$1 +CL net/minecraft/util/ChatComponentStyle$2 es$2 +CL net/minecraft/event/ClickEvent et +CL net/minecraft/event/ClickEvent$Action et$a +CL net/minecraft/util/IChatComponent eu +CL net/minecraft/util/IChatComponent$Serializer eu$a +CL net/minecraft/util/ChatComponentProcessor ev +CL net/minecraft/event/HoverEvent ew +CL net/minecraft/event/HoverEvent$Action ew$a +CL net/minecraft/util/ChatComponentScore ex +CL net/minecraft/util/ChatComponentSelector ey +CL net/minecraft/util/ChatStyle ez +CL net/minecraft/util/ChatStyle$1 ez$1 +CL net/minecraft/util/ChatStyle$Serializer ez$a +CL net/minecraft/util/ChatComponentText fa +CL net/minecraft/util/ChatComponentTranslation fb +CL net/minecraft/util/ChatComponentTranslationFormatException fc +CL net/minecraft/network/Packet ff +CL net/minecraft/network/EnumPacketDirection fg +CL net/minecraft/network/PacketThreadUtil fh +CL net/minecraft/network/PacketThreadUtil$1 fh$1 +CL net/minecraft/network/play/server/S08PacketPlayerPosLook fi +CL net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags fi$a +CL net/minecraft/network/play/INetHandlerPlayClient fj +CL net/minecraft/network/play/server/S0EPacketSpawnObject fk +CL net/minecraft/network/play/server/S11PacketSpawnExperienceOrb fl +CL net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity fm +CL net/minecraft/network/play/server/S0FPacketSpawnMob fn +CL net/minecraft/network/play/server/S10PacketSpawnPainting fo +CL net/minecraft/network/play/server/S0CPacketSpawnPlayer fp +CL net/minecraft/network/play/server/S0BPacketAnimation fq +CL net/minecraft/network/play/server/S37PacketStatistics fr +CL net/minecraft/network/play/server/S25PacketBlockBreakAnim fs +CL net/minecraft/network/play/server/S35PacketUpdateTileEntity ft +CL net/minecraft/network/play/server/S24PacketBlockAction fu +CL net/minecraft/network/play/server/S23PacketBlockChange fv +CL net/minecraft/network/play/server/S41PacketServerDifficulty fw +CL net/minecraft/network/play/server/S3APacketTabComplete fx +CL net/minecraft/network/play/server/S02PacketChat fy +CL net/minecraft/network/play/server/S22PacketMultiBlockChange fz +CL net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData fz$a +CL net/minecraft/network/play/server/S32PacketConfirmTransaction ga +CL net/minecraft/network/play/server/S2EPacketCloseWindow gb +CL net/minecraft/network/play/server/S2DPacketOpenWindow gc +CL net/minecraft/network/play/server/S30PacketWindowItems gd +CL net/minecraft/network/play/server/S31PacketWindowProperty ge +CL net/minecraft/network/play/server/S2FPacketSetSlot gf +CL net/minecraft/network/play/server/S3FPacketCustomPayload gg +CL net/minecraft/network/play/server/S40PacketDisconnect gh +CL net/minecraft/network/play/server/S19PacketEntityStatus gi +CL net/minecraft/network/play/server/S49PacketUpdateEntityNBT gj +CL net/minecraft/network/play/server/S27PacketExplosion gk +CL net/minecraft/network/play/server/S46PacketSetCompressionLevel gl +CL net/minecraft/network/play/server/S2BPacketChangeGameState gm +CL net/minecraft/network/play/server/S00PacketKeepAlive gn +CL net/minecraft/network/play/server/S21PacketChunkData go +CL net/minecraft/network/play/server/S21PacketChunkData$Extracted go$a +CL net/minecraft/network/play/server/S26PacketMapChunkBulk gp +CL net/minecraft/network/play/server/S28PacketEffect gq +CL net/minecraft/network/play/server/S2APacketParticles gr +CL net/minecraft/network/play/server/S29PacketSoundEffect gs +CL net/minecraft/network/play/server/S01PacketJoinGame gt +CL net/minecraft/network/play/server/S34PacketMaps gu +CL net/minecraft/network/play/server/S14PacketEntity gv +CL net/minecraft/network/play/server/S14PacketEntity$S15PacketEntityRelMove gv$a +CL net/minecraft/network/play/server/S14PacketEntity$S17PacketEntityLookMove gv$b +CL net/minecraft/network/play/server/S14PacketEntity$S16PacketEntityLook gv$c +CL net/minecraft/network/play/server/S36PacketSignEditorOpen gw +CL net/minecraft/network/play/server/S39PacketPlayerAbilities gx +CL net/minecraft/network/play/server/S42PacketCombatEvent gy +CL net/minecraft/network/play/server/S42PacketCombatEvent$1 gy$1 +CL net/minecraft/network/play/server/S42PacketCombatEvent$Event gy$a +CL net/minecraft/network/play/server/S38PacketPlayerListItem gz +CL net/minecraft/network/play/server/S38PacketPlayerListItem$1 gz$1 +CL net/minecraft/network/play/server/S38PacketPlayerListItem$Action gz$a +CL net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData gz$b +CL net/minecraft/network/play/server/S0APacketUseBed ha +CL net/minecraft/network/play/server/S13PacketDestroyEntities hb +CL net/minecraft/network/play/server/S1EPacketRemoveEntityEffect hc +CL net/minecraft/network/play/server/S48PacketResourcePackSend hd +CL net/minecraft/network/play/server/S07PacketRespawn he +CL net/minecraft/network/play/server/S19PacketEntityHeadLook hf +CL net/minecraft/network/play/server/S44PacketWorldBorder hg +CL net/minecraft/network/play/server/S44PacketWorldBorder$1 hg$1 +CL net/minecraft/network/play/server/S44PacketWorldBorder$Action hg$a +CL net/minecraft/network/play/server/S43PacketCamera hh +CL net/minecraft/network/play/server/S09PacketHeldItemChange hi +CL net/minecraft/network/play/server/S3DPacketDisplayScoreboard hj +CL net/minecraft/network/play/server/S1CPacketEntityMetadata hk +CL net/minecraft/network/play/server/S1BPacketEntityAttach hl +CL net/minecraft/network/play/server/S12PacketEntityVelocity hm +CL net/minecraft/network/play/server/S04PacketEntityEquipment hn +CL net/minecraft/network/play/server/S1FPacketSetExperience ho +CL net/minecraft/network/play/server/S06PacketUpdateHealth hp +CL net/minecraft/network/play/server/S3BPacketScoreboardObjective hq +CL net/minecraft/network/play/server/S3EPacketTeams hr +CL net/minecraft/network/play/server/S3CPacketUpdateScore hs +CL net/minecraft/network/play/server/S3CPacketUpdateScore$Action hs$a +CL net/minecraft/network/play/server/S05PacketSpawnPosition ht +CL net/minecraft/network/play/server/S03PacketTimeUpdate hu +CL net/minecraft/network/play/server/S45PacketTitle hv +CL net/minecraft/network/play/server/S45PacketTitle$Type hv$a +CL net/minecraft/network/play/server/S33PacketUpdateSign hw +CL net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter hx +CL net/minecraft/network/play/server/S0DPacketCollectItem hy +CL net/minecraft/network/play/server/S18PacketEntityTeleport hz +CL net/minecraft/network/play/server/S20PacketEntityProperties ia +CL net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot ia$a +CL net/minecraft/network/play/server/S1DPacketEntityEffect ib +CL net/minecraft/network/play/INetHandlerPlayServer ic +CL net/minecraft/network/play/client/C14PacketTabComplete id +CL net/minecraft/network/play/client/C01PacketChatMessage ie +CL net/minecraft/network/play/client/C16PacketClientStatus ig +CL net/minecraft/network/play/client/C16PacketClientStatus$EnumState ig$a +CL net/minecraft/network/play/client/C15PacketClientSettings ih +CL net/minecraft/network/play/client/C0FPacketConfirmTransaction ii +CL net/minecraft/network/play/client/C11PacketEnchantItem ij +CL net/minecraft/network/play/client/C0EPacketClickWindow ik +CL net/minecraft/network/play/client/C0DPacketCloseWindow il +CL net/minecraft/network/play/client/C17PacketCustomPayload im +CL net/minecraft/network/play/client/C02PacketUseEntity in +CL net/minecraft/network/play/client/C02PacketUseEntity$Action in$a +CL net/minecraft/network/play/client/C00PacketKeepAlive io +CL net/minecraft/network/play/client/C03PacketPlayer ip +CL net/minecraft/network/play/client/C03PacketPlayer$C04PacketPlayerPosition ip$a +CL net/minecraft/network/play/client/C03PacketPlayer$C06PacketPlayerPosLook ip$b +CL net/minecraft/network/play/client/C03PacketPlayer$C05PacketPlayerLook ip$c +CL net/minecraft/network/play/client/C13PacketPlayerAbilities iq +CL net/minecraft/network/play/client/C07PacketPlayerDigging ir +CL net/minecraft/network/play/client/C07PacketPlayerDigging$Action ir$a +CL net/minecraft/network/play/client/C0BPacketEntityAction is +CL net/minecraft/network/play/client/C0BPacketEntityAction$Action is$a +CL net/minecraft/network/play/client/C0CPacketInput it +CL net/minecraft/network/play/client/C19PacketResourcePackStatus iu +CL net/minecraft/network/play/client/C19PacketResourcePackStatus$Action iu$a +CL net/minecraft/network/play/client/C09PacketHeldItemChange iv +CL net/minecraft/network/play/client/C10PacketCreativeInventoryAction iw +CL net/minecraft/network/play/client/C12PacketUpdateSign ix +CL net/minecraft/network/play/client/C0APacketAnimation iy +CL net/minecraft/network/play/client/C18PacketSpectate iz +CL net/minecraft/network/play/client/C08PacketPlayerBlockPlacement ja +CL net/minecraft/network/handshake/client/C00Handshake jc +CL net/minecraft/network/handshake/INetHandlerHandshakeServer jd +CL net/minecraft/network/login/INetHandlerLoginClient jf +CL net/minecraft/network/login/server/S02PacketLoginSuccess jg +CL net/minecraft/network/login/server/S01PacketEncryptionRequest jh +CL net/minecraft/network/login/server/S03PacketEnableCompression ji +CL net/minecraft/network/login/server/S00PacketDisconnect jj +CL net/minecraft/network/login/INetHandlerLoginServer jk +CL net/minecraft/network/login/client/C00PacketLoginStart jl +CL net/minecraft/network/login/client/C01PacketEncryptionResponse jm +CL net/minecraft/network/status/INetHandlerStatusClient jp +CL net/minecraft/network/status/server/S01PacketPong jq +CL net/minecraft/network/status/server/S00PacketServerInfo jr +CL net/minecraft/network/ServerStatusResponse js +CL net/minecraft/network/ServerStatusResponse$PlayerCountData js$a +CL net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer js$a$a +CL net/minecraft/network/ServerStatusResponse$Serializer js$b +CL net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier js$c +CL net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer js$c$a +CL net/minecraft/network/status/INetHandlerStatusServer jt +CL net/minecraft/network/status/client/C01PacketPing ju +CL net/minecraft/network/status/client/C00PacketServerQuery jv +CL net/minecraft/util/ResourceLocation jy +CL net/minecraft/dispenser/BehaviorProjectileDispense ka +CL net/minecraft/init/Bootstrap kb +CL net/minecraft/init/Bootstrap$1 kb$1 +CL net/minecraft/init/Bootstrap$2 kb$2 +CL net/minecraft/init/Bootstrap$3 kb$3 +CL net/minecraft/init/Bootstrap$4 kb$4 +CL net/minecraft/init/Bootstrap$5 kb$5 +CL net/minecraft/init/Bootstrap$6 kb$6 +CL net/minecraft/init/Bootstrap$7 kb$7 +CL net/minecraft/init/Bootstrap$8 kb$8 +CL net/minecraft/init/Bootstrap$9 kb$9 +CL net/minecraft/init/Bootstrap$10 kb$10 +CL net/minecraft/init/Bootstrap$11 kb$11 +CL net/minecraft/init/Bootstrap$12 kb$12 +CL net/minecraft/init/Bootstrap$12$1 kb$12$1 +CL net/minecraft/init/Bootstrap$13 kb$13 +CL net/minecraft/init/Bootstrap$14 kb$14 +CL net/minecraft/init/Bootstrap$15 kb$15 +CL net/minecraft/init/Bootstrap$16 kb$16 +CL net/minecraft/client/util/JsonException kc +CL net/minecraft/client/util/JsonException$1 kc$1 +CL net/minecraft/client/util/JsonException$Entry kc$a +CL net/minecraft/command/ServerCommand kd +CL net/minecraft/server/ServerEula kf +CL net/minecraft/util/LoggingPrintStream kg +CL net/minecraft/network/ThreadQuickExitException ki +CL net/minecraft/network/rcon/IServer kj +CL net/minecraft/scoreboard/ServerScoreboard kk +CL net/minecraft/server/dedicated/PropertyManager kl +CL net/minecraft/util/ITickable km +CL net/minecraft/server/dedicated/DedicatedPlayerList kn +CL net/minecraft/server/dedicated/DedicatedServer ko +CL net/minecraft/server/dedicated/DedicatedServer$1 ko$1 +CL net/minecraft/server/dedicated/DedicatedServer$2 ko$2 +CL net/minecraft/server/dedicated/DedicatedServer$3 ko$3 +CL net/minecraft/server/dedicated/DedicatedServer$4 ko$4 +CL net/minecraft/server/dedicated/ServerHangWatchdog kp +CL net/minecraft/server/dedicated/ServerHangWatchdog$1 kp$1 +CL net/minecraft/server/gui/MinecraftServerGui kr +CL net/minecraft/server/gui/MinecraftServerGui$1 kr$1 +CL net/minecraft/server/gui/MinecraftServerGui$2 kr$2 +CL net/minecraft/server/gui/MinecraftServerGui$3 kr$3 +CL net/minecraft/server/gui/MinecraftServerGui$4 kr$4 +CL net/minecraft/server/gui/MinecraftServerGui$5 kr$5 +CL net/minecraft/server/gui/PlayerListComponent ks +CL net/minecraft/server/gui/StatsComponent kt +CL net/minecraft/server/gui/StatsComponent$1 kt$1 +CL net/minecraft/client/renderer/DestroyBlockProgress kw +CL net/minecraft/world/demo/DemoWorldServer kx +CL net/minecraft/world/demo/DemoWorldManager ky +CL net/minecraft/world/WorldServerMulti kz +CL net/minecraft/world/WorldServerMulti$1 kz$1 +CL net/minecraft/entity/EntityTracker la +CL net/minecraft/entity/EntityTracker$1 la$1 +CL net/minecraft/world/WorldManager lb +CL net/minecraft/server/management/PlayerManager lc +CL net/minecraft/server/management/PlayerManager$PlayerInstance lc$a +CL net/minecraft/world/gen/ChunkProviderServer ld +CL net/minecraft/world/WorldServer le +CL net/minecraft/world/WorldServer$1 le$1 +CL net/minecraft/world/WorldServer$ServerBlockEventList le$a +CL net/minecraft/entity/player/EntityPlayerMP lf +CL net/minecraft/server/management/ItemInWorldManager lg +CL net/minecraft/entity/EntityTrackerEntry lh +CL net/minecraft/network/PingResponseHandler lj +CL net/minecraft/client/network/NetHandlerHandshakeMemory lk +CL net/minecraft/network/NetworkSystem ll +CL net/minecraft/network/NetworkSystem$1 ll$1 +CL net/minecraft/network/NetworkSystem$2 ll$2 +CL net/minecraft/network/NetworkSystem$3 ll$3 +CL net/minecraft/network/NetworkSystem$4 ll$4 +CL net/minecraft/network/NetworkSystem$5 ll$5 +CL net/minecraft/network/NetworkSystem$6 ll$6 +CL net/minecraft/network/NetworkSystem$7 ll$7 +CL net/minecraft/network/NetHandlerPlayServer lm +CL net/minecraft/network/NetHandlerPlayServer$1 lm$1 +CL net/minecraft/network/NetHandlerPlayServer$2 lm$2 +CL net/minecraft/network/NetHandlerPlayServer$3 lm$3 +CL net/minecraft/network/NetHandlerPlayServer$4 lm$4 +CL net/minecraft/server/network/NetHandlerHandshakeTCP ln +CL net/minecraft/server/network/NetHandlerHandshakeTCP$1 ln$1 +CL net/minecraft/server/network/NetHandlerLoginServer lo +CL net/minecraft/server/network/NetHandlerLoginServer$1 lo$1 +CL net/minecraft/server/network/NetHandlerLoginServer$2 lo$2 +CL net/minecraft/server/network/NetHandlerLoginServer$LoginState lo$a +CL net/minecraft/server/network/NetHandlerStatusServer lp +CL net/minecraft/server/management/BanEntry ls +CL net/minecraft/server/management/PlayerProfileCache lt +CL net/minecraft/server/management/PlayerProfileCache$1 lt$1 +CL net/minecraft/server/management/PlayerProfileCache$2 lt$2 +CL net/minecraft/server/management/PlayerProfileCache$ProfileEntry lt$a +CL net/minecraft/server/management/PlayerProfileCache$Serializer lt$b +CL net/minecraft/server/management/BanList lu +CL net/minecraft/server/management/IPBanEntry lv +CL net/minecraft/server/management/PreYggdrasilConverter lw +CL net/minecraft/server/management/PreYggdrasilConverter$1 lw$1 +CL net/minecraft/server/management/PreYggdrasilConverter$2 lw$2 +CL net/minecraft/server/management/PreYggdrasilConverter$3 lw$3 +CL net/minecraft/server/management/PreYggdrasilConverter$4 lw$4 +CL net/minecraft/server/management/PreYggdrasilConverter$5 lw$5 +CL net/minecraft/server/management/PreYggdrasilConverter$6 lw$6 +CL net/minecraft/server/management/PreYggdrasilConverter$ConversionError lw$a +CL net/minecraft/server/management/ServerConfigurationManager lx +CL net/minecraft/server/management/ServerConfigurationManager$1 lx$1 +CL net/minecraft/server/management/UserListOps ly +CL net/minecraft/server/management/UserListOpsEntry lz +CL net/minecraft/server/management/UserListEntry ma +CL net/minecraft/server/management/UserList mb +CL net/minecraft/server/management/UserList$1 mb$1 +CL net/minecraft/server/management/UserList$Serializer mb$a +CL net/minecraft/server/management/UserListBans mc +CL net/minecraft/server/management/UserListBansEntry md +CL net/minecraft/server/management/UserListWhitelist me +CL net/minecraft/server/management/UserListWhitelistEntry mf +CL net/minecraft/network/rcon/RConOutputStream mh +CL net/minecraft/network/rcon/RConUtils mi +CL net/minecraft/network/rcon/RConConsoleSource mj +CL net/minecraft/network/rcon/RConThreadBase ml +CL net/minecraft/network/rcon/RConThreadQuery mm +CL net/minecraft/network/rcon/RConThreadQuery$Auth mm$a +CL net/minecraft/network/rcon/RConThreadClient mn +CL net/minecraft/network/rcon/RConThreadMain mo +CL net/minecraft/stats/Achievement mq +CL net/minecraft/stats/AchievementList mr +CL net/minecraft/stats/IStatStringFormat ms +CL net/minecraft/stats/StatBasic mt +CL net/minecraft/stats/StatCrafting mu +CL net/minecraft/stats/StatisticsFile mv +CL net/minecraft/stats/StatBase mw +CL net/minecraft/stats/StatBase$1 mw$1 +CL net/minecraft/stats/StatBase$2 mw$2 +CL net/minecraft/stats/StatBase$3 mw$3 +CL net/minecraft/stats/StatBase$4 mw$4 +CL net/minecraft/stats/IStatType mx +CL net/minecraft/util/TupleIntJsonSerializable my +CL net/minecraft/util/IJsonSerializable mz +CL net/minecraft/stats/StatList na +CL net/minecraft/stats/StatFileWriter nb +CL net/minecraft/util/JsonSerializableSet nc +CL net/minecraft/util/ClassInheritanceMultiMap ne +CL net/minecraft/util/ClassInheritanceMultiMap$1 ne$1 +CL net/minecraft/util/CryptManager ng +CL net/minecraft/util/FrameTimer nh +CL net/minecraft/util/JsonUtils ni +CL net/minecraft/util/HttpUtil nj +CL net/minecraft/util/HttpUtil$1 nj$1 +CL net/minecraft/server/management/LowerStringMap nk +CL net/minecraft/util/IntegerCache nl +CL net/minecraft/util/IntHashMap nm +CL net/minecraft/util/IntHashMap$Entry nm$a +CL net/minecraft/util/LazyLoadBase no +CL net/minecraft/util/ThreadSafeBoundList np +CL net/minecraft/util/LongHashMap nq +CL net/minecraft/util/LongHashMap$Entry nq$a +CL net/minecraft/util/EnumTypeAdapterFactory nr +CL net/minecraft/util/EnumTypeAdapterFactory$1 nr$1 +CL net/minecraft/util/MathHelper ns +CL net/minecraft/profiler/Profiler nt +CL net/minecraft/profiler/Profiler$Result nt$a +CL net/minecraft/util/IProgressUpdate nu +CL net/minecraft/util/MouseFilter nv +CL net/minecraft/util/IStringSerializable nw +CL net/minecraft/util/StringUtils nx +CL net/minecraft/util/Tuple nz +CL net/minecraft/util/WeightedRandom oa +CL net/minecraft/util/WeightedRandom$Item oa$a +CL net/minecraft/util/WeightedRandomChestContent ob +CL net/minecraft/util/IThreadListener od +CL net/minecraft/inventory/InventoryLargeChest of +CL net/minecraft/inventory/IInventory og +CL net/minecraft/inventory/IInvBasic oh +CL net/minecraft/inventory/InventoryHelper oi +CL net/minecraft/world/EnumDifficulty oj +CL net/minecraft/world/DifficultyInstance ok +CL net/minecraft/world/IInteractionObject ol +CL net/minecraft/world/LockCode on +CL net/minecraft/world/ILockableContainer oo +CL net/minecraft/world/IWorldNameable op +CL net/minecraft/inventory/InventoryBasic oq +CL net/minecraft/profiler/PlayerUsageSnooper or +CL net/minecraft/profiler/PlayerUsageSnooper$1 or$1 +CL net/minecraft/profiler/IPlayerUsage os +CL net/minecraft/inventory/ISidedInventory ot +CL net/minecraft/util/CombatEntry ou +CL net/minecraft/util/CombatTracker ov +CL net/minecraft/util/DamageSource ow +CL net/minecraft/util/EntityDamageSource ox +CL net/minecraft/util/EntityDamageSourceIndirect oy +CL net/minecraft/potion/PotionAbsorption pa +CL net/minecraft/potion/PotionAttackDamage pb +CL net/minecraft/potion/PotionHealthBoost pc +CL net/minecraft/potion/PotionHealth pd +CL net/minecraft/potion/Potion pe +CL net/minecraft/potion/PotionEffect pf +CL net/minecraft/entity/EntityAgeable ph +CL net/minecraft/entity/passive/IAnimals pi +CL net/minecraft/entity/Entity pk +CL net/minecraft/entity/Entity$1 pk$1 +CL net/minecraft/entity/Entity$2 pk$2 +CL net/minecraft/entity/Entity$3 pk$3 +CL net/minecraft/entity/Entity$4 pk$4 +CL net/minecraft/entity/EntityList pm +CL net/minecraft/entity/EntityList$EntityEggInfo pm$a +CL net/minecraft/util/EntitySelectors po +CL net/minecraft/util/EntitySelectors$1 po$1 +CL net/minecraft/util/EntitySelectors$2 po$2 +CL net/minecraft/util/EntitySelectors$3 po$3 +CL net/minecraft/util/EntitySelectors$4 po$4 +CL net/minecraft/util/EntitySelectors$ArmoredMob po$a +CL net/minecraft/entity/item/EntityXPOrb pp +CL net/minecraft/entity/EntityFlying pq +CL net/minecraft/entity/EntityLivingBase pr +CL net/minecraft/entity/EntityLivingBase$1 pr$1 +CL net/minecraft/entity/EntityLiving ps +CL net/minecraft/entity/EntityLiving$SpawnPlacementType ps$a +CL net/minecraft/entity/EnumCreatureType pt +CL net/minecraft/entity/IEntityLivingData pu +CL net/minecraft/entity/EntitySpawnPlacementRegistry pv +CL net/minecraft/entity/EnumCreatureAttribute pw +CL net/minecraft/entity/IEntityOwnable px +CL net/minecraft/entity/EntityCreature py +CL net/minecraft/entity/DataWatcher pz +CL net/minecraft/entity/DataWatcher$WatchableObject pz$a +CL net/minecraft/entity/passive/EntityTameable qa +CL net/minecraft/entity/ai/attributes/IAttribute qb +CL net/minecraft/entity/ai/attributes/IAttributeInstance qc +CL net/minecraft/entity/ai/attributes/AttributeModifier qd +CL net/minecraft/entity/ai/attributes/BaseAttribute qe +CL net/minecraft/entity/ai/attributes/BaseAttributeMap qf +CL net/minecraft/entity/ai/attributes/ModifiableAttributeInstance qh +CL net/minecraft/entity/ai/attributes/ServersideAttributeMap qi +CL net/minecraft/entity/ai/attributes/RangedAttribute qj +CL net/minecraft/entity/EntityBodyHelper qm +CL net/minecraft/entity/ai/EntityJumpHelper qo +CL net/minecraft/entity/ai/EntityLookHelper qp +CL net/minecraft/entity/ai/EntityMoveHelper qq +CL net/minecraft/entity/ai/EntityAIAvoidEntity qs +CL net/minecraft/entity/ai/EntityAIAvoidEntity$1 qs$1 +CL net/minecraft/entity/ai/EntityAIBeg qt +CL net/minecraft/entity/ai/EntityAIBreakDoor qu +CL net/minecraft/entity/ai/EntityAIMate qv +CL net/minecraft/entity/ai/EntityAIControlledByPlayer qw +CL net/minecraft/entity/ai/EntityAIDoorInteract qx +CL net/minecraft/entity/ai/EntityAIEatGrass qy +CL net/minecraft/entity/ai/EntityAIFleeSun qz +CL net/minecraft/entity/ai/EntityAISwimming ra +CL net/minecraft/entity/ai/EntityAIFollowOwner rb +CL net/minecraft/entity/ai/EntityAIFollowParent rc +CL net/minecraft/entity/ai/EntityAIBase rd +CL net/minecraft/entity/ai/EntityAITasks re +CL net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry re$a +CL net/minecraft/entity/ai/EntityAIHarvestFarmland rf +CL net/minecraft/entity/ai/EntityAIWatchClosest2 rg +CL net/minecraft/entity/ai/EntityAILeapAtTarget rh +CL net/minecraft/entity/ai/EntityAIWatchClosest ri +CL net/minecraft/entity/ai/EntityAILookAtTradePlayer rj +CL net/minecraft/entity/ai/EntityAIVillagerMate rk +CL net/minecraft/entity/ai/EntityAIAttackOnCollide rl +CL net/minecraft/entity/ai/EntityAIMoveIndoors rm +CL net/minecraft/entity/ai/EntityAIMoveThroughVillage rn +CL net/minecraft/entity/ai/EntityAIMoveToBlock ro +CL net/minecraft/entity/ai/EntityAIMoveTowardsRestriction rp +CL net/minecraft/entity/ai/EntityAIMoveTowardsTarget rq +CL net/minecraft/entity/ai/EntityAIOcelotAttack rr +CL net/minecraft/entity/ai/EntityAIOcelotSit rs +CL net/minecraft/entity/ai/EntityAILookAtVillager rt +CL net/minecraft/entity/ai/EntityAIOpenDoor ru +CL net/minecraft/entity/ai/EntityAIPanic rv +CL net/minecraft/entity/ai/EntityAIPlay rw +CL net/minecraft/entity/ai/EntityAILookIdle ry +CL net/minecraft/entity/ai/EntityAIWander rz +CL net/minecraft/entity/ai/EntityAIArrowAttack sa +CL net/minecraft/entity/ai/EntityAIRestrictOpenDoor sb +CL net/minecraft/entity/ai/EntityAIRestrictSun sc +CL net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy sd +CL net/minecraft/entity/ai/EntityAISit se +CL net/minecraft/entity/ai/EntityAICreeperSwell sf +CL net/minecraft/entity/ai/EntityAIFollowGolem sg +CL net/minecraft/entity/ai/EntityAITempt sh +CL net/minecraft/entity/ai/EntityAITradePlayer si +CL net/minecraft/entity/ai/EntityAIVillagerInteract sj +CL net/minecraft/entity/ai/EntityAIDefendVillage sl +CL net/minecraft/entity/ai/EntityAIHurtByTarget sm +CL net/minecraft/entity/ai/EntityAIFindEntityNearest sn +CL net/minecraft/entity/ai/EntityAIFindEntityNearest$1 sn$1 +CL net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer so +CL net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 so$1 +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget sp +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 sp$1 +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter sp$a +CL net/minecraft/entity/ai/EntityAITargetNonTamed sq +CL net/minecraft/entity/ai/EntityAIOwnerHurtByTarget sr +CL net/minecraft/entity/ai/EntityAIOwnerHurtTarget ss +CL net/minecraft/entity/ai/EntityAITarget st +CL net/minecraft/pathfinding/PathNavigateGround sv +CL net/minecraft/pathfinding/PathNavigate sw +CL net/minecraft/pathfinding/PathNavigateClimber sx +CL net/minecraft/pathfinding/PathNavigateSwimmer sy +CL net/minecraft/entity/ai/EntitySenses ta +CL net/minecraft/entity/ai/RandomPositionGenerator tc +CL net/minecraft/village/VillageDoorInfo te +CL net/minecraft/village/Village tf +CL net/minecraft/village/Village$VillageAggressor tf$a +CL net/minecraft/village/VillageSiege tg +CL net/minecraft/village/VillageCollection th +CL net/minecraft/entity/passive/EntityAmbientCreature tj +CL net/minecraft/entity/passive/EntityBat tk +CL net/minecraft/entity/passive/EntityAnimal tm +CL net/minecraft/entity/passive/EntityChicken tn +CL net/minecraft/entity/passive/EntityCow to +CL net/minecraft/entity/passive/EntityHorse tp +CL net/minecraft/entity/passive/EntityHorse$1 tp$1 +CL net/minecraft/entity/passive/EntityHorse$GroupData tp$a +CL net/minecraft/entity/monster/EntityGolem tq +CL net/minecraft/entity/passive/EntityMooshroom tr +CL net/minecraft/entity/passive/EntityOcelot ts +CL net/minecraft/entity/passive/EntityPig tt +CL net/minecraft/entity/passive/EntityRabbit tu +CL net/minecraft/entity/passive/EntityRabbit$AIEvilAttack tu$a +CL net/minecraft/entity/passive/EntityRabbit$EnumMoveType tu$b +CL net/minecraft/entity/passive/EntityRabbit$AIAvoidEntity tu$c +CL net/minecraft/entity/passive/EntityRabbit$RabbitTypeData tu$d +CL net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper tu$e +CL net/minecraft/entity/passive/EntityRabbit$RabbitMoveHelper tu$f +CL net/minecraft/entity/passive/EntityRabbit$AIPanic tu$g +CL net/minecraft/entity/passive/EntityRabbit$AIRaidFarm tu$h +CL net/minecraft/entity/passive/EntitySheep tv +CL net/minecraft/entity/passive/EntitySheep$1 tv$1 +CL net/minecraft/entity/monster/EntitySnowman tw +CL net/minecraft/entity/passive/EntitySquid tx +CL net/minecraft/entity/passive/EntitySquid$AIMoveRandom tx$a +CL net/minecraft/entity/monster/EntityIronGolem ty +CL net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper ty$a +CL net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 ty$a$1 +CL net/minecraft/entity/passive/EntityWaterMob tz +CL net/minecraft/entity/passive/EntityWolf ua +CL net/minecraft/entity/passive/EntityWolf$1 ua$1 +CL net/minecraft/entity/boss/IBossDisplayData uc +CL net/minecraft/entity/IEntityMultiPart ud +CL net/minecraft/entity/boss/EntityDragonPart ue +CL net/minecraft/entity/item/EntityEnderCrystal uf +CL net/minecraft/entity/boss/EntityDragon ug +CL net/minecraft/entity/boss/EntityWither uk +CL net/minecraft/entity/boss/EntityWither$1 uk$1 +CL net/minecraft/entity/item/EntityArmorStand um +CL net/minecraft/entity/EntityHanging un +CL net/minecraft/entity/item/EntityItemFrame uo +CL net/minecraft/entity/EntityLeashKnot up +CL net/minecraft/entity/item/EntityPainting uq +CL net/minecraft/entity/item/EntityPainting$EnumArt uq$a +CL net/minecraft/entity/projectile/EntityFishHook ur +CL net/minecraft/util/WeightedRandomFishable us +CL net/minecraft/entity/effect/EntityWeatherEffect uu +CL net/minecraft/entity/effect/EntityLightningBolt uv +CL net/minecraft/entity/item/EntityBoat ux +CL net/minecraft/entity/item/EntityFallingBlock uy +CL net/minecraft/entity/item/EntityItem uz +CL net/minecraft/entity/item/EntityMinecart va +CL net/minecraft/entity/item/EntityMinecart$1 va$1 +CL net/minecraft/entity/item/EntityMinecart$EnumMinecartType va$a +CL net/minecraft/entity/item/EntityMinecartChest vb +CL net/minecraft/entity/EntityMinecartCommandBlock vc +CL net/minecraft/entity/EntityMinecartCommandBlock$1 vc$1 +CL net/minecraft/entity/item/EntityMinecartContainer vd +CL net/minecraft/entity/item/EntityMinecartFurnace ve +CL net/minecraft/entity/item/EntityMinecartHopper vf +CL net/minecraft/entity/item/EntityMinecartEmpty vg +CL net/minecraft/entity/ai/EntityMinecartMobSpawner vh +CL net/minecraft/entity/ai/EntityMinecartMobSpawner$1 vh$1 +CL net/minecraft/entity/item/EntityMinecartTNT vi +CL net/minecraft/entity/item/EntityTNTPrimed vj +CL net/minecraft/entity/monster/EntityBlaze vl +CL net/minecraft/entity/monster/EntityBlaze$AIFireballAttack vl$a +CL net/minecraft/entity/monster/EntityCaveSpider vm +CL net/minecraft/entity/monster/EntityCreeper vn +CL net/minecraft/entity/monster/EntityEnderman vo +CL net/minecraft/entity/monster/EntityEnderman$1 vo$1 +CL net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock vo$a +CL net/minecraft/entity/monster/EntityEnderman$AIFindPlayer vo$b +CL net/minecraft/entity/monster/EntityEnderman$AITakeBlock vo$c +CL net/minecraft/entity/monster/EntityEndermite vp +CL net/minecraft/entity/monster/IMob vq +CL net/minecraft/entity/monster/IMob$1 vq$1 +CL net/minecraft/entity/monster/IMob$2 vq$2 +CL net/minecraft/entity/monster/EntityGhast vr +CL net/minecraft/entity/monster/EntityGhast$AILookAround vr$a +CL net/minecraft/entity/monster/EntityGhast$GhastMoveHelper vr$b +CL net/minecraft/entity/monster/EntityGhast$AIFireballAttack vr$c +CL net/minecraft/entity/monster/EntityGhast$AIRandomFly vr$d +CL net/minecraft/entity/monster/EntityGiantZombie vs +CL net/minecraft/entity/monster/EntityGuardian vt +CL net/minecraft/entity/monster/EntityGuardian$1 vt$1 +CL net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack vt$a +CL net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector vt$b +CL net/minecraft/entity/monster/EntityGuardian$GuardianMoveHelper vt$c +CL net/minecraft/entity/monster/EntityMagmaCube vu +CL net/minecraft/entity/monster/EntityMob vv +CL net/minecraft/entity/monster/EntityPigZombie vw +CL net/minecraft/entity/monster/EntityPigZombie$AITargetAggressor vw$a +CL net/minecraft/entity/monster/EntityPigZombie$AIHurtByAggressor vw$b +CL net/minecraft/entity/IRangedAttackMob vx +CL net/minecraft/entity/SharedMonsterAttributes vy +CL net/minecraft/entity/monster/EntitySilverfish vz +CL net/minecraft/entity/monster/EntitySilverfish$AIHideInStone vz$a +CL net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish vz$b +CL net/minecraft/entity/monster/EntitySkeleton wa +CL net/minecraft/entity/monster/EntitySlime wb +CL net/minecraft/entity/monster/EntitySlime$AISlimeAttack wb$a +CL net/minecraft/entity/monster/EntitySlime$AISlimeFloat wb$b +CL net/minecraft/entity/monster/EntitySlime$AISlimeHop wb$c +CL net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper wb$d +CL net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom wb$e +CL net/minecraft/entity/monster/EntitySpider wc +CL net/minecraft/entity/monster/EntitySpider$AISpiderAttack wc$a +CL net/minecraft/entity/monster/EntitySpider$GroupData wc$b +CL net/minecraft/entity/monster/EntitySpider$AISpiderTarget wc$c +CL net/minecraft/entity/monster/EntityWitch wd +CL net/minecraft/entity/monster/EntityZombie we +CL net/minecraft/entity/monster/EntityZombie$1 we$1 +CL net/minecraft/entity/monster/EntityZombie$GroupData we$a +CL net/minecraft/entity/NpcMerchant wg +CL net/minecraft/entity/INpc wh +CL net/minecraft/entity/passive/EntityVillager wi +CL net/minecraft/entity/passive/EntityVillager$EmeraldForItems wi$a +CL net/minecraft/entity/passive/EntityVillager$ListEnchantedBookForEmeralds wi$b +CL net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds wi$c +CL net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem wi$d +CL net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds wi$e +CL net/minecraft/entity/passive/EntityVillager$ITradeList wi$f +CL net/minecraft/entity/passive/EntityVillager$PriceInfo wi$g +CL net/minecraft/entity/player/PlayerCapabilities wl +CL net/minecraft/entity/player/InventoryPlayer wm +CL net/minecraft/entity/player/InventoryPlayer$1 wm$1 +CL net/minecraft/entity/player/EntityPlayer wn +CL net/minecraft/entity/player/EntityPlayer$1 wn$1 +CL net/minecraft/entity/player/EntityPlayer$EnumStatus wn$a +CL net/minecraft/entity/player/EntityPlayer$EnumChatVisibility wn$b +CL net/minecraft/entity/player/EnumPlayerModelParts wo +CL net/minecraft/entity/projectile/EntityArrow wq +CL net/minecraft/entity/item/EntityEnderEye wr +CL net/minecraft/entity/projectile/EntityFireball ws +CL net/minecraft/entity/item/EntityFireworkRocket wt +CL net/minecraft/entity/projectile/EntityLargeFireball wu +CL net/minecraft/entity/IProjectile wv +CL net/minecraft/entity/projectile/EntitySmallFireball ww +CL net/minecraft/entity/projectile/EntitySnowball wx +CL net/minecraft/entity/projectile/EntityThrowable wy +CL net/minecraft/entity/projectile/EntityEgg wz +CL net/minecraft/entity/item/EntityEnderPearl xa +CL net/minecraft/entity/item/EntityExpBottle xb +CL net/minecraft/entity/projectile/EntityPotion xc +CL net/minecraft/entity/projectile/EntityWitherSkull xd +CL net/minecraft/util/FoodStats xg +CL net/minecraft/inventory/Container xi +CL net/minecraft/inventory/AnimalChest xj +CL net/minecraft/inventory/ContainerRepair xk +CL net/minecraft/inventory/ContainerRepair$1 xk$1 +CL net/minecraft/inventory/ContainerRepair$2 xk$2 +CL net/minecraft/inventory/ContainerBeacon xl +CL net/minecraft/inventory/ContainerBeacon$BeaconSlot xl$a +CL net/minecraft/inventory/ContainerBrewingStand xm +CL net/minecraft/inventory/ContainerBrewingStand$Ingredient xm$a +CL net/minecraft/inventory/ContainerBrewingStand$Potion xm$b +CL net/minecraft/inventory/ICrafting xn +CL net/minecraft/inventory/ContainerChest xo +CL net/minecraft/inventory/InventoryCrafting xp +CL net/minecraft/inventory/ContainerWorkbench xq +CL net/minecraft/inventory/ContainerDispenser xr +CL net/minecraft/inventory/ContainerEnchantment xs +CL net/minecraft/inventory/ContainerEnchantment$1 xs$1 +CL net/minecraft/inventory/ContainerEnchantment$2 xs$2 +CL net/minecraft/inventory/ContainerEnchantment$3 xs$3 +CL net/minecraft/inventory/SlotFurnaceFuel xt +CL net/minecraft/inventory/ContainerFurnace xu +CL net/minecraft/inventory/SlotFurnaceOutput xv +CL net/minecraft/inventory/ContainerHopper xw +CL net/minecraft/inventory/ContainerHorseInventory xx +CL net/minecraft/inventory/ContainerHorseInventory$1 xx$1 +CL net/minecraft/inventory/ContainerHorseInventory$2 xx$2 +CL net/minecraft/inventory/ContainerPlayer xy +CL net/minecraft/inventory/ContainerPlayer$1 xy$1 +CL net/minecraft/inventory/InventoryMerchant ya +CL net/minecraft/inventory/ContainerMerchant yb +CL net/minecraft/inventory/SlotMerchantResult yc +CL net/minecraft/inventory/InventoryEnderChest yd +CL net/minecraft/inventory/InventoryCraftResult ye +CL net/minecraft/inventory/SlotCrafting yf +CL net/minecraft/inventory/Slot yg +CL net/minecraft/item/ItemAnvilBlock yi +CL net/minecraft/item/ItemArmor yj +CL net/minecraft/item/ItemArmor$1 yj$1 +CL net/minecraft/item/ItemArmor$ArmorMaterial yj$a +CL net/minecraft/item/ItemArmorStand yk +CL net/minecraft/item/ItemAxe yl +CL net/minecraft/item/ItemBanner ym +CL net/minecraft/item/ItemBed yn +CL net/minecraft/item/ItemBlock yo +CL net/minecraft/item/ItemReed yp +CL net/minecraft/item/ItemBoat yq +CL net/minecraft/item/ItemBook yr +CL net/minecraft/item/ItemGlassBottle ys +CL net/minecraft/item/ItemBow yt +CL net/minecraft/item/ItemSoup yu +CL net/minecraft/item/ItemBucket yv +CL net/minecraft/item/ItemCarrotOnAStick yw +CL net/minecraft/item/ItemCoal yx +CL net/minecraft/item/ItemMapBase yy +CL net/minecraft/creativetab/CreativeTabs yz +CL net/minecraft/creativetab/CreativeTabs$1 yz$1 +CL net/minecraft/creativetab/CreativeTabs$2 yz$2 +CL net/minecraft/creativetab/CreativeTabs$3 yz$3 +CL net/minecraft/creativetab/CreativeTabs$4 yz$4 +CL net/minecraft/creativetab/CreativeTabs$5 yz$5 +CL net/minecraft/creativetab/CreativeTabs$6 yz$6 +CL net/minecraft/creativetab/CreativeTabs$7 yz$7 +CL net/minecraft/creativetab/CreativeTabs$8 yz$8 +CL net/minecraft/creativetab/CreativeTabs$9 yz$9 +CL net/minecraft/creativetab/CreativeTabs$10 yz$10 +CL net/minecraft/creativetab/CreativeTabs$11 yz$11 +CL net/minecraft/creativetab/CreativeTabs$12 yz$12 +CL net/minecraft/item/ItemTool za +CL net/minecraft/item/ItemDoor zb +CL net/minecraft/item/ItemDoublePlant zc +CL net/minecraft/item/EnumDyeColor zd +CL net/minecraft/item/ItemDye ze +CL net/minecraft/item/ItemCloth zf +CL net/minecraft/item/ItemEgg zg +CL net/minecraft/item/ItemEmptyMap zh +CL net/minecraft/item/ItemEnchantedBook zi +CL net/minecraft/item/ItemEnderEye zj +CL net/minecraft/item/ItemEnderPearl zk +CL net/minecraft/item/ItemExpBottle zl +CL net/minecraft/item/ItemFireball zm +CL net/minecraft/item/ItemFireworkCharge zn +CL net/minecraft/item/ItemFirework zo +CL net/minecraft/item/ItemFishFood zp +CL net/minecraft/item/ItemFishFood$FishType zp$a +CL net/minecraft/item/ItemFishingRod zq +CL net/minecraft/item/ItemFlintAndSteel zr +CL net/minecraft/item/ItemFood zs +CL net/minecraft/item/ItemAppleGold zt +CL net/minecraft/item/ItemHangingEntity zu +CL net/minecraft/item/ItemHoe zv +CL net/minecraft/item/ItemHoe$1 zv$1 +CL net/minecraft/item/Item zw +CL net/minecraft/item/Item$1 zw$1 +CL net/minecraft/item/Item$2 zw$2 +CL net/minecraft/item/Item$3 zw$3 +CL net/minecraft/item/Item$4 zw$4 +CL net/minecraft/item/Item$5 zw$5 +CL net/minecraft/item/Item$6 zw$6 +CL net/minecraft/item/Item$7 zw$7 +CL net/minecraft/item/Item$8 zw$8 +CL net/minecraft/item/Item$9 zw$9 +CL net/minecraft/item/Item$ToolMaterial zw$a +CL net/minecraft/item/Item$10 zw$10 +CL net/minecraft/item/Item$11 zw$11 +CL net/minecraft/item/Item$12 zw$12 +CL net/minecraft/item/Item$13 zw$13 +CL net/minecraft/item/Item$14 zw$14 +CL net/minecraft/item/Item$15 zw$15 +CL net/minecraft/item/Item$16 zw$16 +CL net/minecraft/item/Item$17 zw$17 +CL net/minecraft/item/ItemStack zx +CL net/minecraft/init/Items zy +CL net/minecraft/item/ItemLead zz +CL net/minecraft/item/ItemLeaves aaa +CL net/minecraft/item/ItemMap aab +CL net/minecraft/item/ItemBucketMilk aac +CL net/minecraft/item/ItemMinecart aad +CL net/minecraft/item/ItemMinecart$1 aad$1 +CL net/minecraft/item/ItemMultiTexture aae +CL net/minecraft/item/ItemMultiTexture$1 aae$1 +CL net/minecraft/item/ItemNameTag aaf +CL net/minecraft/item/ItemPickaxe aag +CL net/minecraft/item/ItemPiston aah +CL net/minecraft/item/ItemPotion aai +CL net/minecraft/item/EnumRarity aaj +CL net/minecraft/item/ItemRecord aak +CL net/minecraft/item/ItemRedstone aal +CL net/minecraft/item/ItemSaddle aam +CL net/minecraft/item/ItemSeedFood aan +CL net/minecraft/item/ItemSeeds aao +CL net/minecraft/item/ItemShears aap +CL net/minecraft/item/ItemSpade aaq +CL net/minecraft/item/ItemSign aar +CL net/minecraft/item/ItemSimpleFoiled aas +CL net/minecraft/item/ItemSkull aat +CL net/minecraft/item/ItemSlab aau +CL net/minecraft/item/ItemSnow aav +CL net/minecraft/item/ItemSnowball aaw +CL net/minecraft/item/ItemMonsterPlacer aax +CL net/minecraft/item/ItemSword aay +CL net/minecraft/item/ItemColored aaz +CL net/minecraft/item/EnumAction aba +CL net/minecraft/item/ItemLilyPad abb +CL net/minecraft/item/ItemWritableBook abc +CL net/minecraft/item/ItemEditableBook abd +CL net/minecraft/potion/PotionHelper abe +CL net/minecraft/item/crafting/RecipesArmorDyes abh +CL net/minecraft/item/crafting/RecipesArmor abi +CL net/minecraft/item/crafting/RecipesBanners abj +CL net/minecraft/item/crafting/RecipesBanners$1 abj$1 +CL net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern abj$a +CL net/minecraft/item/crafting/RecipesBanners$RecipeDuplicatePattern abj$b +CL net/minecraft/item/crafting/RecipeBookCloning abk +CL net/minecraft/item/crafting/RecipesDyes abl +CL net/minecraft/item/crafting/RecipeFireworks abm +CL net/minecraft/item/crafting/RecipesFood abn +CL net/minecraft/item/crafting/FurnaceRecipes abo +CL net/minecraft/item/crafting/RecipesMapCloning abp +CL net/minecraft/item/crafting/RecipesMapExtending abq +CL net/minecraft/item/crafting/RecipesIngots abr +CL net/minecraft/item/crafting/IRecipe abs +CL net/minecraft/item/crafting/CraftingManager abt +CL net/minecraft/item/crafting/CraftingManager$1 abt$1 +CL net/minecraft/item/crafting/RecipeRepairItem abu +CL net/minecraft/item/crafting/ShapedRecipes abv +CL net/minecraft/item/crafting/ShapelessRecipes abw +CL net/minecraft/item/crafting/RecipesCrafting abx +CL net/minecraft/item/crafting/RecipesTools aby +CL net/minecraft/item/crafting/RecipesWeapons abz +CL net/minecraft/enchantment/EnchantmentArrowDamage acb +CL net/minecraft/enchantment/EnchantmentArrowFire acc +CL net/minecraft/enchantment/EnchantmentArrowInfinite acd +CL net/minecraft/enchantment/EnchantmentArrowKnockback ace +CL net/minecraft/enchantment/EnchantmentDamage acf +CL net/minecraft/enchantment/EnchantmentDurability acg +CL net/minecraft/enchantment/EnchantmentDigging ach +CL net/minecraft/enchantment/Enchantment aci +CL net/minecraft/enchantment/EnumEnchantmentType acj +CL net/minecraft/enchantment/EnchantmentHelper ack +CL net/minecraft/enchantment/EnchantmentHelper$1 ack$1 +CL net/minecraft/enchantment/EnchantmentHelper$DamageIterator ack$a +CL net/minecraft/enchantment/EnchantmentHelper$HurtIterator ack$b +CL net/minecraft/enchantment/EnchantmentHelper$IModifier ack$c +CL net/minecraft/enchantment/EnchantmentHelper$ModifierLiving ack$d +CL net/minecraft/enchantment/EnchantmentHelper$ModifierDamage ack$e +CL net/minecraft/enchantment/EnchantmentData acl +CL net/minecraft/enchantment/EnchantmentFireAspect acm +CL net/minecraft/enchantment/EnchantmentFishingSpeed acn +CL net/minecraft/enchantment/EnchantmentKnockback aco +CL net/minecraft/enchantment/EnchantmentLootBonus acp +CL net/minecraft/enchantment/EnchantmentOxygen acq +CL net/minecraft/enchantment/EnchantmentProtection acr +CL net/minecraft/enchantment/EnchantmentThorns acs +CL net/minecraft/enchantment/EnchantmentUntouching act +CL net/minecraft/enchantment/EnchantmentWaterWalker acu +CL net/minecraft/enchantment/EnchantmentWaterWorker acv +CL net/minecraft/entity/IMerchant acy +CL net/minecraft/village/MerchantRecipe acz +CL net/minecraft/village/MerchantRecipeList ada +CL net/minecraft/command/server/CommandBlockLogic adc +CL net/minecraft/command/server/CommandBlockLogic$1 adc$1 +CL net/minecraft/command/server/CommandBlockLogic$2 adc$2 +CL net/minecraft/tileentity/MobSpawnerBaseLogic add +CL net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart add$a +CL net/minecraft/block/BlockEventData ade +CL net/minecraft/util/EnumWorldBlockLayer adf +CL net/minecraft/world/ChunkCoordIntPair adg +CL net/minecraft/world/Explosion adi +CL net/minecraft/world/ColorizerFoliage adj +CL net/minecraft/world/GameRules adk +CL net/minecraft/world/GameRules$Value adk$a +CL net/minecraft/world/GameRules$ValueType adk$b +CL net/minecraft/world/ColorizerGrass adl +CL net/minecraft/world/World adm +CL net/minecraft/world/World$1 adm$1 +CL net/minecraft/world/World$2 adm$2 +CL net/minecraft/world/World$3 adm$3 +CL net/minecraft/world/World$4 adm$4 +CL net/minecraft/world/MinecraftException adn +CL net/minecraft/world/IWorldAccess ado +CL net/minecraft/world/WorldSettings adp +CL net/minecraft/world/WorldSettings$GameType adp$a +CL net/minecraft/world/IBlockAccess adq +CL net/minecraft/world/WorldType adr +CL net/minecraft/world/EnumSkyBlock ads +CL net/minecraft/world/SpawnerAnimals adt +CL net/minecraft/world/Teleporter adu +CL net/minecraft/world/Teleporter$PortalPosition adu$a +CL net/minecraft/world/ChunkCache adv +CL net/minecraft/world/NextTickListEntry adw +CL net/minecraft/world/biome/BiomeGenBeach adx +CL net/minecraft/world/biome/BiomeGenBase ady +CL net/minecraft/world/biome/BiomeGenBase$1 ady$1 +CL net/minecraft/world/biome/BiomeGenBase$Height ady$a +CL net/minecraft/world/biome/BiomeGenBase$TempCategory ady$b +CL net/minecraft/world/biome/BiomeGenBase$SpawnListEntry ady$c +CL net/minecraft/world/biome/BiomeCache adz +CL net/minecraft/world/biome/BiomeCache$Block adz$a +CL net/minecraft/world/biome/BiomeColorHelper aea +CL net/minecraft/world/biome/BiomeColorHelper$1 aea$1 +CL net/minecraft/world/biome/BiomeColorHelper$2 aea$2 +CL net/minecraft/world/biome/BiomeColorHelper$3 aea$3 +CL net/minecraft/world/biome/BiomeColorHelper$ColorResolver aea$a +CL net/minecraft/world/biome/BiomeDecorator aeb +CL net/minecraft/world/biome/WorldChunkManager aec +CL net/minecraft/world/biome/BiomeGenDesert aed +CL net/minecraft/world/biome/BiomeGenHills aee +CL net/minecraft/world/biome/WorldChunkManagerHell aef +CL net/minecraft/world/biome/BiomeGenForest aeg +CL net/minecraft/world/biome/BiomeGenForest$2 aeg$1 +CL net/minecraft/world/biome/BiomeGenForest$1 aeg$2 +CL net/minecraft/world/biome/BiomeGenHell aeh +CL net/minecraft/world/biome/BiomeGenSnow aei +CL net/minecraft/world/biome/BiomeGenJungle aej +CL net/minecraft/world/biome/BiomeGenMesa aek +CL net/minecraft/world/biome/BiomeGenMushroomIsland ael +CL net/minecraft/world/biome/BiomeGenMutated aem +CL net/minecraft/world/biome/BiomeGenOcean aen +CL net/minecraft/world/biome/BiomeGenPlains aeo +CL net/minecraft/world/biome/BiomeGenRiver aeq +CL net/minecraft/world/biome/BiomeGenSavanna aer +CL net/minecraft/world/biome/BiomeGenSavanna$Mutated aer$a +CL net/minecraft/world/biome/BiomeGenStoneBeach aes +CL net/minecraft/world/biome/BiomeGenSwamp aet +CL net/minecraft/world/biome/BiomeGenTaiga aeu +CL net/minecraft/world/biome/BiomeGenEnd aev +CL net/minecraft/world/biome/BiomeEndDecorator aew +CL net/minecraft/block/BlockAir aey +CL net/minecraft/block/BlockAnvil aez +CL net/minecraft/block/BlockAnvil$Anvil aez$a +CL net/minecraft/block/BlockBanner afa +CL net/minecraft/block/BlockBanner$1 afa$1 +CL net/minecraft/block/BlockBanner$BlockBannerStanding afa$a +CL net/minecraft/block/BlockBanner$BlockBannerHanging afa$b +CL net/minecraft/block/BlockBarrier afb +CL net/minecraft/block/BlockContainer afc +CL net/minecraft/block/BlockBasePressurePlate afd +CL net/minecraft/block/BlockRailBase afe +CL net/minecraft/block/BlockRailBase$1 afe$1 +CL net/minecraft/block/BlockRailBase$Rail afe$a +CL net/minecraft/block/BlockRailBase$EnumRailDirection afe$b +CL net/minecraft/block/BlockBeacon aff +CL net/minecraft/block/BlockBeacon$1 aff$1 +CL net/minecraft/block/BlockBeacon$1$1 aff$1$1 +CL net/minecraft/block/BlockBed afg +CL net/minecraft/block/BlockBed$EnumPartType afg$a +CL net/minecraft/block/Block afh +CL net/minecraft/block/Block$1 afh$1 +CL net/minecraft/block/Block$2 afh$2 +CL net/minecraft/block/Block$3 afh$3 +CL net/minecraft/block/Block$4 afh$4 +CL net/minecraft/block/Block$EnumOffsetType afh$a +CL net/minecraft/block/Block$SoundType afh$b +CL net/minecraft/init/Blocks afi +CL net/minecraft/block/IGrowable afj +CL net/minecraft/block/BlockBookshelf afk +CL net/minecraft/block/BlockBrewingStand afl +CL net/minecraft/block/BlockBush afm +CL net/minecraft/block/BlockButton afn +CL net/minecraft/block/BlockButton$1 afn$1 +CL net/minecraft/block/BlockCactus afo +CL net/minecraft/block/BlockCake afp +CL net/minecraft/block/BlockCarrot afq +CL net/minecraft/block/BlockCauldron afr +CL net/minecraft/block/BlockChest afs +CL net/minecraft/block/BlockClay aft +CL net/minecraft/block/BlockCocoa afu +CL net/minecraft/block/BlockCocoa$1 afu$1 +CL net/minecraft/block/BlockColored afv +CL net/minecraft/block/BlockCommandBlock afw +CL net/minecraft/block/BlockRedstoneComparator afx +CL net/minecraft/block/BlockRedstoneComparator$1 afx$1 +CL net/minecraft/block/BlockRedstoneComparator$Mode afx$a +CL net/minecraft/block/BlockWorkbench afy +CL net/minecraft/block/BlockWorkbench$InterfaceCraftingTable afy$a +CL net/minecraft/block/BlockCrops afz +CL net/minecraft/block/BlockDaylightDetector aga +CL net/minecraft/block/BlockDeadBush agb +CL net/minecraft/block/BlockRailDetector agc +CL net/minecraft/block/BlockRailDetector$1 agc$1 +CL net/minecraft/block/BlockRedstoneDiode agd +CL net/minecraft/block/BlockDirectional age +CL net/minecraft/block/BlockDirt agf +CL net/minecraft/block/BlockDirt$DirtType agf$a +CL net/minecraft/block/BlockDispenser agg +CL net/minecraft/block/BlockDoor agh +CL net/minecraft/block/BlockDoor$EnumDoorHalf agh$a +CL net/minecraft/block/BlockDoor$EnumHingePosition agh$b +CL net/minecraft/block/BlockDoublePlant agi +CL net/minecraft/block/BlockDoublePlant$EnumBlockHalf agi$a +CL net/minecraft/block/BlockDoublePlant$EnumPlantType agi$b +CL net/minecraft/block/BlockDragonEgg agj +CL net/minecraft/block/BlockDropper agk +CL net/minecraft/block/BlockDynamicLiquid agl +CL net/minecraft/block/BlockEnchantmentTable agm +CL net/minecraft/block/BlockEndPortal agn +CL net/minecraft/block/BlockEndPortalFrame ago +CL net/minecraft/block/BlockEnderChest agp +CL net/minecraft/block/ITileEntityProvider agq +CL net/minecraft/block/BlockFalling agr +CL net/minecraft/block/BlockFarmland ags +CL net/minecraft/block/BlockFarmland$1 ags$1 +CL net/minecraft/block/BlockFence agt +CL net/minecraft/block/BlockFenceGate agu +CL net/minecraft/block/BlockFire agv +CL net/minecraft/block/BlockFlower agw +CL net/minecraft/block/BlockFlower$1 agw$1 +CL net/minecraft/block/BlockFlower$EnumFlowerType agw$a +CL net/minecraft/block/BlockFlower$EnumFlowerType$1 agw$a$1 +CL net/minecraft/block/BlockFlower$EnumFlowerColor agw$b +CL net/minecraft/block/BlockFlowerPot agx +CL net/minecraft/block/BlockFlowerPot$1 agx$1 +CL net/minecraft/block/BlockFlowerPot$EnumFlowerType agx$a +CL net/minecraft/block/BlockDoubleStoneSlabNew agy +CL net/minecraft/block/BlockDoubleStoneSlab agz +CL net/minecraft/block/BlockDoubleWoodSlab aha +CL net/minecraft/block/BlockFurnace ahb +CL net/minecraft/block/BlockFurnace$1 ahb$1 +CL net/minecraft/block/BlockGlass ahc +CL net/minecraft/block/BlockGlowstone ahd +CL net/minecraft/block/BlockGrass ahe +CL net/minecraft/block/BlockGravel ahf +CL net/minecraft/block/BlockHalfStoneSlabNew ahg +CL net/minecraft/block/BlockSlab ahh +CL net/minecraft/block/BlockSlab$EnumBlockHalf ahh$a +CL net/minecraft/block/BlockHalfStoneSlab ahi +CL net/minecraft/block/BlockBreakable ahj +CL net/minecraft/block/BlockHalfWoodSlab ahk +CL net/minecraft/block/BlockHardenedClay ahl +CL net/minecraft/block/BlockHay ahm +CL net/minecraft/block/BlockHopper ahn +CL net/minecraft/block/BlockHopper$1 ahn$1 +CL net/minecraft/block/BlockHugeMushroom aho +CL net/minecraft/block/BlockHugeMushroom$1 aho$1 +CL net/minecraft/block/BlockHugeMushroom$EnumType aho$a +CL net/minecraft/block/BlockIce ahp +CL net/minecraft/block/BlockJukebox ahq +CL net/minecraft/block/BlockJukebox$TileEntityJukebox ahq$a +CL net/minecraft/block/BlockLadder ahr +CL net/minecraft/block/BlockLadder$1 ahr$1 +CL net/minecraft/block/BlockLeaves ahs +CL net/minecraft/block/BlockLever ahu +CL net/minecraft/block/BlockLever$1 ahu$1 +CL net/minecraft/block/BlockLever$EnumOrientation ahu$a +CL net/minecraft/block/BlockLiquid ahv +CL net/minecraft/block/BlockLog ahw +CL net/minecraft/block/BlockLog$1 ahw$1 +CL net/minecraft/block/BlockLog$EnumAxis ahw$a +CL net/minecraft/block/BlockMelon ahx +CL net/minecraft/block/BlockMobSpawner ahy +CL net/minecraft/block/BlockSilverfish ahz +CL net/minecraft/block/BlockSilverfish$1 ahz$1 +CL net/minecraft/block/BlockSilverfish$EnumType ahz$a +CL net/minecraft/block/BlockSilverfish$EnumType$1 ahz$a$1 +CL net/minecraft/block/BlockSilverfish$EnumType$2 ahz$a$2 +CL net/minecraft/block/BlockSilverfish$EnumType$3 ahz$a$3 +CL net/minecraft/block/BlockSilverfish$EnumType$4 ahz$a$4 +CL net/minecraft/block/BlockSilverfish$EnumType$5 ahz$a$5 +CL net/minecraft/block/BlockSilverfish$EnumType$6 ahz$a$6 +CL net/minecraft/block/BlockMushroom aia +CL net/minecraft/block/BlockMycelium aib +CL net/minecraft/block/BlockNetherBrick aic +CL net/minecraft/block/BlockNetherWart aid +CL net/minecraft/block/BlockNetherrack aie +CL net/minecraft/block/BlockNewLeaf aif +CL net/minecraft/block/BlockNewLeaf$1 aif$1 +CL net/minecraft/block/BlockNewLog aig +CL net/minecraft/block/BlockNewLog$1 aig$1 +CL net/minecraft/block/BlockNewLog$2 aig$2 +CL net/minecraft/block/BlockStoneSlabNew aih +CL net/minecraft/block/BlockStoneSlabNew$EnumType aih$a +CL net/minecraft/block/BlockNote aii +CL net/minecraft/block/BlockObsidian aij +CL net/minecraft/block/BlockOldLeaf aik +CL net/minecraft/block/BlockOldLeaf$1 aik$1 +CL net/minecraft/block/BlockOldLog ail +CL net/minecraft/block/BlockOldLog$1 ail$1 +CL net/minecraft/block/BlockOldLog$2 ail$2 +CL net/minecraft/block/BlockOre aim +CL net/minecraft/block/BlockPackedIce ain +CL net/minecraft/block/BlockPlanks aio +CL net/minecraft/block/BlockPlanks$EnumType aio$a +CL net/minecraft/block/BlockPortal aip +CL net/minecraft/block/BlockPortal$Size aip$a +CL net/minecraft/block/BlockPotato aiq +CL net/minecraft/block/BlockCompressedPowered air +CL net/minecraft/block/BlockRailPowered ais +CL net/minecraft/block/BlockRailPowered$1 ais$1 +CL net/minecraft/block/BlockRailPowered$2 ais$2 +CL net/minecraft/block/BlockPressurePlate ait +CL net/minecraft/block/BlockPressurePlate$1 ait$1 +CL net/minecraft/block/BlockPressurePlate$Sensitivity ait$a +CL net/minecraft/block/BlockPrismarine aiu +CL net/minecraft/block/BlockPrismarine$EnumType aiu$a +CL net/minecraft/block/BlockPumpkin aiv +CL net/minecraft/block/BlockPumpkin$1 aiv$1 +CL net/minecraft/block/BlockQuartz aiw +CL net/minecraft/block/BlockQuartz$1 aiw$1 +CL net/minecraft/block/BlockQuartz$EnumType aiw$a +CL net/minecraft/block/BlockRail aix +CL net/minecraft/block/BlockRedFlower aiy +CL net/minecraft/block/BlockRedSandstone aiz +CL net/minecraft/block/BlockRedSandstone$EnumType aiz$a +CL net/minecraft/block/BlockRedstoneOre aja +CL net/minecraft/block/BlockRedstoneWire ajb +CL net/minecraft/block/BlockRedstoneWire$EnumAttachPosition ajb$a +CL net/minecraft/block/BlockRedstoneLight ajc +CL net/minecraft/block/BlockRedstoneTorch ajd +CL net/minecraft/block/BlockRedstoneTorch$Toggle ajd$a +CL net/minecraft/block/BlockReed aje +CL net/minecraft/block/BlockRedstoneRepeater ajf +CL net/minecraft/block/BlockRotatedPillar ajg +CL net/minecraft/block/BlockSand ajh +CL net/minecraft/block/BlockSand$EnumType ajh$a +CL net/minecraft/block/BlockSandStone aji +CL net/minecraft/block/BlockSandStone$EnumType aji$a +CL net/minecraft/block/BlockSapling ajj +CL net/minecraft/block/BlockSapling$1 ajj$1 +CL net/minecraft/block/BlockSeaLantern ajk +CL net/minecraft/block/BlockSign ajl +CL net/minecraft/block/BlockSkull ajm +CL net/minecraft/block/BlockSkull$1 ajm$1 +CL net/minecraft/block/BlockSkull$2 ajm$2 +CL net/minecraft/block/BlockSlime ajn +CL net/minecraft/block/BlockSnowBlock ajo +CL net/minecraft/block/BlockSnow ajp +CL net/minecraft/block/BlockSoulSand ajq +CL net/minecraft/block/BlockSponge ajr +CL net/minecraft/block/BlockStainedGlass ajs +CL net/minecraft/block/BlockStainedGlassPane ajt +CL net/minecraft/block/BlockStairs aju +CL net/minecraft/block/BlockStairs$EnumHalf aju$a +CL net/minecraft/block/BlockStairs$EnumShape aju$b +CL net/minecraft/block/BlockStandingSign ajv +CL net/minecraft/block/BlockStaticLiquid ajw +CL net/minecraft/block/BlockStem ajx +CL net/minecraft/block/BlockStem$1 ajx$1 +CL net/minecraft/block/BlockStone ajy +CL net/minecraft/block/BlockStone$EnumType ajy$a +CL net/minecraft/block/BlockStoneBrick ajz +CL net/minecraft/block/BlockStoneBrick$EnumType ajz$a +CL net/minecraft/block/BlockButtonStone aka +CL net/minecraft/block/BlockStoneSlab akb +CL net/minecraft/block/BlockStoneSlab$EnumType akb$a +CL net/minecraft/block/BlockTallGrass akc +CL net/minecraft/block/BlockTallGrass$EnumType akc$a +CL net/minecraft/block/BlockPane akd +CL net/minecraft/block/BlockTNT ake +CL net/minecraft/block/BlockTorch akf +CL net/minecraft/block/BlockTorch$1 akf$1 +CL net/minecraft/block/BlockTorch$2 akf$2 +CL net/minecraft/block/BlockLeavesBase akg +CL net/minecraft/block/BlockTrapDoor akh +CL net/minecraft/block/BlockTrapDoor$1 akh$1 +CL net/minecraft/block/BlockTrapDoor$DoorHalf akh$a +CL net/minecraft/block/BlockTripWire aki +CL net/minecraft/block/BlockTripWireHook akj +CL net/minecraft/block/BlockTripWireHook$1 akj$1 +CL net/minecraft/block/BlockVine akk +CL net/minecraft/block/BlockVine$1 akk$1 +CL net/minecraft/block/BlockWall akl +CL net/minecraft/block/BlockWall$EnumType akl$a +CL net/minecraft/block/BlockWallSign akm +CL net/minecraft/block/BlockWallSign$1 akm$1 +CL net/minecraft/block/BlockLilyPad akn +CL net/minecraft/block/BlockWeb ako +CL net/minecraft/block/BlockPressurePlateWeighted akp +CL net/minecraft/block/BlockButtonWood akq +CL net/minecraft/block/BlockWoodSlab akr +CL net/minecraft/block/BlockCarpet aks +CL net/minecraft/block/BlockYellowFlower akt +CL net/minecraft/tileentity/TileEntityBanner aku +CL net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern aku$a +CL net/minecraft/tileentity/TileEntityBeacon akv +CL net/minecraft/tileentity/TileEntityBeacon$BeamSegment akv$a +CL net/minecraft/tileentity/TileEntity akw +CL net/minecraft/tileentity/TileEntity$1 akw$1 +CL net/minecraft/tileentity/TileEntity$2 akw$2 +CL net/minecraft/tileentity/TileEntity$3 akw$3 +CL net/minecraft/tileentity/TileEntityBrewingStand akx +CL net/minecraft/tileentity/TileEntityChest aky +CL net/minecraft/tileentity/TileEntityChest$1 aky$1 +CL net/minecraft/tileentity/TileEntityCommandBlock akz +CL net/minecraft/tileentity/TileEntityCommandBlock$1 akz$1 +CL net/minecraft/tileentity/TileEntityComparator ala +CL net/minecraft/tileentity/TileEntityDaylightDetector alb +CL net/minecraft/tileentity/TileEntityDispenser alc +CL net/minecraft/tileentity/TileEntityDropper ald +CL net/minecraft/tileentity/TileEntityEnchantmentTable ale +CL net/minecraft/tileentity/TileEntityEnderChest alf +CL net/minecraft/tileentity/TileEntityFlowerPot alg +CL net/minecraft/tileentity/TileEntityFurnace alh +CL net/minecraft/tileentity/IHopper ali +CL net/minecraft/tileentity/TileEntityHopper alj +CL net/minecraft/tileentity/TileEntityLockable alk +CL net/minecraft/tileentity/TileEntityMobSpawner all +CL net/minecraft/tileentity/TileEntityMobSpawner$1 all$1 +CL net/minecraft/tileentity/TileEntityNote alm +CL net/minecraft/tileentity/TileEntitySign aln +CL net/minecraft/tileentity/TileEntitySign$1 aln$1 +CL net/minecraft/tileentity/TileEntitySign$2 aln$2 +CL net/minecraft/tileentity/TileEntitySkull alo +CL net/minecraft/tileentity/TileEntityEndPortal alp +CL net/minecraft/block/BlockPistonBase als +CL net/minecraft/block/BlockPistonBase$1 als$1 +CL net/minecraft/block/BlockPistonExtension alt +CL net/minecraft/block/BlockPistonExtension$1 alt$1 +CL net/minecraft/block/BlockPistonExtension$EnumPistonType alt$a +CL net/minecraft/tileentity/TileEntityPiston alu +CL net/minecraft/tileentity/TileEntityPiston$1 alu$1 +CL net/minecraft/block/BlockPistonMoving alv +CL net/minecraft/block/state/BlockPistonStructureHelper alw +CL net/minecraft/block/state/BlockStateBase aly +CL net/minecraft/block/state/BlockStateBase$1 aly$1 +CL net/minecraft/block/state/IBlockState alz +CL net/minecraft/block/state/BlockState ama +CL net/minecraft/block/state/BlockState$1 ama$1 +CL net/minecraft/block/state/BlockState$2 ama$2 +CL net/minecraft/block/state/BlockState$StateImplementation ama$a +CL net/minecraft/block/state/BlockWorldState amc +CL net/minecraft/block/state/BlockWorldState$1 amc$1 +CL net/minecraft/block/state/pattern/BlockPattern amd +CL net/minecraft/block/state/pattern/BlockPattern$CacheLoader amd$a +CL net/minecraft/block/state/pattern/BlockPattern$PatternHelper amd$b +CL net/minecraft/block/state/pattern/FactoryBlockPattern ame +CL net/minecraft/block/state/pattern/BlockHelper amg +CL net/minecraft/block/state/pattern/BlockStateHelper amh +CL net/minecraft/block/properties/PropertyHelper amj +CL net/minecraft/block/properties/PropertyBool amk +CL net/minecraft/block/properties/PropertyDirection aml +CL net/minecraft/block/properties/PropertyEnum amm +CL net/minecraft/block/properties/PropertyInteger amn +CL net/minecraft/block/properties/IProperty amo +CL net/minecraft/world/border/IBorderListener amq +CL net/minecraft/world/border/EnumBorderStatus amr +CL net/minecraft/world/border/WorldBorder ams +CL net/minecraft/world/chunk/IChunkProvider amv +CL net/minecraft/world/chunk/NibbleArray amw +CL net/minecraft/world/chunk/EmptyChunk amx +CL net/minecraft/world/chunk/Chunk amy +CL net/minecraft/world/chunk/Chunk$1 amy$1 +CL net/minecraft/world/chunk/Chunk$2 amy$2 +CL net/minecraft/world/chunk/Chunk$3 amy$3 +CL net/minecraft/world/chunk/Chunk$EnumCreateEntityType amy$a +CL net/minecraft/world/chunk/storage/ExtendedBlockStorage amz +CL net/minecraft/world/chunk/storage/NibbleArrayReader ana +CL net/minecraft/world/chunk/storage/IChunkLoader and +CL net/minecraft/world/chunk/storage/ChunkLoader ang +CL net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData ang$a +CL net/minecraft/world/chunk/storage/RegionFile anh +CL net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer anh$a +CL net/minecraft/world/chunk/storage/RegionFileCache ani +CL net/minecraft/world/chunk/storage/AnvilChunkLoader anj +CL net/minecraft/world/WorldProvider anm +CL net/minecraft/world/WorldProviderHell ann +CL net/minecraft/world/WorldProviderHell$1 ann$1 +CL net/minecraft/world/WorldProviderSurface ano +CL net/minecraft/world/WorldProviderEnd anp +CL net/minecraft/world/gen/MapGenRavine anr +CL net/minecraft/world/chunk/ChunkPrimer ans +CL net/minecraft/world/gen/ChunkProviderSettings ant +CL net/minecraft/world/gen/ChunkProviderSettings$1 ant$1 +CL net/minecraft/world/gen/ChunkProviderSettings$Factory ant$a +CL net/minecraft/world/gen/ChunkProviderSettings$Serializer ant$b +CL net/minecraft/world/gen/ChunkProviderDebug anu +CL net/minecraft/world/gen/ChunkProviderFlat anv +CL net/minecraft/world/gen/ChunkProviderHell anw +CL net/minecraft/world/gen/MapGenCaves anx +CL net/minecraft/world/gen/MapGenBase any +CL net/minecraft/world/gen/MapGenCavesHell anz +CL net/minecraft/world/gen/ChunkProviderGenerate aoa +CL net/minecraft/world/gen/ChunkProviderEnd aob +CL net/minecraft/world/gen/feature/WorldGenAbstractTree aoh +CL net/minecraft/world/gen/feature/WorldGenBigTree aoi +CL net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates aoi$a +CL net/minecraft/world/gen/feature/WorldGenForest aoj +CL net/minecraft/world/gen/feature/WorldGenBlockBlob aok +CL net/minecraft/world/gen/feature/WorldGeneratorBonusChest aol +CL net/minecraft/world/gen/GeneratorBushFeature aom +CL net/minecraft/world/gen/feature/WorldGenCactus aon +CL net/minecraft/world/gen/feature/WorldGenClay aop +CL net/minecraft/world/gen/feature/WorldGenDeadBush aoq +CL net/minecraft/world/gen/feature/WorldGenDesertWells aor +CL net/minecraft/world/gen/feature/WorldGenDoublePlant aos +CL net/minecraft/world/gen/feature/WorldGenerator aot +CL net/minecraft/world/gen/feature/WorldGenFlowers aou +CL net/minecraft/world/gen/feature/WorldGenShrub aov +CL net/minecraft/world/gen/feature/WorldGenFire aow +CL net/minecraft/world/gen/feature/WorldGenGlowStone2 aox +CL net/minecraft/world/gen/feature/WorldGenHellLava aoy +CL net/minecraft/world/gen/feature/WorldGenBigMushroom aoz +CL net/minecraft/world/gen/feature/WorldGenIcePath apa +CL net/minecraft/world/gen/feature/WorldGenIceSpike apb +CL net/minecraft/world/gen/feature/WorldGenLakes apc +CL net/minecraft/world/gen/feature/WorldGenGlowStone1 apd +CL net/minecraft/world/gen/feature/WorldGenMegaJungle ape +CL net/minecraft/world/gen/feature/WorldGenMegaPineTree apf +CL net/minecraft/world/gen/feature/WorldGenHugeTrees apg +CL net/minecraft/world/gen/feature/WorldGenMelon aph +CL net/minecraft/world/gen/feature/WorldGenDungeons api +CL net/minecraft/world/gen/feature/WorldGenMinable apj +CL net/minecraft/world/gen/feature/WorldGenTaiga1 apk +CL net/minecraft/world/gen/feature/WorldGenPumpkin apl +CL net/minecraft/world/gen/feature/WorldGenReed apm +CL net/minecraft/world/gen/feature/WorldGenCanopyTree apn +CL net/minecraft/world/gen/feature/WorldGenSand apo +CL net/minecraft/world/gen/feature/WorldGenSavannaTree app +CL net/minecraft/world/gen/feature/WorldGenSpikes apq +CL net/minecraft/world/gen/feature/WorldGenLiquids apr +CL net/minecraft/world/gen/feature/WorldGenTaiga2 aps +CL net/minecraft/world/gen/feature/WorldGenSwamp apt +CL net/minecraft/world/gen/feature/WorldGenTallGrass apu +CL net/minecraft/world/gen/feature/WorldGenTrees apv +CL net/minecraft/world/gen/feature/WorldGenVines apw +CL net/minecraft/world/gen/feature/WorldGenWaterlily apx +CL net/minecraft/world/gen/FlatGeneratorInfo apz +CL net/minecraft/world/gen/FlatLayerInfo aqa +CL net/minecraft/world/gen/structure/StructureBoundingBox aqe +CL net/minecraft/world/gen/structure/StructureBoundingBox$1 aqe$1 +CL net/minecraft/world/gen/structure/MapGenMineshaft aqf +CL net/minecraft/world/gen/structure/StructureMineshaftPieces aqg +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$1 aqg$1 +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor aqg$a +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross aqg$b +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Room aqg$c +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Stairs aqg$d +CL net/minecraft/world/gen/structure/StructureMineshaftStart aqh +CL net/minecraft/world/gen/structure/MapGenNetherBridge aqi +CL net/minecraft/world/gen/structure/MapGenNetherBridge$Start aqi$a +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces aqj +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$1 aqj$1 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3 aqj$a +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$End aqj$b +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight aqj$c +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3 aqj$d +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4 aqj$e +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance aqj$f +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2 aqj$g +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor aqj$h +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5 aqj$i +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 aqj$j +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom aqj$k +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne aqj$l +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece aqj$m +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight aqj$n +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing aqj$o +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs aqj$p +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start aqj$q +CL net/minecraft/world/gen/structure/StructureOceanMonument aqk +CL net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument aqk$a +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces aql +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$1 aql$1 +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XDoubleRoomFitHelper aql$a +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XYDoubleRoomFitHelper aql$b +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YDoubleRoomFitHelper aql$c +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YZDoubleRoomFitHelper aql$d +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$ZDoubleRoomFitHelper aql$e +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomHelper aql$f +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomTopHelper aql$g +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding aql$h +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper aql$i +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentCoreRoom aql$j +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXRoom aql$k +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXYRoom aql$l +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYRoom aql$m +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYZRoom aql$n +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleZRoom aql$o +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$EntryRoom aql$p +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Penthouse aql$q +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece aql$r +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleRoom aql$s +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleTopRoom aql$t +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$WingRoom aql$u +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition aql$v +CL net/minecraft/world/gen/structure/MapGenScatteredFeature aqm +CL net/minecraft/world/gen/structure/MapGenScatteredFeature$Start aqm$a +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces aqn +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$1 aqn$1 +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid aqn$a +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid aqn$b +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid$Stones aqn$b$a +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature aqn$c +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$SwampHut aqn$d +CL net/minecraft/world/gen/structure/MapGenStronghold aqo +CL net/minecraft/world/gen/structure/MapGenStronghold$Start aqo$a +CL net/minecraft/world/gen/structure/StructureStrongholdPieces aqp +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$1 aqp$1 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$2 aqp$2 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$3 aqp$3 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor aqp$a +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor aqp$b +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing aqp$c +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn aqp$d +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Library aqp$e +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight aqp$f +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom aqp$g +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Prison aqp$h +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$RightTurn aqp$i +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing aqp$j +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stones aqp$k +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs aqp$l +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 aqp$m +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight aqp$n +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight aqp$o +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold aqp$p +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door aqp$p$a +CL net/minecraft/world/gen/structure/MapGenStructure aqq +CL net/minecraft/world/gen/structure/MapGenStructure$1 aqq$1 +CL net/minecraft/world/gen/structure/MapGenStructure$2 aqq$2 +CL net/minecraft/world/gen/structure/MapGenStructure$3 aqq$3 +CL net/minecraft/world/gen/structure/MapGenStructureIO aqr +CL net/minecraft/world/gen/structure/MapGenStructureData aqs +CL net/minecraft/world/gen/structure/StructureComponent aqt +CL net/minecraft/world/gen/structure/StructureComponent$1 aqt$1 +CL net/minecraft/world/gen/structure/StructureComponent$BlockSelector aqt$a +CL net/minecraft/world/gen/structure/StructureStart aqu +CL net/minecraft/world/gen/structure/MapGenVillage aqv +CL net/minecraft/world/gen/structure/MapGenVillage$Start aqv$a +CL net/minecraft/world/gen/structure/StructureVillagePieces aqw +CL net/minecraft/world/gen/structure/StructureVillagePieces$1 aqw$1 +CL net/minecraft/world/gen/structure/StructureVillagePieces$House1 aqw$a +CL net/minecraft/world/gen/structure/StructureVillagePieces$Field1 aqw$b +CL net/minecraft/world/gen/structure/StructureVillagePieces$Field2 aqw$c +CL net/minecraft/world/gen/structure/StructureVillagePieces$Torch aqw$d +CL net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight aqw$e +CL net/minecraft/world/gen/structure/StructureVillagePieces$Hall aqw$f +CL net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden aqw$g +CL net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut aqw$h +CL net/minecraft/world/gen/structure/StructureVillagePieces$Church aqw$i +CL net/minecraft/world/gen/structure/StructureVillagePieces$House2 aqw$j +CL net/minecraft/world/gen/structure/StructureVillagePieces$Start aqw$k +CL net/minecraft/world/gen/structure/StructureVillagePieces$Path aqw$l +CL net/minecraft/world/gen/structure/StructureVillagePieces$House3 aqw$m +CL net/minecraft/world/gen/structure/StructureVillagePieces$Village aqw$n +CL net/minecraft/world/gen/structure/StructureVillagePieces$Road aqw$o +CL net/minecraft/world/gen/structure/StructureVillagePieces$Well aqw$p +CL net/minecraft/world/gen/NoiseGeneratorImproved arb +CL net/minecraft/world/gen/NoiseGeneratorOctaves arc +CL net/minecraft/world/gen/NoiseGeneratorPerlin ard +CL net/minecraft/world/gen/NoiseGeneratorSimplex arg +CL net/minecraft/world/gen/NoiseGenerator arh +CL net/minecraft/block/material/MaterialLogic arj +CL net/minecraft/block/material/MaterialTransparent ark +CL net/minecraft/block/material/MaterialLiquid arl +CL net/minecraft/block/material/Material arm +CL net/minecraft/block/material/Material$1 arm$1 +CL net/minecraft/block/material/MapColor arn +CL net/minecraft/block/material/MaterialPortal aro +CL net/minecraft/world/gen/layer/GenLayerDeepOcean arq +CL net/minecraft/world/gen/layer/GenLayerEdge arr +CL net/minecraft/world/gen/layer/GenLayerEdge$1 arr$1 +CL net/minecraft/world/gen/layer/GenLayerEdge$Mode arr$a +CL net/minecraft/world/gen/layer/GenLayerAddIsland ars +CL net/minecraft/world/gen/layer/GenLayerAddMushroomIsland art +CL net/minecraft/world/gen/layer/GenLayerAddSnow aru +CL net/minecraft/world/gen/layer/GenLayerBiomeEdge arv +CL net/minecraft/world/gen/layer/GenLayerBiome arw +CL net/minecraft/world/gen/layer/GenLayerFuzzyZoom asa +CL net/minecraft/world/gen/layer/IntCache asc +CL net/minecraft/world/gen/layer/GenLayerIsland asd +CL net/minecraft/world/gen/layer/GenLayer ase +CL net/minecraft/world/gen/layer/GenLayer$1 ase$1 +CL net/minecraft/world/gen/layer/GenLayer$2 ase$2 +CL net/minecraft/world/gen/layer/GenLayerRareBiome asf +CL net/minecraft/world/gen/layer/GenLayerHills asg +CL net/minecraft/world/gen/layer/GenLayerRemoveTooMuchOcean ash +CL net/minecraft/world/gen/layer/GenLayerRiverInit asi +CL net/minecraft/world/gen/layer/GenLayerRiver asj +CL net/minecraft/world/gen/layer/GenLayerRiverMix ask +CL net/minecraft/world/gen/layer/GenLayerShore asl +CL net/minecraft/world/gen/layer/GenLayerSmooth asm +CL net/minecraft/world/gen/layer/GenLayerVoronoiZoom asq +CL net/minecraft/world/gen/layer/GenLayerZoom asr +CL net/minecraft/pathfinding/Path asu +CL net/minecraft/pathfinding/PathPoint asv +CL net/minecraft/world/pathfinder/NodeProcessor asw +CL net/minecraft/pathfinding/PathEntity asx +CL net/minecraft/pathfinding/PathFinder asy +CL net/minecraft/world/pathfinder/SwimNodeProcessor asz +CL net/minecraft/world/pathfinder/WalkNodeProcessor ata +CL net/minecraft/world/WorldSavedData ate +CL net/minecraft/util/Vec4b atf +CL net/minecraft/world/storage/MapData atg +CL net/minecraft/world/storage/MapData$MapInfo atg$a +CL net/minecraft/world/chunk/storage/AnvilSaveHandler atj +CL net/minecraft/world/chunk/storage/AnvilSaveConverter atk +CL net/minecraft/world/chunk/storage/AnvilSaveConverter$1 atk$1 +CL net/minecraft/world/storage/DerivedWorldInfo atl +CL net/minecraft/world/storage/SaveHandler atm +CL net/minecraft/world/storage/SaveFormatOld atn +CL net/minecraft/world/storage/WorldInfo ato +CL net/minecraft/world/storage/WorldInfo$1 ato$1 +CL net/minecraft/world/storage/WorldInfo$2 ato$2 +CL net/minecraft/world/storage/WorldInfo$3 ato$3 +CL net/minecraft/world/storage/WorldInfo$4 ato$4 +CL net/minecraft/world/storage/WorldInfo$5 ato$5 +CL net/minecraft/world/storage/WorldInfo$6 ato$6 +CL net/minecraft/world/storage/WorldInfo$7 ato$7 +CL net/minecraft/world/storage/WorldInfo$8 ato$8 +CL net/minecraft/world/storage/WorldInfo$9 ato$9 +CL net/minecraft/world/storage/ISaveHandler atp +CL net/minecraft/client/AnvilConverterException atq +CL net/minecraft/world/storage/ISaveFormat atr +CL net/minecraft/world/storage/SaveFormatComparator ats +CL net/minecraft/world/storage/SaveHandlerMP atx +CL net/minecraft/world/storage/IPlayerFileData aty +CL net/minecraft/world/storage/SaveDataMemoryStorage atz +CL net/minecraft/world/storage/MapStorage aua +CL net/minecraft/world/storage/ThreadedFileIOBase auc +CL net/minecraft/world/storage/IThreadedFileIO aud +CL net/minecraft/util/AxisAlignedBB aug +CL net/minecraft/util/MovingObjectPosition auh +CL net/minecraft/util/MovingObjectPosition$MovingObjectType auh$a +CL net/minecraft/util/Vec3 aui +CL net/minecraft/scoreboard/ScoreObjective auk +CL net/minecraft/scoreboard/ScorePlayerTeam aul +CL net/minecraft/scoreboard/Score aum +CL net/minecraft/scoreboard/Score$1 aum$1 +CL net/minecraft/scoreboard/Scoreboard auo +CL net/minecraft/scoreboard/ScoreboardSaveData aup +CL net/minecraft/scoreboard/Team auq +CL net/minecraft/scoreboard/Team$EnumVisible auq$a +CL net/minecraft/scoreboard/GoalColor aur +CL net/minecraft/scoreboard/ScoreDummyCriteria aus +CL net/minecraft/scoreboard/ScoreHealthCriteria aut +CL net/minecraft/scoreboard/IScoreObjectiveCriteria auu +CL net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType auu$a +CL net/minecraft/stats/ObjectiveStat auv +CL net/minecraft/client/renderer/ActiveRenderInfo auz +CL net/minecraft/client/gui/ChatLine ava +CL net/minecraft/client/settings/KeyBinding avb +CL net/minecraft/client/renderer/RenderHelper avc +CL net/minecraft/client/renderer/GLAllocation avd +CL net/minecraft/client/Minecraft ave +CL net/minecraft/client/Minecraft$1 ave$1 +CL net/minecraft/client/Minecraft$2 ave$2 +CL net/minecraft/client/Minecraft$3 ave$3 +CL net/minecraft/client/Minecraft$4 ave$4 +CL net/minecraft/client/Minecraft$5 ave$5 +CL net/minecraft/client/Minecraft$6 ave$6 +CL net/minecraft/client/Minecraft$7 ave$7 +CL net/minecraft/client/Minecraft$8 ave$8 +CL net/minecraft/client/Minecraft$9 ave$9 +CL net/minecraft/client/Minecraft$10 ave$10 +CL net/minecraft/client/Minecraft$11 ave$11 +CL net/minecraft/client/Minecraft$12 ave$12 +CL net/minecraft/client/Minecraft$13 ave$13 +CL net/minecraft/client/Minecraft$14 ave$14 +CL net/minecraft/client/Minecraft$15 ave$15 +CL net/minecraft/client/Minecraft$16 ave$16 +CL net/minecraft/client/Minecraft$17 ave$17 +CL net/minecraft/client/Minecraft$18 ave$18 +CL net/minecraft/util/MouseHelper avf +CL net/minecraft/client/settings/GameSettings avh +CL net/minecraft/client/settings/GameSettings$1 avh$1 +CL net/minecraft/client/settings/GameSettings$2 avh$2 +CL net/minecraft/client/settings/GameSettings$Options avh$a +CL net/minecraft/client/LoadingScreenRenderer avi +CL net/minecraft/util/ScreenShotHelper avj +CL net/minecraft/util/MinecraftError avk +CL net/minecraft/util/Timer avl +CL net/minecraft/util/Session avm +CL net/minecraft/util/Session$Type avm$a +CL net/minecraft/client/gui/FontRenderer avn +CL net/minecraft/client/gui/GuiIngame avo +CL net/minecraft/client/gui/GuiIngame$1 avo$1 +CL net/minecraft/client/gui/Gui avp +CL net/minecraft/client/gui/MapItemRenderer avq +CL net/minecraft/client/gui/MapItemRenderer$1 avq$1 +CL net/minecraft/client/gui/MapItemRenderer$Instance avq$a +CL net/minecraft/client/gui/ScaledResolution avr +CL net/minecraft/client/gui/GuiButton avs +CL net/minecraft/client/gui/GuiNewChat avt +CL net/minecraft/client/gui/GuiUtilRenderComponents avu +CL net/minecraft/client/gui/GuiOverlayDebug avv +CL net/minecraft/client/gui/GuiOverlayDebug$1 avv$1 +CL net/minecraft/client/gui/GuiTextField avw +CL net/minecraft/client/gui/GuiSlider avx +CL net/minecraft/client/gui/GuiSlider$FormatHelper avx$a +CL net/minecraft/client/gui/GuiLabel avy +CL net/minecraft/client/gui/GuiButtonLanguage avz +CL net/minecraft/client/gui/GuiListButton awb +CL net/minecraft/client/gui/GuiLockIconButton awc +CL net/minecraft/client/gui/GuiLockIconButton$Icon awc$a +CL net/minecraft/client/gui/GuiListExtended awd +CL net/minecraft/client/gui/GuiListExtended$IGuiListEntry awd$a +CL net/minecraft/client/gui/GuiOptionButton awe +CL net/minecraft/client/gui/GuiOptionsRowList awf +CL net/minecraft/client/gui/GuiOptionsRowList$Row awf$a +CL net/minecraft/client/gui/GuiPageButtonList awg +CL net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry awg$a +CL net/minecraft/client/gui/GuiPageButtonList$GuiResponder awg$b +CL net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry awg$c +CL net/minecraft/client/gui/GuiPageButtonList$GuiEntry awg$d +CL net/minecraft/client/gui/GuiPageButtonList$GuiLabelEntry awg$e +CL net/minecraft/client/gui/GuiPageButtonList$GuiListEntry awg$f +CL net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry awg$g +CL net/minecraft/client/gui/GuiPlayerTabOverlay awh +CL net/minecraft/client/gui/GuiPlayerTabOverlay$1 awh$1 +CL net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator awh$a +CL net/minecraft/client/gui/GuiSlot awi +CL net/minecraft/client/gui/GuiOptionSlider awj +CL net/minecraft/client/gui/GuiStreamIndicator awk +CL net/minecraft/client/gui/GuiSpectator awm +CL net/minecraft/client/gui/GuiButtonRealmsProxy awp +CL net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy awq +CL net/minecraft/client/gui/GuiScreenRealmsProxy awr +CL net/minecraft/client/gui/GuiSlotRealmsProxy aws +CL net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy awt +CL net/minecraft/client/gui/ScreenChatOptions awu +CL net/minecraft/client/gui/GuiChat awv +CL net/minecraft/client/gui/GuiConfirmOpenLink aww +CL net/minecraft/client/gui/GuiYesNoCallback awx +CL net/minecraft/client/gui/GuiYesNo awy +CL net/minecraft/client/multiplayer/GuiConnecting awz +CL net/minecraft/client/multiplayer/GuiConnecting$1 awz$1 +CL net/minecraft/client/gui/GuiCreateFlatWorld axa +CL net/minecraft/client/gui/GuiCreateFlatWorld$Details axa$a +CL net/minecraft/client/gui/GuiCreateWorld axb +CL net/minecraft/client/gui/GuiScreenCustomizePresets axc +CL net/minecraft/client/gui/GuiScreenCustomizePresets$Info axc$a +CL net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset axc$b +CL net/minecraft/client/gui/GuiCustomizeWorldScreen axd +CL net/minecraft/client/gui/GuiCustomizeWorldScreen$1 axd$1 +CL net/minecraft/client/gui/GuiGameOver axe +CL net/minecraft/client/gui/GuiScreenDemo axf +CL net/minecraft/client/gui/GuiScreenServerList axg +CL net/minecraft/client/gui/GuiDisconnected axh +CL net/minecraft/client/gui/GuiScreenAddServer axi +CL net/minecraft/client/gui/GuiScreenAddServer$1 axi$1 +CL net/minecraft/client/gui/GuiErrorScreen axj +CL net/minecraft/client/gui/GuiSleepMP axk +CL net/minecraft/client/gui/GuiLanguage axl +CL net/minecraft/client/gui/GuiLanguage$List axl$a +CL net/minecraft/client/gui/GuiOptions axn +CL net/minecraft/client/gui/GuiOptions$1 axn$1 +CL net/minecraft/client/gui/GuiMemoryErrorScreen axo +CL net/minecraft/client/gui/GuiIngameMenu axp +CL net/minecraft/client/gui/GuiFlatPresets axq +CL net/minecraft/client/gui/GuiFlatPresets$LayerItem axq$a +CL net/minecraft/client/gui/GuiFlatPresets$ListSlot axq$b +CL net/minecraft/client/gui/GuiScreenWorking axr +CL net/minecraft/client/gui/GuiDownloadTerrain axs +CL net/minecraft/client/gui/GuiRenameWorld axt +CL net/minecraft/client/gui/GuiScreen axu +CL net/minecraft/client/gui/GuiSelectWorld axv +CL net/minecraft/client/gui/GuiSelectWorld$List axv$a +CL net/minecraft/client/gui/GuiShareToLan axw +CL net/minecraft/client/gui/GuiCustomizeSkin axx +CL net/minecraft/client/gui/GuiCustomizeSkin$1 axx$1 +CL net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart axx$a +CL net/minecraft/client/gui/GuiSnooper axy +CL net/minecraft/client/gui/GuiSnooper$List axy$a +CL net/minecraft/client/gui/GuiScreenOptionsSounds axz +CL net/minecraft/client/gui/GuiScreenOptionsSounds$Button axz$a +CL net/minecraft/client/gui/GuiMainMenu aya +CL net/minecraft/client/gui/GuiVideoSettings ayb +CL net/minecraft/client/gui/GuiWinGame ayc +CL net/minecraft/client/gui/achievement/GuiAchievement ayd +CL net/minecraft/client/gui/achievement/GuiAchievements aye +CL net/minecraft/client/gui/achievement/GuiStats ayf +CL net/minecraft/client/gui/achievement/GuiStats$StatsBlock ayf$a +CL net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 ayf$a$1 +CL net/minecraft/client/gui/achievement/GuiStats$StatsGeneral ayf$b +CL net/minecraft/client/gui/achievement/GuiStats$StatsItem ayf$c +CL net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 ayf$c$1 +CL net/minecraft/client/gui/achievement/GuiStats$StatsMobsList ayf$d +CL net/minecraft/client/gui/achievement/GuiStats$Stats ayf$e +CL net/minecraft/client/gui/IProgressMeter ayg +CL net/minecraft/client/gui/GuiKeyBindingList ayi +CL net/minecraft/client/gui/GuiKeyBindingList$1 ayi$1 +CL net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry ayi$a +CL net/minecraft/client/gui/GuiKeyBindingList$KeyEntry ayi$b +CL net/minecraft/client/gui/GuiControls ayj +CL net/minecraft/client/gui/inventory/GuiContainer ayl +CL net/minecraft/client/gui/GuiRepair aym +CL net/minecraft/client/gui/inventory/GuiBeacon ayn +CL net/minecraft/client/gui/inventory/GuiBeacon$CancelButton ayn$a +CL net/minecraft/client/gui/inventory/GuiBeacon$ConfirmButton ayn$b +CL net/minecraft/client/gui/inventory/GuiBeacon$PowerButton ayn$c +CL net/minecraft/client/gui/inventory/GuiBeacon$Button ayn$d +CL net/minecraft/client/gui/GuiScreenBook ayo +CL net/minecraft/client/gui/GuiScreenBook$NextPageButton ayo$a +CL net/minecraft/client/gui/inventory/GuiBrewingStand ayp +CL net/minecraft/client/gui/GuiCommandBlock ayq +CL net/minecraft/client/gui/inventory/GuiChest ayr +CL net/minecraft/client/gui/inventory/GuiCrafting ays +CL net/minecraft/client/gui/inventory/CreativeCrafting ayt +CL net/minecraft/client/gui/inventory/GuiContainerCreative ayu +CL net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative ayu$a +CL net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot ayu$b +CL net/minecraft/client/gui/inventory/GuiDispenser ayv +CL net/minecraft/client/renderer/InventoryEffectRenderer ayw +CL net/minecraft/util/EnchantmentNameParts ayx +CL net/minecraft/client/gui/GuiEnchantment ayy +CL net/minecraft/client/gui/inventory/GuiFurnace ayz +CL net/minecraft/client/gui/GuiHopper aza +CL net/minecraft/client/gui/inventory/GuiScreenHorseInventory azb +CL net/minecraft/client/gui/inventory/GuiInventory azc +CL net/minecraft/client/gui/GuiMerchant azd +CL net/minecraft/client/gui/GuiMerchant$MerchantButton azd$a +CL net/minecraft/client/gui/inventory/GuiEditSign aze +CL net/minecraft/client/gui/GuiMultiplayer azh +CL net/minecraft/client/gui/ServerListEntryLanScan azi +CL net/minecraft/client/gui/ServerListEntryLanDetected azj +CL net/minecraft/client/gui/ServerListEntryNormal azk +CL net/minecraft/client/gui/ServerListEntryNormal$1 azk$1 +CL net/minecraft/client/gui/ServerSelectionList azl +CL net/minecraft/client/gui/GuiScreenResourcePacks azo +CL net/minecraft/client/resources/ResourcePackListEntry azp +CL net/minecraft/client/resources/ResourcePackListEntry$1 azp$1 +CL net/minecraft/client/resources/ResourcePackListEntryDefault azq +CL net/minecraft/client/resources/ResourcePackListEntryFound azr +CL net/minecraft/client/gui/GuiResourcePackAvailable azt +CL net/minecraft/client/gui/GuiResourcePackList azu +CL net/minecraft/client/gui/GuiResourcePackSelected azv +CL net/minecraft/client/gui/stream/GuiIngestServers azy +CL net/minecraft/client/gui/stream/GuiIngestServers$ServerList azy$a +CL net/minecraft/client/gui/stream/GuiStreamOptions azz +CL net/minecraft/client/gui/stream/GuiStreamUnavailable baa +CL net/minecraft/client/gui/stream/GuiStreamUnavailable$1 baa$1 +CL net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason baa$a +CL net/minecraft/client/gui/stream/GuiTwitchUserMode bab +CL net/minecraft/client/gui/spectator/PlayerMenuObject bad +CL net/minecraft/client/gui/spectator/BaseSpectatorGroup bae +CL net/minecraft/client/gui/spectator/SpectatorMenu baf +CL net/minecraft/client/gui/spectator/SpectatorMenu$1 baf$1 +CL net/minecraft/client/gui/spectator/SpectatorMenu$EndSpectatorObject baf$a +CL net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject baf$b +CL net/minecraft/client/gui/spectator/ISpectatorMenuView bag +CL net/minecraft/client/gui/spectator/ISpectatorMenuObject bah +CL net/minecraft/client/gui/spectator/ISpectatorMenuRecipient bai +CL net/minecraft/client/gui/spectator/categories/SpectatorDetails baj +CL net/minecraft/client/gui/spectator/categories/TeleportToPlayer bak +CL net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 bak$1 +CL net/minecraft/client/gui/spectator/categories/TeleportToTeam bal +CL net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject bal$a +CL net/minecraft/client/main/GameConfiguration bao +CL net/minecraft/client/main/GameConfiguration$DisplayInformation bao$a +CL net/minecraft/client/main/GameConfiguration$FolderInformation bao$b +CL net/minecraft/client/main/GameConfiguration$GameInformation bao$c +CL net/minecraft/client/main/GameConfiguration$ServerInformation bao$d +CL net/minecraft/client/main/GameConfiguration$UserInformation bao$e +CL net/minecraft/client/model/ModelArmorStandArmor bas +CL net/minecraft/client/model/ModelArmorStand bat +CL net/minecraft/client/model/ModelBanner bau +CL net/minecraft/client/model/ModelBat bav +CL net/minecraft/client/model/ModelBlaze baw +CL net/minecraft/client/model/ModelBoat bax +CL net/minecraft/client/model/ModelBook bay +CL net/minecraft/client/model/ModelChest baz +CL net/minecraft/client/model/ModelChicken bba +CL net/minecraft/client/model/ModelCow bbb +CL net/minecraft/client/model/ModelCreeper bbc +CL net/minecraft/client/model/ModelEnderman bbd +CL net/minecraft/client/model/ModelEnderMite bbe +CL net/minecraft/client/model/ModelGhast bbf +CL net/minecraft/client/model/ModelGuardian bbg +CL net/minecraft/client/model/ModelHorse bbh +CL net/minecraft/client/model/ModelHumanoidHead bbi +CL net/minecraft/client/model/ModelBiped bbj +CL net/minecraft/client/model/ModelLargeChest bbk +CL net/minecraft/client/model/ModelMagmaCube bbl +CL net/minecraft/client/model/ModelLeashKnot bbm +CL net/minecraft/client/model/ModelMinecart bbn +CL net/minecraft/client/model/ModelBase bbo +CL net/minecraft/client/model/ModelOcelot bbp +CL net/minecraft/client/model/ModelPig bbq +CL net/minecraft/client/model/ModelPlayer bbr +CL net/minecraft/client/model/TexturedQuad bbs +CL net/minecraft/client/model/ModelQuadruped bbt +CL net/minecraft/client/model/ModelRabbit bbu +CL net/minecraft/client/model/ModelSheep1 bbv +CL net/minecraft/client/model/ModelSheep2 bbw +CL net/minecraft/client/model/ModelSign bbx +CL net/minecraft/client/model/ModelSilverfish bby +CL net/minecraft/client/model/ModelSkeletonHead bbz +CL net/minecraft/client/model/ModelSkeleton bca +CL net/minecraft/client/model/ModelSlime bcc +CL net/minecraft/client/model/ModelSnowMan bcd +CL net/minecraft/client/model/ModelSpider bce +CL net/minecraft/client/model/ModelSquid bcf +CL net/minecraft/client/model/PositionTextureVertex bcg +CL net/minecraft/client/model/ModelIronGolem bch +CL net/minecraft/client/model/ModelVillager bci +CL net/minecraft/client/model/ModelZombieVillager bcj +CL net/minecraft/client/model/ModelWitch bck +CL net/minecraft/client/model/ModelWither bcl +CL net/minecraft/client/model/ModelWolf bcm +CL net/minecraft/client/model/ModelZombie bcn +CL net/minecraft/client/model/ModelDragon bco +CL net/minecraft/client/model/ModelEnderCrystal bcp +CL net/minecraft/client/model/ModelBox bcr +CL net/minecraft/client/model/ModelRenderer bct +CL net/minecraft/client/model/TextureOffset bcu +CL net/minecraft/client/network/NetHandlerLoginClient bcx +CL net/minecraft/client/network/NetHandlerLoginClient$1 bcx$1 +CL net/minecraft/client/network/NetHandlerPlayClient bcy +CL net/minecraft/client/network/NetHandlerPlayClient$1 bcy$1 +CL net/minecraft/client/network/NetHandlerPlayClient$2 bcy$2 +CL net/minecraft/client/network/NetHandlerPlayClient$3 bcy$3 +CL net/minecraft/client/network/NetHandlerPlayClient$3$1 bcy$3$1 +CL net/minecraft/client/network/NetHandlerPlayClient$3$1$1 bcy$3$1$1 +CL net/minecraft/client/network/NetHandlerPlayClient$4 bcy$4 +CL net/minecraft/client/multiplayer/ChunkProviderClient bcz +CL net/minecraft/client/multiplayer/PlayerControllerMP bda +CL net/minecraft/client/multiplayer/WorldClient bdb +CL net/minecraft/client/multiplayer/WorldClient$1 bdb$1 +CL net/minecraft/client/multiplayer/WorldClient$2 bdb$2 +CL net/minecraft/client/multiplayer/WorldClient$3 bdb$3 +CL net/minecraft/client/multiplayer/WorldClient$4 bdb$4 +CL net/minecraft/client/network/NetworkPlayerInfo bdc +CL net/minecraft/client/network/NetworkPlayerInfo$1 bdc$1 +CL net/minecraft/client/network/NetworkPlayerInfo$2 bdc$2 +CL net/minecraft/client/multiplayer/ServerAddress bdd +CL net/minecraft/client/multiplayer/ServerData bde +CL net/minecraft/client/multiplayer/ServerData$ServerResourceMode bde$a +CL net/minecraft/client/multiplayer/ServerList bdf +CL net/minecraft/client/network/OldServerPinger bdg +CL net/minecraft/client/network/OldServerPinger$1 bdg$1 +CL net/minecraft/client/network/OldServerPinger$2 bdg$2 +CL net/minecraft/client/network/OldServerPinger$2$1 bdg$2$1 +CL net/minecraft/client/particle/Barrier bdj +CL net/minecraft/client/particle/Barrier$Factory bdj$a +CL net/minecraft/client/particle/EntityBreakingFX bdk +CL net/minecraft/client/particle/EntityBreakingFX$Factory bdk$a +CL net/minecraft/client/particle/EntityBreakingFX$SlimeFactory bdk$b +CL net/minecraft/client/particle/EntityBreakingFX$SnowballFactory bdk$c +CL net/minecraft/client/particle/EntityBubbleFX bdl +CL net/minecraft/client/particle/EntityBubbleFX$Factory bdl$a +CL net/minecraft/client/particle/EntityCrit2FX bdm +CL net/minecraft/client/particle/EntityCrit2FX$MagicFactory bdm$a +CL net/minecraft/client/particle/EntityCrit2FX$Factory bdm$b +CL net/minecraft/client/particle/EntityDropParticleFX bdn +CL net/minecraft/client/particle/EntityDropParticleFX$LavaFactory bdn$a +CL net/minecraft/client/particle/EntityDropParticleFX$WaterFactory bdn$b +CL net/minecraft/client/particle/EntityEnchantmentTableParticleFX bdo +CL net/minecraft/client/particle/EntityEnchantmentTableParticleFX$EnchantmentTable bdo$a +CL net/minecraft/client/particle/EntityExplodeFX bdp +CL net/minecraft/client/particle/EntityExplodeFX$Factory bdp$a +CL net/minecraft/client/particle/EntityFirework bdq +CL net/minecraft/client/particle/EntityFirework$OverlayFX bdq$a +CL net/minecraft/client/particle/EntityFirework$SparkFX bdq$b +CL net/minecraft/client/particle/EntityFirework$StarterFX bdq$c +CL net/minecraft/client/particle/EntityFirework$Factory bdq$d +CL net/minecraft/client/particle/EntityFlameFX bdr +CL net/minecraft/client/particle/EntityFlameFX$Factory bdr$a +CL net/minecraft/client/particle/EntityFootStepFX bds +CL net/minecraft/client/particle/EntityFootStepFX$Factory bds$a +CL net/minecraft/client/particle/EntityHeartFX bdt +CL net/minecraft/client/particle/EntityHeartFX$AngryVillagerFactory bdt$a +CL net/minecraft/client/particle/EntityHeartFX$Factory bdt$b +CL net/minecraft/client/particle/EntityLargeExplodeFX bdu +CL net/minecraft/client/particle/EntityLargeExplodeFX$Factory bdu$a +CL net/minecraft/client/particle/EntityHugeExplodeFX bdv +CL net/minecraft/client/particle/EntityHugeExplodeFX$Factory bdv$a +CL net/minecraft/client/particle/EntityPickupFX bdw +CL net/minecraft/client/particle/EntityCritFX bdx +CL net/minecraft/client/particle/EntityCritFX$Factory bdx$a +CL net/minecraft/client/particle/EntityLavaFX bdy +CL net/minecraft/client/particle/EntityLavaFX$Factory bdy$a +CL net/minecraft/client/particle/MobAppearance bdz +CL net/minecraft/client/particle/MobAppearance$Factory bdz$a +CL net/minecraft/client/particle/EntityNoteFX bea +CL net/minecraft/client/particle/EntityNoteFX$Factory bea$a +CL net/minecraft/client/particle/EntityFX beb +CL net/minecraft/client/particle/EffectRenderer bec +CL net/minecraft/client/particle/EffectRenderer$1 bec$1 +CL net/minecraft/client/particle/EffectRenderer$2 bec$2 +CL net/minecraft/client/particle/EffectRenderer$3 bec$3 +CL net/minecraft/client/particle/EffectRenderer$4 bec$4 +CL net/minecraft/client/particle/IParticleFactory bed +CL net/minecraft/client/particle/EntityCloudFX bee +CL net/minecraft/client/particle/EntityCloudFX$Factory bee$a +CL net/minecraft/client/particle/EntityPortalFX bef +CL net/minecraft/client/particle/EntityPortalFX$Factory bef$a +CL net/minecraft/client/particle/EntityReddustFX beg +CL net/minecraft/client/particle/EntityReddustFX$Factory beg$a +CL net/minecraft/client/particle/EntitySmokeFX beh +CL net/minecraft/client/particle/EntitySmokeFX$1 beh$1 +CL net/minecraft/client/particle/EntitySmokeFX$Factory beh$a +CL net/minecraft/client/particle/EntitySnowShovelFX bei +CL net/minecraft/client/particle/EntitySnowShovelFX$Factory bei$a +CL net/minecraft/client/particle/EntitySpellParticleFX bej +CL net/minecraft/client/particle/EntitySpellParticleFX$AmbientMobFactory bej$a +CL net/minecraft/client/particle/EntitySpellParticleFX$InstantFactory bej$b +CL net/minecraft/client/particle/EntitySpellParticleFX$MobFactory bej$c +CL net/minecraft/client/particle/EntitySpellParticleFX$Factory bej$d +CL net/minecraft/client/particle/EntitySpellParticleFX$WitchFactory bej$e +CL net/minecraft/client/particle/EntitySplashFX bek +CL net/minecraft/client/particle/EntitySplashFX$Factory bek$a +CL net/minecraft/client/particle/EntitySuspendFX bel +CL net/minecraft/client/particle/EntitySuspendFX$Factory bel$a +CL net/minecraft/client/particle/EntityAuraFX bem +CL net/minecraft/client/particle/EntityAuraFX$HappyVillagerFactory bem$a +CL net/minecraft/client/particle/EntityAuraFX$Factory bem$b +CL net/minecraft/client/particle/EntityBlockDustFX ben +CL net/minecraft/client/particle/EntityBlockDustFX$Factory ben$a +CL net/minecraft/client/particle/EntityDiggingFX beo +CL net/minecraft/client/particle/EntityDiggingFX$Factory beo$a +CL net/minecraft/client/particle/EntityParticleEmitter bep +CL net/minecraft/client/particle/EntityFishWakeFX beq +CL net/minecraft/client/particle/EntityFishWakeFX$Factory beq$a +CL net/minecraft/client/particle/EntityRainFX ber +CL net/minecraft/client/particle/EntityRainFX$Factory ber$a +CL net/minecraft/client/entity/AbstractClientPlayer bet +CL net/minecraft/util/MovementInput beu +CL net/minecraft/util/MovementInputFromOptions bev +CL net/minecraft/client/entity/EntityPlayerSP bew +CL net/minecraft/client/entity/EntityOtherPlayerMP bex +CL net/minecraft/client/player/inventory/LocalBlockIntercommunication bey +CL net/minecraft/client/player/inventory/ContainerLocalMenu bez +CL net/minecraft/entity/boss/BossStatus bfc +CL net/minecraft/client/renderer/WorldRenderer bfd +CL net/minecraft/client/renderer/WorldRenderer$1 bfd$1 +CL net/minecraft/client/renderer/WorldRenderer$2 bfd$2 +CL net/minecraft/client/renderer/WorldRenderer$State bfd$a +CL net/minecraft/client/renderer/WorldVertexBufferUploader bfe +CL net/minecraft/client/renderer/WorldVertexBufferUploader$1 bfe$1 +CL net/minecraft/client/renderer/RegionRenderCache bff +CL net/minecraft/client/renderer/RegionRenderCacheBuilder bfg +CL net/minecraft/client/renderer/ChunkRenderContainer bfh +CL net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer bfi +CL net/minecraft/client/renderer/EnumFaceDirection bfj +CL net/minecraft/client/renderer/EnumFaceDirection$1 bfj$1 +CL net/minecraft/client/renderer/EnumFaceDirection$Constants bfj$a +CL net/minecraft/client/renderer/EnumFaceDirection$VertexInformation bfj$b +CL net/minecraft/client/renderer/EntityRenderer bfk +CL net/minecraft/client/renderer/EntityRenderer$1 bfk$1 +CL net/minecraft/client/renderer/EntityRenderer$2 bfk$2 +CL net/minecraft/client/renderer/EntityRenderer$3 bfk$3 +CL net/minecraft/client/renderer/EntityRenderer$4 bfk$4 +CL net/minecraft/client/renderer/GlStateManager bfl +CL net/minecraft/client/renderer/GlStateManager$1 bfl$1 +CL net/minecraft/client/renderer/GlStateManager$AlphaState bfl$a +CL net/minecraft/client/renderer/GlStateManager$BlendState bfl$b +CL net/minecraft/client/renderer/GlStateManager$BooleanState bfl$c +CL net/minecraft/client/renderer/GlStateManager$ClearState bfl$d +CL net/minecraft/client/renderer/GlStateManager$Color bfl$e +CL net/minecraft/client/renderer/GlStateManager$ColorLogicState bfl$f +CL net/minecraft/client/renderer/GlStateManager$ColorMask bfl$g +CL net/minecraft/client/renderer/GlStateManager$ColorMaterialState bfl$h +CL net/minecraft/client/renderer/GlStateManager$CullState bfl$i +CL net/minecraft/client/renderer/GlStateManager$DepthState bfl$j +CL net/minecraft/client/renderer/GlStateManager$FogState bfl$k +CL net/minecraft/client/renderer/GlStateManager$PolygonOffsetState bfl$l +CL net/minecraft/client/renderer/GlStateManager$StencilFunc bfl$m +CL net/minecraft/client/renderer/GlStateManager$StencilState bfl$n +CL net/minecraft/client/renderer/GlStateManager$TexGen bfl$o +CL net/minecraft/client/renderer/GlStateManager$TexGenCoord bfl$p +CL net/minecraft/client/renderer/GlStateManager$TexGenState bfl$q +CL net/minecraft/client/renderer/GlStateManager$TextureState bfl$r +CL net/minecraft/client/renderer/IImageBuffer bfm +CL net/minecraft/client/renderer/ItemRenderer bfn +CL net/minecraft/client/renderer/ItemRenderer$1 bfn$1 +CL net/minecraft/client/renderer/ItemModelMesher bfo +CL net/minecraft/client/renderer/ItemMeshDefinition bfp +CL net/minecraft/client/renderer/RenderGlobal bfr +CL net/minecraft/client/renderer/RenderGlobal$1 bfr$1 +CL net/minecraft/client/renderer/RenderGlobal$2 bfr$2 +CL net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation bfr$a +CL net/minecraft/client/renderer/ImageBufferDownload bfs +CL net/minecraft/client/renderer/RenderList bft +CL net/minecraft/client/shader/Framebuffer bfw +CL net/minecraft/client/renderer/Tessellator bfx +CL net/minecraft/client/renderer/VboRenderList bfy +CL net/minecraft/client/renderer/VertexBufferUploader bfz +CL net/minecraft/client/renderer/ViewFrustum bga +CL net/minecraft/client/renderer/ChestRenderer bgb +CL net/minecraft/client/renderer/BlockModelShapes bgc +CL net/minecraft/client/renderer/BlockModelShapes$1 bgc$1 +CL net/minecraft/client/renderer/BlockModelShapes$2 bgc$2 +CL net/minecraft/client/renderer/BlockModelShapes$3 bgc$3 +CL net/minecraft/client/renderer/BlockModelShapes$4 bgc$4 +CL net/minecraft/client/renderer/BlockModelShapes$5 bgc$5 +CL net/minecraft/client/renderer/BlockModelShapes$6 bgc$6 +CL net/minecraft/client/renderer/BlockModelShapes$7 bgc$7 +CL net/minecraft/client/renderer/BlockModelShapes$8 bgc$8 +CL net/minecraft/client/renderer/BlockRendererDispatcher bgd +CL net/minecraft/client/renderer/BlockFluidRenderer bge +CL net/minecraft/client/renderer/BlockModelRenderer bgf +CL net/minecraft/client/renderer/BlockModelRenderer$1 bgf$1 +CL net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo bgf$a +CL net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace bgf$b +CL net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations bgf$c +CL net/minecraft/client/renderer/BlockModelRenderer$Orientation bgf$d +CL net/minecraft/client/renderer/block/model/BakedQuad bgg +CL net/minecraft/client/renderer/block/model/BlockPart bgh +CL net/minecraft/client/renderer/block/model/BlockPart$1 bgh$1 +CL net/minecraft/client/renderer/block/model/BlockPart$Deserializer bgh$a +CL net/minecraft/client/renderer/block/model/BlockPartFace bgi +CL net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer bgi$a +CL net/minecraft/client/renderer/block/model/BlockPartRotation bgj +CL net/minecraft/client/renderer/block/model/BlockFaceUV bgk +CL net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer bgk$a +CL net/minecraft/client/renderer/block/model/ModelBlock bgl +CL net/minecraft/client/renderer/block/model/ModelBlock$1 bgl$1 +CL net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep bgl$a +CL net/minecraft/client/renderer/block/model/ModelBlock$Deserializer bgl$b +CL net/minecraft/client/renderer/block/model/ModelBlock$LoopException bgl$c +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition bgm +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer bgm$a +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$MissingVariantException bgm$b +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant bgm$c +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer bgm$c$a +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants bgm$d +CL net/minecraft/client/renderer/block/model/BreakingFour bgn +CL net/minecraft/client/renderer/block/model/BreakingFour$1 bgn$1 +CL net/minecraft/client/renderer/block/model/FaceBakery bgo +CL net/minecraft/client/renderer/block/model/FaceBakery$1 bgo$1 +CL net/minecraft/client/renderer/block/model/ItemModelGenerator bgp +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$1 bgp$1 +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$Span bgp$a +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing bgp$b +CL net/minecraft/client/renderer/block/model/ItemTransformVec3f bgq +CL net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer bgq$a +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms bgr +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$1 bgr$1 +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer bgr$a +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType bgr$b +CL net/minecraft/client/renderer/block/statemap/StateMapperBase bgu +CL net/minecraft/client/renderer/block/statemap/BlockStateMapper bgv +CL net/minecraft/client/renderer/block/statemap/DefaultStateMapper bgw +CL net/minecraft/client/renderer/block/statemap/StateMap bgx +CL net/minecraft/client/renderer/block/statemap/StateMap$1 bgx$1 +CL net/minecraft/client/renderer/block/statemap/StateMap$Builder bgx$a +CL net/minecraft/client/renderer/block/statemap/IStateMapper bgy +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer bha +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$1 bha$1 +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture bha$a +CL net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer bhb +CL net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher bhc +CL net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer bhd +CL net/minecraft/client/renderer/tileentity/TileEntityChestRenderer bhe +CL net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer bhf +CL net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer bhg +CL net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer bhh +CL net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer bhi +CL net/minecraft/client/renderer/tileentity/TileEntitySignRenderer bhj +CL net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer bhk +CL net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer$1 bhk$1 +CL net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer bhl +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator bhn +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status bhn$a +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type bhn$b +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher bho +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 bho$1 +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 bho$2 +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 bho$3 +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker bhp +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 bhp$1 +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 bhp$2 +CL net/minecraft/client/renderer/chunk/CompiledChunk bhq +CL net/minecraft/client/renderer/chunk/CompiledChunk$1 bhq$1 +CL net/minecraft/client/renderer/chunk/ListChunkFactory bhr +CL net/minecraft/client/renderer/chunk/ListedRenderChunk bhs +CL net/minecraft/client/renderer/chunk/RenderChunk bht +CL net/minecraft/client/renderer/chunk/IRenderChunkFactory bhu +CL net/minecraft/client/renderer/chunk/VboChunkFactory bhv +CL net/minecraft/client/renderer/chunk/VisGraph bhw +CL net/minecraft/client/renderer/chunk/VisGraph$1 bhw$1 +CL net/minecraft/client/renderer/chunk/SetVisibility bhx +CL net/minecraft/client/renderer/culling/ICamera bia +CL net/minecraft/client/renderer/culling/ClippingHelperImpl bib +CL net/minecraft/client/renderer/culling/Frustum bic +CL net/minecraft/client/renderer/culling/ClippingHelper bid +CL net/minecraft/client/renderer/entity/ArmorStandRenderer big +CL net/minecraft/client/renderer/entity/ArmorStandRenderer$1 big$1 +CL net/minecraft/client/renderer/entity/RenderArrow bih +CL net/minecraft/client/renderer/entity/RenderBat bii +CL net/minecraft/client/renderer/entity/RenderBlaze bij +CL net/minecraft/client/renderer/entity/RenderBoat bik +CL net/minecraft/client/renderer/entity/RenderCaveSpider bil +CL net/minecraft/client/renderer/entity/RenderChicken bim +CL net/minecraft/client/renderer/entity/RenderCow bin +CL net/minecraft/client/renderer/entity/RenderCreeper bio +CL net/minecraft/client/renderer/entity/RenderEntity bip +CL net/minecraft/client/renderer/tileentity/RenderEnderCrystal biq +CL net/minecraft/client/renderer/entity/RenderDragon bir +CL net/minecraft/client/renderer/entity/RenderEnderman bis +CL net/minecraft/client/renderer/entity/RenderEndermite bit +CL net/minecraft/client/renderer/entity/RenderManager biu +CL net/minecraft/client/renderer/entity/Render biv +CL net/minecraft/client/renderer/entity/RenderXPOrb biw +CL net/minecraft/client/renderer/entity/RenderFallingBlock bix +CL net/minecraft/client/renderer/entity/RenderFireball biy +CL net/minecraft/client/renderer/entity/RenderFish biz +CL net/minecraft/client/renderer/entity/RenderGhast bja +CL net/minecraft/client/renderer/entity/RenderGiantZombie bjb +CL net/minecraft/client/renderer/entity/RenderGiantZombie$1 bjb$1 +CL net/minecraft/client/renderer/entity/RenderGuardian bjc +CL net/minecraft/client/renderer/entity/RenderHorse bjd +CL net/minecraft/client/renderer/entity/RenderBiped bje +CL net/minecraft/client/renderer/entity/RenderEntityItem bjf +CL net/minecraft/client/renderer/tileentity/RenderItemFrame bjg +CL net/minecraft/client/renderer/entity/RenderItem bjh +CL net/minecraft/client/renderer/entity/RenderItem$1 bjh$1 +CL net/minecraft/client/renderer/entity/RenderItem$2 bjh$2 +CL net/minecraft/client/renderer/entity/RenderItem$3 bjh$3 +CL net/minecraft/client/renderer/entity/RenderItem$4 bjh$4 +CL net/minecraft/client/renderer/entity/RenderItem$5 bjh$5 +CL net/minecraft/client/renderer/entity/RenderItem$6 bjh$6 +CL net/minecraft/client/renderer/entity/RenderItem$7 bjh$7 +CL net/minecraft/client/renderer/entity/RenderItem$8 bjh$8 +CL net/minecraft/client/renderer/entity/RenderItem$9 bjh$9 +CL net/minecraft/client/renderer/entity/RenderMagmaCube bji +CL net/minecraft/client/renderer/entity/RenderLeashKnot bjj +CL net/minecraft/client/renderer/entity/RenderLightningBolt bjk +CL net/minecraft/client/renderer/entity/RendererLivingEntity bjl +CL net/minecraft/client/renderer/entity/RendererLivingEntity$1 bjl$1 +CL net/minecraft/client/renderer/entity/RenderMinecart bjm +CL net/minecraft/client/renderer/entity/RenderMinecartMobSpawner bjn +CL net/minecraft/client/renderer/entity/RenderLiving bjo +CL net/minecraft/client/renderer/entity/RenderMooshroom bjp +CL net/minecraft/client/renderer/entity/RenderOcelot bjq +CL net/minecraft/client/renderer/entity/RenderPainting bjr +CL net/minecraft/client/renderer/entity/RenderPig bjs +CL net/minecraft/client/renderer/entity/RenderPigZombie bjt +CL net/minecraft/client/renderer/entity/RenderPigZombie$1 bjt$1 +CL net/minecraft/client/renderer/entity/RenderRabbit bju +CL net/minecraft/client/renderer/entity/RenderSheep bjv +CL net/minecraft/client/renderer/entity/RenderSilverfish bjw +CL net/minecraft/client/renderer/entity/RenderSkeleton bjx +CL net/minecraft/client/renderer/entity/RenderSkeleton$1 bjx$1 +CL net/minecraft/client/renderer/entity/RenderSlime bjy +CL net/minecraft/client/renderer/entity/RenderSnowMan bjz +CL net/minecraft/client/renderer/entity/RenderSpider bka +CL net/minecraft/client/renderer/entity/RenderSquid bkb +CL net/minecraft/client/renderer/entity/RenderSnowball bkc +CL net/minecraft/client/renderer/entity/RenderPotion bkd +CL net/minecraft/client/renderer/entity/RenderTntMinecart bke +CL net/minecraft/client/renderer/entity/RenderTNTPrimed bkf +CL net/minecraft/client/renderer/entity/RenderIronGolem bkg +CL net/minecraft/client/renderer/entity/RenderVillager bkh +CL net/minecraft/client/renderer/entity/RenderWitch bki +CL net/minecraft/client/renderer/entity/RenderWither bkj +CL net/minecraft/client/renderer/tileentity/RenderWitherSkull bkk +CL net/minecraft/client/renderer/entity/RenderWolf bkl +CL net/minecraft/client/renderer/entity/RenderZombie bkm +CL net/minecraft/client/renderer/entity/RenderZombie$1 bkm$1 +CL net/minecraft/client/renderer/entity/layers/LayerArmorBase bkn +CL net/minecraft/client/renderer/entity/layers/LayerArmorBase$1 bkn$1 +CL net/minecraft/client/renderer/entity/layers/LayerArrow bko +CL net/minecraft/client/renderer/entity/layers/LayerCape bkp +CL net/minecraft/client/renderer/entity/layers/LayerHeldBlock bkq +CL net/minecraft/client/renderer/entity/layers/LayerCreeperCharge bkr +CL net/minecraft/client/renderer/entity/layers/LayerCustomHead bks +CL net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head bkt +CL net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath bku +CL net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes bkv +CL net/minecraft/client/renderer/entity/layers/LayerEndermanEyes bkw +CL net/minecraft/client/renderer/entity/layers/LayerBipedArmor bkx +CL net/minecraft/client/renderer/entity/layers/LayerHeldItem bky +CL net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom bkz +CL net/minecraft/client/renderer/entity/layers/LayerSaddle bla +CL net/minecraft/client/renderer/entity/layers/LayerRenderer blb +CL net/minecraft/client/renderer/entity/layers/LayerSheepWool blc +CL net/minecraft/client/renderer/entity/layers/LayerSlimeGel bld +CL net/minecraft/client/renderer/entity/layers/LayerSnowmanHead ble +CL net/minecraft/client/renderer/entity/layers/LayerSpiderEyes blf +CL net/minecraft/client/renderer/entity/layers/LayerVillagerArmor blg +CL net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower blh +CL net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch bli +CL net/minecraft/client/renderer/entity/layers/LayerWitherAura blj +CL net/minecraft/client/renderer/entity/layers/LayerWolfCollar blk +CL net/minecraft/client/renderer/entity/RenderPlayer bln +CL net/minecraft/client/util/JsonBlendingMode blo +CL net/minecraft/client/shader/ShaderDefault blp +CL net/minecraft/client/shader/ShaderManager blq +CL net/minecraft/client/shader/ShaderGroup blr +CL net/minecraft/client/shader/Shader bls +CL net/minecraft/client/shader/ShaderLoader blt +CL net/minecraft/client/shader/ShaderLoader$ShaderType blt$a +CL net/minecraft/client/shader/ShaderLinkHelper blu +CL net/minecraft/client/shader/ShaderUniform blv +CL net/minecraft/client/renderer/texture/AbstractTexture bly +CL net/minecraft/client/renderer/texture/DynamicTexture blz +CL net/minecraft/client/renderer/ThreadDownloadImageData bma +CL net/minecraft/client/renderer/ThreadDownloadImageData$1 bma$1 +CL net/minecraft/client/renderer/texture/IIconCreator bmb +CL net/minecraft/client/renderer/texture/LayeredColorMaskTexture bmc +CL net/minecraft/client/renderer/texture/LayeredTexture bmd +CL net/minecraft/client/renderer/texture/SimpleTexture bme +CL net/minecraft/client/renderer/texture/Stitcher bmf +CL net/minecraft/client/renderer/texture/Stitcher$Holder bmf$a +CL net/minecraft/client/renderer/texture/Stitcher$Slot bmf$b +CL net/minecraft/client/renderer/StitcherException bmg +CL net/minecraft/client/renderer/texture/TextureMap bmh +CL net/minecraft/client/renderer/texture/TextureMap$1 bmh$1 +CL net/minecraft/client/renderer/texture/TextureMap$2 bmh$2 +CL net/minecraft/client/renderer/texture/TextureMap$3 bmh$3 +CL net/minecraft/client/renderer/texture/TextureAtlasSprite bmi +CL net/minecraft/client/renderer/texture/TextureAtlasSprite$1 bmi$1 +CL net/minecraft/client/renderer/texture/TextureManager bmj +CL net/minecraft/client/renderer/texture/TextureManager$1 bmj$1 +CL net/minecraft/client/renderer/texture/ITextureObject bmk +CL net/minecraft/client/renderer/texture/TextureUtil bml +CL net/minecraft/client/renderer/texture/ITickable bmm +CL net/minecraft/client/renderer/texture/ITickableTextureObject bmn +CL net/minecraft/client/renderer/texture/TextureClock bmo +CL net/minecraft/client/renderer/texture/TextureCompass bmp +CL net/minecraft/client/renderer/vertex/DefaultVertexFormats bms +CL net/minecraft/client/renderer/vertex/VertexBuffer bmt +CL net/minecraft/client/renderer/vertex/VertexFormat bmu +CL net/minecraft/client/renderer/vertex/VertexFormat$1 bmu$1 +CL net/minecraft/client/renderer/vertex/VertexFormatElement bmv +CL net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType bmv$a +CL net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage bmv$b +CL net/minecraft/client/resources/AbstractResourcePack bmx +CL net/minecraft/client/resources/ResourceIndex bmy +CL net/minecraft/client/resources/DefaultPlayerSkin bmz +CL net/minecraft/client/resources/DefaultResourcePack bna +CL net/minecraft/client/resources/FallbackResourceManager bnb +CL net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger bnb$a +CL net/minecraft/client/resources/FileResourcePack bnc +CL net/minecraft/client/resources/FolderResourcePack bnd +CL net/minecraft/client/resources/FoliageColorReloadListener bne +CL net/minecraft/client/resources/GrassColorReloadListener bnf +CL net/minecraft/client/resources/IReloadableResourceManager bng +CL net/minecraft/client/resources/IResource bnh +CL net/minecraft/client/resources/IResourceManager bni +CL net/minecraft/client/resources/IResourceManagerReloadListener bnj +CL net/minecraft/client/resources/IResourcePack bnk +CL net/minecraft/client/resources/ResourcePackFileNotFoundException bnl +CL net/minecraft/client/resources/ResourcePackRepository bnm +CL net/minecraft/client/resources/ResourcePackRepository$1 bnm$1 +CL net/minecraft/client/resources/ResourcePackRepository$2 bnm$2 +CL net/minecraft/client/resources/ResourcePackRepository$3 bnm$3 +CL net/minecraft/client/resources/ResourcePackRepository$Entry bnm$a +CL net/minecraft/client/resources/SimpleReloadableResourceManager bnn +CL net/minecraft/client/resources/SimpleReloadableResourceManager$1 bnn$1 +CL net/minecraft/client/resources/SimpleResource bno +CL net/minecraft/client/resources/SkinManager bnp +CL net/minecraft/client/resources/SkinManager$1 bnp$1 +CL net/minecraft/client/resources/SkinManager$2 bnp$2 +CL net/minecraft/client/resources/SkinManager$3 bnp$3 +CL net/minecraft/client/resources/SkinManager$3$1 bnp$3$1 +CL net/minecraft/client/resources/SkinManager$SkinAvailableCallback bnp$a +CL net/minecraft/client/resources/I18n bnq +CL net/minecraft/client/resources/Language bnr +CL net/minecraft/client/resources/LanguageManager bns +CL net/minecraft/client/resources/Locale bnt +CL net/minecraft/client/resources/data/BaseMetadataSectionSerializer bnv +CL net/minecraft/client/resources/data/IMetadataSection bnw +CL net/minecraft/client/resources/data/IMetadataSectionSerializer bnx +CL net/minecraft/client/resources/data/IMetadataSerializer bny +CL net/minecraft/client/resources/data/IMetadataSerializer$1 bny$1 +CL net/minecraft/client/resources/data/IMetadataSerializer$Registration bny$a +CL net/minecraft/client/resources/data/AnimationFrame bnz +CL net/minecraft/client/resources/data/AnimationMetadataSection boa +CL net/minecraft/client/resources/data/AnimationMetadataSectionSerializer bob +CL net/minecraft/client/resources/data/FontMetadataSection bod +CL net/minecraft/client/resources/data/FontMetadataSectionSerializer boe +CL net/minecraft/client/resources/data/LanguageMetadataSection bog +CL net/minecraft/client/resources/data/LanguageMetadataSectionSerializer boh +CL net/minecraft/client/resources/data/PackMetadataSection boj +CL net/minecraft/client/resources/data/PackMetadataSectionSerializer bok +CL net/minecraft/client/resources/data/TextureMetadataSection bon +CL net/minecraft/client/resources/data/TextureMetadataSectionSerializer boo +CL net/minecraft/client/resources/model/IBakedModel boq +CL net/minecraft/client/resources/model/ModelRotation bor +CL net/minecraft/client/resources/model/BuiltInModel bos +CL net/minecraft/client/resources/model/ModelBakery bot +CL net/minecraft/client/resources/model/ModelBakery$1 bot$1 +CL net/minecraft/client/resources/model/ModelBakery$2 bot$2 +CL net/minecraft/client/resources/model/ModelManager bou +CL net/minecraft/client/resources/model/ModelResourceLocation bov +CL net/minecraft/client/resources/model/SimpleBakedModel bow +CL net/minecraft/client/resources/model/SimpleBakedModel$Builder bow$a +CL net/minecraft/client/resources/model/WeightedBakedModel box +CL net/minecraft/client/resources/model/WeightedBakedModel$Builder box$a +CL net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem box$b +CL net/minecraft/client/audio/PositionedSound bpa +CL net/minecraft/client/audio/MovingSound bpb +CL net/minecraft/client/audio/GuardianSound bpc +CL net/minecraft/client/audio/MovingSoundMinecart bpd +CL net/minecraft/client/audio/MovingSoundMinecartRiding bpe +CL net/minecraft/client/audio/PositionedSoundRecord bpf +CL net/minecraft/client/audio/SoundCategory bpg +CL net/minecraft/client/audio/SoundList bph +CL net/minecraft/client/audio/SoundList$SoundEntry bph$a +CL net/minecraft/client/audio/SoundList$SoundEntry$Type bph$a$a +CL net/minecraft/client/audio/SoundListSerializer bpi +CL net/minecraft/client/audio/ISound bpj +CL net/minecraft/client/audio/ISound$AttenuationType bpj$a +CL net/minecraft/client/audio/ITickableSound bpk +CL net/minecraft/server/integrated/IntegratedPlayerList bpn +CL net/minecraft/server/integrated/IntegratedServer bpo +CL net/minecraft/server/integrated/IntegratedServer$1 bpo$1 +CL net/minecraft/server/integrated/IntegratedServer$2 bpo$2 +CL net/minecraft/server/integrated/IntegratedServer$3 bpo$3 +CL net/minecraft/server/integrated/IntegratedServerCommandManager bpp +CL net/minecraft/client/network/LanServerDetector bpq +CL net/minecraft/client/network/LanServerDetector$LanServer bpq$a +CL net/minecraft/client/network/LanServerDetector$ThreadLanServerFind bpq$b +CL net/minecraft/client/network/LanServerDetector$LanServerList bpq$c +CL net/minecraft/client/multiplayer/ThreadLanServerPing bpr +CL net/minecraft/client/audio/MusicTicker bpv +CL net/minecraft/client/audio/MusicTicker$MusicType bpv$a +CL net/minecraft/client/audio/SoundPoolEntry bpw +CL net/minecraft/client/audio/SoundManager bpx +CL net/minecraft/client/audio/SoundManager$1 bpx$1 +CL net/minecraft/client/audio/SoundManager$1$1 bpx$1$1 +CL net/minecraft/client/audio/SoundManager$2 bpx$2 +CL net/minecraft/client/audio/SoundManager$2$1 bpx$2$1 +CL net/minecraft/client/audio/SoundManager$SoundSystemStarterThread bpx$a +CL net/minecraft/client/audio/SoundEventAccessorComposite bpy +CL net/minecraft/client/audio/SoundHandler bpz +CL net/minecraft/client/audio/SoundHandler$1 bpz$1 +CL net/minecraft/client/audio/SoundHandler$2 bpz$2 +CL net/minecraft/client/audio/SoundHandler$3 bpz$3 +CL net/minecraft/client/audio/SoundRegistry bqa +CL net/minecraft/client/audio/ISoundEventAccessor bqb +CL net/minecraft/client/audio/SoundEventAccessor bqc +CL net/minecraft/client/stream/MetadataAchievement bqe +CL net/minecraft/client/stream/MetadataCombat bqf +CL net/minecraft/client/stream/MetadataPlayerDeath bqg +CL net/minecraft/client/stream/Metadata bqh +CL net/minecraft/client/stream/BroadcastController bqj +CL net/minecraft/client/stream/BroadcastController$1 bqj$1 +CL net/minecraft/client/stream/BroadcastController$2 bqj$2 +CL net/minecraft/client/stream/BroadcastController$3 bqj$3 +CL net/minecraft/client/stream/BroadcastController$BroadcastState bqj$a +CL net/minecraft/client/stream/BroadcastController$BroadcastListener bqj$b +CL net/minecraft/client/stream/ChatController bqk +CL net/minecraft/client/stream/ChatController$1 bqk$1 +CL net/minecraft/client/stream/ChatController$2 bqk$2 +CL net/minecraft/client/stream/ChatController$EnumChannelState bqk$a +CL net/minecraft/client/stream/ChatController$ChatChannelListener bqk$b +CL net/minecraft/client/stream/ChatController$ChatState bqk$c +CL net/minecraft/client/stream/ChatController$EnumEmoticonMode bqk$d +CL net/minecraft/client/stream/ChatController$ChatListener bqk$e +CL net/minecraft/client/stream/IngestServerTester bql +CL net/minecraft/client/stream/IngestServerTester$1 bql$1 +CL net/minecraft/client/stream/IngestServerTester$2 bql$2 +CL net/minecraft/client/stream/IngestServerTester$3 bql$3 +CL net/minecraft/client/stream/IngestServerTester$IngestTestListener bql$a +CL net/minecraft/client/stream/IngestServerTester$IngestTestState bql$b +CL net/minecraft/client/stream/IStream bqm +CL net/minecraft/client/stream/IStream$AuthFailureReason bqm$a +CL net/minecraft/client/stream/TwitchStream bqn +CL net/minecraft/client/stream/TwitchStream$1 bqn$1 +CL net/minecraft/client/stream/TwitchStream$1$1 bqn$1$1 +CL net/minecraft/client/stream/NullStream bqo +CL net/minecraft/util/Matrix4f bqq +CL net/minecraft/util/Vector3d bqr +CL net/minecraft/client/renderer/OpenGlHelper bqs +CL net/minecraft/client/main/Main net/minecraft/client/main/Main +CL net/minecraft/client/main/Main$1 net/minecraft/client/main/Main$1 +CL net/minecraft/realms/RealmsConnect$1 net/minecraft/realms/RealmsConnect$1 +CL net/minecraft/server/MinecraftServer net/minecraft/server/MinecraftServer +CL net/minecraft/server/MinecraftServer$1 net/minecraft/server/MinecraftServer$1 +CL net/minecraft/server/MinecraftServer$2 net/minecraft/server/MinecraftServer$2 +CL net/minecraft/server/MinecraftServer$3 net/minecraft/server/MinecraftServer$3 +CL net/minecraft/server/MinecraftServer$4 net/minecraft/server/MinecraftServer$4 +CL net/minecraft/realms/RealmsServerStatusPinger$1 net/minecraft/realms/RealmsServerStatusPinger$1 +FD net/minecraft/util/EnumChatFormatting fancyStyling A +FD net/minecraft/util/EnumChatFormatting controlString B +FD net/minecraft/util/EnumChatFormatting colorIndex C +FD net/minecraft/util/EnumChatFormatting $VALUES D +FD net/minecraft/util/EnumChatFormatting BLACK a +FD net/minecraft/util/EnumChatFormatting DARK_BLUE b +FD net/minecraft/util/EnumChatFormatting DARK_GREEN c +FD net/minecraft/util/EnumChatFormatting DARK_AQUA d +FD net/minecraft/util/EnumChatFormatting DARK_RED e +FD net/minecraft/util/EnumChatFormatting DARK_PURPLE f +FD net/minecraft/util/EnumChatFormatting GOLD g +FD net/minecraft/util/EnumChatFormatting GRAY h +FD net/minecraft/util/EnumChatFormatting DARK_GRAY i +FD net/minecraft/util/EnumChatFormatting BLUE j +FD net/minecraft/util/EnumChatFormatting GREEN k +FD net/minecraft/util/EnumChatFormatting AQUA l +FD net/minecraft/util/EnumChatFormatting RED m +FD net/minecraft/util/EnumChatFormatting LIGHT_PURPLE n +FD net/minecraft/util/EnumChatFormatting YELLOW o +FD net/minecraft/util/EnumChatFormatting WHITE p +FD net/minecraft/util/EnumChatFormatting OBFUSCATED q +FD net/minecraft/util/EnumChatFormatting BOLD r +FD net/minecraft/util/EnumChatFormatting STRIKETHROUGH s +FD net/minecraft/util/EnumChatFormatting UNDERLINE t +FD net/minecraft/util/EnumChatFormatting ITALIC u +FD net/minecraft/util/EnumChatFormatting RESET v +FD net/minecraft/util/EnumChatFormatting nameMapping w +FD net/minecraft/util/EnumChatFormatting formattingCodePattern x +FD net/minecraft/util/EnumChatFormatting name y +FD net/minecraft/util/EnumChatFormatting formattingCode z +FD net/minecraft/crash/CrashReport logger a +FD net/minecraft/crash/CrashReport description b +FD net/minecraft/crash/CrashReport cause c +FD net/minecraft/crash/CrashReport theReportCategory d +FD net/minecraft/crash/CrashReport crashReportSections e +FD net/minecraft/crash/CrashReport crashReportFile f +FD net/minecraft/crash/CrashReport firstCategoryInCrashReport g +FD net/minecraft/crash/CrashReport stacktrace h +FD net/minecraft/crash/CrashReport$1 field_71494_a a +FD net/minecraft/crash/CrashReport$2 field_71496_a a +FD net/minecraft/crash/CrashReport$3 field_71490_a a +FD net/minecraft/crash/CrashReport$4 field_71492_a a +FD net/minecraft/crash/CrashReport$5 field_71486_a a +FD net/minecraft/crash/CrashReport$6 field_71488_a a +FD net/minecraft/crash/CrashReport$7 field_83004_a a +FD net/minecraft/crash/CrashReportCategory crashReport a +FD net/minecraft/crash/CrashReportCategory name b +FD net/minecraft/crash/CrashReportCategory children c +FD net/minecraft/crash/CrashReportCategory stackTrace d +FD net/minecraft/crash/CrashReportCategory$1 field_85080_a a +FD net/minecraft/crash/CrashReportCategory$1 field_147151_b b +FD net/minecraft/crash/CrashReportCategory$2 field_85063_a a +FD net/minecraft/crash/CrashReportCategory$3 field_175749_a a +FD net/minecraft/crash/CrashReportCategory$6 field_175754_a a +FD net/minecraft/crash/CrashReportCategory$7 field_175752_a a +FD net/minecraft/crash/CrashReportCategory$Entry key a +FD net/minecraft/crash/CrashReportCategory$Entry value b +FD net/minecraft/util/ReportedException theReportedExceptionCrashReport a +FD net/minecraft/util/ChatAllowedCharacters allowedCharactersArray a +FD net/minecraft/util/Util$EnumOS LINUX a +FD net/minecraft/util/Util$EnumOS SOLARIS b +FD net/minecraft/util/Util$EnumOS WINDOWS c +FD net/minecraft/util/Util$EnumOS OSX d +FD net/minecraft/util/Util$EnumOS UNKNOWN e +FD net/minecraft/util/Util$EnumOS $VALUES f +FD net/minecraft/command/CommandBase theAdmin a +FD net/minecraft/command/CommandBase$CoordinateArg field_179633_a a +FD net/minecraft/command/CommandBase$CoordinateArg field_179631_b b +FD net/minecraft/command/CommandBase$CoordinateArg field_179632_c c +FD net/minecraft/command/CommandHandler logger a +FD net/minecraft/command/CommandHandler commandMap b +FD net/minecraft/command/CommandHandler commandSet c +FD net/minecraft/command/CommandResultStats NUM_RESULT_TYPES a +FD net/minecraft/command/CommandResultStats STRING_RESULT_TYPES b +FD net/minecraft/command/CommandResultStats entitiesID c +FD net/minecraft/command/CommandResultStats objectives d +FD net/minecraft/command/CommandResultStats$1 field_181547_a a +FD net/minecraft/command/CommandResultStats$1 field_181548_b b +FD net/minecraft/command/CommandResultStats$Type SUCCESS_COUNT a +FD net/minecraft/command/CommandResultStats$Type AFFECTED_BLOCKS b +FD net/minecraft/command/CommandResultStats$Type AFFECTED_ENTITIES c +FD net/minecraft/command/CommandResultStats$Type AFFECTED_ITEMS d +FD net/minecraft/command/CommandResultStats$Type QUERY_RESULT e +FD net/minecraft/command/CommandResultStats$Type typeID f +FD net/minecraft/command/CommandResultStats$Type typeName g +FD net/minecraft/command/CommandResultStats$Type $VALUES h +FD net/minecraft/command/PlayerSelector tokenPattern a +FD net/minecraft/command/PlayerSelector intListPattern b +FD net/minecraft/command/PlayerSelector keyValueListPattern c +FD net/minecraft/command/PlayerSelector WORLD_BINDING_ARGS d +FD net/minecraft/command/PlayerSelector$1 field_179615_a a +FD net/minecraft/command/PlayerSelector$1 field_179614_b b +FD net/minecraft/command/PlayerSelector$2 field_179618_a a +FD net/minecraft/command/PlayerSelector$2 field_179617_b b +FD net/minecraft/command/PlayerSelector$3 field_179610_a a +FD net/minecraft/command/PlayerSelector$4 field_179612_a a +FD net/minecraft/command/PlayerSelector$6 field_179627_a a +FD net/minecraft/command/PlayerSelector$6 field_179626_b b +FD net/minecraft/command/PlayerSelector$7 field_179620_a a +FD net/minecraft/command/PlayerSelector$8 field_179623_a a +FD net/minecraft/command/PlayerSelector$8 field_179622_b b +FD net/minecraft/command/PlayerSelector$9 field_179604_a a +FD net/minecraft/command/PlayerSelector$10 field_179602_a a +FD net/minecraft/command/PlayerSelector$10 field_179601_b b +FD net/minecraft/command/PlayerSelector$11 field_179599_a a +FD net/minecraft/command/PlayerSelector$11 field_179597_b b +FD net/minecraft/command/PlayerSelector$11 field_179598_c c +FD net/minecraft/command/PlayerSelector$11 field_179595_d d +FD net/minecraft/command/PlayerSelector$11 field_179596_e e +FD net/minecraft/command/PlayerSelector$12 field_179593_a a +FD net/minecraft/command/PlayerSelector$12 field_179592_b b +FD net/minecraft/command/server/CommandAchievement$1 field_179608_a a +FD net/minecraft/command/server/CommandAchievement$1 field_179606_b b +FD net/minecraft/command/server/CommandAchievement$1 field_179607_c c +FD net/minecraft/command/server/CommandBanIp field_147211_a a +FD net/minecraft/command/CommandClone$StaticCloneData pos a +FD net/minecraft/command/CommandClone$StaticCloneData blockState b +FD net/minecraft/command/CommandClone$StaticCloneData compound c +FD net/minecraft/command/CommandDebug logger a +FD net/minecraft/command/CommandDebug profileStartTime b +FD net/minecraft/command/CommandDebug profileStartTick c +FD net/minecraft/command/CommandExecuteAt$1 field_174804_a a +FD net/minecraft/command/CommandExecuteAt$1 field_174802_b b +FD net/minecraft/command/CommandExecuteAt$1 field_174803_c c +FD net/minecraft/command/CommandExecuteAt$1 field_174800_d d +FD net/minecraft/command/CommandExecuteAt$1 field_174801_e e +FD net/minecraft/command/CommandExecuteAt$1 field_174798_f f +FD net/minecraft/command/CommandExecuteAt$1 field_174799_g g +FD net/minecraft/command/CommandReplaceItem SHORTCUTS a +FD net/minecraft/command/CommandSpreadPlayers$Position field_111101_a a +FD net/minecraft/command/CommandSpreadPlayers$Position field_111100_b b +FD net/minecraft/command/CommandTitle LOGGER a +FD net/minecraft/command/CommandException errorObjects a +FD net/minecraft/util/BlockPos ORIGIN a +FD net/minecraft/util/BlockPos NUM_X_BITS c +FD net/minecraft/util/BlockPos NUM_Z_BITS d +FD net/minecraft/util/BlockPos NUM_Y_BITS e +FD net/minecraft/util/BlockPos Y_SHIFT f +FD net/minecraft/util/BlockPos X_SHIFT g +FD net/minecraft/util/BlockPos X_MASK h +FD net/minecraft/util/BlockPos Y_MASK i +FD net/minecraft/util/BlockPos Z_MASK j +FD net/minecraft/util/BlockPos$1 field_179307_a a +FD net/minecraft/util/BlockPos$1 field_179306_b b +FD net/minecraft/util/BlockPos$1$1 field_179310_a a +FD net/minecraft/util/BlockPos$1$1 lastReturned b +FD net/minecraft/util/BlockPos$2 field_179312_a a +FD net/minecraft/util/BlockPos$2 field_179311_b b +FD net/minecraft/util/BlockPos$2$1 field_179315_a a +FD net/minecraft/util/BlockPos$2$1 theBlockPos b +FD net/minecraft/util/BlockPos$MutableBlockPos x c +FD net/minecraft/util/BlockPos$MutableBlockPos y d +FD net/minecraft/util/BlockPos$MutableBlockPos z e +FD net/minecraft/block/BlockSourceImpl worldObj a +FD net/minecraft/block/BlockSourceImpl pos b +FD net/minecraft/util/Cartesian$Product clazz a +FD net/minecraft/util/Cartesian$Product iterables b +FD net/minecraft/util/Cartesian$Product$ProductIterator index a +FD net/minecraft/util/Cartesian$Product$ProductIterator iterables b +FD net/minecraft/util/Cartesian$Product$ProductIterator iterators c +FD net/minecraft/util/Cartesian$Product$ProductIterator results d +FD net/minecraft/util/RegistryNamespacedDefaultedByKey defaultValueKey d +FD net/minecraft/util/RegistryNamespacedDefaultedByKey defaultValue e +FD net/minecraft/util/RegistryDefaulted defaultObject a +FD net/minecraft/util/EnumFacing DOWN a +FD net/minecraft/util/EnumFacing UP b +FD net/minecraft/util/EnumFacing NORTH c +FD net/minecraft/util/EnumFacing SOUTH d +FD net/minecraft/util/EnumFacing WEST e +FD net/minecraft/util/EnumFacing EAST f +FD net/minecraft/util/EnumFacing index g +FD net/minecraft/util/EnumFacing opposite h +FD net/minecraft/util/EnumFacing horizontalIndex i +FD net/minecraft/util/EnumFacing name j +FD net/minecraft/util/EnumFacing axis k +FD net/minecraft/util/EnumFacing axisDirection l +FD net/minecraft/util/EnumFacing directionVec m +FD net/minecraft/util/EnumFacing VALUES n +FD net/minecraft/util/EnumFacing HORIZONTALS o +FD net/minecraft/util/EnumFacing NAME_LOOKUP p +FD net/minecraft/util/EnumFacing $VALUES q +FD net/minecraft/util/EnumFacing$1 field_179515_a a +FD net/minecraft/util/EnumFacing$1 field_179513_b b +FD net/minecraft/util/EnumFacing$1 field_179514_c c +FD net/minecraft/util/EnumFacing$Axis X a +FD net/minecraft/util/EnumFacing$Axis Y b +FD net/minecraft/util/EnumFacing$Axis Z c +FD net/minecraft/util/EnumFacing$Axis NAME_LOOKUP d +FD net/minecraft/util/EnumFacing$Axis name e +FD net/minecraft/util/EnumFacing$Axis plane f +FD net/minecraft/util/EnumFacing$Axis $VALUES g +FD net/minecraft/util/EnumFacing$AxisDirection POSITIVE a +FD net/minecraft/util/EnumFacing$AxisDirection NEGATIVE b +FD net/minecraft/util/EnumFacing$AxisDirection offset c +FD net/minecraft/util/EnumFacing$AxisDirection description d +FD net/minecraft/util/EnumFacing$AxisDirection $VALUES e +FD net/minecraft/util/EnumFacing$Plane HORIZONTAL a +FD net/minecraft/util/EnumFacing$Plane VERTICAL b +FD net/minecraft/util/EnumFacing$Plane $VALUES c +FD net/minecraft/dispenser/IBehaviorDispenseItem itemDispenseBehaviorProvider a +FD net/minecraft/util/ObjectIntIdentityMap identityMap a +FD net/minecraft/util/ObjectIntIdentityMap objectList b +FD net/minecraft/util/RegistryNamespaced underlyingIntegerMap a +FD net/minecraft/util/RegistryNamespaced inverseObjectRegistry b +FD net/minecraft/util/EnumParticleTypes FLAME A +FD net/minecraft/util/EnumParticleTypes LAVA B +FD net/minecraft/util/EnumParticleTypes FOOTSTEP C +FD net/minecraft/util/EnumParticleTypes CLOUD D +FD net/minecraft/util/EnumParticleTypes REDSTONE E +FD net/minecraft/util/EnumParticleTypes SNOWBALL F +FD net/minecraft/util/EnumParticleTypes SNOW_SHOVEL G +FD net/minecraft/util/EnumParticleTypes SLIME H +FD net/minecraft/util/EnumParticleTypes HEART I +FD net/minecraft/util/EnumParticleTypes BARRIER J +FD net/minecraft/util/EnumParticleTypes ITEM_CRACK K +FD net/minecraft/util/EnumParticleTypes BLOCK_CRACK L +FD net/minecraft/util/EnumParticleTypes BLOCK_DUST M +FD net/minecraft/util/EnumParticleTypes WATER_DROP N +FD net/minecraft/util/EnumParticleTypes ITEM_TAKE O +FD net/minecraft/util/EnumParticleTypes MOB_APPEARANCE P +FD net/minecraft/util/EnumParticleTypes particleName Q +FD net/minecraft/util/EnumParticleTypes particleID R +FD net/minecraft/util/EnumParticleTypes shouldIgnoreRange S +FD net/minecraft/util/EnumParticleTypes argumentCount T +FD net/minecraft/util/EnumParticleTypes PARTICLES U +FD net/minecraft/util/EnumParticleTypes PARTICLE_NAMES V +FD net/minecraft/util/EnumParticleTypes $VALUES W +FD net/minecraft/util/EnumParticleTypes EXPLOSION_NORMAL a +FD net/minecraft/util/EnumParticleTypes EXPLOSION_LARGE b +FD net/minecraft/util/EnumParticleTypes EXPLOSION_HUGE c +FD net/minecraft/util/EnumParticleTypes FIREWORKS_SPARK d +FD net/minecraft/util/EnumParticleTypes WATER_BUBBLE e +FD net/minecraft/util/EnumParticleTypes WATER_SPLASH f +FD net/minecraft/util/EnumParticleTypes WATER_WAKE g +FD net/minecraft/util/EnumParticleTypes SUSPENDED h +FD net/minecraft/util/EnumParticleTypes SUSPENDED_DEPTH i +FD net/minecraft/util/EnumParticleTypes CRIT j +FD net/minecraft/util/EnumParticleTypes CRIT_MAGIC k +FD net/minecraft/util/EnumParticleTypes SMOKE_NORMAL l +FD net/minecraft/util/EnumParticleTypes SMOKE_LARGE m +FD net/minecraft/util/EnumParticleTypes SPELL n +FD net/minecraft/util/EnumParticleTypes SPELL_INSTANT o +FD net/minecraft/util/EnumParticleTypes SPELL_MOB p +FD net/minecraft/util/EnumParticleTypes SPELL_MOB_AMBIENT q +FD net/minecraft/util/EnumParticleTypes SPELL_WITCH r +FD net/minecraft/util/EnumParticleTypes DRIP_WATER s +FD net/minecraft/util/EnumParticleTypes DRIP_LAVA t +FD net/minecraft/util/EnumParticleTypes VILLAGER_ANGRY u +FD net/minecraft/util/EnumParticleTypes VILLAGER_HAPPY v +FD net/minecraft/util/EnumParticleTypes TOWN_AURA w +FD net/minecraft/util/EnumParticleTypes NOTE x +FD net/minecraft/util/EnumParticleTypes PORTAL y +FD net/minecraft/util/EnumParticleTypes ENCHANTMENT_TABLE z +FD net/minecraft/dispenser/PositionImpl x a +FD net/minecraft/dispenser/PositionImpl y b +FD net/minecraft/dispenser/PositionImpl z c +FD net/minecraft/util/Rotations x a +FD net/minecraft/util/Rotations y b +FD net/minecraft/util/Rotations z c +FD net/minecraft/util/RegistrySimple logger a +FD net/minecraft/util/RegistrySimple registryObjects c +FD net/minecraft/util/Vec3i x a +FD net/minecraft/util/Vec3i NULL_VECTOR b +FD net/minecraft/util/Vec3i y c +FD net/minecraft/util/Vec3i z d +FD net/minecraft/util/StatCollector localizedName a +FD net/minecraft/util/StatCollector fallbackTranslator b +FD net/minecraft/util/StringTranslate numericVariablePattern a +FD net/minecraft/util/StringTranslate equalSignSplitter b +FD net/minecraft/util/StringTranslate instance c +FD net/minecraft/util/StringTranslate languageList d +FD net/minecraft/util/StringTranslate lastUpdateTimeInMilliseconds e +FD net/minecraft/nbt/NBTTagByteArray data b +FD net/minecraft/nbt/NBTTagByte data b +FD net/minecraft/nbt/NBTTagCompound tagMap b +FD net/minecraft/nbt/NBTTagCompound$1 field_82585_a a +FD net/minecraft/nbt/NBTTagCompound$1 field_82584_b b +FD net/minecraft/nbt/NBTTagCompound$2 field_82588_a a +FD net/minecraft/nbt/NBTTagCompound$2 field_82587_b b +FD net/minecraft/nbt/NBTTagDouble data b +FD net/minecraft/nbt/NBTTagFloat data b +FD net/minecraft/nbt/NBTTagIntArray intArray b +FD net/minecraft/nbt/NBTTagInt data b +FD net/minecraft/nbt/NBTTagList LOGGER b +FD net/minecraft/nbt/NBTTagList tagList c +FD net/minecraft/nbt/NBTTagList tagType d +FD net/minecraft/nbt/NBTTagLong data b +FD net/minecraft/nbt/NBTSizeTracker INFINITE a +FD net/minecraft/nbt/NBTSizeTracker max b +FD net/minecraft/nbt/NBTSizeTracker read c +FD net/minecraft/nbt/NBTTagShort data b +FD net/minecraft/nbt/NBTTagString data b +FD net/minecraft/nbt/NBTBase NBT_TYPES a +FD net/minecraft/nbt/JsonToNBT logger a +FD net/minecraft/nbt/JsonToNBT field_179273_b b +FD net/minecraft/nbt/JsonToNBT$Any json a +FD net/minecraft/nbt/JsonToNBT$Compound field_150491_b b +FD net/minecraft/nbt/JsonToNBT$List field_150492_b b +FD net/minecraft/nbt/JsonToNBT$Primitive jsonValue b +FD net/minecraft/nbt/JsonToNBT$Primitive DOUBLE c +FD net/minecraft/nbt/JsonToNBT$Primitive FLOAT d +FD net/minecraft/nbt/JsonToNBT$Primitive BYTE e +FD net/minecraft/nbt/JsonToNBT$Primitive LONG f +FD net/minecraft/nbt/JsonToNBT$Primitive SHORT g +FD net/minecraft/nbt/JsonToNBT$Primitive INTEGER h +FD net/minecraft/nbt/JsonToNBT$Primitive DOUBLE_UNTYPED i +FD net/minecraft/nbt/JsonToNBT$Primitive SPLITTER j +FD net/minecraft/network/NettyEncryptionTranslator cipher a +FD net/minecraft/network/NettyEncryptionTranslator field_150505_b b +FD net/minecraft/network/NettyEncryptionTranslator field_150506_c c +FD net/minecraft/network/NettyEncryptingDecoder decryptionCodec a +FD net/minecraft/network/NettyEncryptingEncoder encryptionCodec a +FD net/minecraft/network/NettyCompressionDecoder inflater a +FD net/minecraft/network/NettyCompressionDecoder treshold b +FD net/minecraft/network/NettyCompressionEncoder buffer a +FD net/minecraft/network/NettyCompressionEncoder deflater b +FD net/minecraft/network/NettyCompressionEncoder treshold c +FD net/minecraft/network/NetworkManager logMarkerNetwork a +FD net/minecraft/network/NetworkManager logMarkerPackets b +FD net/minecraft/network/NetworkManager attrKeyConnectionState c +FD net/minecraft/network/NetworkManager CLIENT_NIO_EVENTLOOP d +FD net/minecraft/network/NetworkManager CLIENT_EPOLL_EVENTLOOP e +FD net/minecraft/network/NetworkManager CLIENT_LOCAL_EVENTLOOP f +FD net/minecraft/network/NetworkManager logger g +FD net/minecraft/network/NetworkManager direction h +FD net/minecraft/network/NetworkManager outboundPacketsQueue i +FD net/minecraft/network/NetworkManager readWriteLock j +FD net/minecraft/network/NetworkManager channel k +FD net/minecraft/network/NetworkManager socketAddress l +FD net/minecraft/network/NetworkManager packetListener m +FD net/minecraft/network/NetworkManager terminationReason n +FD net/minecraft/network/NetworkManager isEncrypted o +FD net/minecraft/network/NetworkManager disconnected p +FD net/minecraft/network/NetworkManager$4 field_181130_a a +FD net/minecraft/network/NetworkManager$4 field_181131_b b +FD net/minecraft/network/NetworkManager$4 field_181132_c c +FD net/minecraft/network/NetworkManager$4 field_181133_d d +FD net/minecraft/network/NetworkManager$4 field_181134_e e +FD net/minecraft/network/NetworkManager$5 field_179248_a a +FD net/minecraft/network/NetworkManager$6 field_181135_a a +FD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener packet a +FD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener futureListeners b +FD net/minecraft/network/EnumConnectionState HANDSHAKING a +FD net/minecraft/network/EnumConnectionState PLAY b +FD net/minecraft/network/EnumConnectionState STATUS c +FD net/minecraft/network/EnumConnectionState LOGIN d +FD net/minecraft/network/EnumConnectionState field_181136_e e +FD net/minecraft/network/EnumConnectionState field_181137_f f +FD net/minecraft/network/EnumConnectionState STATES_BY_ID g +FD net/minecraft/network/EnumConnectionState STATES_BY_CLASS h +FD net/minecraft/network/EnumConnectionState id i +FD net/minecraft/network/EnumConnectionState directionMaps j +FD net/minecraft/network/EnumConnectionState $VALUES k +FD net/minecraft/network/PacketBuffer buf a +FD net/minecraft/util/MessageDeserializer logger a +FD net/minecraft/util/MessageDeserializer RECEIVED_PACKET_MARKER b +FD net/minecraft/util/MessageDeserializer direction c +FD net/minecraft/util/MessageSerializer logger a +FD net/minecraft/util/MessageSerializer RECEIVED_PACKET_MARKER b +FD net/minecraft/util/MessageSerializer direction c +FD net/minecraft/util/ChatComponentStyle siblings a +FD net/minecraft/util/ChatComponentStyle style b +FD net/minecraft/event/ClickEvent action a +FD net/minecraft/event/ClickEvent value b +FD net/minecraft/event/ClickEvent$Action OPEN_URL a +FD net/minecraft/event/ClickEvent$Action OPEN_FILE b +FD net/minecraft/event/ClickEvent$Action RUN_COMMAND c +FD net/minecraft/event/ClickEvent$Action TWITCH_USER_INFO d +FD net/minecraft/event/ClickEvent$Action SUGGEST_COMMAND e +FD net/minecraft/event/ClickEvent$Action CHANGE_PAGE f +FD net/minecraft/event/ClickEvent$Action nameMapping g +FD net/minecraft/event/ClickEvent$Action allowedInChat h +FD net/minecraft/event/ClickEvent$Action canonicalName i +FD net/minecraft/event/ClickEvent$Action $VALUES j +FD net/minecraft/util/IChatComponent$Serializer GSON a +FD net/minecraft/event/HoverEvent action a +FD net/minecraft/event/HoverEvent value b +FD net/minecraft/event/HoverEvent$Action SHOW_TEXT a +FD net/minecraft/event/HoverEvent$Action SHOW_ACHIEVEMENT b +FD net/minecraft/event/HoverEvent$Action SHOW_ITEM c +FD net/minecraft/event/HoverEvent$Action SHOW_ENTITY d +FD net/minecraft/event/HoverEvent$Action nameMapping e +FD net/minecraft/event/HoverEvent$Action allowedInChat f +FD net/minecraft/event/HoverEvent$Action canonicalName g +FD net/minecraft/event/HoverEvent$Action $VALUES h +FD net/minecraft/util/ChatComponentScore name b +FD net/minecraft/util/ChatComponentScore objective c +FD net/minecraft/util/ChatComponentScore value d +FD net/minecraft/util/ChatComponentSelector selector b +FD net/minecraft/util/ChatStyle parentStyle a +FD net/minecraft/util/ChatStyle color b +FD net/minecraft/util/ChatStyle bold c +FD net/minecraft/util/ChatStyle italic d +FD net/minecraft/util/ChatStyle underlined e +FD net/minecraft/util/ChatStyle strikethrough f +FD net/minecraft/util/ChatStyle obfuscated g +FD net/minecraft/util/ChatStyle chatClickEvent h +FD net/minecraft/util/ChatStyle chatHoverEvent i +FD net/minecraft/util/ChatStyle insertion j +FD net/minecraft/util/ChatStyle rootStyle k +FD net/minecraft/util/ChatComponentText text b +FD net/minecraft/util/ChatComponentTranslation children b +FD net/minecraft/util/ChatComponentTranslation stringVariablePattern c +FD net/minecraft/util/ChatComponentTranslation key d +FD net/minecraft/util/ChatComponentTranslation formatArgs e +FD net/minecraft/util/ChatComponentTranslation syncLock f +FD net/minecraft/util/ChatComponentTranslation lastTranslationUpdateTimeInMilliseconds g +FD net/minecraft/network/EnumPacketDirection SERVERBOUND a +FD net/minecraft/network/EnumPacketDirection CLIENTBOUND b +FD net/minecraft/network/EnumPacketDirection $VALUES c +FD net/minecraft/network/PacketThreadUtil$1 field_180030_a a +FD net/minecraft/network/PacketThreadUtil$1 field_180029_b b +FD net/minecraft/network/play/server/S08PacketPlayerPosLook x a +FD net/minecraft/network/play/server/S08PacketPlayerPosLook y b +FD net/minecraft/network/play/server/S08PacketPlayerPosLook z c +FD net/minecraft/network/play/server/S08PacketPlayerPosLook yaw d +FD net/minecraft/network/play/server/S08PacketPlayerPosLook pitch e +FD net/minecraft/network/play/server/S08PacketPlayerPosLook field_179835_f f +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags X a +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Y b +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Z c +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Y_ROT d +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags X_ROT e +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags field_180058_f f +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags $VALUES g +FD net/minecraft/network/play/server/S0EPacketSpawnObject entityId a +FD net/minecraft/network/play/server/S0EPacketSpawnObject x b +FD net/minecraft/network/play/server/S0EPacketSpawnObject y c +FD net/minecraft/network/play/server/S0EPacketSpawnObject z d +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedX e +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedY f +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedZ g +FD net/minecraft/network/play/server/S0EPacketSpawnObject pitch h +FD net/minecraft/network/play/server/S0EPacketSpawnObject yaw i +FD net/minecraft/network/play/server/S0EPacketSpawnObject type j +FD net/minecraft/network/play/server/S0EPacketSpawnObject field_149020_k k +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb entityID a +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posX b +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posY c +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posZ d +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb xpValue e +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity entityId a +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity x b +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity y c +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity z d +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity type e +FD net/minecraft/network/play/server/S0FPacketSpawnMob entityId a +FD net/minecraft/network/play/server/S0FPacketSpawnMob type b +FD net/minecraft/network/play/server/S0FPacketSpawnMob x c +FD net/minecraft/network/play/server/S0FPacketSpawnMob y d +FD net/minecraft/network/play/server/S0FPacketSpawnMob z e +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityX f +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityY g +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityZ h +FD net/minecraft/network/play/server/S0FPacketSpawnMob yaw i +FD net/minecraft/network/play/server/S0FPacketSpawnMob pitch j +FD net/minecraft/network/play/server/S0FPacketSpawnMob headPitch k +FD net/minecraft/network/play/server/S0FPacketSpawnMob field_149043_l l +FD net/minecraft/network/play/server/S0FPacketSpawnMob watcher m +FD net/minecraft/network/play/server/S10PacketSpawnPainting entityID a +FD net/minecraft/network/play/server/S10PacketSpawnPainting position b +FD net/minecraft/network/play/server/S10PacketSpawnPainting facing c +FD net/minecraft/network/play/server/S10PacketSpawnPainting title d +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer entityId a +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer playerId b +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer x c +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer y d +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer z e +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer yaw f +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer pitch g +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer currentItem h +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer watcher i +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer field_148958_j j +FD net/minecraft/network/play/server/S0BPacketAnimation entityId a +FD net/minecraft/network/play/server/S0BPacketAnimation type b +FD net/minecraft/network/play/server/S37PacketStatistics field_148976_a a +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim breakerId a +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim position b +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim progress c +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity blockPos a +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity metadata b +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity nbt c +FD net/minecraft/network/play/server/S24PacketBlockAction blockPosition a +FD net/minecraft/network/play/server/S24PacketBlockAction instrument b +FD net/minecraft/network/play/server/S24PacketBlockAction pitch c +FD net/minecraft/network/play/server/S24PacketBlockAction block d +FD net/minecraft/network/play/server/S23PacketBlockChange blockPosition a +FD net/minecraft/network/play/server/S23PacketBlockChange blockState b +FD net/minecraft/network/play/server/S41PacketServerDifficulty difficulty a +FD net/minecraft/network/play/server/S41PacketServerDifficulty difficultyLocked b +FD net/minecraft/network/play/server/S3APacketTabComplete matches a +FD net/minecraft/network/play/server/S02PacketChat chatComponent a +FD net/minecraft/network/play/server/S02PacketChat type b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange chunkPosCoord a +FD net/minecraft/network/play/server/S22PacketMultiBlockChange changedBlocks b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData field_180093_a a +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData chunkPosCrammed b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData blockState c +FD net/minecraft/network/play/server/S32PacketConfirmTransaction windowId a +FD net/minecraft/network/play/server/S32PacketConfirmTransaction actionNumber b +FD net/minecraft/network/play/server/S32PacketConfirmTransaction field_148893_c c +FD net/minecraft/network/play/server/S2EPacketCloseWindow windowId a +FD net/minecraft/network/play/server/S2DPacketOpenWindow windowId a +FD net/minecraft/network/play/server/S2DPacketOpenWindow inventoryType b +FD net/minecraft/network/play/server/S2DPacketOpenWindow windowTitle c +FD net/minecraft/network/play/server/S2DPacketOpenWindow slotCount d +FD net/minecraft/network/play/server/S2DPacketOpenWindow entityId e +FD net/minecraft/network/play/server/S30PacketWindowItems windowId a +FD net/minecraft/network/play/server/S30PacketWindowItems itemStacks b +FD net/minecraft/network/play/server/S31PacketWindowProperty windowId a +FD net/minecraft/network/play/server/S31PacketWindowProperty varIndex b +FD net/minecraft/network/play/server/S31PacketWindowProperty varValue c +FD net/minecraft/network/play/server/S2FPacketSetSlot windowId a +FD net/minecraft/network/play/server/S2FPacketSetSlot slot b +FD net/minecraft/network/play/server/S2FPacketSetSlot item c +FD net/minecraft/network/play/server/S3FPacketCustomPayload channel a +FD net/minecraft/network/play/server/S3FPacketCustomPayload data b +FD net/minecraft/network/play/server/S40PacketDisconnect reason a +FD net/minecraft/network/play/server/S19PacketEntityStatus entityId a +FD net/minecraft/network/play/server/S19PacketEntityStatus logicOpcode b +FD net/minecraft/network/play/server/S49PacketUpdateEntityNBT entityId a +FD net/minecraft/network/play/server/S49PacketUpdateEntityNBT tagCompound b +FD net/minecraft/network/play/server/S27PacketExplosion posX a +FD net/minecraft/network/play/server/S27PacketExplosion posY b +FD net/minecraft/network/play/server/S27PacketExplosion posZ c +FD net/minecraft/network/play/server/S27PacketExplosion strength d +FD net/minecraft/network/play/server/S27PacketExplosion affectedBlockPositions e +FD net/minecraft/network/play/server/S27PacketExplosion field_149152_f f +FD net/minecraft/network/play/server/S27PacketExplosion field_149153_g g +FD net/minecraft/network/play/server/S27PacketExplosion field_149159_h h +FD net/minecraft/network/play/server/S46PacketSetCompressionLevel threshold a +FD net/minecraft/network/play/server/S2BPacketChangeGameState MESSAGE_NAMES a +FD net/minecraft/network/play/server/S2BPacketChangeGameState state b +FD net/minecraft/network/play/server/S2BPacketChangeGameState field_149141_c c +FD net/minecraft/network/play/server/S00PacketKeepAlive id a +FD net/minecraft/network/play/server/S21PacketChunkData chunkX a +FD net/minecraft/network/play/server/S21PacketChunkData chunkZ b +FD net/minecraft/network/play/server/S21PacketChunkData extractedData c +FD net/minecraft/network/play/server/S21PacketChunkData field_149279_g d +FD net/minecraft/network/play/server/S21PacketChunkData$Extracted data a +FD net/minecraft/network/play/server/S21PacketChunkData$Extracted dataSize b +FD net/minecraft/network/play/server/S26PacketMapChunkBulk xPositions a +FD net/minecraft/network/play/server/S26PacketMapChunkBulk zPositions b +FD net/minecraft/network/play/server/S26PacketMapChunkBulk chunksData c +FD net/minecraft/network/play/server/S26PacketMapChunkBulk isOverworld d +FD net/minecraft/network/play/server/S28PacketEffect soundType a +FD net/minecraft/network/play/server/S28PacketEffect soundPos b +FD net/minecraft/network/play/server/S28PacketEffect soundData c +FD net/minecraft/network/play/server/S28PacketEffect serverWide d +FD net/minecraft/network/play/server/S2APacketParticles particleType a +FD net/minecraft/network/play/server/S2APacketParticles xCoord b +FD net/minecraft/network/play/server/S2APacketParticles yCoord c +FD net/minecraft/network/play/server/S2APacketParticles zCoord d +FD net/minecraft/network/play/server/S2APacketParticles xOffset e +FD net/minecraft/network/play/server/S2APacketParticles yOffset f +FD net/minecraft/network/play/server/S2APacketParticles zOffset g +FD net/minecraft/network/play/server/S2APacketParticles particleSpeed h +FD net/minecraft/network/play/server/S2APacketParticles particleCount i +FD net/minecraft/network/play/server/S2APacketParticles longDistance j +FD net/minecraft/network/play/server/S2APacketParticles particleArguments k +FD net/minecraft/network/play/server/S29PacketSoundEffect soundName a +FD net/minecraft/network/play/server/S29PacketSoundEffect posX b +FD net/minecraft/network/play/server/S29PacketSoundEffect posY c +FD net/minecraft/network/play/server/S29PacketSoundEffect posZ d +FD net/minecraft/network/play/server/S29PacketSoundEffect soundVolume e +FD net/minecraft/network/play/server/S29PacketSoundEffect soundPitch f +FD net/minecraft/network/play/server/S01PacketJoinGame entityId a +FD net/minecraft/network/play/server/S01PacketJoinGame hardcoreMode b +FD net/minecraft/network/play/server/S01PacketJoinGame gameType c +FD net/minecraft/network/play/server/S01PacketJoinGame dimension d +FD net/minecraft/network/play/server/S01PacketJoinGame difficulty e +FD net/minecraft/network/play/server/S01PacketJoinGame maxPlayers f +FD net/minecraft/network/play/server/S01PacketJoinGame worldType g +FD net/minecraft/network/play/server/S01PacketJoinGame reducedDebugInfo h +FD net/minecraft/network/play/server/S34PacketMaps mapId a +FD net/minecraft/network/play/server/S34PacketMaps mapScale b +FD net/minecraft/network/play/server/S34PacketMaps mapVisiblePlayersVec4b c +FD net/minecraft/network/play/server/S34PacketMaps mapMinX d +FD net/minecraft/network/play/server/S34PacketMaps mapMinY e +FD net/minecraft/network/play/server/S34PacketMaps mapMaxX f +FD net/minecraft/network/play/server/S34PacketMaps mapMaxY g +FD net/minecraft/network/play/server/S34PacketMaps mapDataBytes h +FD net/minecraft/network/play/server/S14PacketEntity entityId a +FD net/minecraft/network/play/server/S14PacketEntity posX b +FD net/minecraft/network/play/server/S14PacketEntity posY c +FD net/minecraft/network/play/server/S14PacketEntity posZ d +FD net/minecraft/network/play/server/S14PacketEntity yaw e +FD net/minecraft/network/play/server/S14PacketEntity pitch f +FD net/minecraft/network/play/server/S14PacketEntity onGround g +FD net/minecraft/network/play/server/S14PacketEntity field_149069_g h +FD net/minecraft/network/play/server/S36PacketSignEditorOpen signPosition a +FD net/minecraft/network/play/server/S39PacketPlayerAbilities invulnerable a +FD net/minecraft/network/play/server/S39PacketPlayerAbilities flying b +FD net/minecraft/network/play/server/S39PacketPlayerAbilities allowFlying c +FD net/minecraft/network/play/server/S39PacketPlayerAbilities creativeMode d +FD net/minecraft/network/play/server/S39PacketPlayerAbilities flySpeed e +FD net/minecraft/network/play/server/S39PacketPlayerAbilities walkSpeed f +FD net/minecraft/network/play/server/S42PacketCombatEvent eventType a +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179774_b b +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179775_c c +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179772_d d +FD net/minecraft/network/play/server/S42PacketCombatEvent deathMessage e +FD net/minecraft/network/play/server/S42PacketCombatEvent$1 field_179944_a a +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event ENTER_COMBAT a +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event END_COMBAT b +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event ENTITY_DIED c +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event $VALUES d +FD net/minecraft/network/play/server/S38PacketPlayerListItem action a +FD net/minecraft/network/play/server/S38PacketPlayerListItem players b +FD net/minecraft/network/play/server/S38PacketPlayerListItem$1 field_179938_a a +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action ADD_PLAYER a +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_GAME_MODE b +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_LATENCY c +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_DISPLAY_NAME d +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action REMOVE_PLAYER e +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action $VALUES f +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData field_179968_a a +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData ping b +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData gamemode c +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData profile d +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData displayName e +FD net/minecraft/network/play/server/S0APacketUseBed playerID a +FD net/minecraft/network/play/server/S0APacketUseBed bedPos b +FD net/minecraft/network/play/server/S13PacketDestroyEntities entityIDs a +FD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect entityId a +FD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect effectId b +FD net/minecraft/network/play/server/S48PacketResourcePackSend url a +FD net/minecraft/network/play/server/S48PacketResourcePackSend hash b +FD net/minecraft/network/play/server/S07PacketRespawn dimensionID a +FD net/minecraft/network/play/server/S07PacketRespawn difficulty b +FD net/minecraft/network/play/server/S07PacketRespawn gameType c +FD net/minecraft/network/play/server/S07PacketRespawn worldType d +FD net/minecraft/network/play/server/S19PacketEntityHeadLook entityId a +FD net/minecraft/network/play/server/S19PacketEntityHeadLook yaw b +FD net/minecraft/network/play/server/S44PacketWorldBorder action a +FD net/minecraft/network/play/server/S44PacketWorldBorder size b +FD net/minecraft/network/play/server/S44PacketWorldBorder centerX c +FD net/minecraft/network/play/server/S44PacketWorldBorder centerZ d +FD net/minecraft/network/play/server/S44PacketWorldBorder targetSize e +FD net/minecraft/network/play/server/S44PacketWorldBorder diameter f +FD net/minecraft/network/play/server/S44PacketWorldBorder timeUntilTarget g +FD net/minecraft/network/play/server/S44PacketWorldBorder warningTime h +FD net/minecraft/network/play/server/S44PacketWorldBorder warningDistance i +FD net/minecraft/network/play/server/S44PacketWorldBorder$1 field_179947_a a +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_SIZE a +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action LERP_SIZE b +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_CENTER c +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action INITIALIZE d +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_WARNING_TIME e +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_WARNING_BLOCKS f +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action $VALUES g +FD net/minecraft/network/play/server/S43PacketCamera entityId a +FD net/minecraft/network/play/server/S09PacketHeldItemChange heldItemHotbarIndex a +FD net/minecraft/network/play/server/S3DPacketDisplayScoreboard position a +FD net/minecraft/network/play/server/S3DPacketDisplayScoreboard scoreName b +FD net/minecraft/network/play/server/S1CPacketEntityMetadata entityId a +FD net/minecraft/network/play/server/S1CPacketEntityMetadata field_149378_b b +FD net/minecraft/network/play/server/S1BPacketEntityAttach leash a +FD net/minecraft/network/play/server/S1BPacketEntityAttach entityId b +FD net/minecraft/network/play/server/S1BPacketEntityAttach vehicleEntityId c +FD net/minecraft/network/play/server/S12PacketEntityVelocity entityID a +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionX b +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionY c +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionZ d +FD net/minecraft/network/play/server/S04PacketEntityEquipment entityID a +FD net/minecraft/network/play/server/S04PacketEntityEquipment equipmentSlot b +FD net/minecraft/network/play/server/S04PacketEntityEquipment itemStack c +FD net/minecraft/network/play/server/S1FPacketSetExperience field_149401_a a +FD net/minecraft/network/play/server/S1FPacketSetExperience totalExperience b +FD net/minecraft/network/play/server/S1FPacketSetExperience level c +FD net/minecraft/network/play/server/S06PacketUpdateHealth health a +FD net/minecraft/network/play/server/S06PacketUpdateHealth foodLevel b +FD net/minecraft/network/play/server/S06PacketUpdateHealth saturationLevel c +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective objectiveName a +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective objectiveValue b +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective type c +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective field_149342_c d +FD net/minecraft/network/play/server/S3EPacketTeams name a +FD net/minecraft/network/play/server/S3EPacketTeams displayName b +FD net/minecraft/network/play/server/S3EPacketTeams prefix c +FD net/minecraft/network/play/server/S3EPacketTeams suffix d +FD net/minecraft/network/play/server/S3EPacketTeams nameTagVisibility e +FD net/minecraft/network/play/server/S3EPacketTeams color f +FD net/minecraft/network/play/server/S3EPacketTeams players g +FD net/minecraft/network/play/server/S3EPacketTeams action h +FD net/minecraft/network/play/server/S3EPacketTeams friendlyFlags i +FD net/minecraft/network/play/server/S3CPacketUpdateScore name a +FD net/minecraft/network/play/server/S3CPacketUpdateScore objective b +FD net/minecraft/network/play/server/S3CPacketUpdateScore value c +FD net/minecraft/network/play/server/S3CPacketUpdateScore action d +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action CHANGE a +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action REMOVE b +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action $VALUES c +FD net/minecraft/network/play/server/S05PacketSpawnPosition spawnBlockPos a +FD net/minecraft/network/play/server/S03PacketTimeUpdate totalWorldTime a +FD net/minecraft/network/play/server/S03PacketTimeUpdate worldTime b +FD net/minecraft/network/play/server/S45PacketTitle type a +FD net/minecraft/network/play/server/S45PacketTitle message b +FD net/minecraft/network/play/server/S45PacketTitle fadeInTime c +FD net/minecraft/network/play/server/S45PacketTitle displayTime d +FD net/minecraft/network/play/server/S45PacketTitle fadeOutTime e +FD net/minecraft/network/play/server/S45PacketTitle$Type TITLE a +FD net/minecraft/network/play/server/S45PacketTitle$Type SUBTITLE b +FD net/minecraft/network/play/server/S45PacketTitle$Type TIMES c +FD net/minecraft/network/play/server/S45PacketTitle$Type CLEAR d +FD net/minecraft/network/play/server/S45PacketTitle$Type RESET e +FD net/minecraft/network/play/server/S45PacketTitle$Type $VALUES f +FD net/minecraft/network/play/server/S33PacketUpdateSign world a +FD net/minecraft/network/play/server/S33PacketUpdateSign blockPos b +FD net/minecraft/network/play/server/S33PacketUpdateSign lines c +FD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter header a +FD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter footer b +FD net/minecraft/network/play/server/S0DPacketCollectItem collectedItemEntityId a +FD net/minecraft/network/play/server/S0DPacketCollectItem entityId b +FD net/minecraft/network/play/server/S18PacketEntityTeleport entityId a +FD net/minecraft/network/play/server/S18PacketEntityTeleport posX b +FD net/minecraft/network/play/server/S18PacketEntityTeleport posY c +FD net/minecraft/network/play/server/S18PacketEntityTeleport posZ d +FD net/minecraft/network/play/server/S18PacketEntityTeleport yaw e +FD net/minecraft/network/play/server/S18PacketEntityTeleport pitch f +FD net/minecraft/network/play/server/S18PacketEntityTeleport onGround g +FD net/minecraft/network/play/server/S20PacketEntityProperties entityId a +FD net/minecraft/network/play/server/S20PacketEntityProperties field_149444_b b +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151414_a a +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151412_b b +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151413_c c +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151411_d d +FD net/minecraft/network/play/server/S1DPacketEntityEffect entityId a +FD net/minecraft/network/play/server/S1DPacketEntityEffect effectId b +FD net/minecraft/network/play/server/S1DPacketEntityEffect amplifier c +FD net/minecraft/network/play/server/S1DPacketEntityEffect duration d +FD net/minecraft/network/play/server/S1DPacketEntityEffect hideParticles e +FD net/minecraft/network/play/client/C14PacketTabComplete message a +FD net/minecraft/network/play/client/C14PacketTabComplete targetBlock b +FD net/minecraft/network/play/client/C01PacketChatMessage message a +FD net/minecraft/network/play/client/C16PacketClientStatus status a +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState PERFORM_RESPAWN a +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState REQUEST_STATS b +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState OPEN_INVENTORY_ACHIEVEMENT c +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState $VALUES d +FD net/minecraft/network/play/client/C15PacketClientSettings lang a +FD net/minecraft/network/play/client/C15PacketClientSettings view b +FD net/minecraft/network/play/client/C15PacketClientSettings chatVisibility c +FD net/minecraft/network/play/client/C15PacketClientSettings enableColors d +FD net/minecraft/network/play/client/C15PacketClientSettings modelPartFlags e +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction windowId a +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction uid b +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction accepted c +FD net/minecraft/network/play/client/C11PacketEnchantItem windowId a +FD net/minecraft/network/play/client/C11PacketEnchantItem button b +FD net/minecraft/network/play/client/C0EPacketClickWindow windowId a +FD net/minecraft/network/play/client/C0EPacketClickWindow slotId b +FD net/minecraft/network/play/client/C0EPacketClickWindow usedButton c +FD net/minecraft/network/play/client/C0EPacketClickWindow actionNumber d +FD net/minecraft/network/play/client/C0EPacketClickWindow clickedItem e +FD net/minecraft/network/play/client/C0EPacketClickWindow mode f +FD net/minecraft/network/play/client/C0DPacketCloseWindow windowId a +FD net/minecraft/network/play/client/C17PacketCustomPayload channel a +FD net/minecraft/network/play/client/C17PacketCustomPayload data b +FD net/minecraft/network/play/client/C02PacketUseEntity entityId a +FD net/minecraft/network/play/client/C02PacketUseEntity action b +FD net/minecraft/network/play/client/C02PacketUseEntity hitVec c +FD net/minecraft/network/play/client/C02PacketUseEntity$Action INTERACT a +FD net/minecraft/network/play/client/C02PacketUseEntity$Action ATTACK b +FD net/minecraft/network/play/client/C02PacketUseEntity$Action INTERACT_AT c +FD net/minecraft/network/play/client/C02PacketUseEntity$Action $VALUES d +FD net/minecraft/network/play/client/C00PacketKeepAlive key a +FD net/minecraft/network/play/client/C03PacketPlayer x a +FD net/minecraft/network/play/client/C03PacketPlayer y b +FD net/minecraft/network/play/client/C03PacketPlayer z c +FD net/minecraft/network/play/client/C03PacketPlayer yaw d +FD net/minecraft/network/play/client/C03PacketPlayer pitch e +FD net/minecraft/network/play/client/C03PacketPlayer onGround f +FD net/minecraft/network/play/client/C03PacketPlayer moving g +FD net/minecraft/network/play/client/C03PacketPlayer rotating h +FD net/minecraft/network/play/client/C13PacketPlayerAbilities invulnerable a +FD net/minecraft/network/play/client/C13PacketPlayerAbilities flying b +FD net/minecraft/network/play/client/C13PacketPlayerAbilities allowFlying c +FD net/minecraft/network/play/client/C13PacketPlayerAbilities creativeMode d +FD net/minecraft/network/play/client/C13PacketPlayerAbilities flySpeed e +FD net/minecraft/network/play/client/C13PacketPlayerAbilities walkSpeed f +FD net/minecraft/network/play/client/C07PacketPlayerDigging position a +FD net/minecraft/network/play/client/C07PacketPlayerDigging facing b +FD net/minecraft/network/play/client/C07PacketPlayerDigging status c +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action START_DESTROY_BLOCK a +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action ABORT_DESTROY_BLOCK b +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action STOP_DESTROY_BLOCK c +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action DROP_ALL_ITEMS d +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action DROP_ITEM e +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action RELEASE_USE_ITEM f +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action $VALUES g +FD net/minecraft/network/play/client/C0BPacketEntityAction entityID a +FD net/minecraft/network/play/client/C0BPacketEntityAction action b +FD net/minecraft/network/play/client/C0BPacketEntityAction auxData c +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action START_SNEAKING a +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SNEAKING b +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SLEEPING c +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action START_SPRINTING d +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SPRINTING e +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action RIDING_JUMP f +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action OPEN_INVENTORY g +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action $VALUES h +FD net/minecraft/network/play/client/C0CPacketInput strafeSpeed a +FD net/minecraft/network/play/client/C0CPacketInput forwardSpeed b +FD net/minecraft/network/play/client/C0CPacketInput jumping c +FD net/minecraft/network/play/client/C0CPacketInput sneaking d +FD net/minecraft/network/play/client/C19PacketResourcePackStatus hash a +FD net/minecraft/network/play/client/C19PacketResourcePackStatus status b +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action SUCCESSFULLY_LOADED a +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action DECLINED b +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action FAILED_DOWNLOAD c +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action ACCEPTED d +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action $VALUES e +FD net/minecraft/network/play/client/C09PacketHeldItemChange slotId a +FD net/minecraft/network/play/client/C10PacketCreativeInventoryAction slotId a +FD net/minecraft/network/play/client/C10PacketCreativeInventoryAction stack b +FD net/minecraft/network/play/client/C12PacketUpdateSign pos a +FD net/minecraft/network/play/client/C12PacketUpdateSign lines b +FD net/minecraft/network/play/client/C18PacketSpectate id a +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement field_179726_a a +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement position b +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement placedBlockDirection c +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement stack d +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingX e +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingY f +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingZ g +FD net/minecraft/network/handshake/client/C00Handshake protocolVersion a +FD net/minecraft/network/handshake/client/C00Handshake ip b +FD net/minecraft/network/handshake/client/C00Handshake port c +FD net/minecraft/network/handshake/client/C00Handshake requestedState d +FD net/minecraft/network/login/server/S02PacketLoginSuccess profile a +FD net/minecraft/network/login/server/S01PacketEncryptionRequest hashedServerId a +FD net/minecraft/network/login/server/S01PacketEncryptionRequest publicKey b +FD net/minecraft/network/login/server/S01PacketEncryptionRequest verifyToken c +FD net/minecraft/network/login/server/S03PacketEnableCompression compressionTreshold a +FD net/minecraft/network/login/server/S00PacketDisconnect reason a +FD net/minecraft/network/login/client/C00PacketLoginStart profile a +FD net/minecraft/network/login/client/C01PacketEncryptionResponse secretKeyEncrypted a +FD net/minecraft/network/login/client/C01PacketEncryptionResponse verifyTokenEncrypted b +FD net/minecraft/network/status/server/S01PacketPong clientTime a +FD net/minecraft/network/status/server/S00PacketServerInfo GSON a +FD net/minecraft/network/status/server/S00PacketServerInfo response b +FD net/minecraft/network/ServerStatusResponse serverMotd a +FD net/minecraft/network/ServerStatusResponse playerCount b +FD net/minecraft/network/ServerStatusResponse protocolVersion c +FD net/minecraft/network/ServerStatusResponse favicon d +FD net/minecraft/network/ServerStatusResponse$PlayerCountData maxPlayers a +FD net/minecraft/network/ServerStatusResponse$PlayerCountData onlinePlayerCount b +FD net/minecraft/network/ServerStatusResponse$PlayerCountData players c +FD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier name a +FD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier protocol b +FD net/minecraft/network/status/client/C01PacketPing clientTime a +FD net/minecraft/util/ResourceLocation resourceDomain a +FD net/minecraft/util/ResourceLocation resourcePath b +FD net/minecraft/init/Bootstrap SYSOUT a +FD net/minecraft/init/Bootstrap alreadyRegistered b +FD net/minecraft/init/Bootstrap LOGGER c +FD net/minecraft/init/Bootstrap$2 field_150841_b b +FD net/minecraft/init/Bootstrap$3 field_150840_b b +FD net/minecraft/init/Bootstrap$4 field_150839_b b +FD net/minecraft/init/Bootstrap$5 field_150838_b b +FD net/minecraft/init/Bootstrap$7 field_179240_b b +FD net/minecraft/init/Bootstrap$8 field_179241_b b +FD net/minecraft/init/Bootstrap$12 field_150843_b b +FD net/minecraft/init/Bootstrap$12$1 field_150836_b b +FD net/minecraft/init/Bootstrap$12$1 field_150837_c c +FD net/minecraft/init/Bootstrap$16 field_150842_b b +FD net/minecraft/client/util/JsonException field_151383_a a +FD net/minecraft/client/util/JsonException exceptionMessage b +FD net/minecraft/client/util/JsonException$Entry field_151376_a a +FD net/minecraft/client/util/JsonException$Entry field_151375_b b +FD net/minecraft/command/ServerCommand command a +FD net/minecraft/command/ServerCommand sender b +FD net/minecraft/server/ServerEula LOG a +FD net/minecraft/server/ServerEula eulaFile b +FD net/minecraft/server/ServerEula acceptedEULA c +FD net/minecraft/util/LoggingPrintStream LOGGER a +FD net/minecraft/util/LoggingPrintStream domain b +FD net/minecraft/network/ThreadQuickExitException INSTANCE a +FD net/minecraft/scoreboard/ServerScoreboard scoreboardMCServer a +FD net/minecraft/scoreboard/ServerScoreboard field_96553_b b +FD net/minecraft/scoreboard/ServerScoreboard scoreboardSaveData c +FD net/minecraft/server/dedicated/PropertyManager LOGGER a +FD net/minecraft/server/dedicated/PropertyManager serverProperties b +FD net/minecraft/server/dedicated/PropertyManager serverPropertiesFile c +FD net/minecraft/server/dedicated/DedicatedPlayerList LOGGER f +FD net/minecraft/server/dedicated/DedicatedServer logger k +FD net/minecraft/server/dedicated/DedicatedServer pendingCommandList l +FD net/minecraft/server/dedicated/DedicatedServer theRConThreadQuery m +FD net/minecraft/server/dedicated/DedicatedServer theRConThreadMain n +FD net/minecraft/server/dedicated/DedicatedServer settings o +FD net/minecraft/server/dedicated/DedicatedServer eula p +FD net/minecraft/server/dedicated/DedicatedServer canSpawnStructures q +FD net/minecraft/server/dedicated/DedicatedServer gameType r +FD net/minecraft/server/dedicated/DedicatedServer guiIsEnabled s +FD net/minecraft/server/dedicated/DedicatedServer$1 field_72451_a a +FD net/minecraft/server/dedicated/DedicatedServer$2 field_72428_a a +FD net/minecraft/server/dedicated/DedicatedServer$3 field_71743_a a +FD net/minecraft/server/dedicated/DedicatedServer$4 field_85171_a a +FD net/minecraft/server/dedicated/ServerHangWatchdog LOGGER a +FD net/minecraft/server/dedicated/ServerHangWatchdog server b +FD net/minecraft/server/dedicated/ServerHangWatchdog maxTickTime c +FD net/minecraft/server/dedicated/ServerHangWatchdog$1 field_180252_a a +FD net/minecraft/server/gui/MinecraftServerGui serverGuiFont a +FD net/minecraft/server/gui/MinecraftServerGui LOGGER b +FD net/minecraft/server/gui/MinecraftServerGui server c +FD net/minecraft/server/gui/MinecraftServerGui$1 field_120023_a a +FD net/minecraft/server/gui/MinecraftServerGui$2 field_120025_a a +FD net/minecraft/server/gui/MinecraftServerGui$2 field_120024_b b +FD net/minecraft/server/gui/MinecraftServerGui$3 field_120032_a a +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164252_a a +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164250_b b +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164251_c c +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164256_a a +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164254_b b +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164255_c c +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164253_d d +FD net/minecraft/server/gui/PlayerListComponent server a +FD net/minecraft/server/gui/PlayerListComponent ticks b +FD net/minecraft/server/gui/StatsComponent field_120040_a a +FD net/minecraft/server/gui/StatsComponent field_120038_b b +FD net/minecraft/server/gui/StatsComponent field_120039_c c +FD net/minecraft/server/gui/StatsComponent field_120036_d d +FD net/minecraft/server/gui/StatsComponent server e +FD net/minecraft/server/gui/StatsComponent$1 field_120030_a a +FD net/minecraft/client/renderer/DestroyBlockProgress miningPlayerEntId a +FD net/minecraft/client/renderer/DestroyBlockProgress position b +FD net/minecraft/client/renderer/DestroyBlockProgress partialBlockProgress c +FD net/minecraft/client/renderer/DestroyBlockProgress createdAtCloudUpdateTick d +FD net/minecraft/world/demo/DemoWorldServer demoWorldSeed I +FD net/minecraft/world/demo/DemoWorldServer demoWorldSettings a +FD net/minecraft/world/demo/DemoWorldManager field_73105_c c +FD net/minecraft/world/demo/DemoWorldManager demoTimeExpired d +FD net/minecraft/world/demo/DemoWorldManager field_73104_e e +FD net/minecraft/world/demo/DemoWorldManager field_73102_f f +FD net/minecraft/world/WorldServerMulti delegate a +FD net/minecraft/world/WorldServerMulti$1 field_177698_a a +FD net/minecraft/entity/EntityTracker logger a +FD net/minecraft/entity/EntityTracker theWorld b +FD net/minecraft/entity/EntityTracker trackedEntities c +FD net/minecraft/entity/EntityTracker trackedEntityHashTable d +FD net/minecraft/entity/EntityTracker maxTrackingDistanceThreshold e +FD net/minecraft/entity/EntityTracker$1 field_96570_a a +FD net/minecraft/entity/EntityTracker$1 field_96569_b b +FD net/minecraft/world/WorldManager mcServer a +FD net/minecraft/world/WorldManager theWorldServer b +FD net/minecraft/server/management/PlayerManager pmLogger a +FD net/minecraft/server/management/PlayerManager theWorldServer b +FD net/minecraft/server/management/PlayerManager players c +FD net/minecraft/server/management/PlayerManager playerInstances d +FD net/minecraft/server/management/PlayerManager playerInstancesToUpdate e +FD net/minecraft/server/management/PlayerManager playerInstanceList f +FD net/minecraft/server/management/PlayerManager playerViewRadius g +FD net/minecraft/server/management/PlayerManager previousTotalWorldTime h +FD net/minecraft/server/management/PlayerManager xzDirectionsConst i +FD net/minecraft/server/management/PlayerManager$PlayerInstance field_73265_a a +FD net/minecraft/server/management/PlayerManager$PlayerInstance playersWatchingChunk b +FD net/minecraft/server/management/PlayerManager$PlayerInstance chunkCoords c +FD net/minecraft/server/management/PlayerManager$PlayerInstance locationOfBlockChange d +FD net/minecraft/server/management/PlayerManager$PlayerInstance numBlocksToUpdate e +FD net/minecraft/server/management/PlayerManager$PlayerInstance flagsYAreasToUpdate f +FD net/minecraft/server/management/PlayerManager$PlayerInstance previousWorldTime g +FD net/minecraft/world/gen/ChunkProviderServer chunkLoadOverride a +FD net/minecraft/world/gen/ChunkProviderServer logger b +FD net/minecraft/world/gen/ChunkProviderServer droppedChunksSet c +FD net/minecraft/world/gen/ChunkProviderServer dummyChunk d +FD net/minecraft/world/gen/ChunkProviderServer serverChunkGenerator e +FD net/minecraft/world/gen/ChunkProviderServer chunkLoader f +FD net/minecraft/world/gen/ChunkProviderServer id2ChunkMap g +FD net/minecraft/world/gen/ChunkProviderServer loadedChunks h +FD net/minecraft/world/gen/ChunkProviderServer worldObj i +FD net/minecraft/world/WorldServer mcServer I +FD net/minecraft/world/WorldServer theEntityTracker J +FD net/minecraft/world/WorldServer thePlayerManager K +FD net/minecraft/world/WorldServer pendingTickListEntriesHashSet L +FD net/minecraft/world/WorldServer pendingTickListEntriesTreeSet M +FD net/minecraft/world/WorldServer entitiesByUuid N +FD net/minecraft/world/WorldServer allPlayersSleeping O +FD net/minecraft/world/WorldServer updateEntityTick P +FD net/minecraft/world/WorldServer worldTeleporter Q +FD net/minecraft/world/WorldServer mobSpawner R +FD net/minecraft/world/WorldServer blockEventQueue S +FD net/minecraft/world/WorldServer blockEventCacheIndex T +FD net/minecraft/world/WorldServer bonusChestContent U +FD net/minecraft/world/WorldServer pendingTickListEntriesThisTick V +FD net/minecraft/world/WorldServer logger a +FD net/minecraft/world/WorldServer theChunkProviderServer b +FD net/minecraft/world/WorldServer disableLevelSaving c +FD net/minecraft/world/WorldServer villageSiege d +FD net/minecraft/world/WorldServer$1 field_180243_a a +FD net/minecraft/entity/player/EntityPlayerMP playerNetServerHandler a +FD net/minecraft/entity/player/EntityPlayerMP mcServer b +FD net/minecraft/entity/player/EntityPlayerMP logger bH +FD net/minecraft/entity/player/EntityPlayerMP translator bI +FD net/minecraft/entity/player/EntityPlayerMP destroyedItemsNetCache bJ +FD net/minecraft/entity/player/EntityPlayerMP statsFile bK +FD net/minecraft/entity/player/EntityPlayerMP combinedHealth bL +FD net/minecraft/entity/player/EntityPlayerMP lastHealth bM +FD net/minecraft/entity/player/EntityPlayerMP lastFoodLevel bN +FD net/minecraft/entity/player/EntityPlayerMP wasHungry bO +FD net/minecraft/entity/player/EntityPlayerMP lastExperience bP +FD net/minecraft/entity/player/EntityPlayerMP respawnInvulnerabilityTicks bQ +FD net/minecraft/entity/player/EntityPlayerMP chatVisibility bR +FD net/minecraft/entity/player/EntityPlayerMP chatColours bS +FD net/minecraft/entity/player/EntityPlayerMP playerLastActiveTime bT +FD net/minecraft/entity/player/EntityPlayerMP spectatingEntity bU +FD net/minecraft/entity/player/EntityPlayerMP currentWindowId bV +FD net/minecraft/entity/player/EntityPlayerMP theItemInWorldManager c +FD net/minecraft/entity/player/EntityPlayerMP managedPosX d +FD net/minecraft/entity/player/EntityPlayerMP managedPosZ e +FD net/minecraft/entity/player/EntityPlayerMP loadedChunks f +FD net/minecraft/entity/player/EntityPlayerMP isChangingQuantityOnly g +FD net/minecraft/entity/player/EntityPlayerMP ping h +FD net/minecraft/entity/player/EntityPlayerMP playerConqueredTheEnd i +FD net/minecraft/server/management/ItemInWorldManager theWorld a +FD net/minecraft/server/management/ItemInWorldManager thisPlayerMP b +FD net/minecraft/server/management/ItemInWorldManager gameType c +FD net/minecraft/server/management/ItemInWorldManager isDestroyingBlock d +FD net/minecraft/server/management/ItemInWorldManager initialDamage e +FD net/minecraft/server/management/ItemInWorldManager field_180240_f f +FD net/minecraft/server/management/ItemInWorldManager curblockDamage g +FD net/minecraft/server/management/ItemInWorldManager receivedFinishDiggingPacket h +FD net/minecraft/server/management/ItemInWorldManager field_180241_i i +FD net/minecraft/server/management/ItemInWorldManager initialBlockDamage j +FD net/minecraft/server/management/ItemInWorldManager durabilityRemainingOnBlock k +FD net/minecraft/entity/EntityTrackerEntry trackedEntity a +FD net/minecraft/entity/EntityTrackerEntry trackingDistanceThreshold b +FD net/minecraft/entity/EntityTrackerEntry updateFrequency c +FD net/minecraft/entity/EntityTrackerEntry encodedPosX d +FD net/minecraft/entity/EntityTrackerEntry encodedPosY e +FD net/minecraft/entity/EntityTrackerEntry encodedPosZ f +FD net/minecraft/entity/EntityTrackerEntry encodedRotationYaw g +FD net/minecraft/entity/EntityTrackerEntry encodedRotationPitch h +FD net/minecraft/entity/EntityTrackerEntry lastHeadMotion i +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityMotionX j +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityMotionY k +FD net/minecraft/entity/EntityTrackerEntry motionZ l +FD net/minecraft/entity/EntityTrackerEntry updateCounter m +FD net/minecraft/entity/EntityTrackerEntry playerEntitiesUpdated n +FD net/minecraft/entity/EntityTrackerEntry trackingPlayers o +FD net/minecraft/entity/EntityTrackerEntry logger p +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosX q +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosY r +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosZ s +FD net/minecraft/entity/EntityTrackerEntry firstUpdateDone t +FD net/minecraft/entity/EntityTrackerEntry sendVelocityUpdates u +FD net/minecraft/entity/EntityTrackerEntry ticksSinceLastForcedTeleport v +FD net/minecraft/entity/EntityTrackerEntry field_85178_v w +FD net/minecraft/entity/EntityTrackerEntry ridingEntity x +FD net/minecraft/entity/EntityTrackerEntry onGround y +FD net/minecraft/network/PingResponseHandler logger a +FD net/minecraft/network/PingResponseHandler networkSystem b +FD net/minecraft/client/network/NetHandlerHandshakeMemory mcServer a +FD net/minecraft/client/network/NetHandlerHandshakeMemory networkManager b +FD net/minecraft/network/NetworkSystem eventLoops a +FD net/minecraft/network/NetworkSystem SERVER_EPOLL_EVENTLOOP b +FD net/minecraft/network/NetworkSystem SERVER_LOCAL_EVENTLOOP c +FD net/minecraft/network/NetworkSystem isAlive d +FD net/minecraft/network/NetworkSystem logger e +FD net/minecraft/network/NetworkSystem mcServer f +FD net/minecraft/network/NetworkSystem endpoints g +FD net/minecraft/network/NetworkSystem networkManagers h +FD net/minecraft/network/NetworkSystem$4 field_151283_c a +FD net/minecraft/network/NetworkSystem$5 field_180230_b a +FD net/minecraft/network/NetworkSystem$6 field_151284_a a +FD net/minecraft/network/NetworkSystem$6 field_180228_c b +FD net/minecraft/network/NetworkSystem$7 field_181143_a a +FD net/minecraft/network/NetworkSystem$7 field_181144_b b +FD net/minecraft/network/NetworkSystem$7 field_181145_c c +FD net/minecraft/network/NetHandlerPlayServer netManager a +FD net/minecraft/network/NetHandlerPlayServer playerEntity b +FD net/minecraft/network/NetHandlerPlayServer logger c +FD net/minecraft/network/NetHandlerPlayServer serverController d +FD net/minecraft/network/NetHandlerPlayServer networkTickCount e +FD net/minecraft/network/NetHandlerPlayServer field_175090_f f +FD net/minecraft/network/NetHandlerPlayServer floatingTickCount g +FD net/minecraft/network/NetHandlerPlayServer field_147366_g h +FD net/minecraft/network/NetHandlerPlayServer field_147378_h i +FD net/minecraft/network/NetHandlerPlayServer lastPingTime j +FD net/minecraft/network/NetHandlerPlayServer lastSentPingPacket k +FD net/minecraft/network/NetHandlerPlayServer chatSpamThresholdCount l +FD net/minecraft/network/NetHandlerPlayServer itemDropThreshold m +FD net/minecraft/network/NetHandlerPlayServer field_147372_n n +FD net/minecraft/network/NetHandlerPlayServer lastPosX o +FD net/minecraft/network/NetHandlerPlayServer lastPosY p +FD net/minecraft/network/NetHandlerPlayServer lastPosZ q +FD net/minecraft/network/NetHandlerPlayServer hasMoved r +FD net/minecraft/network/NetHandlerPlayServer$1 field_151289_a a +FD net/minecraft/network/NetHandlerPlayServer$1 field_151288_b b +FD net/minecraft/network/NetHandlerPlayServer$2 field_151286_b a +FD net/minecraft/network/NetHandlerPlayServer$3 field_180227_a a +FD net/minecraft/network/NetHandlerPlayServer$3 field_180226_b b +FD net/minecraft/network/NetHandlerPlayServer$4 field_180224_a a +FD net/minecraft/network/NetHandlerPlayServer$4 field_180222_b b +FD net/minecraft/network/NetHandlerPlayServer$4 field_180223_c c +FD net/minecraft/server/network/NetHandlerHandshakeTCP server a +FD net/minecraft/server/network/NetHandlerHandshakeTCP networkManager b +FD net/minecraft/server/network/NetHandlerHandshakeTCP$1 field_151291_a a +FD net/minecraft/server/network/NetHandlerLoginServer networkManager a +FD net/minecraft/server/network/NetHandlerLoginServer AUTHENTICATOR_THREAD_ID b +FD net/minecraft/server/network/NetHandlerLoginServer logger c +FD net/minecraft/server/network/NetHandlerLoginServer RANDOM d +FD net/minecraft/server/network/NetHandlerLoginServer verifyToken e +FD net/minecraft/server/network/NetHandlerLoginServer server f +FD net/minecraft/server/network/NetHandlerLoginServer currentLoginState g +FD net/minecraft/server/network/NetHandlerLoginServer connectionTimer h +FD net/minecraft/server/network/NetHandlerLoginServer loginGameProfile i +FD net/minecraft/server/network/NetHandlerLoginServer serverId j +FD net/minecraft/server/network/NetHandlerLoginServer secretKey k +FD net/minecraft/server/network/NetHandlerLoginServer player l +FD net/minecraft/server/network/NetHandlerLoginServer$1 field_151292_a a +FD net/minecraft/server/network/NetHandlerLoginServer$2 field_180221_a a +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState HELLO a +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState KEY b +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState AUTHENTICATING c +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState READY_TO_ACCEPT d +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState DELAY_ACCEPT e +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState ACCEPTED f +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState $VALUES g +FD net/minecraft/server/network/NetHandlerStatusServer EXIT_MESSAGE a +FD net/minecraft/server/network/NetHandlerStatusServer server b +FD net/minecraft/server/network/NetHandlerStatusServer networkManager c +FD net/minecraft/server/network/NetHandlerStatusServer handled d +FD net/minecraft/server/management/BanEntry dateFormat a +FD net/minecraft/server/management/BanEntry banStartDate b +FD net/minecraft/server/management/BanEntry bannedBy c +FD net/minecraft/server/management/BanEntry banEndDate d +FD net/minecraft/server/management/BanEntry reason e +FD net/minecraft/server/management/PlayerProfileCache dateFormat a +FD net/minecraft/server/management/PlayerProfileCache gson b +FD net/minecraft/server/management/PlayerProfileCache usernameToProfileEntryMap c +FD net/minecraft/server/management/PlayerProfileCache uuidToProfileEntryMap d +FD net/minecraft/server/management/PlayerProfileCache gameProfiles e +FD net/minecraft/server/management/PlayerProfileCache mcServer f +FD net/minecraft/server/management/PlayerProfileCache usercacheFile g +FD net/minecraft/server/management/PlayerProfileCache TYPE h +FD net/minecraft/server/management/PlayerProfileCache$1 field_152667_a a +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry field_152671_a a +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry gameProfile b +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry expirationDate c +FD net/minecraft/server/management/PlayerProfileCache$Serializer field_152677_a a +FD net/minecraft/server/management/PreYggdrasilConverter OLD_IPBAN_FILE a +FD net/minecraft/server/management/PreYggdrasilConverter OLD_PLAYERBAN_FILE b +FD net/minecraft/server/management/PreYggdrasilConverter OLD_OPS_FILE c +FD net/minecraft/server/management/PreYggdrasilConverter OLD_WHITELIST_FILE d +FD net/minecraft/server/management/PreYggdrasilConverter LOGGER e +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152734_a a +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152735_b b +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152736_c c +FD net/minecraft/server/management/PreYggdrasilConverter$3 field_152737_a a +FD net/minecraft/server/management/PreYggdrasilConverter$3 field_152738_b b +FD net/minecraft/server/management/PreYggdrasilConverter$4 field_152739_a a +FD net/minecraft/server/management/PreYggdrasilConverter$4 field_152740_b b +FD net/minecraft/server/management/PreYggdrasilConverter$5 field_152741_a a +FD net/minecraft/server/management/PreYggdrasilConverter$5 field_152742_b b +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152745_a a +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152746_b b +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152747_c c +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152748_d d +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152749_e e +FD net/minecraft/server/management/ServerConfigurationManager FILE_PLAYERBANS a +FD net/minecraft/server/management/ServerConfigurationManager FILE_IPBANS b +FD net/minecraft/server/management/ServerConfigurationManager FILE_OPS c +FD net/minecraft/server/management/ServerConfigurationManager FILE_WHITELIST d +FD net/minecraft/server/management/ServerConfigurationManager maxPlayers e +FD net/minecraft/server/management/ServerConfigurationManager logger f +FD net/minecraft/server/management/ServerConfigurationManager dateFormat g +FD net/minecraft/server/management/ServerConfigurationManager mcServer h +FD net/minecraft/server/management/ServerConfigurationManager playerEntityList i +FD net/minecraft/server/management/ServerConfigurationManager uuidToPlayerMap j +FD net/minecraft/server/management/ServerConfigurationManager bannedPlayers k +FD net/minecraft/server/management/ServerConfigurationManager bannedIPs l +FD net/minecraft/server/management/ServerConfigurationManager ops m +FD net/minecraft/server/management/ServerConfigurationManager whiteListedPlayers n +FD net/minecraft/server/management/ServerConfigurationManager playerStatFiles o +FD net/minecraft/server/management/ServerConfigurationManager playerNBTManagerObj p +FD net/minecraft/server/management/ServerConfigurationManager whiteListEnforced q +FD net/minecraft/server/management/ServerConfigurationManager viewDistance r +FD net/minecraft/server/management/ServerConfigurationManager gameType s +FD net/minecraft/server/management/ServerConfigurationManager commandsAllowedForAll t +FD net/minecraft/server/management/ServerConfigurationManager playerPingIndex u +FD net/minecraft/server/management/ServerConfigurationManager$1 field_177697_a a +FD net/minecraft/server/management/UserListOpsEntry permissionLevel a +FD net/minecraft/server/management/UserListOpsEntry bypassesPlayerLimit b +FD net/minecraft/server/management/UserListEntry value a +FD net/minecraft/server/management/UserList logger a +FD net/minecraft/server/management/UserList gson b +FD net/minecraft/server/management/UserList saveFile c +FD net/minecraft/server/management/UserList values d +FD net/minecraft/server/management/UserList lanServer e +FD net/minecraft/server/management/UserList saveFileFormat f +FD net/minecraft/server/management/UserList$Serializer field_152752_a a +FD net/minecraft/network/rcon/RConOutputStream byteArrayOutput a +FD net/minecraft/network/rcon/RConOutputStream output b +FD net/minecraft/network/rcon/RConUtils hexDigits a +FD net/minecraft/network/rcon/RConConsoleSource instance a +FD net/minecraft/network/rcon/RConConsoleSource buffer b +FD net/minecraft/network/rcon/RConThreadBase running a +FD net/minecraft/network/rcon/RConThreadBase server b +FD net/minecraft/network/rcon/RConThreadBase threadName c +FD net/minecraft/network/rcon/RConThreadBase rconThread d +FD net/minecraft/network/rcon/RConThreadBase field_72615_d e +FD net/minecraft/network/rcon/RConThreadBase socketList f +FD net/minecraft/network/rcon/RConThreadBase serverSocketList g +FD net/minecraft/network/rcon/RConThreadBase THREAD_ID h +FD net/minecraft/network/rcon/RConThreadQuery lastAuthCheckTime h +FD net/minecraft/network/rcon/RConThreadQuery queryPort i +FD net/minecraft/network/rcon/RConThreadQuery serverPort j +FD net/minecraft/network/rcon/RConThreadQuery maxPlayers k +FD net/minecraft/network/rcon/RConThreadQuery serverMotd l +FD net/minecraft/network/rcon/RConThreadQuery worldName m +FD net/minecraft/network/rcon/RConThreadQuery querySocket n +FD net/minecraft/network/rcon/RConThreadQuery buffer o +FD net/minecraft/network/rcon/RConThreadQuery incomingPacket p +FD net/minecraft/network/rcon/RConThreadQuery field_72644_p q +FD net/minecraft/network/rcon/RConThreadQuery queryHostname r +FD net/minecraft/network/rcon/RConThreadQuery serverHostname s +FD net/minecraft/network/rcon/RConThreadQuery queryClients t +FD net/minecraft/network/rcon/RConThreadQuery time u +FD net/minecraft/network/rcon/RConThreadQuery output v +FD net/minecraft/network/rcon/RConThreadQuery lastQueryResponseTime w +FD net/minecraft/network/rcon/RConThreadQuery$Auth field_72600_a a +FD net/minecraft/network/rcon/RConThreadQuery$Auth timestamp b +FD net/minecraft/network/rcon/RConThreadQuery$Auth randomChallenge c +FD net/minecraft/network/rcon/RConThreadQuery$Auth requestId d +FD net/minecraft/network/rcon/RConThreadQuery$Auth challengeValue e +FD net/minecraft/network/rcon/RConThreadQuery$Auth requestIdAsString f +FD net/minecraft/network/rcon/RConThreadClient LOGGER h +FD net/minecraft/network/rcon/RConThreadClient loggedIn i +FD net/minecraft/network/rcon/RConThreadClient clientSocket j +FD net/minecraft/network/rcon/RConThreadClient buffer k +FD net/minecraft/network/rcon/RConThreadClient rconPassword l +FD net/minecraft/network/rcon/RConThreadMain rconPort h +FD net/minecraft/network/rcon/RConThreadMain serverPort i +FD net/minecraft/network/rcon/RConThreadMain hostname j +FD net/minecraft/network/rcon/RConThreadMain serverSocket k +FD net/minecraft/network/rcon/RConThreadMain rconPassword l +FD net/minecraft/network/rcon/RConThreadMain clientThreads m +FD net/minecraft/stats/Achievement displayColumn a +FD net/minecraft/stats/Achievement displayRow b +FD net/minecraft/stats/Achievement parentAchievement c +FD net/minecraft/stats/Achievement theItemStack d +FD net/minecraft/stats/Achievement achievementDescription k +FD net/minecraft/stats/Achievement statStringFormatter l +FD net/minecraft/stats/Achievement isSpecial m +FD net/minecraft/stats/AchievementList blazeRod A +FD net/minecraft/stats/AchievementList potion B +FD net/minecraft/stats/AchievementList theEnd C +FD net/minecraft/stats/AchievementList theEnd2 D +FD net/minecraft/stats/AchievementList enchantments E +FD net/minecraft/stats/AchievementList overkill F +FD net/minecraft/stats/AchievementList bookcase G +FD net/minecraft/stats/AchievementList breedCow H +FD net/minecraft/stats/AchievementList spawnWither I +FD net/minecraft/stats/AchievementList killWither J +FD net/minecraft/stats/AchievementList fullBeacon K +FD net/minecraft/stats/AchievementList exploreAllBiomes L +FD net/minecraft/stats/AchievementList overpowered M +FD net/minecraft/stats/AchievementList minDisplayColumn a +FD net/minecraft/stats/AchievementList minDisplayRow b +FD net/minecraft/stats/AchievementList maxDisplayColumn c +FD net/minecraft/stats/AchievementList maxDisplayRow d +FD net/minecraft/stats/AchievementList achievementList e +FD net/minecraft/stats/AchievementList openInventory f +FD net/minecraft/stats/AchievementList mineWood g +FD net/minecraft/stats/AchievementList buildWorkBench h +FD net/minecraft/stats/AchievementList buildPickaxe i +FD net/minecraft/stats/AchievementList buildFurnace j +FD net/minecraft/stats/AchievementList acquireIron k +FD net/minecraft/stats/AchievementList buildHoe l +FD net/minecraft/stats/AchievementList makeBread m +FD net/minecraft/stats/AchievementList bakeCake n +FD net/minecraft/stats/AchievementList buildBetterPickaxe o +FD net/minecraft/stats/AchievementList cookFish p +FD net/minecraft/stats/AchievementList onARail q +FD net/minecraft/stats/AchievementList buildSword r +FD net/minecraft/stats/AchievementList killEnemy s +FD net/minecraft/stats/AchievementList killCow t +FD net/minecraft/stats/AchievementList flyPig u +FD net/minecraft/stats/AchievementList snipeSkeleton v +FD net/minecraft/stats/AchievementList diamonds w +FD net/minecraft/stats/AchievementList diamondsToYou x +FD net/minecraft/stats/AchievementList portal y +FD net/minecraft/stats/AchievementList ghast z +FD net/minecraft/stats/StatCrafting field_150960_a a +FD net/minecraft/stats/StatisticsFile logger b +FD net/minecraft/stats/StatisticsFile mcServer c +FD net/minecraft/stats/StatisticsFile statsFile d +FD net/minecraft/stats/StatisticsFile field_150888_e e +FD net/minecraft/stats/StatisticsFile field_150885_f f +FD net/minecraft/stats/StatisticsFile field_150886_g g +FD net/minecraft/stats/StatBase statName a +FD net/minecraft/stats/StatBase type b +FD net/minecraft/stats/StatBase objectiveCriteria c +FD net/minecraft/stats/StatBase field_150956_d d +FD net/minecraft/stats/StatBase statId e +FD net/minecraft/stats/StatBase isIndependent f +FD net/minecraft/stats/StatBase simpleStatType g +FD net/minecraft/stats/StatBase timeStatType h +FD net/minecraft/stats/StatBase distanceStatType i +FD net/minecraft/stats/StatBase field_111202_k j +FD net/minecraft/stats/StatBase numberFormat k +FD net/minecraft/stats/StatBase decimalFormat l +FD net/minecraft/util/TupleIntJsonSerializable integerValue a +FD net/minecraft/util/TupleIntJsonSerializable jsonSerializableValue b +FD net/minecraft/stats/StatList animalsBredStat A +FD net/minecraft/stats/StatList playerKillsStat B +FD net/minecraft/stats/StatList fishCaughtStat C +FD net/minecraft/stats/StatList junkFishedStat D +FD net/minecraft/stats/StatList treasureFishedStat E +FD net/minecraft/stats/StatList timesTalkedToVillagerStat F +FD net/minecraft/stats/StatList timesTradedWithVillagerStat G +FD net/minecraft/stats/StatList field_181724_H H +FD net/minecraft/stats/StatList field_181725_I I +FD net/minecraft/stats/StatList field_181726_J J +FD net/minecraft/stats/StatList field_181727_K K +FD net/minecraft/stats/StatList field_181728_L L +FD net/minecraft/stats/StatList field_181729_M M +FD net/minecraft/stats/StatList field_181730_N N +FD net/minecraft/stats/StatList field_181731_O O +FD net/minecraft/stats/StatList field_181732_P P +FD net/minecraft/stats/StatList field_181733_Q Q +FD net/minecraft/stats/StatList field_181734_R R +FD net/minecraft/stats/StatList field_181735_S S +FD net/minecraft/stats/StatList field_181736_T T +FD net/minecraft/stats/StatList field_181737_U U +FD net/minecraft/stats/StatList field_181738_V V +FD net/minecraft/stats/StatList field_181739_W W +FD net/minecraft/stats/StatList field_181740_X X +FD net/minecraft/stats/StatList field_181741_Y Y +FD net/minecraft/stats/StatList field_181742_Z Z +FD net/minecraft/stats/StatList oneShotStats a +FD net/minecraft/stats/StatList field_181723_aa aa +FD net/minecraft/stats/StatList mineBlockStatArray ab +FD net/minecraft/stats/StatList objectCraftStats ac +FD net/minecraft/stats/StatList objectUseStats ad +FD net/minecraft/stats/StatList objectBreakStats ae +FD net/minecraft/stats/StatList allStats b +FD net/minecraft/stats/StatList generalStats c +FD net/minecraft/stats/StatList itemStats d +FD net/minecraft/stats/StatList objectMineStats e +FD net/minecraft/stats/StatList leaveGameStat f +FD net/minecraft/stats/StatList minutesPlayedStat g +FD net/minecraft/stats/StatList timeSinceDeathStat h +FD net/minecraft/stats/StatList distanceWalkedStat i +FD net/minecraft/stats/StatList distanceCrouchedStat j +FD net/minecraft/stats/StatList distanceSprintedStat k +FD net/minecraft/stats/StatList distanceSwumStat l +FD net/minecraft/stats/StatList distanceFallenStat m +FD net/minecraft/stats/StatList distanceClimbedStat n +FD net/minecraft/stats/StatList distanceFlownStat o +FD net/minecraft/stats/StatList distanceDoveStat p +FD net/minecraft/stats/StatList distanceByMinecartStat q +FD net/minecraft/stats/StatList distanceByBoatStat r +FD net/minecraft/stats/StatList distanceByPigStat s +FD net/minecraft/stats/StatList distanceByHorseStat t +FD net/minecraft/stats/StatList jumpStat u +FD net/minecraft/stats/StatList dropStat v +FD net/minecraft/stats/StatList damageDealtStat w +FD net/minecraft/stats/StatList damageTakenStat x +FD net/minecraft/stats/StatList deathsStat y +FD net/minecraft/stats/StatList mobKillsStat z +FD net/minecraft/stats/StatFileWriter statsData a +FD net/minecraft/util/JsonSerializableSet underlyingSet a +FD net/minecraft/util/ClassInheritanceMultiMap field_181158_a a +FD net/minecraft/util/ClassInheritanceMultiMap map b +FD net/minecraft/util/ClassInheritanceMultiMap knownKeys c +FD net/minecraft/util/ClassInheritanceMultiMap baseClass d +FD net/minecraft/util/ClassInheritanceMultiMap values e +FD net/minecraft/util/ClassInheritanceMultiMap$1 field_180211_a a +FD net/minecraft/util/ClassInheritanceMultiMap$1 field_180210_b b +FD net/minecraft/util/CryptManager LOGGER a +FD net/minecraft/util/FrameTimer frames a +FD net/minecraft/util/FrameTimer lastIndex b +FD net/minecraft/util/FrameTimer counter c +FD net/minecraft/util/FrameTimer index d +FD net/minecraft/util/HttpUtil field_180193_a a +FD net/minecraft/util/HttpUtil downloadThreadsStarted b +FD net/minecraft/util/HttpUtil logger c +FD net/minecraft/util/HttpUtil$1 field_151199_a a +FD net/minecraft/util/HttpUtil$1 field_151197_b b +FD net/minecraft/util/HttpUtil$1 field_151198_c c +FD net/minecraft/util/HttpUtil$1 field_151195_d d +FD net/minecraft/util/HttpUtil$1 field_151196_e e +FD net/minecraft/util/HttpUtil$1 field_151194_g f +FD net/minecraft/server/management/LowerStringMap internalMap a +FD net/minecraft/util/IntegerCache CACHE a +FD net/minecraft/util/IntHashMap slots a +FD net/minecraft/util/IntHashMap count b +FD net/minecraft/util/IntHashMap threshold c +FD net/minecraft/util/IntHashMap growFactor d +FD net/minecraft/util/IntHashMap$Entry hashEntry a +FD net/minecraft/util/IntHashMap$Entry valueEntry b +FD net/minecraft/util/IntHashMap$Entry nextEntry c +FD net/minecraft/util/IntHashMap$Entry slotHash d +FD net/minecraft/util/LazyLoadBase value a +FD net/minecraft/util/LazyLoadBase isLoaded b +FD net/minecraft/util/ThreadSafeBoundList field_152759_a a +FD net/minecraft/util/ThreadSafeBoundList field_152760_b b +FD net/minecraft/util/ThreadSafeBoundList field_152761_c c +FD net/minecraft/util/ThreadSafeBoundList field_152762_d d +FD net/minecraft/util/ThreadSafeBoundList field_152763_e e +FD net/minecraft/util/LongHashMap hashArray a +FD net/minecraft/util/LongHashMap numHashElements b +FD net/minecraft/util/LongHashMap mask c +FD net/minecraft/util/LongHashMap capacity d +FD net/minecraft/util/LongHashMap percentUseable e +FD net/minecraft/util/LongHashMap modCount f +FD net/minecraft/util/LongHashMap$Entry key a +FD net/minecraft/util/LongHashMap$Entry value b +FD net/minecraft/util/LongHashMap$Entry nextEntry c +FD net/minecraft/util/LongHashMap$Entry hash d +FD net/minecraft/util/EnumTypeAdapterFactory$1 field_151231_a a +FD net/minecraft/util/EnumTypeAdapterFactory$1 field_151230_b b +FD net/minecraft/util/MathHelper SQRT_2 a +FD net/minecraft/util/MathHelper SIN_TABLE b +FD net/minecraft/util/MathHelper multiplyDeBruijnBitPosition c +FD net/minecraft/util/MathHelper field_181163_d d +FD net/minecraft/util/MathHelper field_181164_e e +FD net/minecraft/util/MathHelper field_181165_f f +FD net/minecraft/profiler/Profiler profilingEnabled a +FD net/minecraft/profiler/Profiler logger b +FD net/minecraft/profiler/Profiler sectionList c +FD net/minecraft/profiler/Profiler timestampList d +FD net/minecraft/profiler/Profiler profilingSection e +FD net/minecraft/profiler/Profiler profilingMap f +FD net/minecraft/profiler/Profiler$Result field_76332_a a +FD net/minecraft/profiler/Profiler$Result field_76330_b b +FD net/minecraft/profiler/Profiler$Result field_76331_c c +FD net/minecraft/util/MouseFilter field_76336_a a +FD net/minecraft/util/MouseFilter field_76334_b b +FD net/minecraft/util/MouseFilter field_76335_c c +FD net/minecraft/util/StringUtils patternControlCode a +FD net/minecraft/util/WeightedRandom$Item itemWeight a +FD net/minecraft/util/WeightedRandomChestContent theItemId b +FD net/minecraft/util/WeightedRandomChestContent minStackSize c +FD net/minecraft/util/WeightedRandomChestContent maxStackSize d +FD net/minecraft/inventory/InventoryLargeChest name a +FD net/minecraft/inventory/InventoryLargeChest upperChest b +FD net/minecraft/inventory/InventoryLargeChest lowerChest c +FD net/minecraft/inventory/InventoryHelper RANDOM a +FD net/minecraft/world/EnumDifficulty PEACEFUL a +FD net/minecraft/world/EnumDifficulty EASY b +FD net/minecraft/world/EnumDifficulty NORMAL c +FD net/minecraft/world/EnumDifficulty HARD d +FD net/minecraft/world/EnumDifficulty difficultyEnums e +FD net/minecraft/world/EnumDifficulty difficultyId f +FD net/minecraft/world/EnumDifficulty difficultyResourceKey g +FD net/minecraft/world/EnumDifficulty $VALUES h +FD net/minecraft/world/DifficultyInstance worldDifficulty a +FD net/minecraft/world/DifficultyInstance additionalDifficulty b +FD net/minecraft/world/LockCode EMPTY_CODE a +FD net/minecraft/world/LockCode lock b +FD net/minecraft/inventory/InventoryBasic inventoryTitle a +FD net/minecraft/inventory/InventoryBasic slotsCount b +FD net/minecraft/inventory/InventoryBasic inventoryContents c +FD net/minecraft/inventory/InventoryBasic changeListeners d +FD net/minecraft/inventory/InventoryBasic hasCustomName e +FD net/minecraft/profiler/PlayerUsageSnooper snooperStats a +FD net/minecraft/profiler/PlayerUsageSnooper clientStats b +FD net/minecraft/profiler/PlayerUsageSnooper uniqueID c +FD net/minecraft/profiler/PlayerUsageSnooper serverUrl d +FD net/minecraft/profiler/PlayerUsageSnooper playerStatsCollector e +FD net/minecraft/profiler/PlayerUsageSnooper threadTrigger f +FD net/minecraft/profiler/PlayerUsageSnooper syncLock g +FD net/minecraft/profiler/PlayerUsageSnooper minecraftStartTimeMilis h +FD net/minecraft/profiler/PlayerUsageSnooper isRunning i +FD net/minecraft/profiler/PlayerUsageSnooper selfCounter j +FD net/minecraft/profiler/PlayerUsageSnooper$1 field_76344_a a +FD net/minecraft/util/CombatEntry damageSrc a +FD net/minecraft/util/CombatEntry field_94567_b b +FD net/minecraft/util/CombatEntry damage c +FD net/minecraft/util/CombatEntry health d +FD net/minecraft/util/CombatEntry field_94566_e e +FD net/minecraft/util/CombatEntry fallDistance f +FD net/minecraft/util/CombatTracker combatEntries a +FD net/minecraft/util/CombatTracker fighter b +FD net/minecraft/util/CombatTracker field_94555_c c +FD net/minecraft/util/CombatTracker field_152775_d d +FD net/minecraft/util/CombatTracker field_152776_e e +FD net/minecraft/util/CombatTracker field_94552_d f +FD net/minecraft/util/CombatTracker field_94553_e g +FD net/minecraft/util/CombatTracker field_94551_f h +FD net/minecraft/util/DamageSource inFire a +FD net/minecraft/util/DamageSource lightningBolt b +FD net/minecraft/util/DamageSource onFire c +FD net/minecraft/util/DamageSource lava d +FD net/minecraft/util/DamageSource inWall e +FD net/minecraft/util/DamageSource drown f +FD net/minecraft/util/DamageSource starve g +FD net/minecraft/util/DamageSource cactus h +FD net/minecraft/util/DamageSource fall i +FD net/minecraft/util/DamageSource outOfWorld j +FD net/minecraft/util/DamageSource generic k +FD net/minecraft/util/DamageSource magic l +FD net/minecraft/util/DamageSource wither m +FD net/minecraft/util/DamageSource anvil n +FD net/minecraft/util/DamageSource fallingBlock o +FD net/minecraft/util/DamageSource damageType p +FD net/minecraft/util/DamageSource isUnblockable q +FD net/minecraft/util/DamageSource isDamageAllowedInCreativeMode r +FD net/minecraft/util/DamageSource damageIsAbsolute s +FD net/minecraft/util/DamageSource hungerDamage t +FD net/minecraft/util/DamageSource fireDamage u +FD net/minecraft/util/DamageSource projectile v +FD net/minecraft/util/DamageSource difficultyScaled w +FD net/minecraft/util/DamageSource magicDamage x +FD net/minecraft/util/DamageSource explosion y +FD net/minecraft/util/EntityDamageSource damageSourceEntity q +FD net/minecraft/util/EntityDamageSource isThornsDamage r +FD net/minecraft/util/EntityDamageSourceIndirect indirectEntity r +FD net/minecraft/potion/Potion field_180147_A A +FD net/minecraft/potion/Potion field_180148_B B +FD net/minecraft/potion/Potion field_180149_C C +FD net/minecraft/potion/Potion field_180143_D D +FD net/minecraft/potion/Potion field_180144_E E +FD net/minecraft/potion/Potion field_180145_F F +FD net/minecraft/potion/Potion field_180146_G G +FD net/minecraft/potion/Potion id H +FD net/minecraft/potion/Potion field_180150_I I +FD net/minecraft/potion/Potion attributeModifierMap J +FD net/minecraft/potion/Potion isBadEffect K +FD net/minecraft/potion/Potion liquidColor L +FD net/minecraft/potion/Potion name M +FD net/minecraft/potion/Potion statusIconIndex N +FD net/minecraft/potion/Potion effectiveness O +FD net/minecraft/potion/Potion usable P +FD net/minecraft/potion/Potion potionTypes a +FD net/minecraft/potion/Potion field_180151_b b +FD net/minecraft/potion/Potion moveSpeed c +FD net/minecraft/potion/Potion moveSlowdown d +FD net/minecraft/potion/Potion digSpeed e +FD net/minecraft/potion/Potion digSlowdown f +FD net/minecraft/potion/Potion damageBoost g +FD net/minecraft/potion/Potion heal h +FD net/minecraft/potion/Potion harm i +FD net/minecraft/potion/Potion jump j +FD net/minecraft/potion/Potion confusion k +FD net/minecraft/potion/Potion regeneration l +FD net/minecraft/potion/Potion resistance m +FD net/minecraft/potion/Potion fireResistance n +FD net/minecraft/potion/Potion waterBreathing o +FD net/minecraft/potion/Potion invisibility p +FD net/minecraft/potion/Potion blindness q +FD net/minecraft/potion/Potion nightVision r +FD net/minecraft/potion/Potion hunger s +FD net/minecraft/potion/Potion weakness t +FD net/minecraft/potion/Potion poison u +FD net/minecraft/potion/Potion wither v +FD net/minecraft/potion/Potion healthBoost w +FD net/minecraft/potion/Potion absorption x +FD net/minecraft/potion/Potion saturation y +FD net/minecraft/potion/Potion field_180153_z z +FD net/minecraft/potion/PotionEffect LOGGER a +FD net/minecraft/potion/PotionEffect potionID b +FD net/minecraft/potion/PotionEffect duration c +FD net/minecraft/potion/PotionEffect amplifier d +FD net/minecraft/potion/PotionEffect isSplashPotion e +FD net/minecraft/potion/PotionEffect isAmbient f +FD net/minecraft/potion/PotionEffect isPotionDurationMax g +FD net/minecraft/potion/PotionEffect showParticles h +FD net/minecraft/entity/EntityAgeable growingAge a +FD net/minecraft/entity/EntityAgeable field_175502_b b +FD net/minecraft/entity/EntityAgeable ageWidth bm +FD net/minecraft/entity/EntityAgeable ageHeight bn +FD net/minecraft/entity/EntityAgeable field_175503_c c +FD net/minecraft/entity/Entity prevRotationYaw A +FD net/minecraft/entity/Entity prevRotationPitch B +FD net/minecraft/entity/Entity onGround C +FD net/minecraft/entity/Entity isCollidedHorizontally D +FD net/minecraft/entity/Entity isCollidedVertically E +FD net/minecraft/entity/Entity isCollided F +FD net/minecraft/entity/Entity velocityChanged G +FD net/minecraft/entity/Entity isInWeb H +FD net/minecraft/entity/Entity isDead I +FD net/minecraft/entity/Entity width J +FD net/minecraft/entity/Entity height K +FD net/minecraft/entity/Entity prevDistanceWalkedModified L +FD net/minecraft/entity/Entity distanceWalkedModified M +FD net/minecraft/entity/Entity distanceWalkedOnStepModified N +FD net/minecraft/entity/Entity fallDistance O +FD net/minecraft/entity/Entity lastTickPosX P +FD net/minecraft/entity/Entity lastTickPosY Q +FD net/minecraft/entity/Entity lastTickPosZ R +FD net/minecraft/entity/Entity stepHeight S +FD net/minecraft/entity/Entity noClip T +FD net/minecraft/entity/Entity entityCollisionReduction U +FD net/minecraft/entity/Entity rand V +FD net/minecraft/entity/Entity ticksExisted W +FD net/minecraft/entity/Entity fireResistance X +FD net/minecraft/entity/Entity inWater Y +FD net/minecraft/entity/Entity hurtResistantTime Z +FD net/minecraft/entity/Entity ZERO_AABB a +FD net/minecraft/entity/Entity firstUpdate aa +FD net/minecraft/entity/Entity isImmuneToFire ab +FD net/minecraft/entity/Entity dataWatcher ac +FD net/minecraft/entity/Entity addedToChunk ad +FD net/minecraft/entity/Entity chunkCoordX ae +FD net/minecraft/entity/Entity chunkCoordY af +FD net/minecraft/entity/Entity chunkCoordZ ag +FD net/minecraft/entity/Entity ignoreFrustumCheck ah +FD net/minecraft/entity/Entity isAirBorne ai +FD net/minecraft/entity/Entity timeUntilPortal aj +FD net/minecraft/entity/Entity inPortal ak +FD net/minecraft/entity/Entity portalCounter al +FD net/minecraft/entity/Entity dimension am +FD net/minecraft/entity/Entity lastPortalPos an +FD net/minecraft/entity/Entity lastPortalVec ao +FD net/minecraft/entity/Entity teleportDirection ap +FD net/minecraft/entity/Entity entityUniqueID aq +FD net/minecraft/entity/Entity entityRiderPitchDelta ar +FD net/minecraft/entity/Entity entityRiderYawDelta as +FD net/minecraft/entity/Entity invulnerable at +FD net/minecraft/entity/Entity cmdResultStats au +FD net/minecraft/entity/Entity nextEntityID b +FD net/minecraft/entity/Entity serverPosX bW +FD net/minecraft/entity/Entity serverPosY bX +FD net/minecraft/entity/Entity serverPosZ bY +FD net/minecraft/entity/Entity entityId c +FD net/minecraft/entity/Entity boundingBox f +FD net/minecraft/entity/Entity isOutsideBorder g +FD net/minecraft/entity/Entity nextStepDistance h +FD net/minecraft/entity/Entity fire i +FD net/minecraft/entity/Entity renderDistanceWeight j +FD net/minecraft/entity/Entity preventEntitySpawning k +FD net/minecraft/entity/Entity riddenByEntity l +FD net/minecraft/entity/Entity ridingEntity m +FD net/minecraft/entity/Entity forceSpawn n +FD net/minecraft/entity/Entity worldObj o +FD net/minecraft/entity/Entity prevPosX p +FD net/minecraft/entity/Entity prevPosY q +FD net/minecraft/entity/Entity prevPosZ r +FD net/minecraft/entity/Entity posX s +FD net/minecraft/entity/Entity posY t +FD net/minecraft/entity/Entity posZ u +FD net/minecraft/entity/Entity motionX v +FD net/minecraft/entity/Entity motionY w +FD net/minecraft/entity/Entity motionZ x +FD net/minecraft/entity/Entity rotationYaw y +FD net/minecraft/entity/Entity rotationPitch z +FD net/minecraft/entity/Entity$1 field_85155_a a +FD net/minecraft/entity/Entity$2 field_96564_a a +FD net/minecraft/entity/Entity$3 field_180119_a a +FD net/minecraft/entity/Entity$4 field_180117_a a +FD net/minecraft/entity/EntityList entityEggs a +FD net/minecraft/entity/EntityList logger b +FD net/minecraft/entity/EntityList stringToClassMapping c +FD net/minecraft/entity/EntityList classToStringMapping d +FD net/minecraft/entity/EntityList idToClassMapping e +FD net/minecraft/entity/EntityList classToIDMapping f +FD net/minecraft/entity/EntityList stringToIDMapping g +FD net/minecraft/entity/EntityList$EntityEggInfo spawnedID a +FD net/minecraft/entity/EntityList$EntityEggInfo primaryColor b +FD net/minecraft/entity/EntityList$EntityEggInfo secondaryColor c +FD net/minecraft/entity/EntityList$EntityEggInfo field_151512_d d +FD net/minecraft/entity/EntityList$EntityEggInfo field_151513_e e +FD net/minecraft/util/EntitySelectors selectAnything a +FD net/minecraft/util/EntitySelectors IS_STANDALONE b +FD net/minecraft/util/EntitySelectors selectInventories c +FD net/minecraft/util/EntitySelectors NOT_SPECTATING d +FD net/minecraft/util/EntitySelectors$ArmoredMob armor a +FD net/minecraft/entity/item/EntityXPOrb xpColor a +FD net/minecraft/entity/item/EntityXPOrb xpOrbAge b +FD net/minecraft/entity/item/EntityXPOrb delayBeforeCanPickup c +FD net/minecraft/entity/item/EntityXPOrb xpOrbHealth d +FD net/minecraft/entity/item/EntityXPOrb xpValue e +FD net/minecraft/entity/item/EntityXPOrb closestPlayer f +FD net/minecraft/entity/item/EntityXPOrb xpTargetColor g +FD net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifierUUID a +FD net/minecraft/entity/EntityLivingBase prevLimbSwingAmount aA +FD net/minecraft/entity/EntityLivingBase limbSwingAmount aB +FD net/minecraft/entity/EntityLivingBase limbSwing aC +FD net/minecraft/entity/EntityLivingBase maxHurtResistantTime aD +FD net/minecraft/entity/EntityLivingBase prevCameraPitch aE +FD net/minecraft/entity/EntityLivingBase cameraPitch aF +FD net/minecraft/entity/EntityLivingBase randomUnused2 aG +FD net/minecraft/entity/EntityLivingBase randomUnused1 aH +FD net/minecraft/entity/EntityLivingBase renderYawOffset aI +FD net/minecraft/entity/EntityLivingBase prevRenderYawOffset aJ +FD net/minecraft/entity/EntityLivingBase rotationYawHead aK +FD net/minecraft/entity/EntityLivingBase prevRotationYawHead aL +FD net/minecraft/entity/EntityLivingBase jumpMovementFactor aM +FD net/minecraft/entity/EntityLivingBase attackingPlayer aN +FD net/minecraft/entity/EntityLivingBase recentlyHit aO +FD net/minecraft/entity/EntityLivingBase dead aP +FD net/minecraft/entity/EntityLivingBase entityAge aQ +FD net/minecraft/entity/EntityLivingBase prevOnGroundSpeedFactor aR +FD net/minecraft/entity/EntityLivingBase onGroundSpeedFactor aS +FD net/minecraft/entity/EntityLivingBase movedDistance aT +FD net/minecraft/entity/EntityLivingBase prevMovedDistance aU +FD net/minecraft/entity/EntityLivingBase unused180 aV +FD net/minecraft/entity/EntityLivingBase scoreValue aW +FD net/minecraft/entity/EntityLivingBase lastDamage aX +FD net/minecraft/entity/EntityLivingBase isJumping aY +FD net/minecraft/entity/EntityLivingBase moveStrafing aZ +FD net/minecraft/entity/EntityLivingBase isSwingInProgress ar +FD net/minecraft/entity/EntityLivingBase swingProgressInt as +FD net/minecraft/entity/EntityLivingBase arrowHitTimer at +FD net/minecraft/entity/EntityLivingBase hurtTime au +FD net/minecraft/entity/EntityLivingBase maxHurtTime av +FD net/minecraft/entity/EntityLivingBase attackedAtYaw aw +FD net/minecraft/entity/EntityLivingBase deathTime ax +FD net/minecraft/entity/EntityLivingBase prevSwingProgress ay +FD net/minecraft/entity/EntityLivingBase swingProgress az +FD net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifier b +FD net/minecraft/entity/EntityLivingBase moveForward ba +FD net/minecraft/entity/EntityLivingBase randomYawVelocity bb +FD net/minecraft/entity/EntityLivingBase newPosRotationIncrements bc +FD net/minecraft/entity/EntityLivingBase newPosX bd +FD net/minecraft/entity/EntityLivingBase newPosY be +FD net/minecraft/entity/EntityLivingBase newPosZ bf +FD net/minecraft/entity/EntityLivingBase newRotationYaw bg +FD net/minecraft/entity/EntityLivingBase newRotationPitch bh +FD net/minecraft/entity/EntityLivingBase entityLivingToAttack bi +FD net/minecraft/entity/EntityLivingBase revengeTimer bj +FD net/minecraft/entity/EntityLivingBase lastAttacker bk +FD net/minecraft/entity/EntityLivingBase lastAttackerTime bl +FD net/minecraft/entity/EntityLivingBase landMovementFactor bm +FD net/minecraft/entity/EntityLivingBase jumpTicks bn +FD net/minecraft/entity/EntityLivingBase absorptionAmount bo +FD net/minecraft/entity/EntityLivingBase attributeMap c +FD net/minecraft/entity/EntityLivingBase _combatTracker f +FD net/minecraft/entity/EntityLivingBase activePotionsMap g +FD net/minecraft/entity/EntityLivingBase previousEquipment h +FD net/minecraft/entity/EntityLivingBase potionsNeedUpdate i +FD net/minecraft/entity/EntityLivingBase$1 field_181170_a a +FD net/minecraft/entity/EntityLiving lookHelper a +FD net/minecraft/entity/EntityLiving livingSoundTime a_ +FD net/minecraft/entity/EntityLiving bodyHelper b +FD net/minecraft/entity/EntityLiving experienceValue b_ +FD net/minecraft/entity/EntityLiving targetTasks bi +FD net/minecraft/entity/EntityLiving equipmentDropChances bj +FD net/minecraft/entity/EntityLiving senses bk +FD net/minecraft/entity/EntityLiving equipment bl +FD net/minecraft/entity/EntityLiving canPickUpLoot bm +FD net/minecraft/entity/EntityLiving persistenceRequired bn +FD net/minecraft/entity/EntityLiving isLeashed bo +FD net/minecraft/entity/EntityLiving leashedToEntity bp +FD net/minecraft/entity/EntityLiving leashNBTTag bq +FD net/minecraft/entity/EntityLiving attackTarget c +FD net/minecraft/entity/EntityLiving moveHelper f +FD net/minecraft/entity/EntityLiving jumpHelper g +FD net/minecraft/entity/EntityLiving navigator h +FD net/minecraft/entity/EntityLiving tasks i +FD net/minecraft/entity/EntityLiving$SpawnPlacementType ON_GROUND a +FD net/minecraft/entity/EntityLiving$SpawnPlacementType IN_AIR b +FD net/minecraft/entity/EntityLiving$SpawnPlacementType IN_WATER c +FD net/minecraft/entity/EntityLiving$SpawnPlacementType $VALUES d +FD net/minecraft/entity/EnumCreatureType MONSTER a +FD net/minecraft/entity/EnumCreatureType CREATURE b +FD net/minecraft/entity/EnumCreatureType AMBIENT c +FD net/minecraft/entity/EnumCreatureType WATER_CREATURE d +FD net/minecraft/entity/EnumCreatureType creatureClass e +FD net/minecraft/entity/EnumCreatureType maxNumberOfCreature f +FD net/minecraft/entity/EnumCreatureType creatureMaterial g +FD net/minecraft/entity/EnumCreatureType isPeacefulCreature h +FD net/minecraft/entity/EnumCreatureType isAnimal i +FD net/minecraft/entity/EnumCreatureType $VALUES j +FD net/minecraft/entity/EntitySpawnPlacementRegistry ENTITY_PLACEMENTS a +FD net/minecraft/entity/EnumCreatureAttribute UNDEFINED a +FD net/minecraft/entity/EnumCreatureAttribute UNDEAD b +FD net/minecraft/entity/EnumCreatureAttribute ARTHROPOD c +FD net/minecraft/entity/EnumCreatureAttribute $VALUES d +FD net/minecraft/entity/EntityCreature homePosition a +FD net/minecraft/entity/EntityCreature maximumHomeDistance b +FD net/minecraft/entity/EntityCreature FLEEING_SPEED_MODIFIER_UUID bk +FD net/minecraft/entity/EntityCreature FLEEING_SPEED_MODIFIER bl +FD net/minecraft/entity/EntityCreature isMovementAITaskSet bm +FD net/minecraft/entity/EntityCreature aiBase c +FD net/minecraft/entity/DataWatcher owner a +FD net/minecraft/entity/DataWatcher isBlank b +FD net/minecraft/entity/DataWatcher dataTypes c +FD net/minecraft/entity/DataWatcher watchedObjects d +FD net/minecraft/entity/DataWatcher objectChanged e +FD net/minecraft/entity/DataWatcher lock f +FD net/minecraft/entity/DataWatcher$WatchableObject objectType a +FD net/minecraft/entity/DataWatcher$WatchableObject dataValueId b +FD net/minecraft/entity/DataWatcher$WatchableObject watchedObject c +FD net/minecraft/entity/DataWatcher$WatchableObject watched d +FD net/minecraft/entity/passive/EntityTameable aiSit bm +FD net/minecraft/entity/ai/attributes/AttributeModifier amount a +FD net/minecraft/entity/ai/attributes/AttributeModifier operation b +FD net/minecraft/entity/ai/attributes/AttributeModifier name c +FD net/minecraft/entity/ai/attributes/AttributeModifier id d +FD net/minecraft/entity/ai/attributes/AttributeModifier isSaved e +FD net/minecraft/entity/ai/attributes/BaseAttribute field_180373_a a +FD net/minecraft/entity/ai/attributes/BaseAttribute unlocalizedName b +FD net/minecraft/entity/ai/attributes/BaseAttribute defaultValue c +FD net/minecraft/entity/ai/attributes/BaseAttribute shouldWatch d +FD net/minecraft/entity/ai/attributes/BaseAttributeMap attributes a +FD net/minecraft/entity/ai/attributes/BaseAttributeMap attributesByName b +FD net/minecraft/entity/ai/attributes/BaseAttributeMap field_180377_c c +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance attributeMap a +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance genericAttribute b +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByOperation c +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByName d +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByUUID e +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance baseValue f +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance needsUpdate g +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance cachedValue h +FD net/minecraft/entity/ai/attributes/ServersideAttributeMap descriptionToAttributeInstanceMap d +FD net/minecraft/entity/ai/attributes/ServersideAttributeMap attributeInstanceSet e +FD net/minecraft/entity/ai/attributes/RangedAttribute minimumValue a +FD net/minecraft/entity/ai/attributes/RangedAttribute maximumValue b +FD net/minecraft/entity/ai/attributes/RangedAttribute description c +FD net/minecraft/entity/EntityBodyHelper theLiving a +FD net/minecraft/entity/EntityBodyHelper rotationTickCounter b +FD net/minecraft/entity/EntityBodyHelper prevRenderYawHead c +FD net/minecraft/entity/ai/EntityJumpHelper isJumping a +FD net/minecraft/entity/ai/EntityJumpHelper entity b +FD net/minecraft/entity/ai/EntityLookHelper entity a +FD net/minecraft/entity/ai/EntityLookHelper deltaLookYaw b +FD net/minecraft/entity/ai/EntityLookHelper deltaLookPitch c +FD net/minecraft/entity/ai/EntityLookHelper isLooking d +FD net/minecraft/entity/ai/EntityLookHelper posX e +FD net/minecraft/entity/ai/EntityLookHelper posY f +FD net/minecraft/entity/ai/EntityLookHelper posZ g +FD net/minecraft/entity/ai/EntityMoveHelper entity a +FD net/minecraft/entity/ai/EntityMoveHelper posX b +FD net/minecraft/entity/ai/EntityMoveHelper posY c +FD net/minecraft/entity/ai/EntityMoveHelper posZ d +FD net/minecraft/entity/ai/EntityMoveHelper speed e +FD net/minecraft/entity/ai/EntityMoveHelper update f +FD net/minecraft/entity/ai/EntityAIAvoidEntity theEntity a +FD net/minecraft/entity/ai/EntityAIAvoidEntity closestLivingEntity b +FD net/minecraft/entity/ai/EntityAIAvoidEntity canBeSeenSelector c +FD net/minecraft/entity/ai/EntityAIAvoidEntity farSpeed d +FD net/minecraft/entity/ai/EntityAIAvoidEntity nearSpeed e +FD net/minecraft/entity/ai/EntityAIAvoidEntity avoidDistance f +FD net/minecraft/entity/ai/EntityAIAvoidEntity entityPathEntity g +FD net/minecraft/entity/ai/EntityAIAvoidEntity entityPathNavigate h +FD net/minecraft/entity/ai/EntityAIAvoidEntity classToAvoid i +FD net/minecraft/entity/ai/EntityAIAvoidEntity avoidTargetSelector j +FD net/minecraft/entity/ai/EntityAIAvoidEntity$1 field_98219_c a +FD net/minecraft/entity/ai/EntityAIBeg theWolf a +FD net/minecraft/entity/ai/EntityAIBeg thePlayer b +FD net/minecraft/entity/ai/EntityAIBeg worldObject c +FD net/minecraft/entity/ai/EntityAIBeg minPlayerDistance d +FD net/minecraft/entity/ai/EntityAIBeg timeoutCounter e +FD net/minecraft/entity/ai/EntityAIBreakDoor breakingTime g +FD net/minecraft/entity/ai/EntityAIBreakDoor previousBreakProgress h +FD net/minecraft/entity/ai/EntityAIMate theWorld a +FD net/minecraft/entity/ai/EntityAIMate spawnBabyDelay b +FD net/minecraft/entity/ai/EntityAIMate moveSpeed c +FD net/minecraft/entity/ai/EntityAIMate theAnimal d +FD net/minecraft/entity/ai/EntityAIMate targetMate e +FD net/minecraft/entity/ai/EntityAIControlledByPlayer thisEntity a +FD net/minecraft/entity/ai/EntityAIControlledByPlayer maxSpeed b +FD net/minecraft/entity/ai/EntityAIControlledByPlayer currentSpeed c +FD net/minecraft/entity/ai/EntityAIControlledByPlayer speedBoosted d +FD net/minecraft/entity/ai/EntityAIControlledByPlayer speedBoostTime e +FD net/minecraft/entity/ai/EntityAIControlledByPlayer maxSpeedBoostTime f +FD net/minecraft/entity/ai/EntityAIDoorInteract theEntity a +FD net/minecraft/entity/ai/EntityAIDoorInteract doorPosition b +FD net/minecraft/entity/ai/EntityAIDoorInteract doorBlock c +FD net/minecraft/entity/ai/EntityAIDoorInteract hasStoppedDoorInteraction d +FD net/minecraft/entity/ai/EntityAIDoorInteract entityPositionX e +FD net/minecraft/entity/ai/EntityAIDoorInteract entityPositionZ f +FD net/minecraft/entity/ai/EntityAIEatGrass eatingGrassTimer a +FD net/minecraft/entity/ai/EntityAIEatGrass field_179505_b b +FD net/minecraft/entity/ai/EntityAIEatGrass grassEaterEntity c +FD net/minecraft/entity/ai/EntityAIEatGrass entityWorld d +FD net/minecraft/entity/ai/EntityAIFleeSun theCreature a +FD net/minecraft/entity/ai/EntityAIFleeSun shelterX b +FD net/minecraft/entity/ai/EntityAIFleeSun shelterY c +FD net/minecraft/entity/ai/EntityAIFleeSun shelterZ d +FD net/minecraft/entity/ai/EntityAIFleeSun movementSpeed e +FD net/minecraft/entity/ai/EntityAIFleeSun theWorld f +FD net/minecraft/entity/ai/EntityAISwimming theEntity a +FD net/minecraft/entity/ai/EntityAIFollowOwner theWorld a +FD net/minecraft/entity/ai/EntityAIFollowOwner maxDist b +FD net/minecraft/entity/ai/EntityAIFollowOwner minDist c +FD net/minecraft/entity/ai/EntityAIFollowOwner thePet d +FD net/minecraft/entity/ai/EntityAIFollowOwner theOwner e +FD net/minecraft/entity/ai/EntityAIFollowOwner followSpeed f +FD net/minecraft/entity/ai/EntityAIFollowOwner petPathfinder g +FD net/minecraft/entity/ai/EntityAIFollowOwner field_75343_h h +FD net/minecraft/entity/ai/EntityAIFollowOwner field_75344_i i +FD net/minecraft/entity/ai/EntityAIFollowParent childAnimal a +FD net/minecraft/entity/ai/EntityAIFollowParent parentAnimal b +FD net/minecraft/entity/ai/EntityAIFollowParent moveSpeed c +FD net/minecraft/entity/ai/EntityAIFollowParent delayCounter d +FD net/minecraft/entity/ai/EntityAIBase mutexBits a +FD net/minecraft/entity/ai/EntityAITasks logger a +FD net/minecraft/entity/ai/EntityAITasks taskEntries b +FD net/minecraft/entity/ai/EntityAITasks executingTaskEntries c +FD net/minecraft/entity/ai/EntityAITasks theProfiler d +FD net/minecraft/entity/ai/EntityAITasks tickCount e +FD net/minecraft/entity/ai/EntityAITasks tickRate f +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry action a +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry priority b +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry field_75732_c c +FD net/minecraft/entity/ai/EntityAIHarvestFarmland theVillager c +FD net/minecraft/entity/ai/EntityAIHarvestFarmland hasFarmItem d +FD net/minecraft/entity/ai/EntityAIHarvestFarmland field_179503_e e +FD net/minecraft/entity/ai/EntityAIHarvestFarmland field_179501_f f +FD net/minecraft/entity/ai/EntityAILeapAtTarget leaper a +FD net/minecraft/entity/ai/EntityAILeapAtTarget leapTarget b +FD net/minecraft/entity/ai/EntityAILeapAtTarget leapMotionY c +FD net/minecraft/entity/ai/EntityAIWatchClosest theWatcher a +FD net/minecraft/entity/ai/EntityAIWatchClosest closestEntity b +FD net/minecraft/entity/ai/EntityAIWatchClosest maxDistanceForPlayer c +FD net/minecraft/entity/ai/EntityAIWatchClosest watchedClass d +FD net/minecraft/entity/ai/EntityAIWatchClosest lookTime e +FD net/minecraft/entity/ai/EntityAIWatchClosest chance f +FD net/minecraft/entity/ai/EntityAILookAtTradePlayer theMerchant e +FD net/minecraft/entity/ai/EntityAIVillagerMate villageObj a +FD net/minecraft/entity/ai/EntityAIVillagerMate villagerObj b +FD net/minecraft/entity/ai/EntityAIVillagerMate mate c +FD net/minecraft/entity/ai/EntityAIVillagerMate worldObj d +FD net/minecraft/entity/ai/EntityAIVillagerMate matingTimeout e +FD net/minecraft/entity/ai/EntityAIAttackOnCollide worldObj a +FD net/minecraft/entity/ai/EntityAIAttackOnCollide attacker b +FD net/minecraft/entity/ai/EntityAIAttackOnCollide attackTick c +FD net/minecraft/entity/ai/EntityAIAttackOnCollide speedTowardsTarget d +FD net/minecraft/entity/ai/EntityAIAttackOnCollide longMemory e +FD net/minecraft/entity/ai/EntityAIAttackOnCollide entityPathEntity f +FD net/minecraft/entity/ai/EntityAIAttackOnCollide classTarget g +FD net/minecraft/entity/ai/EntityAIAttackOnCollide delayCounter h +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetX i +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetY j +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetZ k +FD net/minecraft/entity/ai/EntityAIMoveIndoors entityObj a +FD net/minecraft/entity/ai/EntityAIMoveIndoors doorInfo b +FD net/minecraft/entity/ai/EntityAIMoveIndoors insidePosX c +FD net/minecraft/entity/ai/EntityAIMoveIndoors insidePosZ d +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage theEntity a +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage movementSpeed b +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage entityPathNavigate c +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage doorInfo d +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage isNocturnal e +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage doorList f +FD net/minecraft/entity/ai/EntityAIMoveToBlock runDelay a +FD net/minecraft/entity/ai/EntityAIMoveToBlock destinationBlock b +FD net/minecraft/entity/ai/EntityAIMoveToBlock theEntity c +FD net/minecraft/entity/ai/EntityAIMoveToBlock movementSpeed d +FD net/minecraft/entity/ai/EntityAIMoveToBlock timeoutCounter e +FD net/minecraft/entity/ai/EntityAIMoveToBlock field_179490_f f +FD net/minecraft/entity/ai/EntityAIMoveToBlock isAboveDestination g +FD net/minecraft/entity/ai/EntityAIMoveToBlock searchLength h +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction theEntity a +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosX b +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosY c +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosZ d +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movementSpeed e +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget theEntity a +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget targetEntity b +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosX c +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosY d +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosZ e +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget speed f +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget maxTargetDistance g +FD net/minecraft/entity/ai/EntityAIOcelotAttack theWorld a +FD net/minecraft/entity/ai/EntityAIOcelotAttack theEntity b +FD net/minecraft/entity/ai/EntityAIOcelotAttack theVictim c +FD net/minecraft/entity/ai/EntityAIOcelotAttack attackCountdown d +FD net/minecraft/entity/ai/EntityAIOcelotSit ocelot c +FD net/minecraft/entity/ai/EntityAILookAtVillager theGolem a +FD net/minecraft/entity/ai/EntityAILookAtVillager theVillager b +FD net/minecraft/entity/ai/EntityAILookAtVillager lookTime c +FD net/minecraft/entity/ai/EntityAIOpenDoor closeDoor g +FD net/minecraft/entity/ai/EntityAIOpenDoor closeDoorTemporisation h +FD net/minecraft/entity/ai/EntityAIPanic speed a +FD net/minecraft/entity/ai/EntityAIPanic theEntityCreature b +FD net/minecraft/entity/ai/EntityAIPanic randPosX c +FD net/minecraft/entity/ai/EntityAIPanic randPosY d +FD net/minecraft/entity/ai/EntityAIPanic randPosZ e +FD net/minecraft/entity/ai/EntityAIPlay villagerObj a +FD net/minecraft/entity/ai/EntityAIPlay targetVillager b +FD net/minecraft/entity/ai/EntityAIPlay speed c +FD net/minecraft/entity/ai/EntityAIPlay playTime d +FD net/minecraft/entity/ai/EntityAILookIdle idleEntity a +FD net/minecraft/entity/ai/EntityAILookIdle lookX b +FD net/minecraft/entity/ai/EntityAILookIdle lookZ c +FD net/minecraft/entity/ai/EntityAILookIdle idleTime d +FD net/minecraft/entity/ai/EntityAIWander entity a +FD net/minecraft/entity/ai/EntityAIWander xPosition b +FD net/minecraft/entity/ai/EntityAIWander yPosition c +FD net/minecraft/entity/ai/EntityAIWander zPosition d +FD net/minecraft/entity/ai/EntityAIWander speed e +FD net/minecraft/entity/ai/EntityAIWander executionChance f +FD net/minecraft/entity/ai/EntityAIWander mustUpdate g +FD net/minecraft/entity/ai/EntityAIArrowAttack entityHost a +FD net/minecraft/entity/ai/EntityAIArrowAttack rangedAttackEntityHost b +FD net/minecraft/entity/ai/EntityAIArrowAttack attackTarget c +FD net/minecraft/entity/ai/EntityAIArrowAttack rangedAttackTime d +FD net/minecraft/entity/ai/EntityAIArrowAttack entityMoveSpeed e +FD net/minecraft/entity/ai/EntityAIArrowAttack field_75318_f f +FD net/minecraft/entity/ai/EntityAIArrowAttack field_96561_g g +FD net/minecraft/entity/ai/EntityAIArrowAttack maxRangedAttackTime h +FD net/minecraft/entity/ai/EntityAIArrowAttack field_96562_i i +FD net/minecraft/entity/ai/EntityAIArrowAttack maxAttackDistance j +FD net/minecraft/entity/ai/EntityAIRestrictOpenDoor entityObj a +FD net/minecraft/entity/ai/EntityAIRestrictOpenDoor frontDoor b +FD net/minecraft/entity/ai/EntityAIRestrictSun theEntity a +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy horseHost a +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy speed b +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetX c +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetY d +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetZ e +FD net/minecraft/entity/ai/EntityAISit theEntity a +FD net/minecraft/entity/ai/EntityAISit isSitting b +FD net/minecraft/entity/ai/EntityAICreeperSwell swellingCreeper a +FD net/minecraft/entity/ai/EntityAICreeperSwell creeperAttackTarget b +FD net/minecraft/entity/ai/EntityAIFollowGolem theVillager a +FD net/minecraft/entity/ai/EntityAIFollowGolem theGolem b +FD net/minecraft/entity/ai/EntityAIFollowGolem takeGolemRoseTick c +FD net/minecraft/entity/ai/EntityAIFollowGolem tookGolemRose d +FD net/minecraft/entity/ai/EntityAITempt temptedEntity a +FD net/minecraft/entity/ai/EntityAITempt speed b +FD net/minecraft/entity/ai/EntityAITempt targetX c +FD net/minecraft/entity/ai/EntityAITempt targetY d +FD net/minecraft/entity/ai/EntityAITempt targetZ e +FD net/minecraft/entity/ai/EntityAITempt pitch f +FD net/minecraft/entity/ai/EntityAITempt yaw g +FD net/minecraft/entity/ai/EntityAITempt temptingPlayer h +FD net/minecraft/entity/ai/EntityAITempt delayTemptCounter i +FD net/minecraft/entity/ai/EntityAITempt isRunning j +FD net/minecraft/entity/ai/EntityAITempt temptItem k +FD net/minecraft/entity/ai/EntityAITempt scaredByPlayerMovement l +FD net/minecraft/entity/ai/EntityAITempt avoidWater m +FD net/minecraft/entity/ai/EntityAITradePlayer villager a +FD net/minecraft/entity/ai/EntityAIVillagerInteract interactionDelay e +FD net/minecraft/entity/ai/EntityAIVillagerInteract villager f +FD net/minecraft/entity/ai/EntityAIDefendVillage irongolem a +FD net/minecraft/entity/ai/EntityAIDefendVillage villageAgressorTarget b +FD net/minecraft/entity/ai/EntityAIHurtByTarget entityCallsForHelp a +FD net/minecraft/entity/ai/EntityAIHurtByTarget revengeTimerOld b +FD net/minecraft/entity/ai/EntityAIHurtByTarget targetClasses c +FD net/minecraft/entity/ai/EntityAIFindEntityNearest LOGGER a +FD net/minecraft/entity/ai/EntityAIFindEntityNearest mob b +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179443_c c +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179440_d d +FD net/minecraft/entity/ai/EntityAIFindEntityNearest target e +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179439_f f +FD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 field_179877_a a +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer LOGGER a +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer entityLiving b +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer predicate c +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer sorter d +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer entityTarget e +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 field_179881_a a +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetClass a +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget theNearestAttackableTargetSorter b +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetEntitySelector c +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetEntity d +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetChance g +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 field_111103_c a +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 field_111102_d b +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter theEntity a +FD net/minecraft/entity/ai/EntityAITargetNonTamed theTameable g +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget theDefendingTameable a +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget theOwnerAttacker b +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget field_142051_e c +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget theEntityTameable a +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget theTarget b +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget field_142050_e c +FD net/minecraft/entity/ai/EntityAITarget nearbyOnly a +FD net/minecraft/entity/ai/EntityAITarget targetSearchStatus b +FD net/minecraft/entity/ai/EntityAITarget targetSearchDelay c +FD net/minecraft/entity/ai/EntityAITarget targetUnseenTicks d +FD net/minecraft/entity/ai/EntityAITarget taskOwner e +FD net/minecraft/entity/ai/EntityAITarget shouldCheckSight f +FD net/minecraft/pathfinding/PathNavigateGround nodeProcessor a +FD net/minecraft/pathfinding/PathNavigateGround shouldAvoidSun f +FD net/minecraft/pathfinding/PathNavigate pathSearchRange a +FD net/minecraft/pathfinding/PathNavigate theEntity b +FD net/minecraft/pathfinding/PathNavigate worldObj c +FD net/minecraft/pathfinding/PathNavigate currentPath d +FD net/minecraft/pathfinding/PathNavigate speed e +FD net/minecraft/pathfinding/PathNavigate totalTicks f +FD net/minecraft/pathfinding/PathNavigate ticksAtLastPos g +FD net/minecraft/pathfinding/PathNavigate lastPosCheck h +FD net/minecraft/pathfinding/PathNavigate heightRequirement i +FD net/minecraft/pathfinding/PathNavigate pathFinder j +FD net/minecraft/pathfinding/PathNavigateClimber targetPosition f +FD net/minecraft/entity/ai/EntitySenses entityObj a +FD net/minecraft/entity/ai/EntitySenses seenEntities b +FD net/minecraft/entity/ai/EntitySenses unseenEntities c +FD net/minecraft/entity/ai/RandomPositionGenerator staticVector a +FD net/minecraft/village/VillageDoorInfo doorBlockPos a +FD net/minecraft/village/VillageDoorInfo insideBlock b +FD net/minecraft/village/VillageDoorInfo insideDirection c +FD net/minecraft/village/VillageDoorInfo lastActivityTimestamp d +FD net/minecraft/village/VillageDoorInfo isDetachedFromVillageFlag e +FD net/minecraft/village/VillageDoorInfo doorOpeningRestrictionCounter f +FD net/minecraft/village/Village worldObj a +FD net/minecraft/village/Village villageDoorInfoList b +FD net/minecraft/village/Village centerHelper c +FD net/minecraft/village/Village center d +FD net/minecraft/village/Village villageRadius e +FD net/minecraft/village/Village lastAddDoorTimestamp f +FD net/minecraft/village/Village tickCounter g +FD net/minecraft/village/Village numVillagers h +FD net/minecraft/village/Village noBreedTicks i +FD net/minecraft/village/Village playerReputation j +FD net/minecraft/village/Village villageAgressors k +FD net/minecraft/village/Village numIronGolems l +FD net/minecraft/village/Village$VillageAggressor agressor a +FD net/minecraft/village/Village$VillageAggressor agressionTime b +FD net/minecraft/village/Village$VillageAggressor field_75591_c c +FD net/minecraft/village/VillageSiege worldObj a +FD net/minecraft/village/VillageSiege field_75535_b b +FD net/minecraft/village/VillageSiege field_75536_c c +FD net/minecraft/village/VillageSiege field_75533_d d +FD net/minecraft/village/VillageSiege field_75534_e e +FD net/minecraft/village/VillageSiege theVillage f +FD net/minecraft/village/VillageSiege field_75532_g g +FD net/minecraft/village/VillageSiege field_75538_h h +FD net/minecraft/village/VillageSiege field_75539_i i +FD net/minecraft/village/VillageCollection worldObj b +FD net/minecraft/village/VillageCollection villagerPositionsList c +FD net/minecraft/village/VillageCollection newDoors d +FD net/minecraft/village/VillageCollection villageList e +FD net/minecraft/village/VillageCollection tickCounter f +FD net/minecraft/entity/passive/EntityBat spawnPosition a +FD net/minecraft/entity/passive/EntityAnimal inLove bm +FD net/minecraft/entity/passive/EntityAnimal spawnableBlock bn +FD net/minecraft/entity/passive/EntityAnimal playerInLove bo +FD net/minecraft/entity/passive/EntityChicken wingRotation bm +FD net/minecraft/entity/passive/EntityChicken destPos bo +FD net/minecraft/entity/passive/EntityChicken field_70884_g bp +FD net/minecraft/entity/passive/EntityChicken field_70888_h bq +FD net/minecraft/entity/passive/EntityChicken wingRotDelta br +FD net/minecraft/entity/passive/EntityChicken timeUntilNextEgg bs +FD net/minecraft/entity/passive/EntityChicken chickenJockey bt +FD net/minecraft/entity/passive/EntityHorse HORSE_MARKING_TEXTURES_ABBR bA +FD net/minecraft/entity/passive/EntityHorse eatingHaystackCounter bB +FD net/minecraft/entity/passive/EntityHorse openMouthCounter bC +FD net/minecraft/entity/passive/EntityHorse jumpRearingCounter bD +FD net/minecraft/entity/passive/EntityHorse horseChest bE +FD net/minecraft/entity/passive/EntityHorse hasReproduced bF +FD net/minecraft/entity/passive/EntityHorse field_110294_bI bG +FD net/minecraft/entity/passive/EntityHorse headLean bH +FD net/minecraft/entity/passive/EntityHorse prevHeadLean bI +FD net/minecraft/entity/passive/EntityHorse rearingAmount bJ +FD net/minecraft/entity/passive/EntityHorse prevRearingAmount bK +FD net/minecraft/entity/passive/EntityHorse mouthOpenness bL +FD net/minecraft/entity/passive/EntityHorse prevMouthOpenness bM +FD net/minecraft/entity/passive/EntityHorse gallopTime bN +FD net/minecraft/entity/passive/EntityHorse texturePrefix bO +FD net/minecraft/entity/passive/EntityHorse horseTexturesArray bP +FD net/minecraft/entity/passive/EntityHorse field_175508_bO bQ +FD net/minecraft/entity/passive/EntityHorse field_110278_bp bm +FD net/minecraft/entity/passive/EntityHorse field_110279_bq bo +FD net/minecraft/entity/passive/EntityHorse horseJumping bp +FD net/minecraft/entity/passive/EntityHorse temper bq +FD net/minecraft/entity/passive/EntityHorse jumpPower br +FD net/minecraft/entity/passive/EntityHorse horseBreedingSelector bs +FD net/minecraft/entity/passive/EntityHorse horseJumpStrength bt +FD net/minecraft/entity/passive/EntityHorse horseArmorTextures bu +FD net/minecraft/entity/passive/EntityHorse HORSE_ARMOR_TEXTURES_ABBR bv +FD net/minecraft/entity/passive/EntityHorse armorValues bw +FD net/minecraft/entity/passive/EntityHorse horseTextures bx +FD net/minecraft/entity/passive/EntityHorse HORSE_TEXTURES_ABBR by +FD net/minecraft/entity/passive/EntityHorse horseMarkingTextures bz +FD net/minecraft/entity/passive/EntityHorse$GroupData horseType a +FD net/minecraft/entity/passive/EntityHorse$GroupData horseVariant b +FD net/minecraft/entity/passive/EntityOcelot avoidEntity bo +FD net/minecraft/entity/passive/EntityOcelot aiTempt bp +FD net/minecraft/entity/passive/EntityPig aiControlledByPlayer bm +FD net/minecraft/entity/passive/EntityRabbit aiAvoidWolves bm +FD net/minecraft/entity/passive/EntityRabbit field_175540_bm bo +FD net/minecraft/entity/passive/EntityRabbit field_175535_bn bp +FD net/minecraft/entity/passive/EntityRabbit field_175536_bo bq +FD net/minecraft/entity/passive/EntityRabbit field_175537_bp br +FD net/minecraft/entity/passive/EntityRabbit currentMoveTypeDuration bs +FD net/minecraft/entity/passive/EntityRabbit moveType bt +FD net/minecraft/entity/passive/EntityRabbit carrotTicks bu +FD net/minecraft/entity/passive/EntityRabbit field_175543_bt bv +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType NONE a +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType HOP b +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType STEP c +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType SPRINT d +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType ATTACK e +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType speed f +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType field_180077_g g +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType duration h +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType field_180085_i i +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType $VALUES j +FD net/minecraft/entity/passive/EntityRabbit$AIAvoidEntity entityInstance c +FD net/minecraft/entity/passive/EntityRabbit$RabbitTypeData typeData a +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper field_180069_b b +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper theEntity c +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper field_180068_d d +FD net/minecraft/entity/passive/EntityRabbit$RabbitMoveHelper theEntity g +FD net/minecraft/entity/passive/EntityRabbit$AIPanic theEntity b +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm rabbit c +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm field_179498_d d +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm field_179499_e e +FD net/minecraft/entity/passive/EntitySheep inventoryCrafting bm +FD net/minecraft/entity/passive/EntitySheep DYE_TO_RGB bo +FD net/minecraft/entity/passive/EntitySheep sheepTimer bp +FD net/minecraft/entity/passive/EntitySheep entityAIEatGrass bq +FD net/minecraft/entity/passive/EntitySheep$1 field_90034_a a +FD net/minecraft/entity/passive/EntitySquid squidPitch a +FD net/minecraft/entity/passive/EntitySquid prevSquidPitch b +FD net/minecraft/entity/passive/EntitySquid prevSquidYaw bk +FD net/minecraft/entity/passive/EntitySquid squidRotation bl +FD net/minecraft/entity/passive/EntitySquid prevSquidRotation bm +FD net/minecraft/entity/passive/EntitySquid tentacleAngle bn +FD net/minecraft/entity/passive/EntitySquid lastTentacleAngle bo +FD net/minecraft/entity/passive/EntitySquid randomMotionSpeed bp +FD net/minecraft/entity/passive/EntitySquid rotationVelocity bq +FD net/minecraft/entity/passive/EntitySquid field_70871_bB br +FD net/minecraft/entity/passive/EntitySquid randomMotionVecX bs +FD net/minecraft/entity/passive/EntitySquid randomMotionVecY bt +FD net/minecraft/entity/passive/EntitySquid randomMotionVecZ bu +FD net/minecraft/entity/passive/EntitySquid squidYaw c +FD net/minecraft/entity/passive/EntitySquid$AIMoveRandom squid a +FD net/minecraft/entity/monster/EntityIronGolem villageObj a +FD net/minecraft/entity/monster/EntityIronGolem homeCheckTimer b +FD net/minecraft/entity/monster/EntityIronGolem holdRoseTick bm +FD net/minecraft/entity/monster/EntityIronGolem attackTimer c +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180099_a a +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180097_b b +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180098_c c +FD net/minecraft/entity/passive/EntityWolf headRotationCourse bo +FD net/minecraft/entity/passive/EntityWolf headRotationCourseOld bp +FD net/minecraft/entity/passive/EntityWolf isWet bq +FD net/minecraft/entity/passive/EntityWolf isShaking br +FD net/minecraft/entity/passive/EntityWolf timeWolfIsShaking bs +FD net/minecraft/entity/passive/EntityWolf prevTimeWolfIsShaking bt +FD net/minecraft/entity/passive/EntityWolf$1 field_180095_a a +FD net/minecraft/entity/boss/EntityDragonPart entityDragonObj a +FD net/minecraft/entity/boss/EntityDragonPart partName b +FD net/minecraft/entity/item/EntityEnderCrystal innerRotation a +FD net/minecraft/entity/item/EntityEnderCrystal health b +FD net/minecraft/entity/boss/EntityDragon targetX a +FD net/minecraft/entity/boss/EntityDragon targetY b +FD net/minecraft/entity/boss/EntityDragon target bA +FD net/minecraft/entity/boss/EntityDragon ringBuffer bk +FD net/minecraft/entity/boss/EntityDragon ringBufferIndex bl +FD net/minecraft/entity/boss/EntityDragon dragonPartArray bm +FD net/minecraft/entity/boss/EntityDragon dragonPartHead bn +FD net/minecraft/entity/boss/EntityDragon dragonPartBody bo +FD net/minecraft/entity/boss/EntityDragon dragonPartTail1 bp +FD net/minecraft/entity/boss/EntityDragon dragonPartTail2 bq +FD net/minecraft/entity/boss/EntityDragon dragonPartTail3 br +FD net/minecraft/entity/boss/EntityDragon dragonPartWing1 bs +FD net/minecraft/entity/boss/EntityDragon dragonPartWing2 bt +FD net/minecraft/entity/boss/EntityDragon prevAnimTime bu +FD net/minecraft/entity/boss/EntityDragon animTime bv +FD net/minecraft/entity/boss/EntityDragon forceNewTarget bw +FD net/minecraft/entity/boss/EntityDragon slowed bx +FD net/minecraft/entity/boss/EntityDragon deathTicks by +FD net/minecraft/entity/boss/EntityDragon healingEnderCrystal bz +FD net/minecraft/entity/boss/EntityDragon targetZ c +FD net/minecraft/entity/boss/EntityWither field_82220_d a +FD net/minecraft/entity/boss/EntityWither field_82221_e b +FD net/minecraft/entity/boss/EntityWither field_82218_g bm +FD net/minecraft/entity/boss/EntityWither field_82223_h bn +FD net/minecraft/entity/boss/EntityWither field_82224_i bo +FD net/minecraft/entity/boss/EntityWither blockBreakCounter bp +FD net/minecraft/entity/boss/EntityWither attackEntitySelector bq +FD net/minecraft/entity/boss/EntityWither field_82217_f c +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_HEAD_ROTATION a +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_BODY_ROTATION b +FD net/minecraft/entity/item/EntityArmorStand disabledSlots bi +FD net/minecraft/entity/item/EntityArmorStand field_181028_bj bj +FD net/minecraft/entity/item/EntityArmorStand headRotation bk +FD net/minecraft/entity/item/EntityArmorStand bodyRotation bl +FD net/minecraft/entity/item/EntityArmorStand leftArmRotation bm +FD net/minecraft/entity/item/EntityArmorStand rightArmRotation bn +FD net/minecraft/entity/item/EntityArmorStand leftLegRotation bo +FD net/minecraft/entity/item/EntityArmorStand rightLegRotation bp +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_LEFTARM_ROTATION c +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_RIGHTARM_ROTATION d +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_LEFTLEG_ROTATION e +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_RIGHTLEG_ROTATION f +FD net/minecraft/entity/item/EntityArmorStand contents g +FD net/minecraft/entity/item/EntityArmorStand canInteract h +FD net/minecraft/entity/item/EntityArmorStand punchCooldown i +FD net/minecraft/entity/EntityHanging hangingPosition a +FD net/minecraft/entity/EntityHanging facingDirection b +FD net/minecraft/entity/EntityHanging tickCounter1 c +FD net/minecraft/entity/item/EntityItemFrame itemDropChance c +FD net/minecraft/entity/item/EntityPainting art c +FD net/minecraft/entity/item/EntityPainting$EnumArt field_180001_A A +FD net/minecraft/entity/item/EntityPainting$EnumArt title B +FD net/minecraft/entity/item/EntityPainting$EnumArt sizeX C +FD net/minecraft/entity/item/EntityPainting$EnumArt sizeY D +FD net/minecraft/entity/item/EntityPainting$EnumArt offsetX E +FD net/minecraft/entity/item/EntityPainting$EnumArt offsetY F +FD net/minecraft/entity/item/EntityPainting$EnumArt $VALUES G +FD net/minecraft/entity/item/EntityPainting$EnumArt KEBAB a +FD net/minecraft/entity/item/EntityPainting$EnumArt AZTEC b +FD net/minecraft/entity/item/EntityPainting$EnumArt ALBAN c +FD net/minecraft/entity/item/EntityPainting$EnumArt AZTEC_2 d +FD net/minecraft/entity/item/EntityPainting$EnumArt BOMB e +FD net/minecraft/entity/item/EntityPainting$EnumArt PLANT f +FD net/minecraft/entity/item/EntityPainting$EnumArt WASTELAND g +FD net/minecraft/entity/item/EntityPainting$EnumArt POOL h +FD net/minecraft/entity/item/EntityPainting$EnumArt COURBET i +FD net/minecraft/entity/item/EntityPainting$EnumArt SEA j +FD net/minecraft/entity/item/EntityPainting$EnumArt SUNSET k +FD net/minecraft/entity/item/EntityPainting$EnumArt CREEBET l +FD net/minecraft/entity/item/EntityPainting$EnumArt WANDERER m +FD net/minecraft/entity/item/EntityPainting$EnumArt GRAHAM n +FD net/minecraft/entity/item/EntityPainting$EnumArt MATCH o +FD net/minecraft/entity/item/EntityPainting$EnumArt BUST p +FD net/minecraft/entity/item/EntityPainting$EnumArt STAGE q +FD net/minecraft/entity/item/EntityPainting$EnumArt VOID r +FD net/minecraft/entity/item/EntityPainting$EnumArt SKULL_AND_ROSES s +FD net/minecraft/entity/item/EntityPainting$EnumArt WITHER t +FD net/minecraft/entity/item/EntityPainting$EnumArt FIGHTERS u +FD net/minecraft/entity/item/EntityPainting$EnumArt POINTER v +FD net/minecraft/entity/item/EntityPainting$EnumArt PIGSCENE w +FD net/minecraft/entity/item/EntityPainting$EnumArt BURNING_SKULL x +FD net/minecraft/entity/item/EntityPainting$EnumArt SKELETON y +FD net/minecraft/entity/item/EntityPainting$EnumArt DONKEY_KONG z +FD net/minecraft/entity/projectile/EntityFishHook shake a +FD net/minecraft/entity/projectile/EntityFishHook fishX aA +FD net/minecraft/entity/projectile/EntityFishHook fishY aB +FD net/minecraft/entity/projectile/EntityFishHook fishZ aC +FD net/minecraft/entity/projectile/EntityFishHook fishYaw aD +FD net/minecraft/entity/projectile/EntityFishHook fishPitch aE +FD net/minecraft/entity/projectile/EntityFishHook clientMotionX aF +FD net/minecraft/entity/projectile/EntityFishHook clientMotionY aG +FD net/minecraft/entity/projectile/EntityFishHook clientMotionZ aH +FD net/minecraft/entity/projectile/EntityFishHook inTile ar +FD net/minecraft/entity/projectile/EntityFishHook inGround as +FD net/minecraft/entity/projectile/EntityFishHook ticksInGround at +FD net/minecraft/entity/projectile/EntityFishHook ticksInAir au +FD net/minecraft/entity/projectile/EntityFishHook ticksCatchable av +FD net/minecraft/entity/projectile/EntityFishHook ticksCaughtDelay aw +FD net/minecraft/entity/projectile/EntityFishHook ticksCatchableDelay ax +FD net/minecraft/entity/projectile/EntityFishHook fishApproachAngle ay +FD net/minecraft/entity/projectile/EntityFishHook fishPosRotationIncrements az +FD net/minecraft/entity/projectile/EntityFishHook angler b +FD net/minecraft/entity/projectile/EntityFishHook caughtEntity c +FD net/minecraft/entity/projectile/EntityFishHook JUNK d +FD net/minecraft/entity/projectile/EntityFishHook TREASURE e +FD net/minecraft/entity/projectile/EntityFishHook FISH f +FD net/minecraft/entity/projectile/EntityFishHook xTile g +FD net/minecraft/entity/projectile/EntityFishHook yTile h +FD net/minecraft/entity/projectile/EntityFishHook zTile i +FD net/minecraft/util/WeightedRandomFishable returnStack b +FD net/minecraft/util/WeightedRandomFishable maxDamagePercent c +FD net/minecraft/util/WeightedRandomFishable enchantable d +FD net/minecraft/entity/effect/EntityLightningBolt boltVertex a +FD net/minecraft/entity/effect/EntityLightningBolt lightningState b +FD net/minecraft/entity/effect/EntityLightningBolt boltLivingTime c +FD net/minecraft/entity/item/EntityBoat isBoatEmpty a +FD net/minecraft/entity/item/EntityBoat velocityY ar +FD net/minecraft/entity/item/EntityBoat velocityZ as +FD net/minecraft/entity/item/EntityBoat speedMultiplier b +FD net/minecraft/entity/item/EntityBoat boatPosRotationIncrements c +FD net/minecraft/entity/item/EntityBoat boatX d +FD net/minecraft/entity/item/EntityBoat boatY e +FD net/minecraft/entity/item/EntityBoat boatZ f +FD net/minecraft/entity/item/EntityBoat boatYaw g +FD net/minecraft/entity/item/EntityBoat boatPitch h +FD net/minecraft/entity/item/EntityBoat velocityX i +FD net/minecraft/entity/item/EntityFallingBlock fallTime a +FD net/minecraft/entity/item/EntityFallingBlock shouldDropItem b +FD net/minecraft/entity/item/EntityFallingBlock tileEntityData c +FD net/minecraft/entity/item/EntityFallingBlock fallTile d +FD net/minecraft/entity/item/EntityFallingBlock canSetAsBlock e +FD net/minecraft/entity/item/EntityFallingBlock hurtEntities f +FD net/minecraft/entity/item/EntityFallingBlock fallHurtMax g +FD net/minecraft/entity/item/EntityFallingBlock fallHurtAmount h +FD net/minecraft/entity/item/EntityItem hoverStart a +FD net/minecraft/entity/item/EntityItem logger b +FD net/minecraft/entity/item/EntityItem age c +FD net/minecraft/entity/item/EntityItem delayBeforeCanPickup d +FD net/minecraft/entity/item/EntityItem health e +FD net/minecraft/entity/item/EntityItem thrower f +FD net/minecraft/entity/item/EntityItem owner g +FD net/minecraft/entity/item/EntityMinecart isInReverse a +FD net/minecraft/entity/item/EntityMinecart velocityX ar +FD net/minecraft/entity/item/EntityMinecart velocityY as +FD net/minecraft/entity/item/EntityMinecart velocityZ at +FD net/minecraft/entity/item/EntityMinecart entityName b +FD net/minecraft/entity/item/EntityMinecart matrix c +FD net/minecraft/entity/item/EntityMinecart turnProgress d +FD net/minecraft/entity/item/EntityMinecart minecartX e +FD net/minecraft/entity/item/EntityMinecart minecartY f +FD net/minecraft/entity/item/EntityMinecart minecartZ g +FD net/minecraft/entity/item/EntityMinecart minecartYaw h +FD net/minecraft/entity/item/EntityMinecart minecartPitch i +FD net/minecraft/entity/item/EntityMinecart$1 field_180037_a a +FD net/minecraft/entity/item/EntityMinecart$1 field_180036_b b +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType RIDEABLE a +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType CHEST b +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType FURNACE c +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType TNT d +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType SPAWNER e +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType HOPPER f +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType COMMAND_BLOCK g +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType ID_LOOKUP h +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType networkID i +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType name j +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType $VALUES k +FD net/minecraft/entity/EntityMinecartCommandBlock commandBlockLogic a +FD net/minecraft/entity/EntityMinecartCommandBlock activatorRailCooldown b +FD net/minecraft/entity/EntityMinecartCommandBlock$1 field_145768_a a +FD net/minecraft/entity/item/EntityMinecartContainer minecartContainerItems a +FD net/minecraft/entity/item/EntityMinecartContainer dropContentsWhenDead b +FD net/minecraft/entity/item/EntityMinecartFurnace pushX a +FD net/minecraft/entity/item/EntityMinecartFurnace pushZ b +FD net/minecraft/entity/item/EntityMinecartFurnace fuel c +FD net/minecraft/entity/item/EntityMinecartHopper isBlocked a +FD net/minecraft/entity/item/EntityMinecartHopper transferTicker b +FD net/minecraft/entity/item/EntityMinecartHopper field_174900_c c +FD net/minecraft/entity/ai/EntityMinecartMobSpawner mobSpawnerLogic a +FD net/minecraft/entity/ai/EntityMinecartMobSpawner$1 field_98296_a a +FD net/minecraft/entity/item/EntityMinecartTNT minecartTNTFuse a +FD net/minecraft/entity/item/EntityTNTPrimed fuse a +FD net/minecraft/entity/item/EntityTNTPrimed tntPlacedBy b +FD net/minecraft/entity/monster/EntityBlaze heightOffset a +FD net/minecraft/entity/monster/EntityBlaze heightOffsetUpdateTime b +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack blaze a +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack field_179467_b b +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack field_179468_c c +FD net/minecraft/entity/monster/EntityCreeper lastActiveTime a +FD net/minecraft/entity/monster/EntityCreeper timeSinceIgnited b +FD net/minecraft/entity/monster/EntityCreeper explosionRadius bm +FD net/minecraft/entity/monster/EntityCreeper field_175494_bm bn +FD net/minecraft/entity/monster/EntityCreeper fuseTime c +FD net/minecraft/entity/monster/EntityEnderman attackingSpeedBoostModifierUUID a +FD net/minecraft/entity/monster/EntityEnderman attackingSpeedBoostModifier b +FD net/minecraft/entity/monster/EntityEnderman isAggressive bm +FD net/minecraft/entity/monster/EntityEnderman carriableBlocks c +FD net/minecraft/entity/monster/EntityEnderman$1 field_179949_a a +FD net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock enderman a +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer player g +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer field_179450_h h +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer field_179451_i i +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer enderman j +FD net/minecraft/entity/monster/EntityEnderman$AITakeBlock enderman a +FD net/minecraft/entity/monster/EntityEndermite lifetime a +FD net/minecraft/entity/monster/EntityEndermite playerSpawned b +FD net/minecraft/entity/monster/IMob mobSelector d +FD net/minecraft/entity/monster/IMob VISIBLE_MOB_SELECTOR e +FD net/minecraft/entity/monster/EntityGhast explosionStrength a +FD net/minecraft/entity/monster/EntityGhast$AILookAround parentEntity a +FD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper parentEntity g +FD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper courseChangeCooldown h +FD net/minecraft/entity/monster/EntityGhast$AIFireballAttack attackTimer a +FD net/minecraft/entity/monster/EntityGhast$AIFireballAttack parentEntity b +FD net/minecraft/entity/monster/EntityGhast$AIRandomFly parentEntity a +FD net/minecraft/entity/monster/EntityGuardian field_175482_b a +FD net/minecraft/entity/monster/EntityGuardian field_175484_c b +FD net/minecraft/entity/monster/EntityGuardian field_175485_bl bm +FD net/minecraft/entity/monster/EntityGuardian field_175486_bm bn +FD net/minecraft/entity/monster/EntityGuardian targetedEntity bo +FD net/minecraft/entity/monster/EntityGuardian field_175479_bo bp +FD net/minecraft/entity/monster/EntityGuardian field_175480_bp bq +FD net/minecraft/entity/monster/EntityGuardian wander br +FD net/minecraft/entity/monster/EntityGuardian field_175483_bk c +FD net/minecraft/entity/monster/EntityGuardian$1 field_179914_a a +FD net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack theEntity a +FD net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack tickCounter b +FD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector parentEntity a +FD net/minecraft/entity/monster/EntityGuardian$GuardianMoveHelper entityGuardian g +FD net/minecraft/entity/monster/EntityPigZombie ATTACK_SPEED_BOOST_MODIFIER_UUID b +FD net/minecraft/entity/monster/EntityPigZombie angerLevel bm +FD net/minecraft/entity/monster/EntityPigZombie randomSoundDelay bn +FD net/minecraft/entity/monster/EntityPigZombie angerTargetUUID bo +FD net/minecraft/entity/monster/EntityPigZombie ATTACK_SPEED_BOOST_MODIFIER c +FD net/minecraft/entity/SharedMonsterAttributes maxHealth a +FD net/minecraft/entity/SharedMonsterAttributes followRange b +FD net/minecraft/entity/SharedMonsterAttributes knockbackResistance c +FD net/minecraft/entity/SharedMonsterAttributes movementSpeed d +FD net/minecraft/entity/SharedMonsterAttributes attackDamage e +FD net/minecraft/entity/SharedMonsterAttributes logger f +FD net/minecraft/entity/monster/EntitySilverfish summonSilverfish a +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone silverfish a +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone facing b +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone field_179484_c c +FD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish silverfish a +FD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish field_179463_b b +FD net/minecraft/entity/monster/EntitySkeleton aiArrowAttack a +FD net/minecraft/entity/monster/EntitySkeleton aiAttackOnCollide b +FD net/minecraft/entity/monster/EntitySlime squishAmount a +FD net/minecraft/entity/monster/EntitySlime squishFactor b +FD net/minecraft/entity/monster/EntitySlime wasOnGround bk +FD net/minecraft/entity/monster/EntitySlime prevSquishFactor c +FD net/minecraft/entity/monster/EntitySlime$AISlimeAttack slime a +FD net/minecraft/entity/monster/EntitySlime$AISlimeAttack field_179465_b b +FD net/minecraft/entity/monster/EntitySlime$AISlimeFloat slime a +FD net/minecraft/entity/monster/EntitySlime$AISlimeHop slime a +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179922_g g +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179924_h h +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper slime i +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179923_j j +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom slime a +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom field_179459_b b +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom field_179460_c c +FD net/minecraft/entity/monster/EntitySpider$GroupData potionEffectId a +FD net/minecraft/entity/monster/EntityWitch MODIFIER_UUID a +FD net/minecraft/entity/monster/EntityWitch MODIFIER b +FD net/minecraft/entity/monster/EntityWitch witchAttackTimer bm +FD net/minecraft/entity/monster/EntityWitch witchDrops c +FD net/minecraft/entity/monster/EntityZombie reinforcementChance a +FD net/minecraft/entity/monster/EntityZombie babySpeedBoostUUID b +FD net/minecraft/entity/monster/EntityZombie breakDoor bm +FD net/minecraft/entity/monster/EntityZombie conversionTime bn +FD net/minecraft/entity/monster/EntityZombie isBreakDoorsTaskSet bo +FD net/minecraft/entity/monster/EntityZombie zombieWidth bp +FD net/minecraft/entity/monster/EntityZombie zombieHeight bq +FD net/minecraft/entity/monster/EntityZombie babySpeedBoostModifier c +FD net/minecraft/entity/monster/EntityZombie$GroupData isChild a +FD net/minecraft/entity/monster/EntityZombie$GroupData isVillager b +FD net/minecraft/entity/monster/EntityZombie$GroupData field_142047_c c +FD net/minecraft/entity/NpcMerchant theMerchantInventory a +FD net/minecraft/entity/NpcMerchant customer b +FD net/minecraft/entity/NpcMerchant recipeList c +FD net/minecraft/entity/NpcMerchant field_175548_d d +FD net/minecraft/entity/passive/EntityVillager areAdditionalTasksSet bA +FD net/minecraft/entity/passive/EntityVillager villagerInventory bB +FD net/minecraft/entity/passive/EntityVillager DEFAULT_TRADE_LIST_MAP bC +FD net/minecraft/entity/passive/EntityVillager villageObj bm +FD net/minecraft/entity/passive/EntityVillager randomTickDivider bn +FD net/minecraft/entity/passive/EntityVillager isMating bo +FD net/minecraft/entity/passive/EntityVillager isPlaying bp +FD net/minecraft/entity/passive/EntityVillager buyingPlayer bq +FD net/minecraft/entity/passive/EntityVillager buyingList br +FD net/minecraft/entity/passive/EntityVillager timeUntilReset bs +FD net/minecraft/entity/passive/EntityVillager needsInitilization bt +FD net/minecraft/entity/passive/EntityVillager isWillingToMate bu +FD net/minecraft/entity/passive/EntityVillager wealth bv +FD net/minecraft/entity/passive/EntityVillager lastBuyingPlayer bw +FD net/minecraft/entity/passive/EntityVillager careerId bx +FD net/minecraft/entity/passive/EntityVillager careerLevel by +FD net/minecraft/entity/passive/EntityVillager isLookingForHome bz +FD net/minecraft/entity/passive/EntityVillager$EmeraldForItems sellItem a +FD net/minecraft/entity/passive/EntityVillager$EmeraldForItems price b +FD net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds enchantedItemStack a +FD net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds priceInfo b +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem buyingItemStack a +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem buyingPriceInfo b +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem sellingItemstack c +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem field_179408_d d +FD net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds itemToBuy a +FD net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds priceInfo b +FD net/minecraft/entity/player/PlayerCapabilities disableDamage a +FD net/minecraft/entity/player/PlayerCapabilities isFlying b +FD net/minecraft/entity/player/PlayerCapabilities allowFlying c +FD net/minecraft/entity/player/PlayerCapabilities isCreativeMode d +FD net/minecraft/entity/player/PlayerCapabilities allowEdit e +FD net/minecraft/entity/player/PlayerCapabilities flySpeed f +FD net/minecraft/entity/player/PlayerCapabilities walkSpeed g +FD net/minecraft/entity/player/InventoryPlayer mainInventory a +FD net/minecraft/entity/player/InventoryPlayer armorInventory b +FD net/minecraft/entity/player/InventoryPlayer currentItem c +FD net/minecraft/entity/player/InventoryPlayer player d +FD net/minecraft/entity/player/InventoryPlayer inventoryChanged e +FD net/minecraft/entity/player/InventoryPlayer itemStack f +FD net/minecraft/entity/player/InventoryPlayer$1 field_96634_a a +FD net/minecraft/entity/player/InventoryPlayer$1 field_96633_b b +FD net/minecraft/entity/player/EntityPlayer theInventoryEnderChest a +FD net/minecraft/entity/player/EntityPlayer sleepTimer b +FD net/minecraft/entity/player/EntityPlayer capabilities bA +FD net/minecraft/entity/player/EntityPlayer experienceLevel bB +FD net/minecraft/entity/player/EntityPlayer experienceTotal bC +FD net/minecraft/entity/player/EntityPlayer experience bD +FD net/minecraft/entity/player/EntityPlayer speedOnGround bE +FD net/minecraft/entity/player/EntityPlayer speedInAir bF +FD net/minecraft/entity/player/EntityPlayer fishEntity bG +FD net/minecraft/entity/player/EntityPlayer gameProfile bH +FD net/minecraft/entity/player/EntityPlayer hasReducedDebug bI +FD net/minecraft/entity/player/EntityPlayer renderOffsetY bZ +FD net/minecraft/entity/player/EntityPlayer inventory bi +FD net/minecraft/entity/player/EntityPlayer inventoryContainer bj +FD net/minecraft/entity/player/EntityPlayer openContainer bk +FD net/minecraft/entity/player/EntityPlayer foodStats bl +FD net/minecraft/entity/player/EntityPlayer flyToggleTimer bm +FD net/minecraft/entity/player/EntityPlayer prevCameraYaw bn +FD net/minecraft/entity/player/EntityPlayer cameraYaw bo +FD net/minecraft/entity/player/EntityPlayer xpCooldown bp +FD net/minecraft/entity/player/EntityPlayer prevChasingPosX bq +FD net/minecraft/entity/player/EntityPlayer prevChasingPosY br +FD net/minecraft/entity/player/EntityPlayer prevChasingPosZ bs +FD net/minecraft/entity/player/EntityPlayer chasingPosX bt +FD net/minecraft/entity/player/EntityPlayer chasingPosY bu +FD net/minecraft/entity/player/EntityPlayer chasingPosZ bv +FD net/minecraft/entity/player/EntityPlayer sleeping bw +FD net/minecraft/entity/player/EntityPlayer playerLocation bx +FD net/minecraft/entity/player/EntityPlayer renderOffsetX by +FD net/minecraft/entity/player/EntityPlayer renderOffsetZ bz +FD net/minecraft/entity/player/EntityPlayer spawnChunk c +FD net/minecraft/entity/player/EntityPlayer spawnForced d +FD net/minecraft/entity/player/EntityPlayer startMinecartRidingCoordinate e +FD net/minecraft/entity/player/EntityPlayer xpSeed f +FD net/minecraft/entity/player/EntityPlayer itemInUse g +FD net/minecraft/entity/player/EntityPlayer itemInUseCount h +FD net/minecraft/entity/player/EntityPlayer lastXPSound i +FD net/minecraft/entity/player/EntityPlayer$1 field_179420_a a +FD net/minecraft/entity/player/EntityPlayer$EnumStatus OK a +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_POSSIBLE_HERE b +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_POSSIBLE_NOW c +FD net/minecraft/entity/player/EntityPlayer$EnumStatus TOO_FAR_AWAY d +FD net/minecraft/entity/player/EntityPlayer$EnumStatus OTHER_PROBLEM e +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_SAFE f +FD net/minecraft/entity/player/EntityPlayer$EnumStatus $VALUES g +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility FULL a +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility SYSTEM b +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility HIDDEN c +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility ID_LOOKUP d +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility chatVisibility e +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility resourceKey f +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility $VALUES g +FD net/minecraft/entity/player/EnumPlayerModelParts CAPE a +FD net/minecraft/entity/player/EnumPlayerModelParts JACKET b +FD net/minecraft/entity/player/EnumPlayerModelParts LEFT_SLEEVE c +FD net/minecraft/entity/player/EnumPlayerModelParts RIGHT_SLEEVE d +FD net/minecraft/entity/player/EnumPlayerModelParts LEFT_PANTS_LEG e +FD net/minecraft/entity/player/EnumPlayerModelParts RIGHT_PANTS_LEG f +FD net/minecraft/entity/player/EnumPlayerModelParts HAT g +FD net/minecraft/entity/player/EnumPlayerModelParts partId h +FD net/minecraft/entity/player/EnumPlayerModelParts partMask i +FD net/minecraft/entity/player/EnumPlayerModelParts partName j +FD net/minecraft/entity/player/EnumPlayerModelParts field_179339_k k +FD net/minecraft/entity/player/EnumPlayerModelParts $VALUES l +FD net/minecraft/entity/projectile/EntityArrow canBePickedUp a +FD net/minecraft/entity/projectile/EntityArrow ticksInGround ar +FD net/minecraft/entity/projectile/EntityArrow ticksInAir as +FD net/minecraft/entity/projectile/EntityArrow damage at +FD net/minecraft/entity/projectile/EntityArrow knockbackStrength au +FD net/minecraft/entity/projectile/EntityArrow arrowShake b +FD net/minecraft/entity/projectile/EntityArrow shootingEntity c +FD net/minecraft/entity/projectile/EntityArrow xTile d +FD net/minecraft/entity/projectile/EntityArrow yTile e +FD net/minecraft/entity/projectile/EntityArrow zTile f +FD net/minecraft/entity/projectile/EntityArrow inTile g +FD net/minecraft/entity/projectile/EntityArrow inData h +FD net/minecraft/entity/projectile/EntityArrow inGround i +FD net/minecraft/entity/item/EntityEnderEye targetX a +FD net/minecraft/entity/item/EntityEnderEye targetY b +FD net/minecraft/entity/item/EntityEnderEye targetZ c +FD net/minecraft/entity/item/EntityEnderEye despawnTimer d +FD net/minecraft/entity/item/EntityEnderEye shatterOrDrop e +FD net/minecraft/entity/projectile/EntityFireball shootingEntity a +FD net/minecraft/entity/projectile/EntityFireball ticksAlive ar +FD net/minecraft/entity/projectile/EntityFireball ticksInAir as +FD net/minecraft/entity/projectile/EntityFireball accelerationX b +FD net/minecraft/entity/projectile/EntityFireball accelerationY c +FD net/minecraft/entity/projectile/EntityFireball accelerationZ d +FD net/minecraft/entity/projectile/EntityFireball xTile e +FD net/minecraft/entity/projectile/EntityFireball yTile f +FD net/minecraft/entity/projectile/EntityFireball zTile g +FD net/minecraft/entity/projectile/EntityFireball inTile h +FD net/minecraft/entity/projectile/EntityFireball inGround i +FD net/minecraft/entity/item/EntityFireworkRocket fireworkAge a +FD net/minecraft/entity/item/EntityFireworkRocket lifetime b +FD net/minecraft/entity/projectile/EntityLargeFireball explosionPower e +FD net/minecraft/entity/projectile/EntityThrowable inGround a +FD net/minecraft/entity/projectile/EntityThrowable ticksInAir ar +FD net/minecraft/entity/projectile/EntityThrowable throwableShake b +FD net/minecraft/entity/projectile/EntityThrowable xTile c +FD net/minecraft/entity/projectile/EntityThrowable yTile d +FD net/minecraft/entity/projectile/EntityThrowable zTile e +FD net/minecraft/entity/projectile/EntityThrowable inTile f +FD net/minecraft/entity/projectile/EntityThrowable thrower g +FD net/minecraft/entity/projectile/EntityThrowable throwerName h +FD net/minecraft/entity/projectile/EntityThrowable ticksInGround i +FD net/minecraft/entity/item/EntityEnderPearl field_181555_c c +FD net/minecraft/entity/projectile/EntityPotion potionDamage c +FD net/minecraft/util/FoodStats foodLevel a +FD net/minecraft/util/FoodStats foodSaturationLevel b +FD net/minecraft/util/FoodStats foodExhaustionLevel c +FD net/minecraft/util/FoodStats foodTimer d +FD net/minecraft/util/FoodStats prevFoodLevel e +FD net/minecraft/inventory/Container transactionID a +FD net/minecraft/inventory/Container inventoryItemStacks b +FD net/minecraft/inventory/Container inventorySlots c +FD net/minecraft/inventory/Container windowId d +FD net/minecraft/inventory/Container crafters e +FD net/minecraft/inventory/Container dragMode f +FD net/minecraft/inventory/Container dragEvent g +FD net/minecraft/inventory/Container dragSlots h +FD net/minecraft/inventory/Container playerList i +FD net/minecraft/inventory/ContainerRepair maximumCost a +FD net/minecraft/inventory/ContainerRepair logger f +FD net/minecraft/inventory/ContainerRepair outputSlot g +FD net/minecraft/inventory/ContainerRepair inputSlots h +FD net/minecraft/inventory/ContainerRepair theWorld i +FD net/minecraft/inventory/ContainerRepair selfPosition j +FD net/minecraft/inventory/ContainerRepair materialCost k +FD net/minecraft/inventory/ContainerRepair repairedItemName l +FD net/minecraft/inventory/ContainerRepair thePlayer m +FD net/minecraft/inventory/ContainerRepair$1 field_135010_a a +FD net/minecraft/inventory/ContainerRepair$2 field_135071_a a +FD net/minecraft/inventory/ContainerRepair$2 field_178174_b b +FD net/minecraft/inventory/ContainerRepair$2 field_135068_e c +FD net/minecraft/inventory/ContainerBeacon tileBeacon a +FD net/minecraft/inventory/ContainerBeacon beaconSlot f +FD net/minecraft/inventory/ContainerBeacon$BeaconSlot field_82876_a a +FD net/minecraft/inventory/ContainerBrewingStand tileBrewingStand a +FD net/minecraft/inventory/ContainerBrewingStand theSlot f +FD net/minecraft/inventory/ContainerBrewingStand brewTime g +FD net/minecraft/inventory/ContainerBrewingStand$Ingredient field_75226_a a +FD net/minecraft/inventory/ContainerBrewingStand$Potion player a +FD net/minecraft/inventory/ContainerChest lowerChestInventory a +FD net/minecraft/inventory/ContainerChest numRows f +FD net/minecraft/inventory/InventoryCrafting stackList a +FD net/minecraft/inventory/InventoryCrafting inventoryWidth b +FD net/minecraft/inventory/InventoryCrafting inventoryHeight c +FD net/minecraft/inventory/InventoryCrafting eventHandler d +FD net/minecraft/inventory/ContainerWorkbench craftMatrix a +FD net/minecraft/inventory/ContainerWorkbench craftResult f +FD net/minecraft/inventory/ContainerWorkbench worldObj g +FD net/minecraft/inventory/ContainerWorkbench pos h +FD net/minecraft/inventory/ContainerDispenser dispenserInventory a +FD net/minecraft/inventory/ContainerEnchantment tableInventory a +FD net/minecraft/inventory/ContainerEnchantment xpSeed f +FD net/minecraft/inventory/ContainerEnchantment enchantLevels g +FD net/minecraft/inventory/ContainerEnchantment enchantmentIds h +FD net/minecraft/inventory/ContainerEnchantment worldPointer i +FD net/minecraft/inventory/ContainerEnchantment position j +FD net/minecraft/inventory/ContainerEnchantment rand k +FD net/minecraft/inventory/ContainerEnchantment$1 field_70484_a a +FD net/minecraft/inventory/ContainerEnchantment$2 field_75227_a a +FD net/minecraft/inventory/ContainerEnchantment$3 field_178172_a a +FD net/minecraft/inventory/ContainerFurnace tileFurnace a +FD net/minecraft/inventory/ContainerFurnace cookTime f +FD net/minecraft/inventory/ContainerFurnace totalCookTime g +FD net/minecraft/inventory/ContainerFurnace furnaceBurnTime h +FD net/minecraft/inventory/ContainerFurnace currentItemBurnTime i +FD net/minecraft/inventory/SlotFurnaceOutput thePlayer a +FD net/minecraft/inventory/SlotFurnaceOutput field_75228_b b +FD net/minecraft/inventory/ContainerHopper hopperInventory a +FD net/minecraft/inventory/ContainerHorseInventory horseInventory a +FD net/minecraft/inventory/ContainerHorseInventory theHorse f +FD net/minecraft/inventory/ContainerHorseInventory$1 field_111239_a a +FD net/minecraft/inventory/ContainerHorseInventory$2 field_111241_a a +FD net/minecraft/inventory/ContainerHorseInventory$2 field_111240_b b +FD net/minecraft/inventory/ContainerPlayer craftMatrix a +FD net/minecraft/inventory/ContainerPlayer craftResult f +FD net/minecraft/inventory/ContainerPlayer isLocalWorld g +FD net/minecraft/inventory/ContainerPlayer thePlayer h +FD net/minecraft/inventory/ContainerPlayer$1 field_75236_a a +FD net/minecraft/inventory/ContainerPlayer$1 field_75235_b b +FD net/minecraft/inventory/InventoryMerchant theMerchant a +FD net/minecraft/inventory/InventoryMerchant theInventory b +FD net/minecraft/inventory/InventoryMerchant thePlayer c +FD net/minecraft/inventory/InventoryMerchant currentRecipe d +FD net/minecraft/inventory/InventoryMerchant currentRecipeIndex e +FD net/minecraft/inventory/ContainerMerchant theMerchant a +FD net/minecraft/inventory/ContainerMerchant merchantInventory f +FD net/minecraft/inventory/ContainerMerchant theWorld g +FD net/minecraft/inventory/SlotMerchantResult theMerchantInventory a +FD net/minecraft/inventory/SlotMerchantResult thePlayer b +FD net/minecraft/inventory/SlotMerchantResult field_75231_g c +FD net/minecraft/inventory/SlotMerchantResult theMerchant h +FD net/minecraft/inventory/InventoryEnderChest associatedChest a +FD net/minecraft/inventory/InventoryCraftResult stackResult a +FD net/minecraft/inventory/SlotCrafting craftMatrix a +FD net/minecraft/inventory/SlotCrafting thePlayer b +FD net/minecraft/inventory/SlotCrafting amountCrafted c +FD net/minecraft/inventory/Slot slotIndex a +FD net/minecraft/inventory/Slot inventory d +FD net/minecraft/inventory/Slot slotNumber e +FD net/minecraft/inventory/Slot xDisplayPosition f +FD net/minecraft/inventory/Slot yDisplayPosition g +FD net/minecraft/item/ItemArmor EMPTY_SLOT_NAMES a +FD net/minecraft/item/ItemArmor armorType b +FD net/minecraft/item/ItemArmor damageReduceAmount c +FD net/minecraft/item/ItemArmor renderIndex d +FD net/minecraft/item/ItemArmor maxDamageArray k +FD net/minecraft/item/ItemArmor dispenserBehavior l +FD net/minecraft/item/ItemArmor material m +FD net/minecraft/item/ItemArmor$ArmorMaterial LEATHER a +FD net/minecraft/item/ItemArmor$ArmorMaterial CHAIN b +FD net/minecraft/item/ItemArmor$ArmorMaterial IRON c +FD net/minecraft/item/ItemArmor$ArmorMaterial GOLD d +FD net/minecraft/item/ItemArmor$ArmorMaterial DIAMOND e +FD net/minecraft/item/ItemArmor$ArmorMaterial name f +FD net/minecraft/item/ItemArmor$ArmorMaterial maxDamageFactor g +FD net/minecraft/item/ItemArmor$ArmorMaterial damageReductionAmountArray h +FD net/minecraft/item/ItemArmor$ArmorMaterial enchantability i +FD net/minecraft/item/ItemArmor$ArmorMaterial $VALUES j +FD net/minecraft/item/ItemAxe EFFECTIVE_ON c +FD net/minecraft/item/ItemBlock block a +FD net/minecraft/item/ItemReed block a +FD net/minecraft/item/ItemBow bowPullIconNameArray a +FD net/minecraft/item/ItemBucket isFull a +FD net/minecraft/creativetab/CreativeTabs creativeTabArray a +FD net/minecraft/creativetab/CreativeTabs tabBlock b +FD net/minecraft/creativetab/CreativeTabs tabDecorations c +FD net/minecraft/creativetab/CreativeTabs tabRedstone d +FD net/minecraft/creativetab/CreativeTabs tabTransport e +FD net/minecraft/creativetab/CreativeTabs tabMisc f +FD net/minecraft/creativetab/CreativeTabs tabAllSearch g +FD net/minecraft/creativetab/CreativeTabs tabFood h +FD net/minecraft/creativetab/CreativeTabs tabTools i +FD net/minecraft/creativetab/CreativeTabs tabCombat j +FD net/minecraft/creativetab/CreativeTabs tabBrewing k +FD net/minecraft/creativetab/CreativeTabs tabMaterials l +FD net/minecraft/creativetab/CreativeTabs tabInventory m +FD net/minecraft/creativetab/CreativeTabs tabIndex n +FD net/minecraft/creativetab/CreativeTabs tabLabel o +FD net/minecraft/creativetab/CreativeTabs theTexture p +FD net/minecraft/creativetab/CreativeTabs hasScrollbar q +FD net/minecraft/creativetab/CreativeTabs drawTitle r +FD net/minecraft/creativetab/CreativeTabs enchantmentTypes s +FD net/minecraft/creativetab/CreativeTabs iconItemStack t +FD net/minecraft/item/ItemTool efficiencyOnProperMaterial a +FD net/minecraft/item/ItemTool toolMaterial b +FD net/minecraft/item/ItemTool effectiveBlocks c +FD net/minecraft/item/ItemTool damageVsEntity d +FD net/minecraft/item/ItemDoor block a +FD net/minecraft/item/EnumDyeColor WHITE a +FD net/minecraft/item/EnumDyeColor ORANGE b +FD net/minecraft/item/EnumDyeColor MAGENTA c +FD net/minecraft/item/EnumDyeColor LIGHT_BLUE d +FD net/minecraft/item/EnumDyeColor YELLOW e +FD net/minecraft/item/EnumDyeColor LIME f +FD net/minecraft/item/EnumDyeColor PINK g +FD net/minecraft/item/EnumDyeColor GRAY h +FD net/minecraft/item/EnumDyeColor SILVER i +FD net/minecraft/item/EnumDyeColor CYAN j +FD net/minecraft/item/EnumDyeColor PURPLE k +FD net/minecraft/item/EnumDyeColor BLUE l +FD net/minecraft/item/EnumDyeColor BROWN m +FD net/minecraft/item/EnumDyeColor GREEN n +FD net/minecraft/item/EnumDyeColor RED o +FD net/minecraft/item/EnumDyeColor BLACK p +FD net/minecraft/item/EnumDyeColor META_LOOKUP q +FD net/minecraft/item/EnumDyeColor DYE_DMG_LOOKUP r +FD net/minecraft/item/EnumDyeColor meta s +FD net/minecraft/item/EnumDyeColor dyeDamage t +FD net/minecraft/item/EnumDyeColor name u +FD net/minecraft/item/EnumDyeColor unlocalizedName v +FD net/minecraft/item/EnumDyeColor mapColor w +FD net/minecraft/item/EnumDyeColor chatColor x +FD net/minecraft/item/EnumDyeColor $VALUES y +FD net/minecraft/item/ItemDye dyeColors a +FD net/minecraft/item/ItemFishFood cooked b +FD net/minecraft/item/ItemFishFood$FishType COD a +FD net/minecraft/item/ItemFishFood$FishType SALMON b +FD net/minecraft/item/ItemFishFood$FishType CLOWNFISH c +FD net/minecraft/item/ItemFishFood$FishType PUFFERFISH d +FD net/minecraft/item/ItemFishFood$FishType META_LOOKUP e +FD net/minecraft/item/ItemFishFood$FishType meta f +FD net/minecraft/item/ItemFishFood$FishType unlocalizedName g +FD net/minecraft/item/ItemFishFood$FishType uncookedHealAmount h +FD net/minecraft/item/ItemFishFood$FishType uncookedSaturationModifier i +FD net/minecraft/item/ItemFishFood$FishType cookedHealAmount j +FD net/minecraft/item/ItemFishFood$FishType cookedSaturationModifier k +FD net/minecraft/item/ItemFishFood$FishType cookable l +FD net/minecraft/item/ItemFishFood$FishType $VALUES m +FD net/minecraft/item/ItemFood itemUseDuration a +FD net/minecraft/item/ItemFood healAmount b +FD net/minecraft/item/ItemFood saturationModifier c +FD net/minecraft/item/ItemFood isWolfsFavoriteMeat d +FD net/minecraft/item/ItemFood alwaysEdible k +FD net/minecraft/item/ItemFood potionId l +FD net/minecraft/item/ItemFood potionDuration m +FD net/minecraft/item/ItemFood potionAmplifier n +FD net/minecraft/item/ItemFood potionEffectProbability o +FD net/minecraft/item/ItemHangingEntity hangingEntityClass a +FD net/minecraft/item/ItemHoe theToolMaterial a +FD net/minecraft/item/ItemHoe$1 field_179590_a a +FD net/minecraft/item/Item BLOCK_TO_ITEM a +FD net/minecraft/item/Item tabToDisplayOn b +FD net/minecraft/item/Item maxDamage c +FD net/minecraft/item/Item containerItem d +FD net/minecraft/item/Item itemRegistry e +FD net/minecraft/item/Item itemModifierUUID f +FD net/minecraft/item/Item itemRand g +FD net/minecraft/item/Item maxStackSize h +FD net/minecraft/item/Item bFull3D i +FD net/minecraft/item/Item hasSubtypes j +FD net/minecraft/item/Item potionEffect k +FD net/minecraft/item/Item unlocalizedName l +FD net/minecraft/item/Item$ToolMaterial WOOD a +FD net/minecraft/item/Item$ToolMaterial STONE b +FD net/minecraft/item/Item$ToolMaterial IRON c +FD net/minecraft/item/Item$ToolMaterial EMERALD d +FD net/minecraft/item/Item$ToolMaterial GOLD e +FD net/minecraft/item/Item$ToolMaterial harvestLevel f +FD net/minecraft/item/Item$ToolMaterial maxUses g +FD net/minecraft/item/Item$ToolMaterial efficiencyOnProperMaterial h +FD net/minecraft/item/Item$ToolMaterial damageVsEntity i +FD net/minecraft/item/Item$ToolMaterial enchantability j +FD net/minecraft/item/Item$ToolMaterial $VALUES k +FD net/minecraft/item/ItemStack DECIMALFORMAT a +FD net/minecraft/item/ItemStack stackSize b +FD net/minecraft/item/ItemStack animationsToGo c +FD net/minecraft/item/ItemStack item d +FD net/minecraft/item/ItemStack stackTagCompound e +FD net/minecraft/item/ItemStack itemDamage f +FD net/minecraft/item/ItemStack itemFrame g +FD net/minecraft/item/ItemStack canDestroyCacheBlock h +FD net/minecraft/item/ItemStack canDestroyCacheResult i +FD net/minecraft/item/ItemStack canPlaceOnCacheBlock j +FD net/minecraft/item/ItemStack canPlaceOnCacheResult k +FD net/minecraft/init/Items mushroom_stew A +FD net/minecraft/init/Items golden_sword B +FD net/minecraft/init/Items golden_shovel C +FD net/minecraft/init/Items golden_pickaxe D +FD net/minecraft/init/Items golden_axe E +FD net/minecraft/init/Items string F +FD net/minecraft/init/Items feather G +FD net/minecraft/init/Items gunpowder H +FD net/minecraft/init/Items wooden_hoe I +FD net/minecraft/init/Items stone_hoe J +FD net/minecraft/init/Items iron_hoe K +FD net/minecraft/init/Items diamond_hoe L +FD net/minecraft/init/Items golden_hoe M +FD net/minecraft/init/Items wheat_seeds N +FD net/minecraft/init/Items wheat O +FD net/minecraft/init/Items bread P +FD net/minecraft/init/Items leather_helmet Q +FD net/minecraft/init/Items leather_chestplate R +FD net/minecraft/init/Items leather_leggings S +FD net/minecraft/init/Items leather_boots T +FD net/minecraft/init/Items chainmail_helmet U +FD net/minecraft/init/Items chainmail_chestplate V +FD net/minecraft/init/Items chainmail_leggings W +FD net/minecraft/init/Items chainmail_boots X +FD net/minecraft/init/Items iron_helmet Y +FD net/minecraft/init/Items iron_chestplate Z +FD net/minecraft/init/Items iron_shovel a +FD net/minecraft/init/Items saddle aA +FD net/minecraft/init/Items iron_door aB +FD net/minecraft/init/Items redstone aC +FD net/minecraft/init/Items snowball aD +FD net/minecraft/init/Items boat aE +FD net/minecraft/init/Items leather aF +FD net/minecraft/init/Items milk_bucket aG +FD net/minecraft/init/Items brick aH +FD net/minecraft/init/Items clay_ball aI +FD net/minecraft/init/Items reeds aJ +FD net/minecraft/init/Items paper aK +FD net/minecraft/init/Items book aL +FD net/minecraft/init/Items slime_ball aM +FD net/minecraft/init/Items chest_minecart aN +FD net/minecraft/init/Items furnace_minecart aO +FD net/minecraft/init/Items egg aP +FD net/minecraft/init/Items compass aQ +FD net/minecraft/init/Items fishing_rod aR +FD net/minecraft/init/Items clock aS +FD net/minecraft/init/Items glowstone_dust aT +FD net/minecraft/init/Items fish aU +FD net/minecraft/init/Items cooked_fish aV +FD net/minecraft/init/Items dye aW +FD net/minecraft/init/Items bone aX +FD net/minecraft/init/Items sugar aY +FD net/minecraft/init/Items cake aZ +FD net/minecraft/init/Items iron_leggings aa +FD net/minecraft/init/Items iron_boots ab +FD net/minecraft/init/Items diamond_helmet ac +FD net/minecraft/init/Items diamond_chestplate ad +FD net/minecraft/init/Items diamond_leggings ae +FD net/minecraft/init/Items diamond_boots af +FD net/minecraft/init/Items golden_helmet ag +FD net/minecraft/init/Items golden_chestplate ah +FD net/minecraft/init/Items golden_leggings ai +FD net/minecraft/init/Items golden_boots aj +FD net/minecraft/init/Items flint ak +FD net/minecraft/init/Items porkchop al +FD net/minecraft/init/Items cooked_porkchop am +FD net/minecraft/init/Items painting an +FD net/minecraft/init/Items golden_apple ao +FD net/minecraft/init/Items sign ap +FD net/minecraft/init/Items oak_door aq +FD net/minecraft/init/Items spruce_door ar +FD net/minecraft/init/Items birch_door as +FD net/minecraft/init/Items jungle_door at +FD net/minecraft/init/Items acacia_door au +FD net/minecraft/init/Items dark_oak_door av +FD net/minecraft/init/Items bucket aw +FD net/minecraft/init/Items water_bucket ax +FD net/minecraft/init/Items lava_bucket ay +FD net/minecraft/init/Items minecart az +FD net/minecraft/init/Items iron_pickaxe b +FD net/minecraft/init/Items glass_bottle bA +FD net/minecraft/init/Items spider_eye bB +FD net/minecraft/init/Items fermented_spider_eye bC +FD net/minecraft/init/Items blaze_powder bD +FD net/minecraft/init/Items magma_cream bE +FD net/minecraft/init/Items brewing_stand bF +FD net/minecraft/init/Items cauldron bG +FD net/minecraft/init/Items ender_eye bH +FD net/minecraft/init/Items speckled_melon bI +FD net/minecraft/init/Items spawn_egg bJ +FD net/minecraft/init/Items experience_bottle bK +FD net/minecraft/init/Items fire_charge bL +FD net/minecraft/init/Items writable_book bM +FD net/minecraft/init/Items written_book bN +FD net/minecraft/init/Items emerald bO +FD net/minecraft/init/Items item_frame bP +FD net/minecraft/init/Items flower_pot bQ +FD net/minecraft/init/Items carrot bR +FD net/minecraft/init/Items potato bS +FD net/minecraft/init/Items baked_potato bT +FD net/minecraft/init/Items poisonous_potato bU +FD net/minecraft/init/Items map bV +FD net/minecraft/init/Items golden_carrot bW +FD net/minecraft/init/Items skull bX +FD net/minecraft/init/Items carrot_on_a_stick bY +FD net/minecraft/init/Items nether_star bZ +FD net/minecraft/init/Items bed ba +FD net/minecraft/init/Items repeater bb +FD net/minecraft/init/Items cookie bc +FD net/minecraft/init/Items filled_map bd +FD net/minecraft/init/Items shears be +FD net/minecraft/init/Items melon bf +FD net/minecraft/init/Items pumpkin_seeds bg +FD net/minecraft/init/Items melon_seeds bh +FD net/minecraft/init/Items beef bi +FD net/minecraft/init/Items cooked_beef bj +FD net/minecraft/init/Items chicken bk +FD net/minecraft/init/Items cooked_chicken bl +FD net/minecraft/init/Items mutton bm +FD net/minecraft/init/Items cooked_mutton bn +FD net/minecraft/init/Items rabbit bo +FD net/minecraft/init/Items cooked_rabbit bp +FD net/minecraft/init/Items rabbit_stew bq +FD net/minecraft/init/Items rabbit_foot br +FD net/minecraft/init/Items rabbit_hide bs +FD net/minecraft/init/Items rotten_flesh bt +FD net/minecraft/init/Items ender_pearl bu +FD net/minecraft/init/Items blaze_rod bv +FD net/minecraft/init/Items ghast_tear bw +FD net/minecraft/init/Items gold_nugget bx +FD net/minecraft/init/Items nether_wart by +FD net/minecraft/init/Items potionitem bz +FD net/minecraft/init/Items iron_axe c +FD net/minecraft/init/Items record_11 cA +FD net/minecraft/init/Items record_wait cB +FD net/minecraft/init/Items prismarine_shard cC +FD net/minecraft/init/Items prismarine_crystals cD +FD net/minecraft/init/Items banner cE +FD net/minecraft/init/Items pumpkin_pie ca +FD net/minecraft/init/Items fireworks cb +FD net/minecraft/init/Items firework_charge cc +FD net/minecraft/init/Items enchanted_book cd +FD net/minecraft/init/Items comparator ce +FD net/minecraft/init/Items netherbrick cf +FD net/minecraft/init/Items quartz cg +FD net/minecraft/init/Items tnt_minecart ch +FD net/minecraft/init/Items hopper_minecart ci +FD net/minecraft/init/Items armor_stand cj +FD net/minecraft/init/Items iron_horse_armor ck +FD net/minecraft/init/Items golden_horse_armor cl +FD net/minecraft/init/Items diamond_horse_armor cm +FD net/minecraft/init/Items lead cn +FD net/minecraft/init/Items name_tag co +FD net/minecraft/init/Items command_block_minecart cp +FD net/minecraft/init/Items record_13 cq +FD net/minecraft/init/Items record_cat cr +FD net/minecraft/init/Items record_blocks cs +FD net/minecraft/init/Items record_chirp ct +FD net/minecraft/init/Items record_far cu +FD net/minecraft/init/Items record_mall cv +FD net/minecraft/init/Items record_mellohi cw +FD net/minecraft/init/Items record_stal cx +FD net/minecraft/init/Items record_strad cy +FD net/minecraft/init/Items record_ward cz +FD net/minecraft/init/Items flint_and_steel d +FD net/minecraft/init/Items apple e +FD net/minecraft/init/Items bow f +FD net/minecraft/init/Items arrow g +FD net/minecraft/init/Items coal h +FD net/minecraft/init/Items diamond i +FD net/minecraft/init/Items iron_ingot j +FD net/minecraft/init/Items gold_ingot k +FD net/minecraft/init/Items iron_sword l +FD net/minecraft/init/Items wooden_sword m +FD net/minecraft/init/Items wooden_shovel n +FD net/minecraft/init/Items wooden_pickaxe o +FD net/minecraft/init/Items wooden_axe p +FD net/minecraft/init/Items stone_sword q +FD net/minecraft/init/Items stone_shovel r +FD net/minecraft/init/Items stone_pickaxe s +FD net/minecraft/init/Items stone_axe t +FD net/minecraft/init/Items diamond_sword u +FD net/minecraft/init/Items diamond_shovel v +FD net/minecraft/init/Items diamond_pickaxe w +FD net/minecraft/init/Items diamond_axe x +FD net/minecraft/init/Items stick y +FD net/minecraft/init/Items bowl z +FD net/minecraft/item/ItemLeaves leaves b +FD net/minecraft/item/ItemMinecart dispenserMinecartBehavior a +FD net/minecraft/item/ItemMinecart minecartType b +FD net/minecraft/item/ItemMinecart$1 behaviourDefaultDispenseItem b +FD net/minecraft/item/ItemMultiTexture theBlock b +FD net/minecraft/item/ItemMultiTexture nameFunction c +FD net/minecraft/item/ItemMultiTexture$1 field_179542_a a +FD net/minecraft/item/ItemPickaxe EFFECTIVE_ON c +FD net/minecraft/item/ItemPotion effectCache a +FD net/minecraft/item/ItemPotion SUB_ITEMS_CACHE b +FD net/minecraft/item/EnumRarity COMMON a +FD net/minecraft/item/EnumRarity UNCOMMON b +FD net/minecraft/item/EnumRarity RARE c +FD net/minecraft/item/EnumRarity EPIC d +FD net/minecraft/item/EnumRarity rarityColor e +FD net/minecraft/item/EnumRarity rarityName f +FD net/minecraft/item/EnumRarity $VALUES g +FD net/minecraft/item/ItemRecord recordName a +FD net/minecraft/item/ItemRecord RECORDS b +FD net/minecraft/item/ItemSeedFood crops b +FD net/minecraft/item/ItemSeedFood soilId c +FD net/minecraft/item/ItemSeeds crops a +FD net/minecraft/item/ItemSeeds soilBlockID b +FD net/minecraft/item/ItemSpade EFFECTIVE_ON c +FD net/minecraft/item/ItemSkull skullTypes a +FD net/minecraft/item/ItemSlab singleSlab b +FD net/minecraft/item/ItemSlab doubleSlab c +FD net/minecraft/item/ItemSword attackDamage a +FD net/minecraft/item/ItemSword material b +FD net/minecraft/item/ItemColored coloredBlock b +FD net/minecraft/item/ItemColored subtypeNames c +FD net/minecraft/item/EnumAction NONE a +FD net/minecraft/item/EnumAction EAT b +FD net/minecraft/item/EnumAction DRINK c +FD net/minecraft/item/EnumAction BLOCK d +FD net/minecraft/item/EnumAction BOW e +FD net/minecraft/item/EnumAction $VALUES f +FD net/minecraft/potion/PotionHelper unusedString a +FD net/minecraft/potion/PotionHelper sugarEffect b +FD net/minecraft/potion/PotionHelper ghastTearEffect c +FD net/minecraft/potion/PotionHelper spiderEyeEffect d +FD net/minecraft/potion/PotionHelper fermentedSpiderEyeEffect e +FD net/minecraft/potion/PotionHelper speckledMelonEffect f +FD net/minecraft/potion/PotionHelper blazePowderEffect g +FD net/minecraft/potion/PotionHelper magmaCreamEffect h +FD net/minecraft/potion/PotionHelper redstoneEffect i +FD net/minecraft/potion/PotionHelper glowstoneEffect j +FD net/minecraft/potion/PotionHelper gunpowderEffect k +FD net/minecraft/potion/PotionHelper goldenCarrotEffect l +FD net/minecraft/potion/PotionHelper pufferfishEffect m +FD net/minecraft/potion/PotionHelper rabbitFootEffect n +FD net/minecraft/potion/PotionHelper potionRequirements o +FD net/minecraft/potion/PotionHelper potionAmplifiers p +FD net/minecraft/potion/PotionHelper DATAVALUE_COLORS q +FD net/minecraft/potion/PotionHelper potionPrefixes r +FD net/minecraft/item/crafting/RecipesArmor recipePatterns a +FD net/minecraft/item/crafting/RecipesArmor recipeItems b +FD net/minecraft/item/crafting/RecipeFireworks field_92102_a a +FD net/minecraft/item/crafting/FurnaceRecipes smeltingBase a +FD net/minecraft/item/crafting/FurnaceRecipes smeltingList b +FD net/minecraft/item/crafting/FurnaceRecipes experienceList c +FD net/minecraft/item/crafting/RecipesIngots recipeItems a +FD net/minecraft/item/crafting/CraftingManager instance a +FD net/minecraft/item/crafting/CraftingManager recipes b +FD net/minecraft/item/crafting/CraftingManager$1 field_77582_a a +FD net/minecraft/item/crafting/ShapedRecipes recipeWidth a +FD net/minecraft/item/crafting/ShapedRecipes recipeHeight b +FD net/minecraft/item/crafting/ShapedRecipes recipeItems c +FD net/minecraft/item/crafting/ShapedRecipes recipeOutput d +FD net/minecraft/item/crafting/ShapedRecipes copyIngredientNBT e +FD net/minecraft/item/crafting/ShapelessRecipes recipeOutput a +FD net/minecraft/item/crafting/ShapelessRecipes recipeItems b +FD net/minecraft/item/crafting/RecipesTools recipePatterns a +FD net/minecraft/item/crafting/RecipesTools recipeItems b +FD net/minecraft/item/crafting/RecipesWeapons recipePatterns a +FD net/minecraft/item/crafting/RecipesWeapons recipeItems b +FD net/minecraft/enchantment/EnchantmentDamage protectionName E +FD net/minecraft/enchantment/EnchantmentDamage baseEnchantability F +FD net/minecraft/enchantment/EnchantmentDamage levelEnchantability G +FD net/minecraft/enchantment/EnchantmentDamage thresholdEnchantability H +FD net/minecraft/enchantment/EnchantmentDamage damageType a +FD net/minecraft/enchantment/Enchantment lure A +FD net/minecraft/enchantment/Enchantment effectId B +FD net/minecraft/enchantment/Enchantment type C +FD net/minecraft/enchantment/Enchantment name D +FD net/minecraft/enchantment/Enchantment locationEnchantments E +FD net/minecraft/enchantment/Enchantment weight F +FD net/minecraft/enchantment/Enchantment enchantmentsList a +FD net/minecraft/enchantment/Enchantment enchantmentsBookList b +FD net/minecraft/enchantment/Enchantment protection c +FD net/minecraft/enchantment/Enchantment fireProtection d +FD net/minecraft/enchantment/Enchantment featherFalling e +FD net/minecraft/enchantment/Enchantment blastProtection f +FD net/minecraft/enchantment/Enchantment projectileProtection g +FD net/minecraft/enchantment/Enchantment respiration h +FD net/minecraft/enchantment/Enchantment aquaAffinity i +FD net/minecraft/enchantment/Enchantment thorns j +FD net/minecraft/enchantment/Enchantment depthStrider k +FD net/minecraft/enchantment/Enchantment sharpness l +FD net/minecraft/enchantment/Enchantment smite m +FD net/minecraft/enchantment/Enchantment baneOfArthropods n +FD net/minecraft/enchantment/Enchantment knockback o +FD net/minecraft/enchantment/Enchantment fireAspect p +FD net/minecraft/enchantment/Enchantment looting q +FD net/minecraft/enchantment/Enchantment efficiency r +FD net/minecraft/enchantment/Enchantment silkTouch s +FD net/minecraft/enchantment/Enchantment unbreaking t +FD net/minecraft/enchantment/Enchantment fortune u +FD net/minecraft/enchantment/Enchantment power v +FD net/minecraft/enchantment/Enchantment punch w +FD net/minecraft/enchantment/Enchantment flame x +FD net/minecraft/enchantment/Enchantment infinity y +FD net/minecraft/enchantment/Enchantment luckOfTheSea z +FD net/minecraft/enchantment/EnumEnchantmentType ALL a +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR b +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_FEET c +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_LEGS d +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_TORSO e +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_HEAD f +FD net/minecraft/enchantment/EnumEnchantmentType WEAPON g +FD net/minecraft/enchantment/EnumEnchantmentType DIGGER h +FD net/minecraft/enchantment/EnumEnchantmentType FISHING_ROD i +FD net/minecraft/enchantment/EnumEnchantmentType BREAKABLE j +FD net/minecraft/enchantment/EnumEnchantmentType BOW k +FD net/minecraft/enchantment/EnumEnchantmentType $VALUES l +FD net/minecraft/enchantment/EnchantmentHelper enchantmentRand a +FD net/minecraft/enchantment/EnchantmentHelper enchantmentModifierDamage b +FD net/minecraft/enchantment/EnchantmentHelper enchantmentModifierLiving c +FD net/minecraft/enchantment/EnchantmentHelper ENCHANTMENT_ITERATOR_HURT d +FD net/minecraft/enchantment/EnchantmentHelper ENCHANTMENT_ITERATOR_DAMAGE e +FD net/minecraft/enchantment/EnchantmentHelper$DamageIterator user a +FD net/minecraft/enchantment/EnchantmentHelper$DamageIterator target b +FD net/minecraft/enchantment/EnchantmentHelper$HurtIterator user a +FD net/minecraft/enchantment/EnchantmentHelper$HurtIterator attacker b +FD net/minecraft/enchantment/EnchantmentHelper$ModifierLiving livingModifier a +FD net/minecraft/enchantment/EnchantmentHelper$ModifierLiving entityLiving b +FD net/minecraft/enchantment/EnchantmentHelper$ModifierDamage damageModifier a +FD net/minecraft/enchantment/EnchantmentHelper$ModifierDamage source b +FD net/minecraft/enchantment/EnchantmentData enchantmentobj b +FD net/minecraft/enchantment/EnchantmentData enchantmentLevel c +FD net/minecraft/enchantment/EnchantmentProtection protectionName E +FD net/minecraft/enchantment/EnchantmentProtection baseEnchantability F +FD net/minecraft/enchantment/EnchantmentProtection levelEnchantability G +FD net/minecraft/enchantment/EnchantmentProtection thresholdEnchantability H +FD net/minecraft/enchantment/EnchantmentProtection protectionType a +FD net/minecraft/village/MerchantRecipe itemToBuy a +FD net/minecraft/village/MerchantRecipe secondItemToBuy b +FD net/minecraft/village/MerchantRecipe itemToSell c +FD net/minecraft/village/MerchantRecipe toolUses d +FD net/minecraft/village/MerchantRecipe maxTradeUses e +FD net/minecraft/village/MerchantRecipe rewardsExp f +FD net/minecraft/command/server/CommandBlockLogic timestampFormat a +FD net/minecraft/command/server/CommandBlockLogic successCount b +FD net/minecraft/command/server/CommandBlockLogic trackOutput c +FD net/minecraft/command/server/CommandBlockLogic lastOutput d +FD net/minecraft/command/server/CommandBlockLogic commandStored e +FD net/minecraft/command/server/CommandBlockLogic customName f +FD net/minecraft/command/server/CommandBlockLogic resultStats g +FD net/minecraft/command/server/CommandBlockLogic$1 field_180325_a a +FD net/minecraft/command/server/CommandBlockLogic$2 field_180327_a a +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnDelay a +FD net/minecraft/tileentity/MobSpawnerBaseLogic mobID b +FD net/minecraft/tileentity/MobSpawnerBaseLogic minecartToSpawn c +FD net/minecraft/tileentity/MobSpawnerBaseLogic randomEntity d +FD net/minecraft/tileentity/MobSpawnerBaseLogic mobRotation e +FD net/minecraft/tileentity/MobSpawnerBaseLogic prevMobRotation f +FD net/minecraft/tileentity/MobSpawnerBaseLogic minSpawnDelay g +FD net/minecraft/tileentity/MobSpawnerBaseLogic maxSpawnDelay h +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnCount i +FD net/minecraft/tileentity/MobSpawnerBaseLogic cachedEntity j +FD net/minecraft/tileentity/MobSpawnerBaseLogic maxNearbyEntities k +FD net/minecraft/tileentity/MobSpawnerBaseLogic activatingRangeFromPlayer l +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnRange m +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart field_98221_d b +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart nbtData c +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart entityType d +FD net/minecraft/block/BlockEventData position a +FD net/minecraft/block/BlockEventData blockType b +FD net/minecraft/block/BlockEventData eventID c +FD net/minecraft/block/BlockEventData eventParameter d +FD net/minecraft/util/EnumWorldBlockLayer SOLID a +FD net/minecraft/util/EnumWorldBlockLayer CUTOUT_MIPPED b +FD net/minecraft/util/EnumWorldBlockLayer CUTOUT c +FD net/minecraft/util/EnumWorldBlockLayer TRANSLUCENT d +FD net/minecraft/util/EnumWorldBlockLayer layerName e +FD net/minecraft/util/EnumWorldBlockLayer $VALUES f +FD net/minecraft/world/ChunkCoordIntPair chunkXPos a +FD net/minecraft/world/ChunkCoordIntPair chunkZPos b +FD net/minecraft/world/Explosion isFlaming a +FD net/minecraft/world/Explosion isSmoking b +FD net/minecraft/world/Explosion explosionRNG c +FD net/minecraft/world/Explosion worldObj d +FD net/minecraft/world/Explosion explosionX e +FD net/minecraft/world/Explosion explosionY f +FD net/minecraft/world/Explosion explosionZ g +FD net/minecraft/world/Explosion exploder h +FD net/minecraft/world/Explosion explosionSize i +FD net/minecraft/world/Explosion affectedBlockPositions j +FD net/minecraft/world/Explosion playerKnockbackMap k +FD net/minecraft/world/ColorizerFoliage foliageBuffer a +FD net/minecraft/world/GameRules theGameRules a +FD net/minecraft/world/GameRules$Value valueString a +FD net/minecraft/world/GameRules$Value valueBoolean b +FD net/minecraft/world/GameRules$Value valueInteger c +FD net/minecraft/world/GameRules$Value valueDouble d +FD net/minecraft/world/GameRules$Value type e +FD net/minecraft/world/GameRules$ValueType ANY_VALUE a +FD net/minecraft/world/GameRules$ValueType BOOLEAN_VALUE b +FD net/minecraft/world/GameRules$ValueType NUMERICAL_VALUE c +FD net/minecraft/world/GameRules$ValueType $VALUES d +FD net/minecraft/world/ColorizerGrass grassBuffer a +FD net/minecraft/world/World villageCollectionObj A +FD net/minecraft/world/World theProfiler B +FD net/minecraft/world/World worldScoreboard C +FD net/minecraft/world/World isRemote D +FD net/minecraft/world/World activeChunkSet E +FD net/minecraft/world/World spawnHostileMobs F +FD net/minecraft/world/World spawnPeacefulMobs G +FD net/minecraft/world/World lightUpdateBlockList H +FD net/minecraft/world/World skylightSubtracted I +FD net/minecraft/world/World lastLightningBolt J +FD net/minecraft/world/World theCalendar K +FD net/minecraft/world/World ambientTickCountdown L +FD net/minecraft/world/World processingLoadedTiles M +FD net/minecraft/world/World worldBorder N +FD net/minecraft/world/World seaLevel a +FD net/minecraft/world/World addedTileEntityList b +FD net/minecraft/world/World tileEntitiesToBeRemoved c +FD net/minecraft/world/World cloudColour d +FD net/minecraft/world/World scheduledUpdatesAreImmediate e +FD net/minecraft/world/World loadedEntityList f +FD net/minecraft/world/World unloadedEntityList g +FD net/minecraft/world/World loadedTileEntityList h +FD net/minecraft/world/World tickableTileEntities i +FD net/minecraft/world/World playerEntities j +FD net/minecraft/world/World weatherEffects k +FD net/minecraft/world/World entitiesById l +FD net/minecraft/world/World updateLCG m +FD net/minecraft/world/World DIST_HASH_MAGIC n +FD net/minecraft/world/World prevRainingStrength o +FD net/minecraft/world/World rainingStrength p +FD net/minecraft/world/World prevThunderingStrength q +FD net/minecraft/world/World thunderingStrength r +FD net/minecraft/world/World rand s +FD net/minecraft/world/World provider t +FD net/minecraft/world/World worldAccesses u +FD net/minecraft/world/World chunkProvider v +FD net/minecraft/world/World saveHandler w +FD net/minecraft/world/World worldInfo x +FD net/minecraft/world/World findingSpawnPoint y +FD net/minecraft/world/World mapStorage z +FD net/minecraft/world/World$1 field_180253_a a +FD net/minecraft/world/World$1 field_77485_a b +FD net/minecraft/world/World$2 field_151300_a a +FD net/minecraft/world/World$2 field_77405_a b +FD net/minecraft/world/World$3 field_77440_a a +FD net/minecraft/world/World$4 field_151308_a a +FD net/minecraft/world/WorldSettings seed a +FD net/minecraft/world/WorldSettings theGameType b +FD net/minecraft/world/WorldSettings mapFeaturesEnabled c +FD net/minecraft/world/WorldSettings hardcoreEnabled d +FD net/minecraft/world/WorldSettings terrainType e +FD net/minecraft/world/WorldSettings commandsAllowed f +FD net/minecraft/world/WorldSettings bonusChestEnabled g +FD net/minecraft/world/WorldSettings worldName h +FD net/minecraft/world/WorldSettings$GameType NOT_SET a +FD net/minecraft/world/WorldSettings$GameType SURVIVAL b +FD net/minecraft/world/WorldSettings$GameType CREATIVE c +FD net/minecraft/world/WorldSettings$GameType ADVENTURE d +FD net/minecraft/world/WorldSettings$GameType SPECTATOR e +FD net/minecraft/world/WorldSettings$GameType id f +FD net/minecraft/world/WorldSettings$GameType name g +FD net/minecraft/world/WorldSettings$GameType $VALUES h +FD net/minecraft/world/WorldType worldTypes a +FD net/minecraft/world/WorldType DEFAULT b +FD net/minecraft/world/WorldType FLAT c +FD net/minecraft/world/WorldType LARGE_BIOMES d +FD net/minecraft/world/WorldType AMPLIFIED e +FD net/minecraft/world/WorldType CUSTOMIZED f +FD net/minecraft/world/WorldType DEBUG_WORLD g +FD net/minecraft/world/WorldType DEFAULT_1_1 h +FD net/minecraft/world/WorldType worldTypeId i +FD net/minecraft/world/WorldType worldType j +FD net/minecraft/world/WorldType generatorVersion k +FD net/minecraft/world/WorldType canBeCreated l +FD net/minecraft/world/WorldType isWorldTypeVersioned m +FD net/minecraft/world/WorldType hasNotificationData n +FD net/minecraft/world/EnumSkyBlock SKY a +FD net/minecraft/world/EnumSkyBlock BLOCK b +FD net/minecraft/world/EnumSkyBlock defaultLightValue c +FD net/minecraft/world/EnumSkyBlock $VALUES d +FD net/minecraft/world/SpawnerAnimals MOB_COUNT_DIV a +FD net/minecraft/world/SpawnerAnimals eligibleChunksForSpawning b +FD net/minecraft/world/Teleporter worldServerInstance a +FD net/minecraft/world/Teleporter random b +FD net/minecraft/world/Teleporter destinationCoordinateCache c +FD net/minecraft/world/Teleporter destinationCoordinateKeys d +FD net/minecraft/world/Teleporter$PortalPosition lastUpdateTime c +FD net/minecraft/world/Teleporter$PortalPosition field_85088_e d +FD net/minecraft/world/ChunkCache chunkX a +FD net/minecraft/world/ChunkCache chunkZ b +FD net/minecraft/world/ChunkCache chunkArray c +FD net/minecraft/world/ChunkCache hasExtendedLevels d +FD net/minecraft/world/ChunkCache worldObj e +FD net/minecraft/world/NextTickListEntry position a +FD net/minecraft/world/NextTickListEntry scheduledTime b +FD net/minecraft/world/NextTickListEntry priority c +FD net/minecraft/world/NextTickListEntry nextTickEntryID d +FD net/minecraft/world/NextTickListEntry block e +FD net/minecraft/world/NextTickListEntry tickEntryID f +FD net/minecraft/world/biome/BiomeGenBase frozenRiver A +FD net/minecraft/world/biome/BiomeGenBase icePlains B +FD net/minecraft/world/biome/BiomeGenBase iceMountains C +FD net/minecraft/world/biome/BiomeGenBase mushroomIsland D +FD net/minecraft/world/biome/BiomeGenBase mushroomIslandShore E +FD net/minecraft/world/biome/BiomeGenBase beach F +FD net/minecraft/world/biome/BiomeGenBase desertHills G +FD net/minecraft/world/biome/BiomeGenBase forestHills H +FD net/minecraft/world/biome/BiomeGenBase taigaHills I +FD net/minecraft/world/biome/BiomeGenBase extremeHillsEdge J +FD net/minecraft/world/biome/BiomeGenBase jungle K +FD net/minecraft/world/biome/BiomeGenBase jungleHills L +FD net/minecraft/world/biome/BiomeGenBase jungleEdge M +FD net/minecraft/world/biome/BiomeGenBase deepOcean N +FD net/minecraft/world/biome/BiomeGenBase stoneBeach O +FD net/minecraft/world/biome/BiomeGenBase coldBeach P +FD net/minecraft/world/biome/BiomeGenBase birchForest Q +FD net/minecraft/world/biome/BiomeGenBase birchForestHills R +FD net/minecraft/world/biome/BiomeGenBase roofedForest S +FD net/minecraft/world/biome/BiomeGenBase coldTaiga T +FD net/minecraft/world/biome/BiomeGenBase coldTaigaHills U +FD net/minecraft/world/biome/BiomeGenBase megaTaiga V +FD net/minecraft/world/biome/BiomeGenBase megaTaigaHills W +FD net/minecraft/world/biome/BiomeGenBase extremeHillsPlus X +FD net/minecraft/world/biome/BiomeGenBase savanna Y +FD net/minecraft/world/biome/BiomeGenBase savannaPlateau Z +FD net/minecraft/world/biome/BiomeGenBase height_Default a +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorTrees aA +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorBigTree aB +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorSwamp aC +FD net/minecraft/world/biome/BiomeGenBase logger aD +FD net/minecraft/world/biome/BiomeGenBase biomeList aE +FD net/minecraft/world/biome/BiomeGenBase mesa aa +FD net/minecraft/world/biome/BiomeGenBase mesaPlateau_F ab +FD net/minecraft/world/biome/BiomeGenBase mesaPlateau ac +FD net/minecraft/world/biome/BiomeGenBase field_180279_ad ad +FD net/minecraft/world/biome/BiomeGenBase temperatureNoise ae +FD net/minecraft/world/biome/BiomeGenBase GRASS_COLOR_NOISE af +FD net/minecraft/world/biome/BiomeGenBase DOUBLE_PLANT_GENERATOR ag +FD net/minecraft/world/biome/BiomeGenBase biomeName ah +FD net/minecraft/world/biome/BiomeGenBase color ai +FD net/minecraft/world/biome/BiomeGenBase field_150609_ah aj +FD net/minecraft/world/biome/BiomeGenBase topBlock ak +FD net/minecraft/world/biome/BiomeGenBase fillerBlock al +FD net/minecraft/world/biome/BiomeGenBase fillerBlockMetadata am +FD net/minecraft/world/biome/BiomeGenBase minHeight an +FD net/minecraft/world/biome/BiomeGenBase maxHeight ao +FD net/minecraft/world/biome/BiomeGenBase temperature ap +FD net/minecraft/world/biome/BiomeGenBase rainfall aq +FD net/minecraft/world/biome/BiomeGenBase waterColorMultiplier ar +FD net/minecraft/world/biome/BiomeGenBase theBiomeDecorator as +FD net/minecraft/world/biome/BiomeGenBase spawnableMonsterList at +FD net/minecraft/world/biome/BiomeGenBase spawnableCreatureList au +FD net/minecraft/world/biome/BiomeGenBase spawnableWaterCreatureList av +FD net/minecraft/world/biome/BiomeGenBase spawnableCaveCreatureList aw +FD net/minecraft/world/biome/BiomeGenBase enableSnow ax +FD net/minecraft/world/biome/BiomeGenBase enableRain ay +FD net/minecraft/world/biome/BiomeGenBase biomeID az +FD net/minecraft/world/biome/BiomeGenBase height_ShallowWaters b +FD net/minecraft/world/biome/BiomeGenBase height_Oceans c +FD net/minecraft/world/biome/BiomeGenBase height_DeepOceans d +FD net/minecraft/world/biome/BiomeGenBase height_LowPlains e +FD net/minecraft/world/biome/BiomeGenBase height_MidPlains f +FD net/minecraft/world/biome/BiomeGenBase height_LowHills g +FD net/minecraft/world/biome/BiomeGenBase height_HighPlateaus h +FD net/minecraft/world/biome/BiomeGenBase height_MidHills i +FD net/minecraft/world/biome/BiomeGenBase height_Shores j +FD net/minecraft/world/biome/BiomeGenBase height_RockyWaters k +FD net/minecraft/world/biome/BiomeGenBase height_LowIslands l +FD net/minecraft/world/biome/BiomeGenBase height_PartiallySubmerged m +FD net/minecraft/world/biome/BiomeGenBase explorationBiomesList n +FD net/minecraft/world/biome/BiomeGenBase BIOME_ID_MAP o +FD net/minecraft/world/biome/BiomeGenBase ocean p +FD net/minecraft/world/biome/BiomeGenBase plains q +FD net/minecraft/world/biome/BiomeGenBase desert r +FD net/minecraft/world/biome/BiomeGenBase extremeHills s +FD net/minecraft/world/biome/BiomeGenBase forest t +FD net/minecraft/world/biome/BiomeGenBase taiga u +FD net/minecraft/world/biome/BiomeGenBase swampland v +FD net/minecraft/world/biome/BiomeGenBase river w +FD net/minecraft/world/biome/BiomeGenBase hell x +FD net/minecraft/world/biome/BiomeGenBase sky y +FD net/minecraft/world/biome/BiomeGenBase frozenOcean z +FD net/minecraft/world/biome/BiomeGenBase$1 field_180275_a a +FD net/minecraft/world/biome/BiomeGenBase$Height rootHeight a +FD net/minecraft/world/biome/BiomeGenBase$Height variation b +FD net/minecraft/world/biome/BiomeGenBase$TempCategory OCEAN a +FD net/minecraft/world/biome/BiomeGenBase$TempCategory COLD b +FD net/minecraft/world/biome/BiomeGenBase$TempCategory MEDIUM c +FD net/minecraft/world/biome/BiomeGenBase$TempCategory WARM d +FD net/minecraft/world/biome/BiomeGenBase$TempCategory $VALUES e +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry entityClass b +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry minGroupCount c +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry maxGroupCount d +FD net/minecraft/world/biome/BiomeCache chunkManager a +FD net/minecraft/world/biome/BiomeCache lastCleanupTime b +FD net/minecraft/world/biome/BiomeCache cacheMap c +FD net/minecraft/world/biome/BiomeCache cache d +FD net/minecraft/world/biome/BiomeCache$Block rainfallValues a +FD net/minecraft/world/biome/BiomeCache$Block biomes b +FD net/minecraft/world/biome/BiomeCache$Block xPosition c +FD net/minecraft/world/biome/BiomeCache$Block zPosition d +FD net/minecraft/world/biome/BiomeCache$Block lastAccessTime e +FD net/minecraft/world/biome/BiomeCache$Block field_76887_g f +FD net/minecraft/world/biome/BiomeColorHelper GRASS_COLOR a +FD net/minecraft/world/biome/BiomeColorHelper FOLIAGE_COLOR b +FD net/minecraft/world/biome/BiomeColorHelper WATER_COLOR_MULTIPLIER c +FD net/minecraft/world/biome/BiomeDecorator treesPerChunk A +FD net/minecraft/world/biome/BiomeDecorator flowersPerChunk B +FD net/minecraft/world/biome/BiomeDecorator grassPerChunk C +FD net/minecraft/world/biome/BiomeDecorator deadBushPerChunk D +FD net/minecraft/world/biome/BiomeDecorator mushroomsPerChunk E +FD net/minecraft/world/biome/BiomeDecorator reedsPerChunk F +FD net/minecraft/world/biome/BiomeDecorator cactiPerChunk G +FD net/minecraft/world/biome/BiomeDecorator sandPerChunk H +FD net/minecraft/world/biome/BiomeDecorator sandPerChunk2 I +FD net/minecraft/world/biome/BiomeDecorator clayPerChunk J +FD net/minecraft/world/biome/BiomeDecorator bigMushroomsPerChunk K +FD net/minecraft/world/biome/BiomeDecorator generateLakes L +FD net/minecraft/world/biome/BiomeDecorator currentWorld a +FD net/minecraft/world/biome/BiomeDecorator randomGenerator b +FD net/minecraft/world/biome/BiomeDecorator field_180294_c c +FD net/minecraft/world/biome/BiomeDecorator chunkProviderSettings d +FD net/minecraft/world/biome/BiomeDecorator clayGen e +FD net/minecraft/world/biome/BiomeDecorator sandGen f +FD net/minecraft/world/biome/BiomeDecorator gravelAsSandGen g +FD net/minecraft/world/biome/BiomeDecorator dirtGen h +FD net/minecraft/world/biome/BiomeDecorator gravelGen i +FD net/minecraft/world/biome/BiomeDecorator graniteGen j +FD net/minecraft/world/biome/BiomeDecorator dioriteGen k +FD net/minecraft/world/biome/BiomeDecorator andesiteGen l +FD net/minecraft/world/biome/BiomeDecorator coalGen m +FD net/minecraft/world/biome/BiomeDecorator ironGen n +FD net/minecraft/world/biome/BiomeDecorator goldGen o +FD net/minecraft/world/biome/BiomeDecorator redstoneGen p +FD net/minecraft/world/biome/BiomeDecorator diamondGen q +FD net/minecraft/world/biome/BiomeDecorator lapisGen r +FD net/minecraft/world/biome/BiomeDecorator yellowFlowerGen s +FD net/minecraft/world/biome/BiomeDecorator mushroomBrownGen t +FD net/minecraft/world/biome/BiomeDecorator mushroomRedGen u +FD net/minecraft/world/biome/BiomeDecorator bigMushroomGen v +FD net/minecraft/world/biome/BiomeDecorator reedGen w +FD net/minecraft/world/biome/BiomeDecorator cactusGen x +FD net/minecraft/world/biome/BiomeDecorator waterlilyGen y +FD net/minecraft/world/biome/BiomeDecorator waterlilyPerChunk z +FD net/minecraft/world/biome/WorldChunkManager genBiomes b +FD net/minecraft/world/biome/WorldChunkManager biomeIndexLayer c +FD net/minecraft/world/biome/WorldChunkManager biomeCache d +FD net/minecraft/world/biome/WorldChunkManager biomesToSpawnIn e +FD net/minecraft/world/biome/WorldChunkManager generatorOptions f +FD net/minecraft/world/biome/BiomeGenHills theWorldGenerator aD +FD net/minecraft/world/biome/BiomeGenHills field_150634_aD aE +FD net/minecraft/world/biome/BiomeGenHills field_150635_aE aF +FD net/minecraft/world/biome/BiomeGenHills field_150636_aF aG +FD net/minecraft/world/biome/BiomeGenHills field_150637_aG aH +FD net/minecraft/world/biome/BiomeGenHills field_150638_aH aI +FD net/minecraft/world/biome/WorldChunkManagerHell biomeGenerator b +FD net/minecraft/world/biome/WorldChunkManagerHell rainfall c +FD net/minecraft/world/biome/BiomeGenForest field_150629_aC aD +FD net/minecraft/world/biome/BiomeGenForest field_150630_aD aE +FD net/minecraft/world/biome/BiomeGenForest field_150631_aE aF +FD net/minecraft/world/biome/BiomeGenForest field_150632_aF aG +FD net/minecraft/world/biome/BiomeGenForest$2 field_150612_aC aD +FD net/minecraft/world/biome/BiomeGenForest$1 field_150613_aC aD +FD net/minecraft/world/biome/BiomeGenSnow field_150615_aC aD +FD net/minecraft/world/biome/BiomeGenSnow field_150616_aD aE +FD net/minecraft/world/biome/BiomeGenSnow field_150617_aE aF +FD net/minecraft/world/biome/BiomeGenJungle field_150614_aC aD +FD net/minecraft/world/biome/BiomeGenJungle field_181620_aE aE +FD net/minecraft/world/biome/BiomeGenJungle field_181621_aF aF +FD net/minecraft/world/biome/BiomeGenJungle field_181622_aG aG +FD net/minecraft/world/biome/BiomeGenMesa field_150621_aC aD +FD net/minecraft/world/biome/BiomeGenMesa field_150622_aD aE +FD net/minecraft/world/biome/BiomeGenMesa field_150623_aE aF +FD net/minecraft/world/biome/BiomeGenMesa field_150624_aF aG +FD net/minecraft/world/biome/BiomeGenMesa field_150625_aG aH +FD net/minecraft/world/biome/BiomeGenMesa field_150626_aH aI +FD net/minecraft/world/biome/BiomeGenMesa field_150620_aI aJ +FD net/minecraft/world/biome/BiomeGenMutated baseBiome aE +FD net/minecraft/world/biome/BiomeGenPlains field_150628_aC aD +FD net/minecraft/world/biome/BiomeGenSavanna field_150627_aC aD +FD net/minecraft/world/biome/BiomeGenTaiga field_150639_aC aD +FD net/minecraft/world/biome/BiomeGenTaiga field_150640_aD aE +FD net/minecraft/world/biome/BiomeGenTaiga field_150641_aE aF +FD net/minecraft/world/biome/BiomeGenTaiga field_150642_aF aG +FD net/minecraft/world/biome/BiomeGenTaiga field_150643_aG aH +FD net/minecraft/world/biome/BiomeGenTaiga field_150644_aH aI +FD net/minecraft/world/biome/BiomeEndDecorator spikeGen M +FD net/minecraft/block/BlockAnvil FACING a +FD net/minecraft/block/BlockAnvil DAMAGE b +FD net/minecraft/block/BlockAnvil$Anvil world a +FD net/minecraft/block/BlockAnvil$Anvil position b +FD net/minecraft/block/BlockBanner FACING a +FD net/minecraft/block/BlockBanner ROTATION b +FD net/minecraft/block/BlockBanner$1 field_180370_a a +FD net/minecraft/block/BlockRailBase isPowered a +FD net/minecraft/block/BlockRailBase$1 field_180371_a a +FD net/minecraft/block/BlockRailBase$Rail field_150662_a a +FD net/minecraft/block/BlockRailBase$Rail world b +FD net/minecraft/block/BlockRailBase$Rail pos c +FD net/minecraft/block/BlockRailBase$Rail block d +FD net/minecraft/block/BlockRailBase$Rail state e +FD net/minecraft/block/BlockRailBase$Rail isPowered f +FD net/minecraft/block/BlockRailBase$Rail field_150657_g g +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_SOUTH a +FD net/minecraft/block/BlockRailBase$EnumRailDirection EAST_WEST b +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_EAST c +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_WEST d +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_NORTH e +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_SOUTH f +FD net/minecraft/block/BlockRailBase$EnumRailDirection SOUTH_EAST g +FD net/minecraft/block/BlockRailBase$EnumRailDirection SOUTH_WEST h +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_WEST i +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_EAST j +FD net/minecraft/block/BlockRailBase$EnumRailDirection META_LOOKUP k +FD net/minecraft/block/BlockRailBase$EnumRailDirection meta l +FD net/minecraft/block/BlockRailBase$EnumRailDirection name m +FD net/minecraft/block/BlockRailBase$EnumRailDirection $VALUES n +FD net/minecraft/block/BlockBeacon$1 field_180358_a a +FD net/minecraft/block/BlockBeacon$1 field_180357_b b +FD net/minecraft/block/BlockBeacon$1$1 field_180369_a a +FD net/minecraft/block/BlockBeacon$1$1 field_180368_b b +FD net/minecraft/block/BlockBed PART a +FD net/minecraft/block/BlockBed OCCUPIED b +FD net/minecraft/block/BlockBed$EnumPartType HEAD a +FD net/minecraft/block/BlockBed$EnumPartType FOOT b +FD net/minecraft/block/BlockBed$EnumPartType name c +FD net/minecraft/block/BlockBed$EnumPartType $VALUES d +FD net/minecraft/block/Block isBlockContainer A +FD net/minecraft/block/Block minX B +FD net/minecraft/block/Block minY C +FD net/minecraft/block/Block minZ D +FD net/minecraft/block/Block maxX E +FD net/minecraft/block/Block maxY F +FD net/minecraft/block/Block maxZ G +FD net/minecraft/block/Block stepSound H +FD net/minecraft/block/Block blockParticleGravity I +FD net/minecraft/block/Block blockMaterial J +FD net/minecraft/block/Block blockMapColor K +FD net/minecraft/block/Block slipperiness L +FD net/minecraft/block/Block blockState M +FD net/minecraft/block/Block defaultBlockState N +FD net/minecraft/block/Block unlocalizedName O +FD net/minecraft/block/Block AIR_ID a +FD net/minecraft/block/Block displayOnCreativeTab b +FD net/minecraft/block/Block blockRegistry c +FD net/minecraft/block/Block BLOCK_STATE_IDS d +FD net/minecraft/block/Block soundTypeStone e +FD net/minecraft/block/Block soundTypeWood f +FD net/minecraft/block/Block soundTypeGravel g +FD net/minecraft/block/Block soundTypeGrass h +FD net/minecraft/block/Block soundTypePiston i +FD net/minecraft/block/Block soundTypeMetal j +FD net/minecraft/block/Block soundTypeGlass k +FD net/minecraft/block/Block soundTypeCloth l +FD net/minecraft/block/Block soundTypeSand m +FD net/minecraft/block/Block soundTypeSnow n +FD net/minecraft/block/Block soundTypeLadder o +FD net/minecraft/block/Block soundTypeAnvil p +FD net/minecraft/block/Block SLIME_SOUND q +FD net/minecraft/block/Block fullBlock r +FD net/minecraft/block/Block lightOpacity s +FD net/minecraft/block/Block translucent t +FD net/minecraft/block/Block lightValue u +FD net/minecraft/block/Block useNeighborBrightness v +FD net/minecraft/block/Block blockHardness w +FD net/minecraft/block/Block blockResistance x +FD net/minecraft/block/Block enableStats y +FD net/minecraft/block/Block needsRandomTick z +FD net/minecraft/block/Block$EnumOffsetType NONE a +FD net/minecraft/block/Block$EnumOffsetType XZ b +FD net/minecraft/block/Block$EnumOffsetType XYZ c +FD net/minecraft/block/Block$EnumOffsetType $VALUES d +FD net/minecraft/block/Block$SoundType soundName a +FD net/minecraft/block/Block$SoundType volume b +FD net/minecraft/block/Block$SoundType frequency c +FD net/minecraft/init/Blocks sandstone A +FD net/minecraft/init/Blocks noteblock B +FD net/minecraft/init/Blocks bed C +FD net/minecraft/init/Blocks golden_rail D +FD net/minecraft/init/Blocks detector_rail E +FD net/minecraft/init/Blocks sticky_piston F +FD net/minecraft/init/Blocks web G +FD net/minecraft/init/Blocks tallgrass H +FD net/minecraft/init/Blocks deadbush I +FD net/minecraft/init/Blocks piston J +FD net/minecraft/init/Blocks piston_head K +FD net/minecraft/init/Blocks wool L +FD net/minecraft/init/Blocks piston_extension M +FD net/minecraft/init/Blocks yellow_flower N +FD net/minecraft/init/Blocks red_flower O +FD net/minecraft/init/Blocks brown_mushroom P +FD net/minecraft/init/Blocks red_mushroom Q +FD net/minecraft/init/Blocks gold_block R +FD net/minecraft/init/Blocks iron_block S +FD net/minecraft/init/Blocks double_stone_slab T +FD net/minecraft/init/Blocks stone_slab U +FD net/minecraft/init/Blocks brick_block V +FD net/minecraft/init/Blocks tnt W +FD net/minecraft/init/Blocks bookshelf X +FD net/minecraft/init/Blocks mossy_cobblestone Y +FD net/minecraft/init/Blocks obsidian Z +FD net/minecraft/init/Blocks air a +FD net/minecraft/init/Blocks iron_door aA +FD net/minecraft/init/Blocks wooden_pressure_plate aB +FD net/minecraft/init/Blocks redstone_ore aC +FD net/minecraft/init/Blocks lit_redstone_ore aD +FD net/minecraft/init/Blocks unlit_redstone_torch aE +FD net/minecraft/init/Blocks redstone_torch aF +FD net/minecraft/init/Blocks stone_button aG +FD net/minecraft/init/Blocks snow_layer aH +FD net/minecraft/init/Blocks ice aI +FD net/minecraft/init/Blocks snow aJ +FD net/minecraft/init/Blocks cactus aK +FD net/minecraft/init/Blocks clay aL +FD net/minecraft/init/Blocks reeds aM +FD net/minecraft/init/Blocks jukebox aN +FD net/minecraft/init/Blocks oak_fence aO +FD net/minecraft/init/Blocks spruce_fence aP +FD net/minecraft/init/Blocks birch_fence aQ +FD net/minecraft/init/Blocks jungle_fence aR +FD net/minecraft/init/Blocks dark_oak_fence aS +FD net/minecraft/init/Blocks acacia_fence aT +FD net/minecraft/init/Blocks pumpkin aU +FD net/minecraft/init/Blocks netherrack aV +FD net/minecraft/init/Blocks soul_sand aW +FD net/minecraft/init/Blocks glowstone aX +FD net/minecraft/init/Blocks portal aY +FD net/minecraft/init/Blocks lit_pumpkin aZ +FD net/minecraft/init/Blocks torch aa +FD net/minecraft/init/Blocks fire ab +FD net/minecraft/init/Blocks mob_spawner ac +FD net/minecraft/init/Blocks oak_stairs ad +FD net/minecraft/init/Blocks chest ae +FD net/minecraft/init/Blocks redstone_wire af +FD net/minecraft/init/Blocks diamond_ore ag +FD net/minecraft/init/Blocks diamond_block ah +FD net/minecraft/init/Blocks crafting_table ai +FD net/minecraft/init/Blocks wheat aj +FD net/minecraft/init/Blocks farmland ak +FD net/minecraft/init/Blocks furnace al +FD net/minecraft/init/Blocks lit_furnace am +FD net/minecraft/init/Blocks standing_sign an +FD net/minecraft/init/Blocks oak_door ao +FD net/minecraft/init/Blocks spruce_door ap +FD net/minecraft/init/Blocks birch_door aq +FD net/minecraft/init/Blocks jungle_door ar +FD net/minecraft/init/Blocks acacia_door as +FD net/minecraft/init/Blocks dark_oak_door at +FD net/minecraft/init/Blocks ladder au +FD net/minecraft/init/Blocks rail av +FD net/minecraft/init/Blocks stone_stairs aw +FD net/minecraft/init/Blocks wall_sign ax +FD net/minecraft/init/Blocks lever ay +FD net/minecraft/init/Blocks stone_pressure_plate az +FD net/minecraft/init/Blocks stone b +FD net/minecraft/init/Blocks nether_brick_stairs bA +FD net/minecraft/init/Blocks nether_wart bB +FD net/minecraft/init/Blocks enchanting_table bC +FD net/minecraft/init/Blocks brewing_stand bD +FD net/minecraft/init/Blocks cauldron bE +FD net/minecraft/init/Blocks end_portal bF +FD net/minecraft/init/Blocks end_portal_frame bG +FD net/minecraft/init/Blocks end_stone bH +FD net/minecraft/init/Blocks dragon_egg bI +FD net/minecraft/init/Blocks redstone_lamp bJ +FD net/minecraft/init/Blocks lit_redstone_lamp bK +FD net/minecraft/init/Blocks double_wooden_slab bL +FD net/minecraft/init/Blocks wooden_slab bM +FD net/minecraft/init/Blocks cocoa bN +FD net/minecraft/init/Blocks sandstone_stairs bO +FD net/minecraft/init/Blocks emerald_ore bP +FD net/minecraft/init/Blocks ender_chest bQ +FD net/minecraft/init/Blocks tripwire_hook bR +FD net/minecraft/init/Blocks tripwire bS +FD net/minecraft/init/Blocks emerald_block bT +FD net/minecraft/init/Blocks spruce_stairs bU +FD net/minecraft/init/Blocks birch_stairs bV +FD net/minecraft/init/Blocks jungle_stairs bW +FD net/minecraft/init/Blocks command_block bX +FD net/minecraft/init/Blocks beacon bY +FD net/minecraft/init/Blocks cobblestone_wall bZ +FD net/minecraft/init/Blocks cake ba +FD net/minecraft/init/Blocks unpowered_repeater bb +FD net/minecraft/init/Blocks powered_repeater bc +FD net/minecraft/init/Blocks trapdoor bd +FD net/minecraft/init/Blocks monster_egg be +FD net/minecraft/init/Blocks stonebrick bf +FD net/minecraft/init/Blocks brown_mushroom_block bg +FD net/minecraft/init/Blocks red_mushroom_block bh +FD net/minecraft/init/Blocks iron_bars bi +FD net/minecraft/init/Blocks glass_pane bj +FD net/minecraft/init/Blocks melon_block bk +FD net/minecraft/init/Blocks pumpkin_stem bl +FD net/minecraft/init/Blocks melon_stem bm +FD net/minecraft/init/Blocks vine bn +FD net/minecraft/init/Blocks oak_fence_gate bo +FD net/minecraft/init/Blocks spruce_fence_gate bp +FD net/minecraft/init/Blocks birch_fence_gate bq +FD net/minecraft/init/Blocks jungle_fence_gate br +FD net/minecraft/init/Blocks dark_oak_fence_gate bs +FD net/minecraft/init/Blocks acacia_fence_gate bt +FD net/minecraft/init/Blocks brick_stairs bu +FD net/minecraft/init/Blocks stone_brick_stairs bv +FD net/minecraft/init/Blocks mycelium bw +FD net/minecraft/init/Blocks waterlily bx +FD net/minecraft/init/Blocks nether_brick by +FD net/minecraft/init/Blocks nether_brick_fence bz +FD net/minecraft/init/Blocks grass c +FD net/minecraft/init/Blocks coal_block cA +FD net/minecraft/init/Blocks packed_ice cB +FD net/minecraft/init/Blocks acacia_stairs cC +FD net/minecraft/init/Blocks dark_oak_stairs cD +FD net/minecraft/init/Blocks slime_block cE +FD net/minecraft/init/Blocks double_plant cF +FD net/minecraft/init/Blocks stained_glass cG +FD net/minecraft/init/Blocks stained_glass_pane cH +FD net/minecraft/init/Blocks prismarine cI +FD net/minecraft/init/Blocks sea_lantern cJ +FD net/minecraft/init/Blocks standing_banner cK +FD net/minecraft/init/Blocks wall_banner cL +FD net/minecraft/init/Blocks red_sandstone cM +FD net/minecraft/init/Blocks red_sandstone_stairs cN +FD net/minecraft/init/Blocks double_stone_slab2 cO +FD net/minecraft/init/Blocks stone_slab2 cP +FD net/minecraft/init/Blocks flower_pot ca +FD net/minecraft/init/Blocks carrots cb +FD net/minecraft/init/Blocks potatoes cc +FD net/minecraft/init/Blocks wooden_button cd +FD net/minecraft/init/Blocks skull ce +FD net/minecraft/init/Blocks anvil cf +FD net/minecraft/init/Blocks trapped_chest cg +FD net/minecraft/init/Blocks light_weighted_pressure_plate ch +FD net/minecraft/init/Blocks heavy_weighted_pressure_plate ci +FD net/minecraft/init/Blocks unpowered_comparator cj +FD net/minecraft/init/Blocks powered_comparator ck +FD net/minecraft/init/Blocks daylight_detector cl +FD net/minecraft/init/Blocks daylight_detector_inverted cm +FD net/minecraft/init/Blocks redstone_block cn +FD net/minecraft/init/Blocks quartz_ore co +FD net/minecraft/init/Blocks hopper cp +FD net/minecraft/init/Blocks quartz_block cq +FD net/minecraft/init/Blocks quartz_stairs cr +FD net/minecraft/init/Blocks activator_rail cs +FD net/minecraft/init/Blocks dropper ct +FD net/minecraft/init/Blocks stained_hardened_clay cu +FD net/minecraft/init/Blocks barrier cv +FD net/minecraft/init/Blocks iron_trapdoor cw +FD net/minecraft/init/Blocks hay_block cx +FD net/minecraft/init/Blocks carpet cy +FD net/minecraft/init/Blocks hardened_clay cz +FD net/minecraft/init/Blocks dirt d +FD net/minecraft/init/Blocks cobblestone e +FD net/minecraft/init/Blocks planks f +FD net/minecraft/init/Blocks sapling g +FD net/minecraft/init/Blocks bedrock h +FD net/minecraft/init/Blocks flowing_water i +FD net/minecraft/init/Blocks water j +FD net/minecraft/init/Blocks flowing_lava k +FD net/minecraft/init/Blocks lava l +FD net/minecraft/init/Blocks sand m +FD net/minecraft/init/Blocks gravel n +FD net/minecraft/init/Blocks gold_ore o +FD net/minecraft/init/Blocks iron_ore p +FD net/minecraft/init/Blocks coal_ore q +FD net/minecraft/init/Blocks log r +FD net/minecraft/init/Blocks log2 s +FD net/minecraft/init/Blocks leaves t +FD net/minecraft/init/Blocks leaves2 u +FD net/minecraft/init/Blocks sponge v +FD net/minecraft/init/Blocks glass w +FD net/minecraft/init/Blocks lapis_ore x +FD net/minecraft/init/Blocks lapis_block y +FD net/minecraft/init/Blocks dispenser z +FD net/minecraft/block/BlockBrewingStand HAS_BOTTLE a +FD net/minecraft/block/BlockButton wooden N +FD net/minecraft/block/BlockButton FACING a +FD net/minecraft/block/BlockButton POWERED b +FD net/minecraft/block/BlockButton$1 field_180420_a a +FD net/minecraft/block/BlockCactus AGE a +FD net/minecraft/block/BlockCake BITES a +FD net/minecraft/block/BlockCauldron LEVEL a +FD net/minecraft/block/BlockChest FACING a +FD net/minecraft/block/BlockChest chestType b +FD net/minecraft/block/BlockCocoa AGE a +FD net/minecraft/block/BlockCocoa$1 field_180415_a a +FD net/minecraft/block/BlockColored COLOR a +FD net/minecraft/block/BlockCommandBlock TRIGGERED a +FD net/minecraft/block/BlockRedstoneComparator POWERED a +FD net/minecraft/block/BlockRedstoneComparator MODE b +FD net/minecraft/block/BlockRedstoneComparator$1 field_180418_a a +FD net/minecraft/block/BlockRedstoneComparator$1 field_180417_b b +FD net/minecraft/block/BlockRedstoneComparator$Mode COMPARE a +FD net/minecraft/block/BlockRedstoneComparator$Mode SUBTRACT b +FD net/minecraft/block/BlockRedstoneComparator$Mode name c +FD net/minecraft/block/BlockRedstoneComparator$Mode $VALUES d +FD net/minecraft/block/BlockWorkbench$InterfaceCraftingTable world a +FD net/minecraft/block/BlockWorkbench$InterfaceCraftingTable position b +FD net/minecraft/block/BlockCrops AGE a +FD net/minecraft/block/BlockDaylightDetector POWER a +FD net/minecraft/block/BlockDaylightDetector inverted b +FD net/minecraft/block/BlockRailDetector POWERED N +FD net/minecraft/block/BlockRailDetector SHAPE b +FD net/minecraft/block/BlockRedstoneDiode isRepeaterPowered N +FD net/minecraft/block/BlockDirectional FACING O +FD net/minecraft/block/BlockDirt VARIANT a +FD net/minecraft/block/BlockDirt SNOWY b +FD net/minecraft/block/BlockDirt$DirtType DIRT a +FD net/minecraft/block/BlockDirt$DirtType COARSE_DIRT b +FD net/minecraft/block/BlockDirt$DirtType PODZOL c +FD net/minecraft/block/BlockDirt$DirtType METADATA_LOOKUP d +FD net/minecraft/block/BlockDirt$DirtType metadata e +FD net/minecraft/block/BlockDirt$DirtType name f +FD net/minecraft/block/BlockDirt$DirtType unlocalizedName g +FD net/minecraft/block/BlockDirt$DirtType field_181067_h h +FD net/minecraft/block/BlockDirt$DirtType $VALUES i +FD net/minecraft/block/BlockDispenser dispenseBehaviorRegistry N +FD net/minecraft/block/BlockDispenser rand O +FD net/minecraft/block/BlockDispenser FACING a +FD net/minecraft/block/BlockDispenser TRIGGERED b +FD net/minecraft/block/BlockDoor HINGE N +FD net/minecraft/block/BlockDoor POWERED O +FD net/minecraft/block/BlockDoor HALF P +FD net/minecraft/block/BlockDoor FACING a +FD net/minecraft/block/BlockDoor OPEN b +FD net/minecraft/block/BlockDoor$EnumDoorHalf UPPER a +FD net/minecraft/block/BlockDoor$EnumDoorHalf LOWER b +FD net/minecraft/block/BlockDoor$EnumDoorHalf $VALUES c +FD net/minecraft/block/BlockDoor$EnumHingePosition LEFT a +FD net/minecraft/block/BlockDoor$EnumHingePosition RIGHT b +FD net/minecraft/block/BlockDoor$EnumHingePosition $VALUES c +FD net/minecraft/block/BlockDoublePlant FACING N +FD net/minecraft/block/BlockDoublePlant VARIANT a +FD net/minecraft/block/BlockDoublePlant HALF b +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf UPPER a +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf LOWER b +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf $VALUES c +FD net/minecraft/block/BlockDoublePlant$EnumPlantType SUNFLOWER a +FD net/minecraft/block/BlockDoublePlant$EnumPlantType SYRINGA b +FD net/minecraft/block/BlockDoublePlant$EnumPlantType GRASS c +FD net/minecraft/block/BlockDoublePlant$EnumPlantType FERN d +FD net/minecraft/block/BlockDoublePlant$EnumPlantType ROSE e +FD net/minecraft/block/BlockDoublePlant$EnumPlantType PAEONIA f +FD net/minecraft/block/BlockDoublePlant$EnumPlantType META_LOOKUP g +FD net/minecraft/block/BlockDoublePlant$EnumPlantType meta h +FD net/minecraft/block/BlockDoublePlant$EnumPlantType name i +FD net/minecraft/block/BlockDoublePlant$EnumPlantType unlocalizedName j +FD net/minecraft/block/BlockDoublePlant$EnumPlantType $VALUES k +FD net/minecraft/block/BlockDropper dropBehavior P +FD net/minecraft/block/BlockDynamicLiquid adjacentSourceBlocks a +FD net/minecraft/block/BlockEndPortalFrame FACING a +FD net/minecraft/block/BlockEndPortalFrame EYE b +FD net/minecraft/block/BlockEnderChest FACING a +FD net/minecraft/block/BlockFalling fallInstantly N +FD net/minecraft/block/BlockFarmland MOISTURE a +FD net/minecraft/block/BlockFarmland$1 field_181625_a a +FD net/minecraft/block/BlockFence SOUTH N +FD net/minecraft/block/BlockFence WEST O +FD net/minecraft/block/BlockFence NORTH a +FD net/minecraft/block/BlockFence EAST b +FD net/minecraft/block/BlockFenceGate IN_WALL N +FD net/minecraft/block/BlockFenceGate OPEN a +FD net/minecraft/block/BlockFenceGate POWERED b +FD net/minecraft/block/BlockFire ALT N +FD net/minecraft/block/BlockFire NORTH O +FD net/minecraft/block/BlockFire EAST P +FD net/minecraft/block/BlockFire SOUTH Q +FD net/minecraft/block/BlockFire WEST R +FD net/minecraft/block/BlockFire UPPER S +FD net/minecraft/block/BlockFire encouragements T +FD net/minecraft/block/BlockFire flammabilities U +FD net/minecraft/block/BlockFire AGE a +FD net/minecraft/block/BlockFire FLIP b +FD net/minecraft/block/BlockFlower type a +FD net/minecraft/block/BlockFlower$1 field_180355_a a +FD net/minecraft/block/BlockFlower$EnumFlowerType DANDELION a +FD net/minecraft/block/BlockFlower$EnumFlowerType POPPY b +FD net/minecraft/block/BlockFlower$EnumFlowerType BLUE_ORCHID c +FD net/minecraft/block/BlockFlower$EnumFlowerType ALLIUM d +FD net/minecraft/block/BlockFlower$EnumFlowerType HOUSTONIA e +FD net/minecraft/block/BlockFlower$EnumFlowerType RED_TULIP f +FD net/minecraft/block/BlockFlower$EnumFlowerType ORANGE_TULIP g +FD net/minecraft/block/BlockFlower$EnumFlowerType WHITE_TULIP h +FD net/minecraft/block/BlockFlower$EnumFlowerType PINK_TULIP i +FD net/minecraft/block/BlockFlower$EnumFlowerType OXEYE_DAISY j +FD net/minecraft/block/BlockFlower$EnumFlowerType TYPES_FOR_BLOCK k +FD net/minecraft/block/BlockFlower$EnumFlowerType blockType l +FD net/minecraft/block/BlockFlower$EnumFlowerType meta m +FD net/minecraft/block/BlockFlower$EnumFlowerType name n +FD net/minecraft/block/BlockFlower$EnumFlowerType unlocalizedName o +FD net/minecraft/block/BlockFlower$EnumFlowerType $VALUES p +FD net/minecraft/block/BlockFlower$EnumFlowerType$1 field_180351_a a +FD net/minecraft/block/BlockFlower$EnumFlowerColor YELLOW a +FD net/minecraft/block/BlockFlower$EnumFlowerColor RED b +FD net/minecraft/block/BlockFlower$EnumFlowerColor $VALUES c +FD net/minecraft/block/BlockFlowerPot LEGACY_DATA a +FD net/minecraft/block/BlockFlowerPot CONTENTS b +FD net/minecraft/block/BlockFlowerPot$1 field_180353_a a +FD net/minecraft/block/BlockFlowerPot$1 field_180352_b b +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType EMPTY a +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType POPPY b +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType BLUE_ORCHID c +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ALLIUM d +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType HOUSTONIA e +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType RED_TULIP f +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ORANGE_TULIP g +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType WHITE_TULIP h +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType PINK_TULIP i +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType OXEYE_DAISY j +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DANDELION k +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType OAK_SAPLING l +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType SPRUCE_SAPLING m +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType BIRCH_SAPLING n +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType JUNGLE_SAPLING o +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ACACIA_SAPLING p +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DARK_OAK_SAPLING q +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType MUSHROOM_RED r +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType MUSHROOM_BROWN s +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DEAD_BUSH t +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType FERN u +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType CACTUS v +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType name w +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType $VALUES x +FD net/minecraft/block/BlockFurnace keepInventory N +FD net/minecraft/block/BlockFurnace FACING a +FD net/minecraft/block/BlockFurnace isBurning b +FD net/minecraft/block/BlockFurnace$1 field_180356_a a +FD net/minecraft/block/BlockGrass SNOWY a +FD net/minecraft/block/BlockSlab HALF a +FD net/minecraft/block/BlockSlab$EnumBlockHalf TOP a +FD net/minecraft/block/BlockSlab$EnumBlockHalf BOTTOM b +FD net/minecraft/block/BlockSlab$EnumBlockHalf name c +FD net/minecraft/block/BlockSlab$EnumBlockHalf $VALUES d +FD net/minecraft/block/BlockBreakable ignoreSimilarity a +FD net/minecraft/block/BlockHopper FACING a +FD net/minecraft/block/BlockHopper ENABLED b +FD net/minecraft/block/BlockHugeMushroom VARIANT a +FD net/minecraft/block/BlockHugeMushroom smallBlock b +FD net/minecraft/block/BlockHugeMushroom$1 field_181092_a a +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH_WEST a +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH b +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH_EAST c +FD net/minecraft/block/BlockHugeMushroom$EnumType WEST d +FD net/minecraft/block/BlockHugeMushroom$EnumType CENTER e +FD net/minecraft/block/BlockHugeMushroom$EnumType EAST f +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH_WEST g +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH h +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH_EAST i +FD net/minecraft/block/BlockHugeMushroom$EnumType STEM j +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_INSIDE k +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_OUTSIDE l +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_STEM m +FD net/minecraft/block/BlockHugeMushroom$EnumType META_LOOKUP n +FD net/minecraft/block/BlockHugeMushroom$EnumType meta o +FD net/minecraft/block/BlockHugeMushroom$EnumType name p +FD net/minecraft/block/BlockHugeMushroom$EnumType $VALUES q +FD net/minecraft/block/BlockJukebox HAS_RECORD a +FD net/minecraft/block/BlockJukebox$TileEntityJukebox record a +FD net/minecraft/block/BlockLadder FACING a +FD net/minecraft/block/BlockLadder$1 field_180190_a a +FD net/minecraft/block/BlockLeaves surroundings N +FD net/minecraft/block/BlockLeaves iconIndex O +FD net/minecraft/block/BlockLeaves isTransparent P +FD net/minecraft/block/BlockLeaves DECAYABLE a +FD net/minecraft/block/BlockLeaves CHECK_DECAY b +FD net/minecraft/block/BlockLever FACING a +FD net/minecraft/block/BlockLever POWERED b +FD net/minecraft/block/BlockLever$1 field_180165_a a +FD net/minecraft/block/BlockLever$1 field_180163_b b +FD net/minecraft/block/BlockLever$1 field_180164_c c +FD net/minecraft/block/BlockLever$EnumOrientation DOWN_X a +FD net/minecraft/block/BlockLever$EnumOrientation EAST b +FD net/minecraft/block/BlockLever$EnumOrientation WEST c +FD net/minecraft/block/BlockLever$EnumOrientation SOUTH d +FD net/minecraft/block/BlockLever$EnumOrientation NORTH e +FD net/minecraft/block/BlockLever$EnumOrientation UP_Z f +FD net/minecraft/block/BlockLever$EnumOrientation UP_X g +FD net/minecraft/block/BlockLever$EnumOrientation DOWN_Z h +FD net/minecraft/block/BlockLever$EnumOrientation META_LOOKUP i +FD net/minecraft/block/BlockLever$EnumOrientation meta j +FD net/minecraft/block/BlockLever$EnumOrientation name k +FD net/minecraft/block/BlockLever$EnumOrientation facing l +FD net/minecraft/block/BlockLever$EnumOrientation $VALUES m +FD net/minecraft/block/BlockLiquid LEVEL b +FD net/minecraft/block/BlockLog LOG_AXIS a +FD net/minecraft/block/BlockLog$1 field_180167_a a +FD net/minecraft/block/BlockLog$EnumAxis X a +FD net/minecraft/block/BlockLog$EnumAxis Y b +FD net/minecraft/block/BlockLog$EnumAxis Z c +FD net/minecraft/block/BlockLog$EnumAxis NONE d +FD net/minecraft/block/BlockLog$EnumAxis name e +FD net/minecraft/block/BlockLog$EnumAxis $VALUES f +FD net/minecraft/block/BlockSilverfish VARIANT a +FD net/minecraft/block/BlockSilverfish$1 field_180178_a a +FD net/minecraft/block/BlockSilverfish$EnumType STONE a +FD net/minecraft/block/BlockSilverfish$EnumType COBBLESTONE b +FD net/minecraft/block/BlockSilverfish$EnumType STONEBRICK c +FD net/minecraft/block/BlockSilverfish$EnumType MOSSY_STONEBRICK d +FD net/minecraft/block/BlockSilverfish$EnumType CRACKED_STONEBRICK e +FD net/minecraft/block/BlockSilverfish$EnumType CHISELED_STONEBRICK f +FD net/minecraft/block/BlockSilverfish$EnumType META_LOOKUP g +FD net/minecraft/block/BlockSilverfish$EnumType meta h +FD net/minecraft/block/BlockSilverfish$EnumType name i +FD net/minecraft/block/BlockSilverfish$EnumType unlocalizedName j +FD net/minecraft/block/BlockSilverfish$EnumType $VALUES k +FD net/minecraft/block/BlockMycelium SNOWY a +FD net/minecraft/block/BlockNetherWart AGE a +FD net/minecraft/block/BlockNewLeaf VARIANT Q +FD net/minecraft/block/BlockNewLog VARIANT b +FD net/minecraft/block/BlockNewLog$2 field_181093_a a +FD net/minecraft/block/BlockNewLog$2 field_180191_a b +FD net/minecraft/block/BlockStoneSlabNew VARIANT N +FD net/minecraft/block/BlockStoneSlabNew SEAMLESS b +FD net/minecraft/block/BlockStoneSlabNew$EnumType RED_SANDSTONE a +FD net/minecraft/block/BlockStoneSlabNew$EnumType META_LOOKUP b +FD net/minecraft/block/BlockStoneSlabNew$EnumType meta c +FD net/minecraft/block/BlockStoneSlabNew$EnumType name d +FD net/minecraft/block/BlockStoneSlabNew$EnumType field_181069_e e +FD net/minecraft/block/BlockStoneSlabNew$EnumType $VALUES f +FD net/minecraft/block/BlockNote INSTRUMENTS a +FD net/minecraft/block/BlockOldLeaf VARIANT Q +FD net/minecraft/block/BlockOldLog VARIANT b +FD net/minecraft/block/BlockOldLog$2 field_181094_a a +FD net/minecraft/block/BlockOldLog$2 field_180203_a b +FD net/minecraft/block/BlockPlanks VARIANT a +FD net/minecraft/block/BlockPlanks$EnumType OAK a +FD net/minecraft/block/BlockPlanks$EnumType SPRUCE b +FD net/minecraft/block/BlockPlanks$EnumType BIRCH c +FD net/minecraft/block/BlockPlanks$EnumType JUNGLE d +FD net/minecraft/block/BlockPlanks$EnumType ACACIA e +FD net/minecraft/block/BlockPlanks$EnumType DARK_OAK f +FD net/minecraft/block/BlockPlanks$EnumType META_LOOKUP g +FD net/minecraft/block/BlockPlanks$EnumType meta h +FD net/minecraft/block/BlockPlanks$EnumType name i +FD net/minecraft/block/BlockPlanks$EnumType unlocalizedName j +FD net/minecraft/block/BlockPlanks$EnumType mapColor k +FD net/minecraft/block/BlockPlanks$EnumType $VALUES l +FD net/minecraft/block/BlockPortal AXIS a +FD net/minecraft/block/BlockPortal$Size world a +FD net/minecraft/block/BlockPortal$Size axis b +FD net/minecraft/block/BlockPortal$Size field_150866_c c +FD net/minecraft/block/BlockPortal$Size field_150863_d d +FD net/minecraft/block/BlockPortal$Size field_150864_e e +FD net/minecraft/block/BlockPortal$Size field_150861_f f +FD net/minecraft/block/BlockPortal$Size field_150862_g g +FD net/minecraft/block/BlockPortal$Size field_150868_h h +FD net/minecraft/block/BlockRailPowered POWERED N +FD net/minecraft/block/BlockRailPowered SHAPE b +FD net/minecraft/block/BlockRailPowered$2 field_180121_a a +FD net/minecraft/block/BlockPressurePlate POWERED a +FD net/minecraft/block/BlockPressurePlate sensitivity b +FD net/minecraft/block/BlockPressurePlate$1 field_180127_a a +FD net/minecraft/block/BlockPressurePlate$Sensitivity EVERYTHING a +FD net/minecraft/block/BlockPressurePlate$Sensitivity MOBS b +FD net/minecraft/block/BlockPressurePlate$Sensitivity $VALUES c +FD net/minecraft/block/BlockPrismarine BRICKS_META N +FD net/minecraft/block/BlockPrismarine DARK_META O +FD net/minecraft/block/BlockPrismarine VARIANT a +FD net/minecraft/block/BlockPrismarine ROUGH_META b +FD net/minecraft/block/BlockPrismarine$EnumType ROUGH a +FD net/minecraft/block/BlockPrismarine$EnumType BRICKS b +FD net/minecraft/block/BlockPrismarine$EnumType DARK c +FD net/minecraft/block/BlockPrismarine$EnumType META_LOOKUP d +FD net/minecraft/block/BlockPrismarine$EnumType meta e +FD net/minecraft/block/BlockPrismarine$EnumType name f +FD net/minecraft/block/BlockPrismarine$EnumType unlocalizedName g +FD net/minecraft/block/BlockPrismarine$EnumType $VALUES h +FD net/minecraft/block/BlockPumpkin golemBasePattern N +FD net/minecraft/block/BlockPumpkin golemPattern P +FD net/minecraft/block/BlockPumpkin field_181085_Q Q +FD net/minecraft/block/BlockPumpkin snowmanBasePattern a +FD net/minecraft/block/BlockPumpkin snowmanPattern b +FD net/minecraft/block/BlockQuartz VARIANT a +FD net/minecraft/block/BlockQuartz$1 field_180101_a a +FD net/minecraft/block/BlockQuartz$EnumType DEFAULT a +FD net/minecraft/block/BlockQuartz$EnumType CHISELED b +FD net/minecraft/block/BlockQuartz$EnumType LINES_Y c +FD net/minecraft/block/BlockQuartz$EnumType LINES_X d +FD net/minecraft/block/BlockQuartz$EnumType LINES_Z e +FD net/minecraft/block/BlockQuartz$EnumType META_LOOKUP f +FD net/minecraft/block/BlockQuartz$EnumType meta g +FD net/minecraft/block/BlockQuartz$EnumType field_176805_h h +FD net/minecraft/block/BlockQuartz$EnumType unlocalizedName i +FD net/minecraft/block/BlockQuartz$EnumType $VALUES j +FD net/minecraft/block/BlockRail SHAPE b +FD net/minecraft/block/BlockRedSandstone TYPE a +FD net/minecraft/block/BlockRedSandstone$EnumType DEFAULT a +FD net/minecraft/block/BlockRedSandstone$EnumType CHISELED b +FD net/minecraft/block/BlockRedSandstone$EnumType SMOOTH c +FD net/minecraft/block/BlockRedSandstone$EnumType META_LOOKUP d +FD net/minecraft/block/BlockRedSandstone$EnumType meta e +FD net/minecraft/block/BlockRedSandstone$EnumType name f +FD net/minecraft/block/BlockRedSandstone$EnumType unlocalizedName g +FD net/minecraft/block/BlockRedSandstone$EnumType $VALUES h +FD net/minecraft/block/BlockRedstoneOre isOn a +FD net/minecraft/block/BlockRedstoneWire SOUTH N +FD net/minecraft/block/BlockRedstoneWire WEST O +FD net/minecraft/block/BlockRedstoneWire POWER P +FD net/minecraft/block/BlockRedstoneWire canProvidePower Q +FD net/minecraft/block/BlockRedstoneWire blocksNeedingUpdate R +FD net/minecraft/block/BlockRedstoneWire NORTH a +FD net/minecraft/block/BlockRedstoneWire EAST b +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition UP a +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition SIDE b +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition NONE c +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition name d +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition $VALUES e +FD net/minecraft/block/BlockRedstoneLight isOn a +FD net/minecraft/block/BlockRedstoneTorch isOn N +FD net/minecraft/block/BlockRedstoneTorch toggles b +FD net/minecraft/block/BlockRedstoneTorch$Toggle pos a +FD net/minecraft/block/BlockRedstoneTorch$Toggle time b +FD net/minecraft/block/BlockReed AGE a +FD net/minecraft/block/BlockRedstoneRepeater LOCKED a +FD net/minecraft/block/BlockRedstoneRepeater DELAY b +FD net/minecraft/block/BlockRotatedPillar AXIS N +FD net/minecraft/block/BlockSand VARIANT a +FD net/minecraft/block/BlockSand$EnumType SAND a +FD net/minecraft/block/BlockSand$EnumType RED_SAND b +FD net/minecraft/block/BlockSand$EnumType META_LOOKUP c +FD net/minecraft/block/BlockSand$EnumType meta d +FD net/minecraft/block/BlockSand$EnumType name e +FD net/minecraft/block/BlockSand$EnumType mapColor f +FD net/minecraft/block/BlockSand$EnumType unlocalizedName g +FD net/minecraft/block/BlockSand$EnumType $VALUES h +FD net/minecraft/block/BlockSandStone TYPE a +FD net/minecraft/block/BlockSandStone$EnumType DEFAULT a +FD net/minecraft/block/BlockSandStone$EnumType CHISELED b +FD net/minecraft/block/BlockSandStone$EnumType SMOOTH c +FD net/minecraft/block/BlockSandStone$EnumType META_LOOKUP d +FD net/minecraft/block/BlockSandStone$EnumType metadata e +FD net/minecraft/block/BlockSandStone$EnumType name f +FD net/minecraft/block/BlockSandStone$EnumType unlocalizedName g +FD net/minecraft/block/BlockSandStone$EnumType $VALUES h +FD net/minecraft/block/BlockSapling TYPE a +FD net/minecraft/block/BlockSapling STAGE b +FD net/minecraft/block/BlockSapling$1 field_177065_a a +FD net/minecraft/block/BlockSkull IS_WITHER_SKELETON N +FD net/minecraft/block/BlockSkull witherBasePattern O +FD net/minecraft/block/BlockSkull witherPattern P +FD net/minecraft/block/BlockSkull FACING a +FD net/minecraft/block/BlockSkull NODROP b +FD net/minecraft/block/BlockSkull$2 field_177063_a a +FD net/minecraft/block/BlockSnow LAYERS a +FD net/minecraft/block/BlockSponge WET a +FD net/minecraft/block/BlockStainedGlass COLOR a +FD net/minecraft/block/BlockStainedGlassPane COLOR a +FD net/minecraft/block/BlockStairs SHAPE N +FD net/minecraft/block/BlockStairs field_150150_a O +FD net/minecraft/block/BlockStairs modelBlock P +FD net/minecraft/block/BlockStairs modelState Q +FD net/minecraft/block/BlockStairs hasRaytraced R +FD net/minecraft/block/BlockStairs rayTracePass S +FD net/minecraft/block/BlockStairs FACING a +FD net/minecraft/block/BlockStairs HALF b +FD net/minecraft/block/BlockStairs$EnumHalf TOP a +FD net/minecraft/block/BlockStairs$EnumHalf BOTTOM b +FD net/minecraft/block/BlockStairs$EnumHalf name c +FD net/minecraft/block/BlockStairs$EnumHalf $VALUES d +FD net/minecraft/block/BlockStairs$EnumShape STRAIGHT a +FD net/minecraft/block/BlockStairs$EnumShape INNER_LEFT b +FD net/minecraft/block/BlockStairs$EnumShape INNER_RIGHT c +FD net/minecraft/block/BlockStairs$EnumShape OUTER_LEFT d +FD net/minecraft/block/BlockStairs$EnumShape OUTER_RIGHT e +FD net/minecraft/block/BlockStairs$EnumShape name f +FD net/minecraft/block/BlockStairs$EnumShape $VALUES g +FD net/minecraft/block/BlockStandingSign ROTATION a +FD net/minecraft/block/BlockStem crop N +FD net/minecraft/block/BlockStem AGE a +FD net/minecraft/block/BlockStem FACING b +FD net/minecraft/block/BlockStone VARIANT a +FD net/minecraft/block/BlockStone$EnumType STONE a +FD net/minecraft/block/BlockStone$EnumType GRANITE b +FD net/minecraft/block/BlockStone$EnumType GRANITE_SMOOTH c +FD net/minecraft/block/BlockStone$EnumType DIORITE d +FD net/minecraft/block/BlockStone$EnumType DIORITE_SMOOTH e +FD net/minecraft/block/BlockStone$EnumType ANDESITE f +FD net/minecraft/block/BlockStone$EnumType ANDESITE_SMOOTH g +FD net/minecraft/block/BlockStone$EnumType META_LOOKUP h +FD net/minecraft/block/BlockStone$EnumType meta i +FD net/minecraft/block/BlockStone$EnumType name j +FD net/minecraft/block/BlockStone$EnumType unlocalizedName k +FD net/minecraft/block/BlockStone$EnumType field_181073_l l +FD net/minecraft/block/BlockStone$EnumType $VALUES m +FD net/minecraft/block/BlockStoneBrick MOSSY_META N +FD net/minecraft/block/BlockStoneBrick CRACKED_META O +FD net/minecraft/block/BlockStoneBrick CHISELED_META P +FD net/minecraft/block/BlockStoneBrick VARIANT a +FD net/minecraft/block/BlockStoneBrick DEFAULT_META b +FD net/minecraft/block/BlockStoneBrick$EnumType DEFAULT a +FD net/minecraft/block/BlockStoneBrick$EnumType MOSSY b +FD net/minecraft/block/BlockStoneBrick$EnumType CRACKED c +FD net/minecraft/block/BlockStoneBrick$EnumType CHISELED d +FD net/minecraft/block/BlockStoneBrick$EnumType META_LOOKUP e +FD net/minecraft/block/BlockStoneBrick$EnumType meta f +FD net/minecraft/block/BlockStoneBrick$EnumType name g +FD net/minecraft/block/BlockStoneBrick$EnumType unlocalizedName h +FD net/minecraft/block/BlockStoneBrick$EnumType $VALUES i +FD net/minecraft/block/BlockStoneSlab VARIANT N +FD net/minecraft/block/BlockStoneSlab SEAMLESS b +FD net/minecraft/block/BlockStoneSlab$EnumType STONE a +FD net/minecraft/block/BlockStoneSlab$EnumType SAND b +FD net/minecraft/block/BlockStoneSlab$EnumType WOOD c +FD net/minecraft/block/BlockStoneSlab$EnumType COBBLESTONE d +FD net/minecraft/block/BlockStoneSlab$EnumType BRICK e +FD net/minecraft/block/BlockStoneSlab$EnumType SMOOTHBRICK f +FD net/minecraft/block/BlockStoneSlab$EnumType NETHERBRICK g +FD net/minecraft/block/BlockStoneSlab$EnumType QUARTZ h +FD net/minecraft/block/BlockStoneSlab$EnumType META_LOOKUP i +FD net/minecraft/block/BlockStoneSlab$EnumType meta j +FD net/minecraft/block/BlockStoneSlab$EnumType field_181075_k k +FD net/minecraft/block/BlockStoneSlab$EnumType name l +FD net/minecraft/block/BlockStoneSlab$EnumType unlocalizedName m +FD net/minecraft/block/BlockStoneSlab$EnumType $VALUES n +FD net/minecraft/block/BlockTallGrass TYPE a +FD net/minecraft/block/BlockTallGrass$EnumType DEAD_BUSH a +FD net/minecraft/block/BlockTallGrass$EnumType GRASS b +FD net/minecraft/block/BlockTallGrass$EnumType FERN c +FD net/minecraft/block/BlockTallGrass$EnumType META_LOOKUP d +FD net/minecraft/block/BlockTallGrass$EnumType meta e +FD net/minecraft/block/BlockTallGrass$EnumType name f +FD net/minecraft/block/BlockTallGrass$EnumType $VALUES g +FD net/minecraft/block/BlockPane EAST N +FD net/minecraft/block/BlockPane SOUTH O +FD net/minecraft/block/BlockPane WEST P +FD net/minecraft/block/BlockPane canDrop a +FD net/minecraft/block/BlockPane NORTH b +FD net/minecraft/block/BlockTNT EXPLODE a +FD net/minecraft/block/BlockTorch FACING a +FD net/minecraft/block/BlockTorch$2 field_176609_a a +FD net/minecraft/block/BlockLeavesBase fancyGraphics R +FD net/minecraft/block/BlockTrapDoor HALF N +FD net/minecraft/block/BlockTrapDoor FACING a +FD net/minecraft/block/BlockTrapDoor OPEN b +FD net/minecraft/block/BlockTrapDoor$1 field_177058_a a +FD net/minecraft/block/BlockTrapDoor$DoorHalf TOP a +FD net/minecraft/block/BlockTrapDoor$DoorHalf BOTTOM b +FD net/minecraft/block/BlockTrapDoor$DoorHalf name c +FD net/minecraft/block/BlockTrapDoor$DoorHalf $VALUES d +FD net/minecraft/block/BlockTripWire ATTACHED N +FD net/minecraft/block/BlockTripWire DISARMED O +FD net/minecraft/block/BlockTripWire NORTH P +FD net/minecraft/block/BlockTripWire EAST Q +FD net/minecraft/block/BlockTripWire SOUTH R +FD net/minecraft/block/BlockTripWire WEST S +FD net/minecraft/block/BlockTripWire POWERED a +FD net/minecraft/block/BlockTripWire SUSPENDED b +FD net/minecraft/block/BlockTripWireHook ATTACHED N +FD net/minecraft/block/BlockTripWireHook SUSPENDED O +FD net/minecraft/block/BlockTripWireHook FACING a +FD net/minecraft/block/BlockTripWireHook POWERED b +FD net/minecraft/block/BlockTripWireHook$1 field_177056_a a +FD net/minecraft/block/BlockVine EAST N +FD net/minecraft/block/BlockVine SOUTH O +FD net/minecraft/block/BlockVine WEST P +FD net/minecraft/block/BlockVine ALL_FACES Q +FD net/minecraft/block/BlockVine UP a +FD net/minecraft/block/BlockVine NORTH b +FD net/minecraft/block/BlockVine$1 field_177057_a a +FD net/minecraft/block/BlockWall EAST N +FD net/minecraft/block/BlockWall SOUTH O +FD net/minecraft/block/BlockWall WEST P +FD net/minecraft/block/BlockWall VARIANT Q +FD net/minecraft/block/BlockWall UP a +FD net/minecraft/block/BlockWall NORTH b +FD net/minecraft/block/BlockWall$EnumType NORMAL a +FD net/minecraft/block/BlockWall$EnumType MOSSY b +FD net/minecraft/block/BlockWall$EnumType META_LOOKUP c +FD net/minecraft/block/BlockWall$EnumType meta d +FD net/minecraft/block/BlockWall$EnumType name e +FD net/minecraft/block/BlockWall$EnumType unlocalizedName f +FD net/minecraft/block/BlockWall$EnumType $VALUES g +FD net/minecraft/block/BlockWallSign FACING a +FD net/minecraft/block/BlockWallSign$1 field_177331_a a +FD net/minecraft/block/BlockPressurePlateWeighted POWER a +FD net/minecraft/block/BlockPressurePlateWeighted field_150068_a b +FD net/minecraft/block/BlockWoodSlab VARIANT b +FD net/minecraft/block/BlockCarpet COLOR a +FD net/minecraft/tileentity/TileEntityBanner baseColor a +FD net/minecraft/tileentity/TileEntityBanner patterns f +FD net/minecraft/tileentity/TileEntityBanner field_175119_g g +FD net/minecraft/tileentity/TileEntityBanner patternList h +FD net/minecraft/tileentity/TileEntityBanner colorList i +FD net/minecraft/tileentity/TileEntityBanner patternResourceLocation j +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_VERTICAL A +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_HORIZONTAL B +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_VERTICAL_MIRROR C +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_HORIZONTAL_MIRROR D +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BORDER E +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CURLY_BORDER F +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CREEPER G +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern GRADIENT H +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern GRADIENT_UP I +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BRICKS J +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SKULL K +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern FLOWER L +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern MOJANG M +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternName N +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternID O +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern craftingLayers P +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternCraftingStack Q +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern $VALUES R +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BASE a +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_BOTTOM_LEFT b +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_BOTTOM_RIGHT c +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_TOP_LEFT d +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_TOP_RIGHT e +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_BOTTOM f +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_TOP g +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_LEFT h +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_RIGHT i +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_CENTER j +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_MIDDLE k +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_DOWNRIGHT l +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_DOWNLEFT m +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_SMALL n +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CROSS o +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRAIGHT_CROSS p +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLE_BOTTOM q +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLE_TOP r +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLES_BOTTOM s +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLES_TOP t +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_LEFT u +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_RIGHT v +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_LEFT_MIRROR w +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_RIGHT_MIRROR x +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CIRCLE_MIDDLE y +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern RHOMBUS_MIDDLE z +FD net/minecraft/tileentity/TileEntityBeacon effectsList a +FD net/minecraft/tileentity/TileEntityBeacon beamSegments f +FD net/minecraft/tileentity/TileEntityBeacon beamRenderCounter g +FD net/minecraft/tileentity/TileEntityBeacon field_146014_j h +FD net/minecraft/tileentity/TileEntityBeacon isComplete i +FD net/minecraft/tileentity/TileEntityBeacon levels j +FD net/minecraft/tileentity/TileEntityBeacon primaryEffect k +FD net/minecraft/tileentity/TileEntityBeacon secondaryEffect l +FD net/minecraft/tileentity/TileEntityBeacon payment m +FD net/minecraft/tileentity/TileEntityBeacon customName n +FD net/minecraft/tileentity/TileEntityBeacon$BeamSegment colors a +FD net/minecraft/tileentity/TileEntityBeacon$BeamSegment height b +FD net/minecraft/tileentity/TileEntity logger a +FD net/minecraft/tileentity/TileEntity worldObj b +FD net/minecraft/tileentity/TileEntity pos c +FD net/minecraft/tileentity/TileEntity tileEntityInvalid d +FD net/minecraft/tileentity/TileEntity blockType e +FD net/minecraft/tileentity/TileEntity nameToClassMap f +FD net/minecraft/tileentity/TileEntity classToNameMap g +FD net/minecraft/tileentity/TileEntity blockMetadata h +FD net/minecraft/tileentity/TileEntity$1 field_150830_a a +FD net/minecraft/tileentity/TileEntity$2 field_150832_a a +FD net/minecraft/tileentity/TileEntity$3 field_150834_a a +FD net/minecraft/tileentity/TileEntityBrewingStand inputSlots a +FD net/minecraft/tileentity/TileEntityBrewingStand outputSlots f +FD net/minecraft/tileentity/TileEntityBrewingStand brewingItemStacks g +FD net/minecraft/tileentity/TileEntityBrewingStand brewTime h +FD net/minecraft/tileentity/TileEntityBrewingStand filledSlots i +FD net/minecraft/tileentity/TileEntityBrewingStand ingredientID j +FD net/minecraft/tileentity/TileEntityBrewingStand customName k +FD net/minecraft/tileentity/TileEntityChest adjacentChestChecked a +FD net/minecraft/tileentity/TileEntityChest adjacentChestZNeg f +FD net/minecraft/tileentity/TileEntityChest adjacentChestXPos g +FD net/minecraft/tileentity/TileEntityChest adjacentChestXNeg h +FD net/minecraft/tileentity/TileEntityChest adjacentChestZPos i +FD net/minecraft/tileentity/TileEntityChest lidAngle j +FD net/minecraft/tileentity/TileEntityChest prevLidAngle k +FD net/minecraft/tileentity/TileEntityChest numPlayersUsing l +FD net/minecraft/tileentity/TileEntityChest chestContents m +FD net/minecraft/tileentity/TileEntityChest ticksSinceSync n +FD net/minecraft/tileentity/TileEntityChest cachedChestType o +FD net/minecraft/tileentity/TileEntityChest customName p +FD net/minecraft/tileentity/TileEntityChest$1 field_177366_a a +FD net/minecraft/tileentity/TileEntityCommandBlock commandBlockLogic a +FD net/minecraft/tileentity/TileEntityCommandBlock$1 field_145767_a a +FD net/minecraft/tileentity/TileEntityComparator outputSignal a +FD net/minecraft/tileentity/TileEntityDispenser customName a +FD net/minecraft/tileentity/TileEntityDispenser RNG f +FD net/minecraft/tileentity/TileEntityDispenser stacks g +FD net/minecraft/tileentity/TileEntityEnchantmentTable tickCount a +FD net/minecraft/tileentity/TileEntityEnchantmentTable pageFlip f +FD net/minecraft/tileentity/TileEntityEnchantmentTable pageFlipPrev g +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145932_k h +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145929_l i +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookSpread j +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookSpreadPrev k +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookRotation l +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookRotationPrev m +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145924_q n +FD net/minecraft/tileentity/TileEntityEnchantmentTable rand o +FD net/minecraft/tileentity/TileEntityEnchantmentTable customName p +FD net/minecraft/tileentity/TileEntityEnderChest lidAngle a +FD net/minecraft/tileentity/TileEntityEnderChest prevLidAngle f +FD net/minecraft/tileentity/TileEntityEnderChest numPlayersUsing g +FD net/minecraft/tileentity/TileEntityEnderChest ticksSinceSync h +FD net/minecraft/tileentity/TileEntityFlowerPot flowerPotItem a +FD net/minecraft/tileentity/TileEntityFlowerPot flowerPotData f +FD net/minecraft/tileentity/TileEntityFurnace slotsTop a +FD net/minecraft/tileentity/TileEntityFurnace slotsBottom f +FD net/minecraft/tileentity/TileEntityFurnace slotsSides g +FD net/minecraft/tileentity/TileEntityFurnace furnaceItemStacks h +FD net/minecraft/tileentity/TileEntityFurnace furnaceBurnTime i +FD net/minecraft/tileentity/TileEntityFurnace currentItemBurnTime j +FD net/minecraft/tileentity/TileEntityFurnace cookTime k +FD net/minecraft/tileentity/TileEntityFurnace totalCookTime l +FD net/minecraft/tileentity/TileEntityFurnace furnaceCustomName m +FD net/minecraft/tileentity/TileEntityHopper inventory a +FD net/minecraft/tileentity/TileEntityHopper customName f +FD net/minecraft/tileentity/TileEntityHopper transferCooldown g +FD net/minecraft/tileentity/TileEntityLockable code a +FD net/minecraft/tileentity/TileEntityMobSpawner spawnerLogic a +FD net/minecraft/tileentity/TileEntityMobSpawner$1 field_150825_a a +FD net/minecraft/tileentity/TileEntityNote note a +FD net/minecraft/tileentity/TileEntityNote previousRedstoneState f +FD net/minecraft/tileentity/TileEntitySign signText a +FD net/minecraft/tileentity/TileEntitySign lineBeingEdited f +FD net/minecraft/tileentity/TileEntitySign isEditable g +FD net/minecraft/tileentity/TileEntitySign player h +FD net/minecraft/tileentity/TileEntitySign stats i +FD net/minecraft/tileentity/TileEntitySign$1 field_174795_a a +FD net/minecraft/tileentity/TileEntitySign$2 field_174797_a a +FD net/minecraft/tileentity/TileEntitySign$2 field_174796_b b +FD net/minecraft/tileentity/TileEntitySkull skullType a +FD net/minecraft/tileentity/TileEntitySkull skullRotation f +FD net/minecraft/tileentity/TileEntitySkull playerProfile g +FD net/minecraft/block/BlockPistonBase isSticky N +FD net/minecraft/block/BlockPistonBase FACING a +FD net/minecraft/block/BlockPistonBase EXTENDED b +FD net/minecraft/block/BlockPistonBase$1 field_177243_a a +FD net/minecraft/block/BlockPistonExtension SHORT N +FD net/minecraft/block/BlockPistonExtension FACING a +FD net/minecraft/block/BlockPistonExtension TYPE b +FD net/minecraft/block/BlockPistonExtension$1 field_177247_a a +FD net/minecraft/block/BlockPistonExtension$EnumPistonType DEFAULT a +FD net/minecraft/block/BlockPistonExtension$EnumPistonType STICKY b +FD net/minecraft/block/BlockPistonExtension$EnumPistonType VARIANT c +FD net/minecraft/block/BlockPistonExtension$EnumPistonType $VALUES d +FD net/minecraft/tileentity/TileEntityPiston pistonState a +FD net/minecraft/tileentity/TileEntityPiston pistonFacing f +FD net/minecraft/tileentity/TileEntityPiston extending g +FD net/minecraft/tileentity/TileEntityPiston shouldHeadBeRendered h +FD net/minecraft/tileentity/TileEntityPiston progress i +FD net/minecraft/tileentity/TileEntityPiston lastProgress j +FD net/minecraft/tileentity/TileEntityPiston field_174933_k k +FD net/minecraft/tileentity/TileEntityPiston$1 field_177248_a a +FD net/minecraft/block/BlockPistonMoving FACING a +FD net/minecraft/block/BlockPistonMoving TYPE b +FD net/minecraft/block/state/BlockPistonStructureHelper world a +FD net/minecraft/block/state/BlockPistonStructureHelper pistonPos b +FD net/minecraft/block/state/BlockPistonStructureHelper blockToMove c +FD net/minecraft/block/state/BlockPistonStructureHelper moveDirection d +FD net/minecraft/block/state/BlockPistonStructureHelper toMove e +FD net/minecraft/block/state/BlockPistonStructureHelper toDestroy f +FD net/minecraft/block/state/BlockStateBase COMMA_JOINER a +FD net/minecraft/block/state/BlockStateBase MAP_ENTRY_TO_STRING b +FD net/minecraft/block/state/BlockState COMMA_JOINER a +FD net/minecraft/block/state/BlockState GET_NAME_FUNC b +FD net/minecraft/block/state/BlockState block c +FD net/minecraft/block/state/BlockState properties d +FD net/minecraft/block/state/BlockState validStates e +FD net/minecraft/block/state/BlockState$2 field_177549_a a +FD net/minecraft/block/state/BlockState$StateImplementation block a +FD net/minecraft/block/state/BlockState$StateImplementation properties b +FD net/minecraft/block/state/BlockState$StateImplementation propertyValueTable c +FD net/minecraft/block/state/BlockWorldState world a +FD net/minecraft/block/state/BlockWorldState pos b +FD net/minecraft/block/state/BlockWorldState field_181628_c c +FD net/minecraft/block/state/BlockWorldState state d +FD net/minecraft/block/state/BlockWorldState tileEntity e +FD net/minecraft/block/state/BlockWorldState tileEntityInitialized f +FD net/minecraft/block/state/BlockWorldState$1 field_177504_a a +FD net/minecraft/block/state/pattern/BlockPattern blockMatches a +FD net/minecraft/block/state/pattern/BlockPattern fingerLength b +FD net/minecraft/block/state/pattern/BlockPattern thumbLength c +FD net/minecraft/block/state/pattern/BlockPattern palmLength d +FD net/minecraft/block/state/pattern/BlockPattern$CacheLoader world a +FD net/minecraft/block/state/pattern/BlockPattern$CacheLoader field_181626_b b +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper pos a +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper finger b +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper thumb c +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper lcache d +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181120_e e +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181121_f f +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181122_g g +FD net/minecraft/block/state/pattern/FactoryBlockPattern COMMA_JOIN a +FD net/minecraft/block/state/pattern/FactoryBlockPattern depth b +FD net/minecraft/block/state/pattern/FactoryBlockPattern symbolMap c +FD net/minecraft/block/state/pattern/FactoryBlockPattern aisleHeight d +FD net/minecraft/block/state/pattern/FactoryBlockPattern rowWidth e +FD net/minecraft/block/state/pattern/BlockHelper block a +FD net/minecraft/block/state/pattern/BlockStateHelper blockstate a +FD net/minecraft/block/state/pattern/BlockStateHelper propertyPredicates b +FD net/minecraft/block/properties/PropertyHelper valueClass a +FD net/minecraft/block/properties/PropertyHelper name b +FD net/minecraft/block/properties/PropertyBool allowedValues a +FD net/minecraft/block/properties/PropertyEnum allowedValues a +FD net/minecraft/block/properties/PropertyEnum nameToValue b +FD net/minecraft/block/properties/PropertyInteger allowedValues a +FD net/minecraft/world/border/EnumBorderStatus GROWING a +FD net/minecraft/world/border/EnumBorderStatus SHRINKING b +FD net/minecraft/world/border/EnumBorderStatus STATIONARY c +FD net/minecraft/world/border/EnumBorderStatus id d +FD net/minecraft/world/border/EnumBorderStatus $VALUES e +FD net/minecraft/world/border/WorldBorder listeners a +FD net/minecraft/world/border/WorldBorder centerX b +FD net/minecraft/world/border/WorldBorder centerZ c +FD net/minecraft/world/border/WorldBorder startDiameter d +FD net/minecraft/world/border/WorldBorder endDiameter e +FD net/minecraft/world/border/WorldBorder endTime f +FD net/minecraft/world/border/WorldBorder startTime g +FD net/minecraft/world/border/WorldBorder worldSize h +FD net/minecraft/world/border/WorldBorder damageAmount i +FD net/minecraft/world/border/WorldBorder damageBuffer j +FD net/minecraft/world/border/WorldBorder warningTime k +FD net/minecraft/world/border/WorldBorder warningDistance l +FD net/minecraft/world/chunk/NibbleArray data a +FD net/minecraft/world/chunk/Chunk xPosition a +FD net/minecraft/world/chunk/Chunk zPosition b +FD net/minecraft/world/chunk/Chunk logger c +FD net/minecraft/world/chunk/Chunk storageArrays d +FD net/minecraft/world/chunk/Chunk blockBiomeArray e +FD net/minecraft/world/chunk/Chunk precipitationHeightMap f +FD net/minecraft/world/chunk/Chunk updateSkylightColumns g +FD net/minecraft/world/chunk/Chunk isChunkLoaded h +FD net/minecraft/world/chunk/Chunk worldObj i +FD net/minecraft/world/chunk/Chunk heightMap j +FD net/minecraft/world/chunk/Chunk isGapLightingUpdated k +FD net/minecraft/world/chunk/Chunk chunkTileEntityMap l +FD net/minecraft/world/chunk/Chunk entityLists m +FD net/minecraft/world/chunk/Chunk isTerrainPopulated n +FD net/minecraft/world/chunk/Chunk isLightPopulated o +FD net/minecraft/world/chunk/Chunk field_150815_m p +FD net/minecraft/world/chunk/Chunk isModified q +FD net/minecraft/world/chunk/Chunk hasEntities r +FD net/minecraft/world/chunk/Chunk lastSaveTime s +FD net/minecraft/world/chunk/Chunk heightMapMinimum t +FD net/minecraft/world/chunk/Chunk inhabitedTime u +FD net/minecraft/world/chunk/Chunk queuedLightChecks v +FD net/minecraft/world/chunk/Chunk tileEntityPosQueue w +FD net/minecraft/world/chunk/Chunk$1 field_150824_a a +FD net/minecraft/world/chunk/Chunk$1 field_150822_b b +FD net/minecraft/world/chunk/Chunk$1 field_150823_c c +FD net/minecraft/world/chunk/Chunk$1 field_150821_d d +FD net/minecraft/world/chunk/Chunk$2 field_177457_a a +FD net/minecraft/world/chunk/Chunk$2 field_177456_b b +FD net/minecraft/world/chunk/Chunk$3 field_177450_a a +FD net/minecraft/world/chunk/Chunk$3 field_177449_b b +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType IMMEDIATE a +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType QUEUED b +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType CHECK c +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType $VALUES d +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage yBase a +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage blockRefCount b +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage tickRefCount c +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage data d +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage blocklightArray e +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage skylightArray f +FD net/minecraft/world/chunk/storage/NibbleArrayReader data a +FD net/minecraft/world/chunk/storage/NibbleArrayReader depthBits b +FD net/minecraft/world/chunk/storage/NibbleArrayReader depthBitsPlusFour c +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData lastUpdated a +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData terrainPopulated b +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData heightmap c +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData blockLight d +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData skyLight e +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData data f +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData blocks g +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData entities h +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData tileEntities i +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData tileTicks j +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData x k +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData z l +FD net/minecraft/world/chunk/storage/RegionFile emptySector a +FD net/minecraft/world/chunk/storage/RegionFile fileName b +FD net/minecraft/world/chunk/storage/RegionFile dataFile c +FD net/minecraft/world/chunk/storage/RegionFile offsets d +FD net/minecraft/world/chunk/storage/RegionFile chunkTimestamps e +FD net/minecraft/world/chunk/storage/RegionFile sectorFree f +FD net/minecraft/world/chunk/storage/RegionFile sizeDelta g +FD net/minecraft/world/chunk/storage/RegionFile lastModified h +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer field_76724_a a +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer chunkX b +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer chunkZ c +FD net/minecraft/world/chunk/storage/RegionFileCache regionsByFilename a +FD net/minecraft/world/chunk/storage/AnvilChunkLoader logger a +FD net/minecraft/world/chunk/storage/AnvilChunkLoader chunksToRemove b +FD net/minecraft/world/chunk/storage/AnvilChunkLoader pendingAnvilChunksCoordinates c +FD net/minecraft/world/chunk/storage/AnvilChunkLoader chunkSaveLocation d +FD net/minecraft/world/chunk/storage/AnvilChunkLoader field_183014_e e +FD net/minecraft/world/WorldProvider moonPhaseFactors a +FD net/minecraft/world/WorldProvider worldObj b +FD net/minecraft/world/WorldProvider worldChunkMgr c +FD net/minecraft/world/WorldProvider isHellWorld d +FD net/minecraft/world/WorldProvider hasNoSky e +FD net/minecraft/world/WorldProvider lightBrightnessTable f +FD net/minecraft/world/WorldProvider dimensionId g +FD net/minecraft/world/WorldProvider terrainType h +FD net/minecraft/world/WorldProvider generatorSettings i +FD net/minecraft/world/WorldProvider colorsSunriseSunset j +FD net/minecraft/world/WorldProviderHell$1 field_177764_a a +FD net/minecraft/world/gen/MapGenRavine field_75046_d d +FD net/minecraft/world/chunk/ChunkPrimer data a +FD net/minecraft/world/chunk/ChunkPrimer defaultState b +FD net/minecraft/world/gen/ChunkProviderSettings useWaterLakes A +FD net/minecraft/world/gen/ChunkProviderSettings waterLakeChance B +FD net/minecraft/world/gen/ChunkProviderSettings useLavaLakes C +FD net/minecraft/world/gen/ChunkProviderSettings lavaLakeChance D +FD net/minecraft/world/gen/ChunkProviderSettings useLavaOceans E +FD net/minecraft/world/gen/ChunkProviderSettings fixedBiome F +FD net/minecraft/world/gen/ChunkProviderSettings biomeSize G +FD net/minecraft/world/gen/ChunkProviderSettings riverSize H +FD net/minecraft/world/gen/ChunkProviderSettings dirtSize I +FD net/minecraft/world/gen/ChunkProviderSettings dirtCount J +FD net/minecraft/world/gen/ChunkProviderSettings dirtMinHeight K +FD net/minecraft/world/gen/ChunkProviderSettings dirtMaxHeight L +FD net/minecraft/world/gen/ChunkProviderSettings gravelSize M +FD net/minecraft/world/gen/ChunkProviderSettings gravelCount N +FD net/minecraft/world/gen/ChunkProviderSettings gravelMinHeight O +FD net/minecraft/world/gen/ChunkProviderSettings gravelMaxHeight P +FD net/minecraft/world/gen/ChunkProviderSettings graniteSize Q +FD net/minecraft/world/gen/ChunkProviderSettings graniteCount R +FD net/minecraft/world/gen/ChunkProviderSettings graniteMinHeight S +FD net/minecraft/world/gen/ChunkProviderSettings graniteMaxHeight T +FD net/minecraft/world/gen/ChunkProviderSettings dioriteSize U +FD net/minecraft/world/gen/ChunkProviderSettings dioriteCount V +FD net/minecraft/world/gen/ChunkProviderSettings dioriteMinHeight W +FD net/minecraft/world/gen/ChunkProviderSettings dioriteMaxHeight X +FD net/minecraft/world/gen/ChunkProviderSettings andesiteSize Y +FD net/minecraft/world/gen/ChunkProviderSettings andesiteCount Z +FD net/minecraft/world/gen/ChunkProviderSettings coordinateScale a +FD net/minecraft/world/gen/ChunkProviderSettings andesiteMinHeight aa +FD net/minecraft/world/gen/ChunkProviderSettings andesiteMaxHeight ab +FD net/minecraft/world/gen/ChunkProviderSettings coalSize ac +FD net/minecraft/world/gen/ChunkProviderSettings coalCount ad +FD net/minecraft/world/gen/ChunkProviderSettings coalMinHeight ae +FD net/minecraft/world/gen/ChunkProviderSettings coalMaxHeight af +FD net/minecraft/world/gen/ChunkProviderSettings ironSize ag +FD net/minecraft/world/gen/ChunkProviderSettings ironCount ah +FD net/minecraft/world/gen/ChunkProviderSettings ironMinHeight ai +FD net/minecraft/world/gen/ChunkProviderSettings ironMaxHeight aj +FD net/minecraft/world/gen/ChunkProviderSettings goldSize ak +FD net/minecraft/world/gen/ChunkProviderSettings goldCount al +FD net/minecraft/world/gen/ChunkProviderSettings goldMinHeight am +FD net/minecraft/world/gen/ChunkProviderSettings goldMaxHeight an +FD net/minecraft/world/gen/ChunkProviderSettings redstoneSize ao +FD net/minecraft/world/gen/ChunkProviderSettings redstoneCount ap +FD net/minecraft/world/gen/ChunkProviderSettings redstoneMinHeight aq +FD net/minecraft/world/gen/ChunkProviderSettings redstoneMaxHeight ar +FD net/minecraft/world/gen/ChunkProviderSettings diamondSize as +FD net/minecraft/world/gen/ChunkProviderSettings diamondCount at +FD net/minecraft/world/gen/ChunkProviderSettings diamondMinHeight au +FD net/minecraft/world/gen/ChunkProviderSettings diamondMaxHeight av +FD net/minecraft/world/gen/ChunkProviderSettings lapisSize aw +FD net/minecraft/world/gen/ChunkProviderSettings lapisCount ax +FD net/minecraft/world/gen/ChunkProviderSettings lapisCenterHeight ay +FD net/minecraft/world/gen/ChunkProviderSettings lapisSpread az +FD net/minecraft/world/gen/ChunkProviderSettings heightScale b +FD net/minecraft/world/gen/ChunkProviderSettings upperLimitScale c +FD net/minecraft/world/gen/ChunkProviderSettings lowerLimitScale d +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleX e +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleZ f +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleExponent g +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleX h +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleY i +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleZ j +FD net/minecraft/world/gen/ChunkProviderSettings baseSize k +FD net/minecraft/world/gen/ChunkProviderSettings stretchY l +FD net/minecraft/world/gen/ChunkProviderSettings biomeDepthWeight m +FD net/minecraft/world/gen/ChunkProviderSettings biomeDepthOffSet n +FD net/minecraft/world/gen/ChunkProviderSettings biomeScaleWeight o +FD net/minecraft/world/gen/ChunkProviderSettings biomeScaleOffset p +FD net/minecraft/world/gen/ChunkProviderSettings seaLevel q +FD net/minecraft/world/gen/ChunkProviderSettings useCaves r +FD net/minecraft/world/gen/ChunkProviderSettings useDungeons s +FD net/minecraft/world/gen/ChunkProviderSettings dungeonChance t +FD net/minecraft/world/gen/ChunkProviderSettings useStrongholds u +FD net/minecraft/world/gen/ChunkProviderSettings useVillages v +FD net/minecraft/world/gen/ChunkProviderSettings useMineShafts w +FD net/minecraft/world/gen/ChunkProviderSettings useTemples x +FD net/minecraft/world/gen/ChunkProviderSettings useMonuments y +FD net/minecraft/world/gen/ChunkProviderSettings useRavines z +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useRavines A +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useWaterLakes B +FD net/minecraft/world/gen/ChunkProviderSettings$Factory waterLakeChance C +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useLavaLakes D +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lavaLakeChance E +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useLavaOceans F +FD net/minecraft/world/gen/ChunkProviderSettings$Factory fixedBiome G +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeSize H +FD net/minecraft/world/gen/ChunkProviderSettings$Factory riverSize I +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtSize J +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtCount K +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtMinHeight L +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtMaxHeight M +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelSize N +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelCount O +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelMinHeight P +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelMaxHeight Q +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteSize R +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteCount S +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteMinHeight T +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteMaxHeight U +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteSize V +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteCount W +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteMinHeight X +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteMaxHeight Y +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteSize Z +FD net/minecraft/world/gen/ChunkProviderSettings$Factory JSON_ADAPTER a +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisSpread aA +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteCount aa +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteMinHeight ab +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteMaxHeight ac +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalSize ad +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalCount ae +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalMinHeight af +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalMaxHeight ag +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironSize ah +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironCount ai +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironMinHeight aj +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironMaxHeight ak +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldSize al +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldCount am +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldMinHeight an +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldMaxHeight ao +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneSize ap +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneCount aq +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneMinHeight ar +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneMaxHeight as +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondSize at +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondCount au +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondMinHeight av +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondMaxHeight aw +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisSize ax +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisCount ay +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisCenterHeight az +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coordinateScale b +FD net/minecraft/world/gen/ChunkProviderSettings$Factory heightScale c +FD net/minecraft/world/gen/ChunkProviderSettings$Factory upperLimitScale d +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lowerLimitScale e +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleX f +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleZ g +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleExponent h +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleX i +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleY j +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleZ k +FD net/minecraft/world/gen/ChunkProviderSettings$Factory baseSize l +FD net/minecraft/world/gen/ChunkProviderSettings$Factory stretchY m +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeDepthWeight n +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeDepthOffset o +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeScaleWeight p +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeScaleOffset q +FD net/minecraft/world/gen/ChunkProviderSettings$Factory seaLevel r +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useCaves s +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useDungeons t +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dungeonChance u +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useStrongholds v +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useVillages w +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useMineShafts x +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useTemples y +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useMonuments z +FD net/minecraft/world/gen/ChunkProviderDebug field_177464_a a +FD net/minecraft/world/gen/ChunkProviderDebug field_177462_b b +FD net/minecraft/world/gen/ChunkProviderDebug field_181039_c c +FD net/minecraft/world/gen/ChunkProviderDebug world d +FD net/minecraft/world/gen/ChunkProviderFlat worldObj a +FD net/minecraft/world/gen/ChunkProviderFlat random b +FD net/minecraft/world/gen/ChunkProviderFlat cachedBlockIDs c +FD net/minecraft/world/gen/ChunkProviderFlat flatWorldGenInfo d +FD net/minecraft/world/gen/ChunkProviderFlat structureGenerators e +FD net/minecraft/world/gen/ChunkProviderFlat hasDecoration f +FD net/minecraft/world/gen/ChunkProviderFlat hasDungeons g +FD net/minecraft/world/gen/ChunkProviderFlat waterLakeGenerator h +FD net/minecraft/world/gen/ChunkProviderFlat lavaLakeGenerator i +FD net/minecraft/world/gen/ChunkProviderHell field_177465_A A +FD net/minecraft/world/gen/ChunkProviderHell genNetherBridge B +FD net/minecraft/world/gen/ChunkProviderHell netherCaveGenerator C +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen6 a +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen7 b +FD net/minecraft/world/gen/ChunkProviderHell noiseData1 c +FD net/minecraft/world/gen/ChunkProviderHell noiseData2 d +FD net/minecraft/world/gen/ChunkProviderHell noiseData3 e +FD net/minecraft/world/gen/ChunkProviderHell noiseData4 f +FD net/minecraft/world/gen/ChunkProviderHell noiseData5 g +FD net/minecraft/world/gen/ChunkProviderHell worldObj h +FD net/minecraft/world/gen/ChunkProviderHell field_177466_i i +FD net/minecraft/world/gen/ChunkProviderHell hellRNG j +FD net/minecraft/world/gen/ChunkProviderHell slowsandNoise k +FD net/minecraft/world/gen/ChunkProviderHell gravelNoise l +FD net/minecraft/world/gen/ChunkProviderHell netherrackExclusivityNoise m +FD net/minecraft/world/gen/ChunkProviderHell noiseField n +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen1 o +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen2 p +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen3 q +FD net/minecraft/world/gen/ChunkProviderHell slowsandGravelNoiseGen r +FD net/minecraft/world/gen/ChunkProviderHell netherrackExculsivityNoiseGen s +FD net/minecraft/world/gen/ChunkProviderHell field_177470_t t +FD net/minecraft/world/gen/ChunkProviderHell field_177469_u u +FD net/minecraft/world/gen/ChunkProviderHell field_177468_v v +FD net/minecraft/world/gen/ChunkProviderHell field_177467_w w +FD net/minecraft/world/gen/ChunkProviderHell field_177473_x x +FD net/minecraft/world/gen/ChunkProviderHell field_177472_y y +FD net/minecraft/world/gen/ChunkProviderHell field_177471_z z +FD net/minecraft/world/gen/MapGenBase range a +FD net/minecraft/world/gen/MapGenBase rand b +FD net/minecraft/world/gen/MapGenBase worldObj c +FD net/minecraft/world/gen/ChunkProviderGenerate oceanMonumentGenerator A +FD net/minecraft/world/gen/ChunkProviderGenerate biomesForGeneration B +FD net/minecraft/world/gen/ChunkProviderGenerate noiseGen5 a +FD net/minecraft/world/gen/ChunkProviderGenerate noiseGen6 b +FD net/minecraft/world/gen/ChunkProviderGenerate mobSpawnerNoise c +FD net/minecraft/world/gen/ChunkProviderGenerate mainNoiseArray d +FD net/minecraft/world/gen/ChunkProviderGenerate lowerLimitNoiseArray e +FD net/minecraft/world/gen/ChunkProviderGenerate upperLimitNoiseArray f +FD net/minecraft/world/gen/ChunkProviderGenerate depthNoiseArray g +FD net/minecraft/world/gen/ChunkProviderGenerate rand h +FD net/minecraft/world/gen/ChunkProviderGenerate field_147431_j i +FD net/minecraft/world/gen/ChunkProviderGenerate field_147432_k j +FD net/minecraft/world/gen/ChunkProviderGenerate field_147429_l k +FD net/minecraft/world/gen/ChunkProviderGenerate field_147430_m l +FD net/minecraft/world/gen/ChunkProviderGenerate worldObj m +FD net/minecraft/world/gen/ChunkProviderGenerate mapFeaturesEnabled n +FD net/minecraft/world/gen/ChunkProviderGenerate field_177475_o o +FD net/minecraft/world/gen/ChunkProviderGenerate field_147434_q p +FD net/minecraft/world/gen/ChunkProviderGenerate parabolicField q +FD net/minecraft/world/gen/ChunkProviderGenerate settings r +FD net/minecraft/world/gen/ChunkProviderGenerate oceanBlockTmpl s +FD net/minecraft/world/gen/ChunkProviderGenerate stoneNoise t +FD net/minecraft/world/gen/ChunkProviderGenerate caveGenerator u +FD net/minecraft/world/gen/ChunkProviderGenerate strongholdGenerator v +FD net/minecraft/world/gen/ChunkProviderGenerate villageGenerator w +FD net/minecraft/world/gen/ChunkProviderGenerate mineshaftGenerator x +FD net/minecraft/world/gen/ChunkProviderGenerate scatteredFeatureGenerator y +FD net/minecraft/world/gen/ChunkProviderGenerate ravineGenerator z +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen4 a +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen5 b +FD net/minecraft/world/gen/ChunkProviderEnd noiseData1 c +FD net/minecraft/world/gen/ChunkProviderEnd noiseData2 d +FD net/minecraft/world/gen/ChunkProviderEnd noiseData3 e +FD net/minecraft/world/gen/ChunkProviderEnd noiseData4 f +FD net/minecraft/world/gen/ChunkProviderEnd noiseData5 g +FD net/minecraft/world/gen/ChunkProviderEnd endRNG h +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen1 i +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen2 j +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen3 k +FD net/minecraft/world/gen/ChunkProviderEnd endWorld l +FD net/minecraft/world/gen/ChunkProviderEnd densities m +FD net/minecraft/world/gen/ChunkProviderEnd biomesForGeneration n +FD net/minecraft/world/gen/feature/WorldGenBigTree heightLimit a +FD net/minecraft/world/gen/feature/WorldGenBigTree height b +FD net/minecraft/world/gen/feature/WorldGenBigTree heightAttenuation c +FD net/minecraft/world/gen/feature/WorldGenBigTree branchSlope d +FD net/minecraft/world/gen/feature/WorldGenBigTree scaleWidth e +FD net/minecraft/world/gen/feature/WorldGenBigTree leafDensity f +FD net/minecraft/world/gen/feature/WorldGenBigTree trunkSize g +FD net/minecraft/world/gen/feature/WorldGenBigTree heightLimitLimit h +FD net/minecraft/world/gen/feature/WorldGenBigTree leafDistanceLimit i +FD net/minecraft/world/gen/feature/WorldGenBigTree field_175948_j j +FD net/minecraft/world/gen/feature/WorldGenBigTree rand k +FD net/minecraft/world/gen/feature/WorldGenBigTree world l +FD net/minecraft/world/gen/feature/WorldGenBigTree basePos m +FD net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates field_178000_b c +FD net/minecraft/world/gen/feature/WorldGenForest field_181629_a a +FD net/minecraft/world/gen/feature/WorldGenForest field_181630_b b +FD net/minecraft/world/gen/feature/WorldGenForest useExtraRandomHeight c +FD net/minecraft/world/gen/feature/WorldGenBlockBlob field_150545_a a +FD net/minecraft/world/gen/feature/WorldGenBlockBlob field_150544_b b +FD net/minecraft/world/gen/feature/WorldGeneratorBonusChest chestItems a +FD net/minecraft/world/gen/feature/WorldGeneratorBonusChest itemsToGenerateInBonusChest b +FD net/minecraft/world/gen/GeneratorBushFeature field_175908_a a +FD net/minecraft/world/gen/feature/WorldGenClay field_150546_a a +FD net/minecraft/world/gen/feature/WorldGenClay numberOfBlocks b +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175913_a a +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175911_b b +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175912_c c +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175910_d d +FD net/minecraft/world/gen/feature/WorldGenDoublePlant field_150549_a a +FD net/minecraft/world/gen/feature/WorldGenerator doBlockNotify a +FD net/minecraft/world/gen/feature/WorldGenFlowers flower a +FD net/minecraft/world/gen/feature/WorldGenFlowers field_175915_b b +FD net/minecraft/world/gen/feature/WorldGenShrub leavesMetadata a +FD net/minecraft/world/gen/feature/WorldGenShrub woodMetadata b +FD net/minecraft/world/gen/feature/WorldGenHellLava field_150553_a a +FD net/minecraft/world/gen/feature/WorldGenHellLava field_94524_b b +FD net/minecraft/world/gen/feature/WorldGenBigMushroom mushroomType a +FD net/minecraft/world/gen/feature/WorldGenIcePath block a +FD net/minecraft/world/gen/feature/WorldGenIcePath basePathWidth b +FD net/minecraft/world/gen/feature/WorldGenLakes block a +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181633_e e +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181634_f f +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181635_g g +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree useBaseHeight h +FD net/minecraft/world/gen/feature/WorldGenHugeTrees baseHeight a +FD net/minecraft/world/gen/feature/WorldGenHugeTrees woodMetadata b +FD net/minecraft/world/gen/feature/WorldGenHugeTrees leavesMetadata c +FD net/minecraft/world/gen/feature/WorldGenHugeTrees extraRandomHeight d +FD net/minecraft/world/gen/feature/WorldGenDungeons field_175918_a a +FD net/minecraft/world/gen/feature/WorldGenDungeons SPAWNERTYPES b +FD net/minecraft/world/gen/feature/WorldGenDungeons CHESTCONTENT c +FD net/minecraft/world/gen/feature/WorldGenMinable oreBlock a +FD net/minecraft/world/gen/feature/WorldGenMinable numberOfBlocks b +FD net/minecraft/world/gen/feature/WorldGenMinable predicate c +FD net/minecraft/world/gen/feature/WorldGenTaiga1 field_181636_a a +FD net/minecraft/world/gen/feature/WorldGenTaiga1 field_181637_b b +FD net/minecraft/world/gen/feature/WorldGenCanopyTree field_181640_a a +FD net/minecraft/world/gen/feature/WorldGenCanopyTree field_181641_b b +FD net/minecraft/world/gen/feature/WorldGenSand block a +FD net/minecraft/world/gen/feature/WorldGenSand radius b +FD net/minecraft/world/gen/feature/WorldGenSavannaTree field_181643_a a +FD net/minecraft/world/gen/feature/WorldGenSavannaTree field_181644_b b +FD net/minecraft/world/gen/feature/WorldGenSpikes baseBlockRequired a +FD net/minecraft/world/gen/feature/WorldGenLiquids block a +FD net/minecraft/world/gen/feature/WorldGenTaiga2 field_181645_a a +FD net/minecraft/world/gen/feature/WorldGenTaiga2 field_181646_b b +FD net/minecraft/world/gen/feature/WorldGenSwamp field_181648_a a +FD net/minecraft/world/gen/feature/WorldGenSwamp field_181649_b b +FD net/minecraft/world/gen/feature/WorldGenTallGrass tallGrassState a +FD net/minecraft/world/gen/feature/WorldGenTrees field_181653_a a +FD net/minecraft/world/gen/feature/WorldGenTrees field_181654_b b +FD net/minecraft/world/gen/feature/WorldGenTrees minTreeHeight c +FD net/minecraft/world/gen/feature/WorldGenTrees vinesGrow d +FD net/minecraft/world/gen/feature/WorldGenTrees metaWood e +FD net/minecraft/world/gen/feature/WorldGenTrees metaLeaves f +FD net/minecraft/world/gen/FlatGeneratorInfo flatLayers a +FD net/minecraft/world/gen/FlatGeneratorInfo worldFeatures b +FD net/minecraft/world/gen/FlatGeneratorInfo biomeToUse c +FD net/minecraft/world/gen/FlatLayerInfo field_175902_a a +FD net/minecraft/world/gen/FlatLayerInfo layerMaterial b +FD net/minecraft/world/gen/FlatLayerInfo layerCount c +FD net/minecraft/world/gen/FlatLayerInfo layerMinimumY d +FD net/minecraft/world/gen/structure/StructureBoundingBox minX a +FD net/minecraft/world/gen/structure/StructureBoundingBox minY b +FD net/minecraft/world/gen/structure/StructureBoundingBox minZ c +FD net/minecraft/world/gen/structure/StructureBoundingBox maxX d +FD net/minecraft/world/gen/structure/StructureBoundingBox maxY e +FD net/minecraft/world/gen/structure/StructureBoundingBox maxZ f +FD net/minecraft/world/gen/structure/StructureBoundingBox$1 field_175895_a a +FD net/minecraft/world/gen/structure/MapGenMineshaft field_82673_e d +FD net/minecraft/world/gen/structure/StructureMineshaftPieces CHEST_CONTENT_WEIGHT_LIST a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$1 field_175894_a a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor hasRails a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor hasSpiders b +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor spawnerPlaced c +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor sectionCount d +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross corridorDirection a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross isMultipleFloors b +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Room roomsLinkedToTheRoom a +FD net/minecraft/world/gen/structure/MapGenNetherBridge spawnList d +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces primaryComponents a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces secondaryComponents b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$1 field_175888_a a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$End fillSeed b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor field_111021_b b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 field_111020_b b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne hasSpawner b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece field_111019_a a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight weightClass a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78826_b b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78827_c c +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78824_d d +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78825_e e +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start theNetherBridgePieceWeight b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start primaryWeights c +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start secondaryWeights d +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start field_74967_d e +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175802_d d +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175800_f f +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175801_g g +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175803_h h +FD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument field_175791_c c +FD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument field_175790_d d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$1 field_175971_a a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175845_o o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175844_p p +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175843_q q +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175828_a a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175826_b b +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175827_c c +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175824_d d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175825_e e +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175822_f f +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175823_g g +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175831_h h +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175832_i i +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175829_j j +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175830_k k +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleRoom field_175833_o o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$WingRoom field_175834_o o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175967_a a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175965_b b +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175966_c c +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175963_d d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175964_e e +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175962_f f +FD net/minecraft/world/gen/structure/MapGenScatteredFeature biomelist d +FD net/minecraft/world/gen/structure/MapGenScatteredFeature scatteredFeatureSpawnList f +FD net/minecraft/world/gen/structure/MapGenScatteredFeature maxDistanceBetweenScatteredFeatures g +FD net/minecraft/world/gen/structure/MapGenScatteredFeature minDistanceBetweenScatteredFeatures h +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$1 field_175956_a a +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid hasPlacedChest e +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid itemsToGenerateInTemple f +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedMainChest e +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedHiddenChest f +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedTrap1 g +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedTrap2 h +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid field_175816_i i +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid field_175815_j j +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid junglePyramidsRandomScatteredStones k +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeX a +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeY b +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeZ c +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature field_74936_d d +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$SwampHut hasWitch e +FD net/minecraft/world/gen/structure/MapGenStronghold field_151546_e d +FD net/minecraft/world/gen/structure/MapGenStronghold ranBiomeCheck f +FD net/minecraft/world/gen/structure/MapGenStronghold structureCoords g +FD net/minecraft/world/gen/structure/MapGenStronghold field_82671_h h +FD net/minecraft/world/gen/structure/MapGenStronghold field_82672_i i +FD net/minecraft/world/gen/structure/StructureStrongholdPieces totalWeight a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces pieceWeightArray b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces structurePieceList c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces strongComponentType d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces strongholdStones e +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$3 field_75245_a a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$3 field_175951_b b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor strongholdChestContents a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor hasMadeChest b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor field_74993_a a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74996_b a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74997_c b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74995_d c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74999_h e +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library strongholdLibraryChestContents a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library isLargeRoom b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight pieceClass a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight pieceWeight b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight instancesSpawned c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight instancesLimit d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom hasSpawner a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing roomType a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing strongholdRoomCrossingChestContents b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs field_75024_a a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 strongholdPieceWeight a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 strongholdPortalRoom b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 field_75026_c c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight expandsX a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight expandsZ b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold field_143013_d d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door OPENING a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door WOOD_DOOR b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door GRATES c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door IRON_DOOR d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door $VALUES e +FD net/minecraft/world/gen/structure/MapGenStructure structureData d +FD net/minecraft/world/gen/structure/MapGenStructure structureMap e +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85169_a a +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85167_b b +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85168_c c +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85165_a a +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85163_b b +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85164_c c +FD net/minecraft/world/gen/structure/MapGenStructure$3 field_85161_a a +FD net/minecraft/world/gen/structure/MapGenStructureIO logger a +FD net/minecraft/world/gen/structure/MapGenStructureIO startNameToClassMap b +FD net/minecraft/world/gen/structure/MapGenStructureIO startClassToNameMap c +FD net/minecraft/world/gen/structure/MapGenStructureIO componentNameToClassMap d +FD net/minecraft/world/gen/structure/MapGenStructureIO componentClassToNameMap e +FD net/minecraft/world/gen/structure/MapGenStructureData tagCompound b +FD net/minecraft/world/gen/structure/StructureComponent boundingBox l +FD net/minecraft/world/gen/structure/StructureComponent coordBaseMode m +FD net/minecraft/world/gen/structure/StructureComponent componentType n +FD net/minecraft/world/gen/structure/StructureComponent$1 field_176100_a a +FD net/minecraft/world/gen/structure/StructureComponent$BlockSelector blockstate a +FD net/minecraft/world/gen/structure/StructureStart components a +FD net/minecraft/world/gen/structure/StructureStart boundingBox b +FD net/minecraft/world/gen/structure/StructureStart chunkPosX c +FD net/minecraft/world/gen/structure/StructureStart chunkPosZ d +FD net/minecraft/world/gen/structure/MapGenVillage villageSpawnBiomes d +FD net/minecraft/world/gen/structure/MapGenVillage terrainType f +FD net/minecraft/world/gen/structure/MapGenVillage field_82665_g g +FD net/minecraft/world/gen/structure/MapGenVillage field_82666_h h +FD net/minecraft/world/gen/structure/MapGenVillage$Start hasMoreThanTwoComponents c +FD net/minecraft/world/gen/structure/StructureVillagePieces$1 field_176064_a a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeA a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeB b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeC c +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeD d +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 cropTypeA a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 cropTypeB b +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePieceClass a +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePieceWeight b +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePiecesSpawned c +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePiecesLimit d +FD net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden isRoofAccessible a +FD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut isTallHouse a +FD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut tablePosition b +FD net/minecraft/world/gen/structure/StructureVillagePieces$House2 villageBlacksmithChestContents a +FD net/minecraft/world/gen/structure/StructureVillagePieces$House2 hasMadeChest b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start worldChunkMngr a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start inDesert b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start terrainType c +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start structVillagePieceWeight d +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start structureVillageWeightedPieceList e +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start field_74932_i f +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start field_74930_j g +FD net/minecraft/world/gen/structure/StructureVillagePieces$Path length a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village villagersSpawned a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village isDesertVillage b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village field_143015_k h +FD net/minecraft/world/gen/NoiseGeneratorImproved xCoord a +FD net/minecraft/world/gen/NoiseGeneratorImproved yCoord b +FD net/minecraft/world/gen/NoiseGeneratorImproved zCoord c +FD net/minecraft/world/gen/NoiseGeneratorImproved permutations d +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152381_e e +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152382_f f +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152383_g g +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152384_h h +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152385_i i +FD net/minecraft/world/gen/NoiseGeneratorOctaves generatorCollection a +FD net/minecraft/world/gen/NoiseGeneratorOctaves octaves b +FD net/minecraft/world/gen/NoiseGeneratorPerlin field_151603_a a +FD net/minecraft/world/gen/NoiseGeneratorPerlin field_151602_b b +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151614_a a +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151612_b b +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151613_c c +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151610_d d +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151611_e e +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151608_f f +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151609_g g +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151615_h h +FD net/minecraft/block/material/Material cactus A +FD net/minecraft/block/material/Material clay B +FD net/minecraft/block/material/Material gourd C +FD net/minecraft/block/material/Material dragonEgg D +FD net/minecraft/block/material/Material portal E +FD net/minecraft/block/material/Material cake F +FD net/minecraft/block/material/Material web G +FD net/minecraft/block/material/Material piston H +FD net/minecraft/block/material/Material barrier I +FD net/minecraft/block/material/Material canBurn J +FD net/minecraft/block/material/Material replaceable K +FD net/minecraft/block/material/Material isTranslucent L +FD net/minecraft/block/material/Material materialMapColor M +FD net/minecraft/block/material/Material requiresNoTool N +FD net/minecraft/block/material/Material mobilityFlag O +FD net/minecraft/block/material/Material isAdventureModeExempt P +FD net/minecraft/block/material/Material air a +FD net/minecraft/block/material/Material grass b +FD net/minecraft/block/material/Material ground c +FD net/minecraft/block/material/Material wood d +FD net/minecraft/block/material/Material rock e +FD net/minecraft/block/material/Material iron f +FD net/minecraft/block/material/Material anvil g +FD net/minecraft/block/material/Material water h +FD net/minecraft/block/material/Material lava i +FD net/minecraft/block/material/Material leaves j +FD net/minecraft/block/material/Material plants k +FD net/minecraft/block/material/Material vine l +FD net/minecraft/block/material/Material sponge m +FD net/minecraft/block/material/Material cloth n +FD net/minecraft/block/material/Material fire o +FD net/minecraft/block/material/Material sand p +FD net/minecraft/block/material/Material circuits q +FD net/minecraft/block/material/Material carpet r +FD net/minecraft/block/material/Material glass s +FD net/minecraft/block/material/Material redstoneLight t +FD net/minecraft/block/material/Material tnt u +FD net/minecraft/block/material/Material coral v +FD net/minecraft/block/material/Material ice w +FD net/minecraft/block/material/Material packedIce x +FD net/minecraft/block/material/Material snow y +FD net/minecraft/block/material/Material craftedSnow z +FD net/minecraft/block/material/MapColor blueColor A +FD net/minecraft/block/material/MapColor brownColor B +FD net/minecraft/block/material/MapColor greenColor C +FD net/minecraft/block/material/MapColor redColor D +FD net/minecraft/block/material/MapColor blackColor E +FD net/minecraft/block/material/MapColor goldColor F +FD net/minecraft/block/material/MapColor diamondColor G +FD net/minecraft/block/material/MapColor lapisColor H +FD net/minecraft/block/material/MapColor emeraldColor I +FD net/minecraft/block/material/MapColor obsidianColor J +FD net/minecraft/block/material/MapColor netherrackColor K +FD net/minecraft/block/material/MapColor colorValue L +FD net/minecraft/block/material/MapColor colorIndex M +FD net/minecraft/block/material/MapColor mapColorArray a +FD net/minecraft/block/material/MapColor airColor b +FD net/minecraft/block/material/MapColor grassColor c +FD net/minecraft/block/material/MapColor sandColor d +FD net/minecraft/block/material/MapColor clothColor e +FD net/minecraft/block/material/MapColor tntColor f +FD net/minecraft/block/material/MapColor iceColor g +FD net/minecraft/block/material/MapColor ironColor h +FD net/minecraft/block/material/MapColor foliageColor i +FD net/minecraft/block/material/MapColor snowColor j +FD net/minecraft/block/material/MapColor clayColor k +FD net/minecraft/block/material/MapColor dirtColor l +FD net/minecraft/block/material/MapColor stoneColor m +FD net/minecraft/block/material/MapColor waterColor n +FD net/minecraft/block/material/MapColor woodColor o +FD net/minecraft/block/material/MapColor quartzColor p +FD net/minecraft/block/material/MapColor adobeColor q +FD net/minecraft/block/material/MapColor magentaColor r +FD net/minecraft/block/material/MapColor lightBlueColor s +FD net/minecraft/block/material/MapColor yellowColor t +FD net/minecraft/block/material/MapColor limeColor u +FD net/minecraft/block/material/MapColor pinkColor v +FD net/minecraft/block/material/MapColor grayColor w +FD net/minecraft/block/material/MapColor silverColor x +FD net/minecraft/block/material/MapColor cyanColor y +FD net/minecraft/block/material/MapColor purpleColor z +FD net/minecraft/world/gen/layer/GenLayerEdge field_151627_c c +FD net/minecraft/world/gen/layer/GenLayerEdge$1 field_151642_a a +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode COOL_WARM a +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode HEAT_ICE b +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode SPECIAL c +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode $VALUES d +FD net/minecraft/world/gen/layer/GenLayerBiome field_151623_c c +FD net/minecraft/world/gen/layer/GenLayerBiome field_151621_d d +FD net/minecraft/world/gen/layer/GenLayerBiome field_151622_e e +FD net/minecraft/world/gen/layer/GenLayerBiome field_151620_f f +FD net/minecraft/world/gen/layer/GenLayerBiome field_175973_g g +FD net/minecraft/world/gen/layer/IntCache intCacheSize a +FD net/minecraft/world/gen/layer/IntCache freeSmallArrays b +FD net/minecraft/world/gen/layer/IntCache inUseSmallArrays c +FD net/minecraft/world/gen/layer/IntCache freeLargeArrays d +FD net/minecraft/world/gen/layer/IntCache inUseLargeArrays e +FD net/minecraft/world/gen/layer/GenLayer parent a +FD net/minecraft/world/gen/layer/GenLayer baseSeed b +FD net/minecraft/world/gen/layer/GenLayer worldGenSeed c +FD net/minecraft/world/gen/layer/GenLayer chunkSeed d +FD net/minecraft/world/gen/layer/GenLayer$1 field_176191_a a +FD net/minecraft/world/gen/layer/GenLayer$2 field_176192_a a +FD net/minecraft/world/gen/layer/GenLayerHills logger c +FD net/minecraft/world/gen/layer/GenLayerHills field_151628_d d +FD net/minecraft/world/gen/layer/GenLayerRiverMix biomePatternGeneratorChain c +FD net/minecraft/world/gen/layer/GenLayerRiverMix riverPatternGeneratorChain d +FD net/minecraft/pathfinding/Path pathPoints a +FD net/minecraft/pathfinding/Path count b +FD net/minecraft/pathfinding/PathPoint xCoord a +FD net/minecraft/pathfinding/PathPoint yCoord b +FD net/minecraft/pathfinding/PathPoint zCoord c +FD net/minecraft/pathfinding/PathPoint index d +FD net/minecraft/pathfinding/PathPoint totalPathDistance e +FD net/minecraft/pathfinding/PathPoint distanceToNext f +FD net/minecraft/pathfinding/PathPoint distanceToTarget g +FD net/minecraft/pathfinding/PathPoint previous h +FD net/minecraft/pathfinding/PathPoint visited i +FD net/minecraft/pathfinding/PathPoint hash j +FD net/minecraft/world/pathfinder/NodeProcessor blockaccess a +FD net/minecraft/world/pathfinder/NodeProcessor pointMap b +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeX c +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeY d +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeZ e +FD net/minecraft/pathfinding/PathEntity points a +FD net/minecraft/pathfinding/PathEntity currentPathIndex b +FD net/minecraft/pathfinding/PathEntity pathLength c +FD net/minecraft/pathfinding/PathFinder path a +FD net/minecraft/pathfinding/PathFinder pathOptions b +FD net/minecraft/pathfinding/PathFinder nodeProcessor c +FD net/minecraft/world/pathfinder/WalkNodeProcessor canEnterDoors f +FD net/minecraft/world/pathfinder/WalkNodeProcessor canBreakDoors g +FD net/minecraft/world/pathfinder/WalkNodeProcessor avoidsWater h +FD net/minecraft/world/pathfinder/WalkNodeProcessor canSwim i +FD net/minecraft/world/pathfinder/WalkNodeProcessor shouldAvoidWater j +FD net/minecraft/world/WorldSavedData mapName a +FD net/minecraft/world/WorldSavedData dirty b +FD net/minecraft/util/Vec4b field_176117_a a +FD net/minecraft/util/Vec4b field_176115_b b +FD net/minecraft/util/Vec4b field_176116_c c +FD net/minecraft/util/Vec4b field_176114_d d +FD net/minecraft/world/storage/MapData xCenter b +FD net/minecraft/world/storage/MapData zCenter c +FD net/minecraft/world/storage/MapData dimension d +FD net/minecraft/world/storage/MapData scale e +FD net/minecraft/world/storage/MapData colors f +FD net/minecraft/world/storage/MapData playersArrayList g +FD net/minecraft/world/storage/MapData mapDecorations h +FD net/minecraft/world/storage/MapData playersHashMap i +FD net/minecraft/world/storage/MapData$MapInfo entityplayerObj a +FD net/minecraft/world/storage/MapData$MapInfo field_82569_d b +FD net/minecraft/world/storage/MapData$MapInfo field_176107_c c +FD net/minecraft/world/storage/MapData$MapInfo field_176105_d d +FD net/minecraft/world/storage/MapData$MapInfo minX e +FD net/minecraft/world/storage/MapData$MapInfo minY f +FD net/minecraft/world/storage/MapData$MapInfo maxX g +FD net/minecraft/world/storage/MapData$MapInfo maxY h +FD net/minecraft/world/storage/MapData$MapInfo field_176109_i i +FD net/minecraft/world/chunk/storage/AnvilSaveConverter logger b +FD net/minecraft/world/chunk/storage/AnvilSaveConverter$1 field_76172_a a +FD net/minecraft/world/storage/DerivedWorldInfo theWorldInfo b +FD net/minecraft/world/storage/SaveHandler logger a +FD net/minecraft/world/storage/SaveHandler worldDirectory b +FD net/minecraft/world/storage/SaveHandler playersDirectory c +FD net/minecraft/world/storage/SaveHandler mapDataDir d +FD net/minecraft/world/storage/SaveHandler initializationTime e +FD net/minecraft/world/storage/SaveHandler saveDirectoryName f +FD net/minecraft/world/storage/SaveFormatOld savesDirectory a +FD net/minecraft/world/storage/SaveFormatOld logger b +FD net/minecraft/world/storage/WorldInfo difficultyLocked A +FD net/minecraft/world/storage/WorldInfo borderCenterX B +FD net/minecraft/world/storage/WorldInfo borderCenterZ C +FD net/minecraft/world/storage/WorldInfo borderSize D +FD net/minecraft/world/storage/WorldInfo borderSizeLerpTime E +FD net/minecraft/world/storage/WorldInfo borderSizeLerpTarget F +FD net/minecraft/world/storage/WorldInfo borderSafeZone G +FD net/minecraft/world/storage/WorldInfo borderDamagePerBlock H +FD net/minecraft/world/storage/WorldInfo borderWarningDistance I +FD net/minecraft/world/storage/WorldInfo borderWarningTime J +FD net/minecraft/world/storage/WorldInfo theGameRules K +FD net/minecraft/world/storage/WorldInfo DEFAULT_DIFFICULTY a +FD net/minecraft/world/storage/WorldInfo randomSeed b +FD net/minecraft/world/storage/WorldInfo terrainType c +FD net/minecraft/world/storage/WorldInfo generatorOptions d +FD net/minecraft/world/storage/WorldInfo spawnX e +FD net/minecraft/world/storage/WorldInfo spawnY f +FD net/minecraft/world/storage/WorldInfo spawnZ g +FD net/minecraft/world/storage/WorldInfo totalTime h +FD net/minecraft/world/storage/WorldInfo worldTime i +FD net/minecraft/world/storage/WorldInfo lastTimePlayed j +FD net/minecraft/world/storage/WorldInfo sizeOnDisk k +FD net/minecraft/world/storage/WorldInfo playerTag l +FD net/minecraft/world/storage/WorldInfo dimension m +FD net/minecraft/world/storage/WorldInfo levelName n +FD net/minecraft/world/storage/WorldInfo saveVersion o +FD net/minecraft/world/storage/WorldInfo cleanWeatherTime p +FD net/minecraft/world/storage/WorldInfo raining q +FD net/minecraft/world/storage/WorldInfo rainTime r +FD net/minecraft/world/storage/WorldInfo thundering s +FD net/minecraft/world/storage/WorldInfo thunderTime t +FD net/minecraft/world/storage/WorldInfo theGameType u +FD net/minecraft/world/storage/WorldInfo mapFeaturesEnabled v +FD net/minecraft/world/storage/WorldInfo hardcore w +FD net/minecraft/world/storage/WorldInfo allowCommands x +FD net/minecraft/world/storage/WorldInfo initialized y +FD net/minecraft/world/storage/WorldInfo difficulty z +FD net/minecraft/world/storage/WorldInfo$1 field_85143_a a +FD net/minecraft/world/storage/WorldInfo$2 field_85139_a a +FD net/minecraft/world/storage/WorldInfo$3 field_85141_a a +FD net/minecraft/world/storage/WorldInfo$4 field_85135_a a +FD net/minecraft/world/storage/WorldInfo$5 field_85137_a a +FD net/minecraft/world/storage/WorldInfo$6 field_85115_a a +FD net/minecraft/world/storage/WorldInfo$7 field_85113_a a +FD net/minecraft/world/storage/WorldInfo$8 field_85111_a a +FD net/minecraft/world/storage/WorldInfo$9 field_85109_a a +FD net/minecraft/world/storage/SaveFormatComparator fileName a +FD net/minecraft/world/storage/SaveFormatComparator displayName b +FD net/minecraft/world/storage/SaveFormatComparator lastTimePlayed c +FD net/minecraft/world/storage/SaveFormatComparator sizeOnDisk d +FD net/minecraft/world/storage/SaveFormatComparator requiresConversion e +FD net/minecraft/world/storage/SaveFormatComparator theEnumGameType f +FD net/minecraft/world/storage/SaveFormatComparator hardcore g +FD net/minecraft/world/storage/SaveFormatComparator cheatsEnabled h +FD net/minecraft/world/storage/MapStorage loadedDataMap a +FD net/minecraft/world/storage/MapStorage saveHandler b +FD net/minecraft/world/storage/MapStorage loadedDataList c +FD net/minecraft/world/storage/MapStorage idCounts d +FD net/minecraft/world/storage/ThreadedFileIOBase threadedIOInstance a +FD net/minecraft/world/storage/ThreadedFileIOBase threadedIOQueue b +FD net/minecraft/world/storage/ThreadedFileIOBase writeQueuedCounter c +FD net/minecraft/world/storage/ThreadedFileIOBase savedIOCounter d +FD net/minecraft/world/storage/ThreadedFileIOBase isThreadWaiting e +FD net/minecraft/util/AxisAlignedBB minX a +FD net/minecraft/util/AxisAlignedBB minY b +FD net/minecraft/util/AxisAlignedBB minZ c +FD net/minecraft/util/AxisAlignedBB maxX d +FD net/minecraft/util/AxisAlignedBB maxY e +FD net/minecraft/util/AxisAlignedBB maxZ f +FD net/minecraft/util/MovingObjectPosition typeOfHit a +FD net/minecraft/util/MovingObjectPosition sideHit b +FD net/minecraft/util/MovingObjectPosition hitVec c +FD net/minecraft/util/MovingObjectPosition entityHit d +FD net/minecraft/util/MovingObjectPosition blockPos e +FD net/minecraft/util/MovingObjectPosition$MovingObjectType MISS a +FD net/minecraft/util/MovingObjectPosition$MovingObjectType BLOCK b +FD net/minecraft/util/MovingObjectPosition$MovingObjectType ENTITY c +FD net/minecraft/util/MovingObjectPosition$MovingObjectType $VALUES d +FD net/minecraft/util/Vec3 xCoord a +FD net/minecraft/util/Vec3 yCoord b +FD net/minecraft/util/Vec3 zCoord c +FD net/minecraft/scoreboard/ScoreObjective theScoreboard a +FD net/minecraft/scoreboard/ScoreObjective name b +FD net/minecraft/scoreboard/ScoreObjective objectiveCriteria c +FD net/minecraft/scoreboard/ScoreObjective renderType d +FD net/minecraft/scoreboard/ScoreObjective displayName e +FD net/minecraft/scoreboard/ScorePlayerTeam theScoreboard a +FD net/minecraft/scoreboard/ScorePlayerTeam registeredName b +FD net/minecraft/scoreboard/ScorePlayerTeam membershipSet c +FD net/minecraft/scoreboard/ScorePlayerTeam teamNameSPT d +FD net/minecraft/scoreboard/ScorePlayerTeam namePrefixSPT e +FD net/minecraft/scoreboard/ScorePlayerTeam colorSuffix f +FD net/minecraft/scoreboard/ScorePlayerTeam allowFriendlyFire g +FD net/minecraft/scoreboard/ScorePlayerTeam canSeeFriendlyInvisibles h +FD net/minecraft/scoreboard/ScorePlayerTeam nameTagVisibility i +FD net/minecraft/scoreboard/ScorePlayerTeam deathMessageVisibility j +FD net/minecraft/scoreboard/ScorePlayerTeam chatFormat k +FD net/minecraft/scoreboard/Score scoreComparator a +FD net/minecraft/scoreboard/Score theScoreboard b +FD net/minecraft/scoreboard/Score theScoreObjective c +FD net/minecraft/scoreboard/Score scorePlayerName d +FD net/minecraft/scoreboard/Score scorePoints e +FD net/minecraft/scoreboard/Score locked f +FD net/minecraft/scoreboard/Score forceUpdate g +FD net/minecraft/scoreboard/Scoreboard scoreObjectives a +FD net/minecraft/scoreboard/Scoreboard scoreObjectiveCriterias b +FD net/minecraft/scoreboard/Scoreboard entitiesScoreObjectives c +FD net/minecraft/scoreboard/Scoreboard objectiveDisplaySlots d +FD net/minecraft/scoreboard/Scoreboard teams e +FD net/minecraft/scoreboard/Scoreboard teamMemberships f +FD net/minecraft/scoreboard/Scoreboard field_178823_g g +FD net/minecraft/scoreboard/ScoreboardSaveData logger b +FD net/minecraft/scoreboard/ScoreboardSaveData theScoreboard c +FD net/minecraft/scoreboard/ScoreboardSaveData delayedInitNbt d +FD net/minecraft/scoreboard/Team$EnumVisible ALWAYS a +FD net/minecraft/scoreboard/Team$EnumVisible NEVER b +FD net/minecraft/scoreboard/Team$EnumVisible HIDE_FOR_OTHER_TEAMS c +FD net/minecraft/scoreboard/Team$EnumVisible HIDE_FOR_OWN_TEAM d +FD net/minecraft/scoreboard/Team$EnumVisible internalName e +FD net/minecraft/scoreboard/Team$EnumVisible id f +FD net/minecraft/scoreboard/Team$EnumVisible field_178828_g g +FD net/minecraft/scoreboard/Team$EnumVisible $VALUES h +FD net/minecraft/scoreboard/GoalColor goalName j +FD net/minecraft/scoreboard/ScoreDummyCriteria dummyName j +FD net/minecraft/scoreboard/IScoreObjectiveCriteria INSTANCES a +FD net/minecraft/scoreboard/IScoreObjectiveCriteria DUMMY b +FD net/minecraft/scoreboard/IScoreObjectiveCriteria TRIGGER c +FD net/minecraft/scoreboard/IScoreObjectiveCriteria deathCount d +FD net/minecraft/scoreboard/IScoreObjectiveCriteria playerKillCount e +FD net/minecraft/scoreboard/IScoreObjectiveCriteria totalKillCount f +FD net/minecraft/scoreboard/IScoreObjectiveCriteria health g +FD net/minecraft/scoreboard/IScoreObjectiveCriteria field_178792_h h +FD net/minecraft/scoreboard/IScoreObjectiveCriteria field_178793_i i +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType INTEGER a +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType HEARTS b +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType field_178801_c c +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType field_178798_d d +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType $VALUES e +FD net/minecraft/stats/ObjectiveStat stat j +FD net/minecraft/client/renderer/ActiveRenderInfo VIEWPORT a +FD net/minecraft/client/renderer/ActiveRenderInfo MODELVIEW b +FD net/minecraft/client/renderer/ActiveRenderInfo PROJECTION c +FD net/minecraft/client/renderer/ActiveRenderInfo OBJECTCOORDS d +FD net/minecraft/client/renderer/ActiveRenderInfo position e +FD net/minecraft/client/renderer/ActiveRenderInfo rotationX f +FD net/minecraft/client/renderer/ActiveRenderInfo rotationXZ g +FD net/minecraft/client/renderer/ActiveRenderInfo rotationZ h +FD net/minecraft/client/renderer/ActiveRenderInfo rotationYZ i +FD net/minecraft/client/renderer/ActiveRenderInfo rotationXY j +FD net/minecraft/client/gui/ChatLine updateCounterCreated a +FD net/minecraft/client/gui/ChatLine lineString b +FD net/minecraft/client/gui/ChatLine chatLineID c +FD net/minecraft/client/settings/KeyBinding keybindArray a +FD net/minecraft/client/settings/KeyBinding hash b +FD net/minecraft/client/settings/KeyBinding keybindSet c +FD net/minecraft/client/settings/KeyBinding keyDescription d +FD net/minecraft/client/settings/KeyBinding keyCodeDefault e +FD net/minecraft/client/settings/KeyBinding keyCategory f +FD net/minecraft/client/settings/KeyBinding keyCode g +FD net/minecraft/client/settings/KeyBinding pressed h +FD net/minecraft/client/settings/KeyBinding pressTime i +FD net/minecraft/client/renderer/RenderHelper colorBuffer a +FD net/minecraft/client/renderer/RenderHelper LIGHT0_POS b +FD net/minecraft/client/renderer/RenderHelper LIGHT1_POS c +FD net/minecraft/client/Minecraft mcProfiler A +FD net/minecraft/client/Minecraft running B +FD net/minecraft/client/Minecraft debug C +FD net/minecraft/client/Minecraft field_175613_B D +FD net/minecraft/client/Minecraft field_175614_C E +FD net/minecraft/client/Minecraft field_175611_D F +FD net/minecraft/client/Minecraft renderChunksMany G +FD net/minecraft/client/Minecraft debugUpdateTime H +FD net/minecraft/client/Minecraft fpsCounter I +FD net/minecraft/client/Minecraft prevFrameTime J +FD net/minecraft/client/Minecraft logger K +FD net/minecraft/client/Minecraft locationMojangPng L +FD net/minecraft/client/Minecraft macDisplayModes M +FD net/minecraft/client/Minecraft fileResourcepacks N +FD net/minecraft/client/Minecraft twitchDetails O +FD net/minecraft/client/Minecraft profileProperties P +FD net/minecraft/client/Minecraft currentServerData Q +FD net/minecraft/client/Minecraft renderEngine R +FD net/minecraft/client/Minecraft theMinecraft S +FD net/minecraft/client/Minecraft fullscreen T +FD net/minecraft/client/Minecraft enableGLErrorChecking U +FD net/minecraft/client/Minecraft hasCrashed V +FD net/minecraft/client/Minecraft crashReporter W +FD net/minecraft/client/Minecraft connectedToRealms X +FD net/minecraft/client/Minecraft timer Y +FD net/minecraft/client/Minecraft usageSnooper Z +FD net/minecraft/client/Minecraft isRunningOnMac a +FD net/minecraft/client/Minecraft defaultResourcePacks aA +FD net/minecraft/client/Minecraft mcDefaultResourcePack aB +FD net/minecraft/client/Minecraft mcResourcePackRepository aC +FD net/minecraft/client/Minecraft mcLanguageManager aD +FD net/minecraft/client/Minecraft stream aE +FD net/minecraft/client/Minecraft framebufferMc aF +FD net/minecraft/client/Minecraft textureMapBlocks aG +FD net/minecraft/client/Minecraft mcSoundHandler aH +FD net/minecraft/client/Minecraft mcMusicTicker aI +FD net/minecraft/client/Minecraft mojangLogo aJ +FD net/minecraft/client/Minecraft sessionService aK +FD net/minecraft/client/Minecraft skinManager aL +FD net/minecraft/client/Minecraft scheduledTasks aM +FD net/minecraft/client/Minecraft field_175615_aJ aN +FD net/minecraft/client/Minecraft mcThread aO +FD net/minecraft/client/Minecraft modelManager aP +FD net/minecraft/client/Minecraft blockRenderDispatcher aQ +FD net/minecraft/client/Minecraft debugProfilerName aR +FD net/minecraft/client/Minecraft renderManager aa +FD net/minecraft/client/Minecraft renderItem ab +FD net/minecraft/client/Minecraft itemRenderer ac +FD net/minecraft/client/Minecraft renderViewEntity ad +FD net/minecraft/client/Minecraft session ae +FD net/minecraft/client/Minecraft isGamePaused af +FD net/minecraft/client/Minecraft leftClickCounter ag +FD net/minecraft/client/Minecraft tempDisplayWidth ah +FD net/minecraft/client/Minecraft tempDisplayHeight ai +FD net/minecraft/client/Minecraft theIntegratedServer aj +FD net/minecraft/client/Minecraft fileAssets ak +FD net/minecraft/client/Minecraft launchedVersion al +FD net/minecraft/client/Minecraft proxy am +FD net/minecraft/client/Minecraft saveLoader an +FD net/minecraft/client/Minecraft debugFPS ao +FD net/minecraft/client/Minecraft rightClickDelayTimer ap +FD net/minecraft/client/Minecraft serverName aq +FD net/minecraft/client/Minecraft serverPort ar +FD net/minecraft/client/Minecraft joinPlayerCounter as +FD net/minecraft/client/Minecraft jvm64bit at +FD net/minecraft/client/Minecraft isDemo au +FD net/minecraft/client/Minecraft myNetworkManager av +FD net/minecraft/client/Minecraft integratedServerIsRunning aw +FD net/minecraft/client/Minecraft debugCrashKeyPressTime ax +FD net/minecraft/client/Minecraft mcResourceManager ay +FD net/minecraft/client/Minecraft metadataSerializer_ az +FD net/minecraft/client/Minecraft memoryReserve b +FD net/minecraft/client/Minecraft playerController c +FD net/minecraft/client/Minecraft displayWidth d +FD net/minecraft/client/Minecraft displayHeight e +FD net/minecraft/client/Minecraft theWorld f +FD net/minecraft/client/Minecraft renderGlobal g +FD net/minecraft/client/Minecraft thePlayer h +FD net/minecraft/client/Minecraft pointedEntity i +FD net/minecraft/client/Minecraft effectRenderer j +FD net/minecraft/client/Minecraft fontRendererObj k +FD net/minecraft/client/Minecraft standardGalacticFontRenderer l +FD net/minecraft/client/Minecraft currentScreen m +FD net/minecraft/client/Minecraft loadingScreen n +FD net/minecraft/client/Minecraft entityRenderer o +FD net/minecraft/client/Minecraft guiAchievement p +FD net/minecraft/client/Minecraft ingameGUI q +FD net/minecraft/client/Minecraft skipRenderWorld r +FD net/minecraft/client/Minecraft objectMouseOver s +FD net/minecraft/client/Minecraft gameSettings t +FD net/minecraft/client/Minecraft mouseHelper u +FD net/minecraft/client/Minecraft mcDataDir v +FD net/minecraft/client/Minecraft inGameHasFocus w +FD net/minecraft/client/Minecraft systemTime x +FD net/minecraft/client/Minecraft frameTimer y +FD net/minecraft/client/Minecraft startNanoTime z +FD net/minecraft/client/Minecraft$1 field_74532_a a +FD net/minecraft/client/Minecraft$2 field_90051_a a +FD net/minecraft/client/Minecraft$3 field_90046_a a +FD net/minecraft/client/Minecraft$4 field_90048_a a +FD net/minecraft/client/Minecraft$5 field_142056_a a +FD net/minecraft/client/Minecraft$6 field_151425_a a +FD net/minecraft/client/Minecraft$7 field_152389_a a +FD net/minecraft/client/Minecraft$8 field_152128_a a +FD net/minecraft/client/Minecraft$9 field_183003_a a +FD net/minecraft/client/Minecraft$10 field_183016_a a +FD net/minecraft/client/Minecraft$10 field_183017_b b +FD net/minecraft/client/Minecraft$11 field_74536_a a +FD net/minecraft/client/Minecraft$12 field_90055_a a +FD net/minecraft/client/Minecraft$13 field_90053_a a +FD net/minecraft/client/Minecraft$14 field_74421_a a +FD net/minecraft/client/Minecraft$15 field_74503_a a +FD net/minecraft/client/Minecraft$16 field_79002_a a +FD net/minecraft/client/Minecraft$17 field_74500_a a +FD net/minecraft/client/Minecraft$18 field_82887_a a +FD net/minecraft/util/MouseHelper deltaX a +FD net/minecraft/util/MouseHelper deltaY b +FD net/minecraft/client/settings/GameSettings touchscreen A +FD net/minecraft/client/settings/GameSettings overrideWidth B +FD net/minecraft/client/settings/GameSettings overrideHeight C +FD net/minecraft/client/settings/GameSettings heldItemTooltips D +FD net/minecraft/client/settings/GameSettings chatScale E +FD net/minecraft/client/settings/GameSettings chatWidth F +FD net/minecraft/client/settings/GameSettings chatHeightUnfocused G +FD net/minecraft/client/settings/GameSettings chatHeightFocused H +FD net/minecraft/client/settings/GameSettings showInventoryAchievementHint I +FD net/minecraft/client/settings/GameSettings mipmapLevels J +FD net/minecraft/client/settings/GameSettings streamBytesPerPixel K +FD net/minecraft/client/settings/GameSettings streamMicVolume L +FD net/minecraft/client/settings/GameSettings streamGameVolume M +FD net/minecraft/client/settings/GameSettings streamKbps N +FD net/minecraft/client/settings/GameSettings streamFps O +FD net/minecraft/client/settings/GameSettings streamCompression P +FD net/minecraft/client/settings/GameSettings streamSendMetadata Q +FD net/minecraft/client/settings/GameSettings streamPreferredServer R +FD net/minecraft/client/settings/GameSettings streamChatEnabled S +FD net/minecraft/client/settings/GameSettings streamChatUserFilter T +FD net/minecraft/client/settings/GameSettings streamMicToggleBehavior U +FD net/minecraft/client/settings/GameSettings useNativeTransport V +FD net/minecraft/client/settings/GameSettings entityShadows W +FD net/minecraft/client/settings/GameSettings realmsNotifications X +FD net/minecraft/client/settings/GameSettings keyBindForward Y +FD net/minecraft/client/settings/GameSettings keyBindLeft Z +FD net/minecraft/client/settings/GameSettings mouseSensitivity a +FD net/minecraft/client/settings/GameSettings hideGUI aA +FD net/minecraft/client/settings/GameSettings thirdPersonView aB +FD net/minecraft/client/settings/GameSettings showDebugInfo aC +FD net/minecraft/client/settings/GameSettings showDebugProfilerChart aD +FD net/minecraft/client/settings/GameSettings showLagometer aE +FD net/minecraft/client/settings/GameSettings lastServer aF +FD net/minecraft/client/settings/GameSettings smoothCamera aG +FD net/minecraft/client/settings/GameSettings debugCamEnable aH +FD net/minecraft/client/settings/GameSettings fovSetting aI +FD net/minecraft/client/settings/GameSettings gammaSetting aJ +FD net/minecraft/client/settings/GameSettings saturation aK +FD net/minecraft/client/settings/GameSettings guiScale aL +FD net/minecraft/client/settings/GameSettings particleSetting aM +FD net/minecraft/client/settings/GameSettings language aN +FD net/minecraft/client/settings/GameSettings forceUnicodeFont aO +FD net/minecraft/client/settings/GameSettings logger aP +FD net/minecraft/client/settings/GameSettings gson aQ +FD net/minecraft/client/settings/GameSettings typeListString aR +FD net/minecraft/client/settings/GameSettings GUISCALES aS +FD net/minecraft/client/settings/GameSettings PARTICLES aT +FD net/minecraft/client/settings/GameSettings AMBIENT_OCCLUSIONS aU +FD net/minecraft/client/settings/GameSettings STREAM_COMPRESSIONS aV +FD net/minecraft/client/settings/GameSettings STREAM_CHAT_MODES aW +FD net/minecraft/client/settings/GameSettings STREAM_CHAT_FILTER_MODES aX +FD net/minecraft/client/settings/GameSettings STREAM_MIC_MODES aY +FD net/minecraft/client/settings/GameSettings CLOUDS_TYPES aZ +FD net/minecraft/client/settings/GameSettings keyBindBack aa +FD net/minecraft/client/settings/GameSettings keyBindRight ab +FD net/minecraft/client/settings/GameSettings keyBindJump ac +FD net/minecraft/client/settings/GameSettings keyBindSneak ad +FD net/minecraft/client/settings/GameSettings keyBindSprint ae +FD net/minecraft/client/settings/GameSettings keyBindInventory af +FD net/minecraft/client/settings/GameSettings keyBindUseItem ag +FD net/minecraft/client/settings/GameSettings keyBindDrop ah +FD net/minecraft/client/settings/GameSettings keyBindAttack ai +FD net/minecraft/client/settings/GameSettings keyBindPickBlock aj +FD net/minecraft/client/settings/GameSettings keyBindChat ak +FD net/minecraft/client/settings/GameSettings keyBindPlayerList al +FD net/minecraft/client/settings/GameSettings keyBindCommand am +FD net/minecraft/client/settings/GameSettings keyBindScreenshot an +FD net/minecraft/client/settings/GameSettings keyBindTogglePerspective ao +FD net/minecraft/client/settings/GameSettings keyBindSmoothCamera ap +FD net/minecraft/client/settings/GameSettings keyBindFullscreen aq +FD net/minecraft/client/settings/GameSettings keyBindSpectatorOutlines ar +FD net/minecraft/client/settings/GameSettings keyBindStreamStartStop as +FD net/minecraft/client/settings/GameSettings keyBindStreamPauseUnpause at +FD net/minecraft/client/settings/GameSettings keyBindStreamCommercials au +FD net/minecraft/client/settings/GameSettings keyBindStreamToggleMic av +FD net/minecraft/client/settings/GameSettings keyBindsHotbar aw +FD net/minecraft/client/settings/GameSettings keyBindings ax +FD net/minecraft/client/settings/GameSettings mc ay +FD net/minecraft/client/settings/GameSettings difficulty az +FD net/minecraft/client/settings/GameSettings invertMouse b +FD net/minecraft/client/settings/GameSettings setModelParts ba +FD net/minecraft/client/settings/GameSettings mapSoundLevels bb +FD net/minecraft/client/settings/GameSettings optionsFile bc +FD net/minecraft/client/settings/GameSettings renderDistanceChunks c +FD net/minecraft/client/settings/GameSettings viewBobbing d +FD net/minecraft/client/settings/GameSettings anaglyph e +FD net/minecraft/client/settings/GameSettings fboEnable f +FD net/minecraft/client/settings/GameSettings limitFramerate g +FD net/minecraft/client/settings/GameSettings clouds h +FD net/minecraft/client/settings/GameSettings fancyGraphics i +FD net/minecraft/client/settings/GameSettings ambientOcclusion j +FD net/minecraft/client/settings/GameSettings resourcePacks k +FD net/minecraft/client/settings/GameSettings incompatibleResourcePacks l +FD net/minecraft/client/settings/GameSettings chatVisibility m +FD net/minecraft/client/settings/GameSettings chatColours n +FD net/minecraft/client/settings/GameSettings chatLinks o +FD net/minecraft/client/settings/GameSettings chatLinksPrompt p +FD net/minecraft/client/settings/GameSettings chatOpacity q +FD net/minecraft/client/settings/GameSettings snooperEnabled r +FD net/minecraft/client/settings/GameSettings fullScreen s +FD net/minecraft/client/settings/GameSettings enableVsync t +FD net/minecraft/client/settings/GameSettings useVbo u +FD net/minecraft/client/settings/GameSettings allowBlockAlternatives v +FD net/minecraft/client/settings/GameSettings reducedDebugInfo w +FD net/minecraft/client/settings/GameSettings hideServerAddress x +FD net/minecraft/client/settings/GameSettings advancedItemTooltips y +FD net/minecraft/client/settings/GameSettings pauseOnLostFocus z +FD net/minecraft/client/settings/GameSettings$2 field_151477_a a +FD net/minecraft/client/settings/GameSettings$Options CHAT_WIDTH A +FD net/minecraft/client/settings/GameSettings$Options CHAT_HEIGHT_FOCUSED B +FD net/minecraft/client/settings/GameSettings$Options CHAT_HEIGHT_UNFOCUSED C +FD net/minecraft/client/settings/GameSettings$Options MIPMAP_LEVELS D +FD net/minecraft/client/settings/GameSettings$Options FORCE_UNICODE_FONT E +FD net/minecraft/client/settings/GameSettings$Options STREAM_BYTES_PER_PIXEL F +FD net/minecraft/client/settings/GameSettings$Options STREAM_VOLUME_MIC G +FD net/minecraft/client/settings/GameSettings$Options STREAM_VOLUME_SYSTEM H +FD net/minecraft/client/settings/GameSettings$Options STREAM_KBPS I +FD net/minecraft/client/settings/GameSettings$Options STREAM_FPS J +FD net/minecraft/client/settings/GameSettings$Options STREAM_COMPRESSION K +FD net/minecraft/client/settings/GameSettings$Options STREAM_SEND_METADATA L +FD net/minecraft/client/settings/GameSettings$Options STREAM_CHAT_ENABLED M +FD net/minecraft/client/settings/GameSettings$Options STREAM_CHAT_USER_FILTER N +FD net/minecraft/client/settings/GameSettings$Options STREAM_MIC_TOGGLE_BEHAVIOR O +FD net/minecraft/client/settings/GameSettings$Options BLOCK_ALTERNATIVES P +FD net/minecraft/client/settings/GameSettings$Options REDUCED_DEBUG_INFO Q +FD net/minecraft/client/settings/GameSettings$Options ENTITY_SHADOWS R +FD net/minecraft/client/settings/GameSettings$Options REALMS_NOTIFICATIONS S +FD net/minecraft/client/settings/GameSettings$Options enumFloat T +FD net/minecraft/client/settings/GameSettings$Options enumBoolean U +FD net/minecraft/client/settings/GameSettings$Options enumString V +FD net/minecraft/client/settings/GameSettings$Options valueStep W +FD net/minecraft/client/settings/GameSettings$Options valueMin X +FD net/minecraft/client/settings/GameSettings$Options valueMax Y +FD net/minecraft/client/settings/GameSettings$Options $VALUES Z +FD net/minecraft/client/settings/GameSettings$Options INVERT_MOUSE a +FD net/minecraft/client/settings/GameSettings$Options SENSITIVITY b +FD net/minecraft/client/settings/GameSettings$Options FOV c +FD net/minecraft/client/settings/GameSettings$Options GAMMA d +FD net/minecraft/client/settings/GameSettings$Options SATURATION e +FD net/minecraft/client/settings/GameSettings$Options RENDER_DISTANCE f +FD net/minecraft/client/settings/GameSettings$Options VIEW_BOBBING g +FD net/minecraft/client/settings/GameSettings$Options ANAGLYPH h +FD net/minecraft/client/settings/GameSettings$Options FRAMERATE_LIMIT i +FD net/minecraft/client/settings/GameSettings$Options FBO_ENABLE j +FD net/minecraft/client/settings/GameSettings$Options RENDER_CLOUDS k +FD net/minecraft/client/settings/GameSettings$Options GRAPHICS l +FD net/minecraft/client/settings/GameSettings$Options AMBIENT_OCCLUSION m +FD net/minecraft/client/settings/GameSettings$Options GUI_SCALE n +FD net/minecraft/client/settings/GameSettings$Options PARTICLES o +FD net/minecraft/client/settings/GameSettings$Options CHAT_VISIBILITY p +FD net/minecraft/client/settings/GameSettings$Options CHAT_COLOR q +FD net/minecraft/client/settings/GameSettings$Options CHAT_LINKS r +FD net/minecraft/client/settings/GameSettings$Options CHAT_OPACITY s +FD net/minecraft/client/settings/GameSettings$Options CHAT_LINKS_PROMPT t +FD net/minecraft/client/settings/GameSettings$Options SNOOPER_ENABLED u +FD net/minecraft/client/settings/GameSettings$Options USE_FULLSCREEN v +FD net/minecraft/client/settings/GameSettings$Options ENABLE_VSYNC w +FD net/minecraft/client/settings/GameSettings$Options USE_VBO x +FD net/minecraft/client/settings/GameSettings$Options TOUCHSCREEN y +FD net/minecraft/client/settings/GameSettings$Options CHAT_SCALE z +FD net/minecraft/client/LoadingScreenRenderer message a +FD net/minecraft/client/LoadingScreenRenderer mc b +FD net/minecraft/client/LoadingScreenRenderer currentlyDisplayedText c +FD net/minecraft/client/LoadingScreenRenderer systemTime d +FD net/minecraft/client/LoadingScreenRenderer loadingSuccess e +FD net/minecraft/client/LoadingScreenRenderer scaledResolution f +FD net/minecraft/client/LoadingScreenRenderer framebuffer g +FD net/minecraft/util/ScreenShotHelper logger a +FD net/minecraft/util/ScreenShotHelper dateFormat b +FD net/minecraft/util/ScreenShotHelper pixelBuffer c +FD net/minecraft/util/ScreenShotHelper pixelValues d +FD net/minecraft/util/Timer ticksPerSecond a +FD net/minecraft/util/Timer elapsedTicks b +FD net/minecraft/util/Timer renderPartialTicks c +FD net/minecraft/util/Timer timerSpeed d +FD net/minecraft/util/Timer elapsedPartialTicks e +FD net/minecraft/util/Timer lastHRTime f +FD net/minecraft/util/Timer lastSyncSysClock g +FD net/minecraft/util/Timer lastSyncHRClock h +FD net/minecraft/util/Timer counter i +FD net/minecraft/util/Timer timeSyncAdjustment j +FD net/minecraft/util/Session username a +FD net/minecraft/util/Session playerID b +FD net/minecraft/util/Session token c +FD net/minecraft/util/Session sessionType d +FD net/minecraft/util/Session$Type LEGACY a +FD net/minecraft/util/Session$Type MOJANG b +FD net/minecraft/util/Session$Type SESSION_TYPES c +FD net/minecraft/util/Session$Type sessionType d +FD net/minecraft/util/Session$Type $VALUES e +FD net/minecraft/client/gui/FontRenderer FONT_HEIGHT a +FD net/minecraft/client/gui/FontRenderer fontRandom b +FD net/minecraft/client/gui/FontRenderer unicodePageLocations c +FD net/minecraft/client/gui/FontRenderer charWidth d +FD net/minecraft/client/gui/FontRenderer glyphWidth e +FD net/minecraft/client/gui/FontRenderer colorCode f +FD net/minecraft/client/gui/FontRenderer locationFontTexture g +FD net/minecraft/client/gui/FontRenderer renderEngine h +FD net/minecraft/client/gui/FontRenderer posX i +FD net/minecraft/client/gui/FontRenderer posY j +FD net/minecraft/client/gui/FontRenderer unicodeFlag k +FD net/minecraft/client/gui/FontRenderer bidiFlag l +FD net/minecraft/client/gui/FontRenderer red m +FD net/minecraft/client/gui/FontRenderer blue n +FD net/minecraft/client/gui/FontRenderer green o +FD net/minecraft/client/gui/FontRenderer alpha p +FD net/minecraft/client/gui/FontRenderer textColor q +FD net/minecraft/client/gui/FontRenderer randomStyle r +FD net/minecraft/client/gui/FontRenderer boldStyle s +FD net/minecraft/client/gui/FontRenderer italicStyle t +FD net/minecraft/client/gui/FontRenderer underlineStyle u +FD net/minecraft/client/gui/FontRenderer strikethroughStyle v +FD net/minecraft/client/gui/GuiIngame titleDisplayTime A +FD net/minecraft/client/gui/GuiIngame titleFadeOut B +FD net/minecraft/client/gui/GuiIngame playerHealth C +FD net/minecraft/client/gui/GuiIngame lastPlayerHealth D +FD net/minecraft/client/gui/GuiIngame lastSystemTime E +FD net/minecraft/client/gui/GuiIngame healthUpdateCounter F +FD net/minecraft/client/gui/GuiIngame prevVignetteBrightness a +FD net/minecraft/client/gui/GuiIngame vignetteTexPath f +FD net/minecraft/client/gui/GuiIngame widgetsTexPath g +FD net/minecraft/client/gui/GuiIngame pumpkinBlurTexPath h +FD net/minecraft/client/gui/GuiIngame rand i +FD net/minecraft/client/gui/GuiIngame mc j +FD net/minecraft/client/gui/GuiIngame itemRenderer k +FD net/minecraft/client/gui/GuiIngame persistantChatGUI l +FD net/minecraft/client/gui/GuiIngame streamIndicator m +FD net/minecraft/client/gui/GuiIngame updateCounter n +FD net/minecraft/client/gui/GuiIngame recordPlaying o +FD net/minecraft/client/gui/GuiIngame recordPlayingUpFor p +FD net/minecraft/client/gui/GuiIngame recordIsPlaying q +FD net/minecraft/client/gui/GuiIngame remainingHighlightTicks r +FD net/minecraft/client/gui/GuiIngame highlightingItemStack s +FD net/minecraft/client/gui/GuiIngame overlayDebug t +FD net/minecraft/client/gui/GuiIngame spectatorGui u +FD net/minecraft/client/gui/GuiIngame overlayPlayerList v +FD net/minecraft/client/gui/GuiIngame titlesTimer w +FD net/minecraft/client/gui/GuiIngame displayedTitle x +FD net/minecraft/client/gui/GuiIngame displayedSubTitle y +FD net/minecraft/client/gui/GuiIngame titleFadeIn z +FD net/minecraft/client/gui/GuiIngame$1 field_178904_a a +FD net/minecraft/client/gui/Gui optionsBackground b +FD net/minecraft/client/gui/Gui statIcons c +FD net/minecraft/client/gui/Gui icons d +FD net/minecraft/client/gui/Gui zLevel e +FD net/minecraft/client/gui/MapItemRenderer mapIcons a +FD net/minecraft/client/gui/MapItemRenderer textureManager b +FD net/minecraft/client/gui/MapItemRenderer loadedMaps c +FD net/minecraft/client/gui/MapItemRenderer$Instance field_148244_a a +FD net/minecraft/client/gui/MapItemRenderer$Instance mapData b +FD net/minecraft/client/gui/MapItemRenderer$Instance mapTexture c +FD net/minecraft/client/gui/MapItemRenderer$Instance location d +FD net/minecraft/client/gui/MapItemRenderer$Instance mapTextureData e +FD net/minecraft/client/gui/ScaledResolution scaledWidthD a +FD net/minecraft/client/gui/ScaledResolution scaledHeightD b +FD net/minecraft/client/gui/ScaledResolution scaledWidth c +FD net/minecraft/client/gui/ScaledResolution scaledHeight d +FD net/minecraft/client/gui/ScaledResolution scaleFactor e +FD net/minecraft/client/gui/GuiButton buttonTextures a +FD net/minecraft/client/gui/GuiButton width f +FD net/minecraft/client/gui/GuiButton height g +FD net/minecraft/client/gui/GuiButton xPosition h +FD net/minecraft/client/gui/GuiButton yPosition i +FD net/minecraft/client/gui/GuiButton displayString j +FD net/minecraft/client/gui/GuiButton id k +FD net/minecraft/client/gui/GuiButton enabled l +FD net/minecraft/client/gui/GuiButton visible m +FD net/minecraft/client/gui/GuiButton hovered n +FD net/minecraft/client/gui/GuiNewChat logger a +FD net/minecraft/client/gui/GuiNewChat mc f +FD net/minecraft/client/gui/GuiNewChat sentMessages g +FD net/minecraft/client/gui/GuiNewChat chatLines h +FD net/minecraft/client/gui/GuiNewChat drawnChatLines i +FD net/minecraft/client/gui/GuiNewChat scrollPos j +FD net/minecraft/client/gui/GuiNewChat isScrolled k +FD net/minecraft/client/gui/GuiOverlayDebug mc a +FD net/minecraft/client/gui/GuiOverlayDebug fontRenderer f +FD net/minecraft/client/gui/GuiOverlayDebug$1 field_178907_a a +FD net/minecraft/client/gui/GuiTextField xPosition a +FD net/minecraft/client/gui/GuiTextField yPosition f +FD net/minecraft/client/gui/GuiTextField id g +FD net/minecraft/client/gui/GuiTextField fontRendererInstance h +FD net/minecraft/client/gui/GuiTextField width i +FD net/minecraft/client/gui/GuiTextField height j +FD net/minecraft/client/gui/GuiTextField text k +FD net/minecraft/client/gui/GuiTextField maxStringLength l +FD net/minecraft/client/gui/GuiTextField cursorCounter m +FD net/minecraft/client/gui/GuiTextField enableBackgroundDrawing n +FD net/minecraft/client/gui/GuiTextField canLoseFocus o +FD net/minecraft/client/gui/GuiTextField isFocused p +FD net/minecraft/client/gui/GuiTextField isEnabled q +FD net/minecraft/client/gui/GuiTextField lineScrollOffset r +FD net/minecraft/client/gui/GuiTextField cursorPosition s +FD net/minecraft/client/gui/GuiTextField selectionEnd t +FD net/minecraft/client/gui/GuiTextField enabledColor u +FD net/minecraft/client/gui/GuiTextField disabledColor v +FD net/minecraft/client/gui/GuiTextField visible w +FD net/minecraft/client/gui/GuiTextField field_175210_x x +FD net/minecraft/client/gui/GuiTextField validator y +FD net/minecraft/client/gui/GuiSlider isMouseDown o +FD net/minecraft/client/gui/GuiSlider sliderPosition p +FD net/minecraft/client/gui/GuiSlider name q +FD net/minecraft/client/gui/GuiSlider min r +FD net/minecraft/client/gui/GuiSlider max s +FD net/minecraft/client/gui/GuiSlider responder t +FD net/minecraft/client/gui/GuiSlider formatHelper u +FD net/minecraft/client/gui/GuiLabel field_146167_a a +FD net/minecraft/client/gui/GuiLabel field_146161_f f +FD net/minecraft/client/gui/GuiLabel field_146162_g g +FD net/minecraft/client/gui/GuiLabel field_146174_h h +FD net/minecraft/client/gui/GuiLabel field_175204_i i +FD net/minecraft/client/gui/GuiLabel visible j +FD net/minecraft/client/gui/GuiLabel field_146173_k k +FD net/minecraft/client/gui/GuiLabel centered l +FD net/minecraft/client/gui/GuiLabel labelBgEnabled m +FD net/minecraft/client/gui/GuiLabel field_146168_n n +FD net/minecraft/client/gui/GuiLabel field_146169_o o +FD net/minecraft/client/gui/GuiLabel field_146166_p p +FD net/minecraft/client/gui/GuiLabel field_146165_q q +FD net/minecraft/client/gui/GuiLabel fontRenderer r +FD net/minecraft/client/gui/GuiLabel field_146163_s s +FD net/minecraft/client/gui/GuiListButton field_175216_o o +FD net/minecraft/client/gui/GuiListButton localizationStr p +FD net/minecraft/client/gui/GuiListButton guiResponder q +FD net/minecraft/client/gui/GuiLockIconButton field_175231_o o +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED a +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED_HOVER b +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED_DISABLED c +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED d +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED_HOVER e +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED_DISABLED f +FD net/minecraft/client/gui/GuiLockIconButton$Icon field_178914_g g +FD net/minecraft/client/gui/GuiLockIconButton$Icon field_178920_h h +FD net/minecraft/client/gui/GuiLockIconButton$Icon $VALUES i +FD net/minecraft/client/gui/GuiOptionButton enumOptions o +FD net/minecraft/client/gui/GuiOptionsRowList field_148184_k u +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148325_a a +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148323_b b +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148324_c c +FD net/minecraft/client/gui/GuiPageButtonList field_178075_A A +FD net/minecraft/client/gui/GuiPageButtonList field_178074_u u +FD net/minecraft/client/gui/GuiPageButtonList field_178073_v v +FD net/minecraft/client/gui/GuiPageButtonList field_178072_w w +FD net/minecraft/client/gui/GuiPageButtonList field_178078_x x +FD net/minecraft/client/gui/GuiPageButtonList field_178077_y y +FD net/minecraft/client/gui/GuiPageButtonList field_178076_z z +FD net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry field_178941_a a +FD net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry field_178951_a a +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178031_a a +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178029_b b +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178030_c c +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178028_d d +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178939_a a +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178937_b b +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178938_c c +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178949_a a +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178947_b b +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178948_c c +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178946_d d +FD net/minecraft/client/gui/GuiPlayerTabOverlay field_175252_a a +FD net/minecraft/client/gui/GuiPlayerTabOverlay mc f +FD net/minecraft/client/gui/GuiPlayerTabOverlay guiIngame g +FD net/minecraft/client/gui/GuiPlayerTabOverlay footer h +FD net/minecraft/client/gui/GuiPlayerTabOverlay header i +FD net/minecraft/client/gui/GuiPlayerTabOverlay lastTimeOpened j +FD net/minecraft/client/gui/GuiPlayerTabOverlay isBeingRendered k +FD net/minecraft/client/gui/GuiSlot mc a +FD net/minecraft/client/gui/GuiSlot width b +FD net/minecraft/client/gui/GuiSlot height c +FD net/minecraft/client/gui/GuiSlot top d +FD net/minecraft/client/gui/GuiSlot bottom e +FD net/minecraft/client/gui/GuiSlot right f +FD net/minecraft/client/gui/GuiSlot left g +FD net/minecraft/client/gui/GuiSlot slotHeight h +FD net/minecraft/client/gui/GuiSlot mouseX i +FD net/minecraft/client/gui/GuiSlot mouseY j +FD net/minecraft/client/gui/GuiSlot field_148163_i k +FD net/minecraft/client/gui/GuiSlot initialClickY l +FD net/minecraft/client/gui/GuiSlot scrollMultiplier m +FD net/minecraft/client/gui/GuiSlot amountScrolled n +FD net/minecraft/client/gui/GuiSlot selectedElement o +FD net/minecraft/client/gui/GuiSlot lastClicked p +FD net/minecraft/client/gui/GuiSlot field_178041_q q +FD net/minecraft/client/gui/GuiSlot showSelectionBox r +FD net/minecraft/client/gui/GuiSlot hasListHeader s +FD net/minecraft/client/gui/GuiSlot headerPadding t +FD net/minecraft/client/gui/GuiSlot scrollUpButtonID u +FD net/minecraft/client/gui/GuiSlot scrollDownButtonID v +FD net/minecraft/client/gui/GuiSlot enabled w +FD net/minecraft/client/gui/GuiOptionSlider dragging o +FD net/minecraft/client/gui/GuiOptionSlider sliderValue p +FD net/minecraft/client/gui/GuiOptionSlider options q +FD net/minecraft/client/gui/GuiOptionSlider field_146132_r r +FD net/minecraft/client/gui/GuiOptionSlider field_146131_s s +FD net/minecraft/client/gui/GuiStreamIndicator locationStreamIndicator a +FD net/minecraft/client/gui/GuiStreamIndicator mc b +FD net/minecraft/client/gui/GuiStreamIndicator streamAlpha c +FD net/minecraft/client/gui/GuiStreamIndicator streamAlphaDelta d +FD net/minecraft/client/gui/GuiSpectator field_175269_a a +FD net/minecraft/client/gui/GuiSpectator field_175267_f f +FD net/minecraft/client/gui/GuiSpectator field_175268_g g +FD net/minecraft/client/gui/GuiSpectator field_175270_h h +FD net/minecraft/client/gui/GuiSpectator field_175271_i i +FD net/minecraft/client/gui/GuiButtonRealmsProxy realmsButton o +FD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy field_178046_u u +FD net/minecraft/client/gui/GuiScreenRealmsProxy field_154330_a a +FD net/minecraft/client/gui/GuiSlotRealmsProxy selectionList u +FD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy field_178050_u u +FD net/minecraft/client/gui/ScreenChatOptions field_146399_a a +FD net/minecraft/client/gui/ScreenChatOptions parentScreen f +FD net/minecraft/client/gui/ScreenChatOptions game_settings g +FD net/minecraft/client/gui/ScreenChatOptions field_146401_i h +FD net/minecraft/client/gui/GuiChat inputField a +FD net/minecraft/client/gui/GuiChat logger f +FD net/minecraft/client/gui/GuiChat historyBuffer g +FD net/minecraft/client/gui/GuiChat sentHistoryCursor h +FD net/minecraft/client/gui/GuiChat playerNamesFound i +FD net/minecraft/client/gui/GuiChat waitingOnAutocomplete r +FD net/minecraft/client/gui/GuiChat autocompleteIndex s +FD net/minecraft/client/gui/GuiChat foundPlayerNames t +FD net/minecraft/client/gui/GuiChat defaultInputFieldText u +FD net/minecraft/client/gui/GuiConfirmOpenLink openLinkWarning r +FD net/minecraft/client/gui/GuiConfirmOpenLink copyLinkButtonText s +FD net/minecraft/client/gui/GuiConfirmOpenLink linkText t +FD net/minecraft/client/gui/GuiConfirmOpenLink showSecurityWarning u +FD net/minecraft/client/gui/GuiYesNo parentScreen a +FD net/minecraft/client/gui/GuiYesNo messageLine1 f +FD net/minecraft/client/gui/GuiYesNo confirmButtonText g +FD net/minecraft/client/gui/GuiYesNo cancelButtonText h +FD net/minecraft/client/gui/GuiYesNo parentButtonClickedId i +FD net/minecraft/client/gui/GuiYesNo messageLine2 r +FD net/minecraft/client/gui/GuiYesNo field_175298_s s +FD net/minecraft/client/gui/GuiYesNo ticksUntilEnable t +FD net/minecraft/client/multiplayer/GuiConnecting CONNECTION_ID a +FD net/minecraft/client/multiplayer/GuiConnecting logger f +FD net/minecraft/client/multiplayer/GuiConnecting networkManager g +FD net/minecraft/client/multiplayer/GuiConnecting cancel h +FD net/minecraft/client/multiplayer/GuiConnecting previousGuiScreen i +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148231_a a +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148229_b b +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148230_c c +FD net/minecraft/client/gui/GuiCreateFlatWorld createWorldGui a +FD net/minecraft/client/gui/GuiCreateFlatWorld theFlatGeneratorInfo f +FD net/minecraft/client/gui/GuiCreateFlatWorld flatWorldTitle g +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146394_i h +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146391_r i +FD net/minecraft/client/gui/GuiCreateFlatWorld createFlatWorldListSlotGui r +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146389_t s +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146388_u t +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146386_v u +FD net/minecraft/client/gui/GuiCreateFlatWorld$Details field_148228_k u +FD net/minecraft/client/gui/GuiCreateFlatWorld$Details field_148227_l v +FD net/minecraft/client/gui/GuiCreateWorld btnGameMode A +FD net/minecraft/client/gui/GuiCreateWorld btnMoreOptions B +FD net/minecraft/client/gui/GuiCreateWorld btnMapFeatures C +FD net/minecraft/client/gui/GuiCreateWorld btnBonusItems D +FD net/minecraft/client/gui/GuiCreateWorld btnMapType E +FD net/minecraft/client/gui/GuiCreateWorld btnAllowCommands F +FD net/minecraft/client/gui/GuiCreateWorld btnCustomizeType G +FD net/minecraft/client/gui/GuiCreateWorld gameModeDesc1 H +FD net/minecraft/client/gui/GuiCreateWorld gameModeDesc2 I +FD net/minecraft/client/gui/GuiCreateWorld worldSeed J +FD net/minecraft/client/gui/GuiCreateWorld worldName K +FD net/minecraft/client/gui/GuiCreateWorld selectedIndex L +FD net/minecraft/client/gui/GuiCreateWorld disallowedFilenames M +FD net/minecraft/client/gui/GuiCreateWorld chunkProviderSettingsJson a +FD net/minecraft/client/gui/GuiCreateWorld parentScreen f +FD net/minecraft/client/gui/GuiCreateWorld worldNameField g +FD net/minecraft/client/gui/GuiCreateWorld worldSeedField h +FD net/minecraft/client/gui/GuiCreateWorld saveDirName i +FD net/minecraft/client/gui/GuiCreateWorld gameMode r +FD net/minecraft/client/gui/GuiCreateWorld savedGameMode s +FD net/minecraft/client/gui/GuiCreateWorld generateStructuresEnabled t +FD net/minecraft/client/gui/GuiCreateWorld allowCheats u +FD net/minecraft/client/gui/GuiCreateWorld allowCheatsWasSetByUser v +FD net/minecraft/client/gui/GuiCreateWorld bonusChestEnabled w +FD net/minecraft/client/gui/GuiCreateWorld hardCoreMode x +FD net/minecraft/client/gui/GuiCreateWorld alreadyGenerated y +FD net/minecraft/client/gui/GuiCreateWorld inMoreWorldOptionsDisplay z +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175315_a a +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175310_f f +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175311_g g +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175316_h h +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175317_i i +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175314_r r +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175313_s s +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175312_t t +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178955_a a +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178953_b b +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178954_c c +FD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset field_178053_u u +FD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset field_178052_v v +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175338_A A +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175339_B B +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175340_C C +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175332_D D +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175334_E E +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175336_F F +FD net/minecraft/client/gui/GuiCustomizeWorldScreen random G +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175341_a a +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175333_f f +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175335_g g +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175342_h h +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175343_i i +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175349_r r +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175348_s s +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175347_t t +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175346_u u +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175345_v v +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175344_w w +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175352_x x +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175351_y y +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175350_z z +FD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 field_178957_a a +FD net/minecraft/client/gui/GuiGameOver enableButtonsTimer a +FD net/minecraft/client/gui/GuiGameOver field_146346_f f +FD net/minecraft/client/gui/GuiScreenDemo logger a +FD net/minecraft/client/gui/GuiScreenDemo field_146348_f f +FD net/minecraft/client/gui/GuiScreenServerList field_146303_a a +FD net/minecraft/client/gui/GuiScreenServerList field_146301_f f +FD net/minecraft/client/gui/GuiScreenServerList field_146302_g g +FD net/minecraft/client/gui/GuiDisconnected reason a +FD net/minecraft/client/gui/GuiDisconnected message f +FD net/minecraft/client/gui/GuiDisconnected multilineMessage g +FD net/minecraft/client/gui/GuiDisconnected parentScreen h +FD net/minecraft/client/gui/GuiDisconnected field_175353_i i +FD net/minecraft/client/gui/GuiScreenAddServer parentScreen a +FD net/minecraft/client/gui/GuiScreenAddServer serverData f +FD net/minecraft/client/gui/GuiScreenAddServer serverIPField g +FD net/minecraft/client/gui/GuiScreenAddServer serverNameField h +FD net/minecraft/client/gui/GuiScreenAddServer serverResourcePacks i +FD net/minecraft/client/gui/GuiScreenAddServer field_181032_r r +FD net/minecraft/client/gui/GuiScreenAddServer$1 field_181167_a a +FD net/minecraft/client/gui/GuiErrorScreen field_146313_a a +FD net/minecraft/client/gui/GuiErrorScreen field_146312_f f +FD net/minecraft/client/gui/GuiLanguage parentScreen a +FD net/minecraft/client/gui/GuiLanguage list f +FD net/minecraft/client/gui/GuiLanguage game_settings_3 g +FD net/minecraft/client/gui/GuiLanguage languageManager h +FD net/minecraft/client/gui/GuiLanguage forceUnicodeFontBtn i +FD net/minecraft/client/gui/GuiLanguage confirmSettingsBtn r +FD net/minecraft/client/gui/GuiLanguage$List field_148178_k u +FD net/minecraft/client/gui/GuiLanguage$List langCodeList v +FD net/minecraft/client/gui/GuiLanguage$List languageMap w +FD net/minecraft/client/gui/GuiOptions field_146442_a a +FD net/minecraft/client/gui/GuiOptions field_146440_f f +FD net/minecraft/client/gui/GuiOptions field_146441_g g +FD net/minecraft/client/gui/GuiOptions game_settings_1 h +FD net/minecraft/client/gui/GuiOptions field_175357_i i +FD net/minecraft/client/gui/GuiOptions field_175356_r r +FD net/minecraft/client/gui/GuiOptions$1 field_146130_o o +FD net/minecraft/client/gui/GuiIngameMenu field_146445_a a +FD net/minecraft/client/gui/GuiIngameMenu field_146444_f f +FD net/minecraft/client/gui/GuiFlatPresets FLAT_WORLD_PRESETS a +FD net/minecraft/client/gui/GuiFlatPresets parentScreen f +FD net/minecraft/client/gui/GuiFlatPresets presetsTitle g +FD net/minecraft/client/gui/GuiFlatPresets presetsShare h +FD net/minecraft/client/gui/GuiFlatPresets field_146436_r i +FD net/minecraft/client/gui/GuiFlatPresets field_146435_s r +FD net/minecraft/client/gui/GuiFlatPresets field_146434_t s +FD net/minecraft/client/gui/GuiFlatPresets field_146433_u t +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148234_a a +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_179037_b b +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148232_b c +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148233_c d +FD net/minecraft/client/gui/GuiFlatPresets$ListSlot field_148175_k u +FD net/minecraft/client/gui/GuiFlatPresets$ListSlot field_148174_l v +FD net/minecraft/client/gui/GuiScreenWorking field_146591_a a +FD net/minecraft/client/gui/GuiScreenWorking field_146589_f f +FD net/minecraft/client/gui/GuiScreenWorking progress g +FD net/minecraft/client/gui/GuiScreenWorking doneWorking h +FD net/minecraft/client/gui/GuiDownloadTerrain netHandlerPlayClient a +FD net/minecraft/client/gui/GuiDownloadTerrain progress f +FD net/minecraft/client/gui/GuiRenameWorld parentScreen a +FD net/minecraft/client/gui/GuiRenameWorld field_146583_f f +FD net/minecraft/client/gui/GuiRenameWorld saveName g +FD net/minecraft/client/gui/GuiScreen LOGGER a +FD net/minecraft/client/gui/GuiScreen PROTOCOLS f +FD net/minecraft/client/gui/GuiScreen NEWLINE_SPLITTER g +FD net/minecraft/client/gui/GuiScreen selectedButton h +FD net/minecraft/client/gui/GuiScreen eventButton i +FD net/minecraft/client/gui/GuiScreen mc j +FD net/minecraft/client/gui/GuiScreen itemRender k +FD net/minecraft/client/gui/GuiScreen width l +FD net/minecraft/client/gui/GuiScreen height m +FD net/minecraft/client/gui/GuiScreen buttonList n +FD net/minecraft/client/gui/GuiScreen labelList o +FD net/minecraft/client/gui/GuiScreen allowUserInput p +FD net/minecraft/client/gui/GuiScreen fontRendererObj q +FD net/minecraft/client/gui/GuiScreen lastMouseEvent r +FD net/minecraft/client/gui/GuiScreen touchValue s +FD net/minecraft/client/gui/GuiScreen clickedLinkURI t +FD net/minecraft/client/gui/GuiSelectWorld renameButton A +FD net/minecraft/client/gui/GuiSelectWorld recreateButton B +FD net/minecraft/client/gui/GuiSelectWorld parentScreen a +FD net/minecraft/client/gui/GuiSelectWorld screenTitle f +FD net/minecraft/client/gui/GuiSelectWorld logger g +FD net/minecraft/client/gui/GuiSelectWorld field_146633_h h +FD net/minecraft/client/gui/GuiSelectWorld field_146634_i i +FD net/minecraft/client/gui/GuiSelectWorld selectedIndex r +FD net/minecraft/client/gui/GuiSelectWorld field_146639_s s +FD net/minecraft/client/gui/GuiSelectWorld availableWorlds t +FD net/minecraft/client/gui/GuiSelectWorld field_146637_u u +FD net/minecraft/client/gui/GuiSelectWorld field_146636_v v +FD net/minecraft/client/gui/GuiSelectWorld field_146635_w w +FD net/minecraft/client/gui/GuiSelectWorld confirmingDelete x +FD net/minecraft/client/gui/GuiSelectWorld deleteButton y +FD net/minecraft/client/gui/GuiSelectWorld selectButton z +FD net/minecraft/client/gui/GuiSelectWorld$List field_148207_k u +FD net/minecraft/client/gui/GuiShareToLan field_146598_a a +FD net/minecraft/client/gui/GuiShareToLan field_146596_f f +FD net/minecraft/client/gui/GuiShareToLan field_146597_g g +FD net/minecraft/client/gui/GuiShareToLan field_146599_h h +FD net/minecraft/client/gui/GuiShareToLan field_146600_i i +FD net/minecraft/client/gui/GuiCustomizeSkin parentScreen a +FD net/minecraft/client/gui/GuiCustomizeSkin title f +FD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart field_175235_o o +FD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart playerModelParts p +FD net/minecraft/client/gui/GuiSnooper field_146608_a a +FD net/minecraft/client/gui/GuiSnooper game_settings_2 f +FD net/minecraft/client/gui/GuiSnooper field_146604_g g +FD net/minecraft/client/gui/GuiSnooper field_146609_h h +FD net/minecraft/client/gui/GuiSnooper field_146610_i i +FD net/minecraft/client/gui/GuiSnooper field_146607_r r +FD net/minecraft/client/gui/GuiSnooper field_146606_s s +FD net/minecraft/client/gui/GuiSnooper field_146605_t t +FD net/minecraft/client/gui/GuiSnooper$List field_148206_k u +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146507_a a +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146505_f f +FD net/minecraft/client/gui/GuiScreenOptionsSounds game_settings_4 g +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146508_h h +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146156_o o +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146155_p p +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146154_q q +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146153_r r +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146152_s s +FD net/minecraft/client/gui/GuiMainMenu splashTexts A +FD net/minecraft/client/gui/GuiMainMenu minecraftTitleTextures B +FD net/minecraft/client/gui/GuiMainMenu titlePanoramaPaths C +FD net/minecraft/client/gui/GuiMainMenu field_92024_r D +FD net/minecraft/client/gui/GuiMainMenu field_92023_s E +FD net/minecraft/client/gui/GuiMainMenu field_92022_t F +FD net/minecraft/client/gui/GuiMainMenu field_92021_u G +FD net/minecraft/client/gui/GuiMainMenu field_92020_v H +FD net/minecraft/client/gui/GuiMainMenu field_92019_w I +FD net/minecraft/client/gui/GuiMainMenu backgroundTexture J +FD net/minecraft/client/gui/GuiMainMenu realmsButton K +FD net/minecraft/client/gui/GuiMainMenu field_183502_L L +FD net/minecraft/client/gui/GuiMainMenu field_183503_M M +FD net/minecraft/client/gui/GuiMainMenu field_96138_a a +FD net/minecraft/client/gui/GuiMainMenu field_175373_f f +FD net/minecraft/client/gui/GuiMainMenu logger g +FD net/minecraft/client/gui/GuiMainMenu RANDOM h +FD net/minecraft/client/gui/GuiMainMenu updateCounter i +FD net/minecraft/client/gui/GuiMainMenu splashText r +FD net/minecraft/client/gui/GuiMainMenu buttonResetDemo s +FD net/minecraft/client/gui/GuiMainMenu panoramaTimer t +FD net/minecraft/client/gui/GuiMainMenu viewportTexture u +FD net/minecraft/client/gui/GuiMainMenu field_175375_v v +FD net/minecraft/client/gui/GuiMainMenu threadLock w +FD net/minecraft/client/gui/GuiMainMenu openGLWarning1 x +FD net/minecraft/client/gui/GuiMainMenu openGLWarning2 y +FD net/minecraft/client/gui/GuiMainMenu openGLWarningLink z +FD net/minecraft/client/gui/GuiVideoSettings screenTitle a +FD net/minecraft/client/gui/GuiVideoSettings parentGuiScreen f +FD net/minecraft/client/gui/GuiVideoSettings guiGameSettings g +FD net/minecraft/client/gui/GuiVideoSettings optionsRowList h +FD net/minecraft/client/gui/GuiVideoSettings videoOptions i +FD net/minecraft/client/gui/GuiWinGame logger a +FD net/minecraft/client/gui/GuiWinGame MINECRAFT_LOGO f +FD net/minecraft/client/gui/GuiWinGame VIGNETTE_TEXTURE g +FD net/minecraft/client/gui/GuiWinGame field_146581_h h +FD net/minecraft/client/gui/GuiWinGame field_146582_i i +FD net/minecraft/client/gui/GuiWinGame field_146579_r r +FD net/minecraft/client/gui/GuiWinGame field_146578_s s +FD net/minecraft/client/gui/achievement/GuiAchievement achievementBg a +FD net/minecraft/client/gui/achievement/GuiAchievement mc f +FD net/minecraft/client/gui/achievement/GuiAchievement width g +FD net/minecraft/client/gui/achievement/GuiAchievement height h +FD net/minecraft/client/gui/achievement/GuiAchievement achievementTitle i +FD net/minecraft/client/gui/achievement/GuiAchievement achievementDescription j +FD net/minecraft/client/gui/achievement/GuiAchievement theAchievement k +FD net/minecraft/client/gui/achievement/GuiAchievement notificationTime l +FD net/minecraft/client/gui/achievement/GuiAchievement renderItem m +FD net/minecraft/client/gui/achievement/GuiAchievement permanentNotification n +FD net/minecraft/client/gui/achievement/GuiAchievements field_146559_A A +FD net/minecraft/client/gui/achievement/GuiAchievements field_146560_B B +FD net/minecraft/client/gui/achievement/GuiAchievements ACHIEVEMENT_BACKGROUND C +FD net/minecraft/client/gui/achievement/GuiAchievements field_146554_D D +FD net/minecraft/client/gui/achievement/GuiAchievements statFileWriter E +FD net/minecraft/client/gui/achievement/GuiAchievements loadingAchievements F +FD net/minecraft/client/gui/achievement/GuiAchievements parentScreen a +FD net/minecraft/client/gui/achievement/GuiAchievements field_146555_f f +FD net/minecraft/client/gui/achievement/GuiAchievements field_146557_g g +FD net/minecraft/client/gui/achievement/GuiAchievements field_146563_h h +FD net/minecraft/client/gui/achievement/GuiAchievements field_146564_i i +FD net/minecraft/client/gui/achievement/GuiAchievements field_146570_r r +FD net/minecraft/client/gui/achievement/GuiAchievements field_146569_s s +FD net/minecraft/client/gui/achievement/GuiAchievements field_146568_t t +FD net/minecraft/client/gui/achievement/GuiAchievements field_146567_u u +FD net/minecraft/client/gui/achievement/GuiAchievements field_146566_v v +FD net/minecraft/client/gui/achievement/GuiAchievements field_146565_w w +FD net/minecraft/client/gui/achievement/GuiAchievements field_146573_x x +FD net/minecraft/client/gui/achievement/GuiAchievements field_146572_y y +FD net/minecraft/client/gui/achievement/GuiAchievements field_146571_z z +FD net/minecraft/client/gui/achievement/GuiStats parentScreen a +FD net/minecraft/client/gui/achievement/GuiStats screenTitle f +FD net/minecraft/client/gui/achievement/GuiStats generalStats g +FD net/minecraft/client/gui/achievement/GuiStats itemStats h +FD net/minecraft/client/gui/achievement/GuiStats blockStats i +FD net/minecraft/client/gui/achievement/GuiStats mobStats r +FD net/minecraft/client/gui/achievement/GuiStats field_146546_t s +FD net/minecraft/client/gui/achievement/GuiStats displaySlot t +FD net/minecraft/client/gui/achievement/GuiStats doesGuiPauseGame u +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock field_148221_k u +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 field_148341_a a +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 field_148340_b b +FD net/minecraft/client/gui/achievement/GuiStats$StatsGeneral field_148208_k u +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem field_148220_k u +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 field_148344_a a +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 field_148343_b b +FD net/minecraft/client/gui/achievement/GuiStats$StatsMobsList field_148223_k u +FD net/minecraft/client/gui/achievement/GuiStats$StatsMobsList field_148222_l v +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148214_q A +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148218_l v +FD net/minecraft/client/gui/achievement/GuiStats$Stats statsHolder w +FD net/minecraft/client/gui/achievement/GuiStats$Stats statSorter x +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148217_o y +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148215_p z +FD net/minecraft/client/gui/IProgressMeter lanSearchStates c_ +FD net/minecraft/client/gui/GuiKeyBindingList field_148191_k u +FD net/minecraft/client/gui/GuiKeyBindingList mc v +FD net/minecraft/client/gui/GuiKeyBindingList listEntries w +FD net/minecraft/client/gui/GuiKeyBindingList maxListLabelWidth x +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry field_148287_a a +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry labelText b +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry labelWidth c +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry field_148284_a a +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry keybinding b +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry keyDesc c +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry btnChangeKeyBinding d +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry btnReset e +FD net/minecraft/client/gui/GuiControls screenTitle a +FD net/minecraft/client/gui/GuiControls buttonId f +FD net/minecraft/client/gui/GuiControls time g +FD net/minecraft/client/gui/GuiControls optionsArr h +FD net/minecraft/client/gui/GuiControls parentScreen i +FD net/minecraft/client/gui/GuiControls options r +FD net/minecraft/client/gui/GuiControls keyBindingList s +FD net/minecraft/client/gui/GuiControls buttonReset t +FD net/minecraft/client/gui/inventory/GuiContainer returningStackDestSlot A +FD net/minecraft/client/gui/inventory/GuiContainer returningStackTime B +FD net/minecraft/client/gui/inventory/GuiContainer returningStack C +FD net/minecraft/client/gui/inventory/GuiContainer currentDragTargetSlot D +FD net/minecraft/client/gui/inventory/GuiContainer dragItemDropDelay E +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingLimit F +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingButton G +FD net/minecraft/client/gui/inventory/GuiContainer ignoreMouseUp H +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingRemnant I +FD net/minecraft/client/gui/inventory/GuiContainer lastClickTime J +FD net/minecraft/client/gui/inventory/GuiContainer lastClickSlot K +FD net/minecraft/client/gui/inventory/GuiContainer lastClickButton L +FD net/minecraft/client/gui/inventory/GuiContainer doubleClick M +FD net/minecraft/client/gui/inventory/GuiContainer shiftClickedSlot N +FD net/minecraft/client/gui/inventory/GuiContainer inventoryBackground a +FD net/minecraft/client/gui/inventory/GuiContainer xSize f +FD net/minecraft/client/gui/inventory/GuiContainer ySize g +FD net/minecraft/client/gui/inventory/GuiContainer inventorySlots h +FD net/minecraft/client/gui/inventory/GuiContainer guiLeft i +FD net/minecraft/client/gui/inventory/GuiContainer guiTop r +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingSlots s +FD net/minecraft/client/gui/inventory/GuiContainer dragSplitting t +FD net/minecraft/client/gui/inventory/GuiContainer theSlot u +FD net/minecraft/client/gui/inventory/GuiContainer clickedSlot v +FD net/minecraft/client/gui/inventory/GuiContainer isRightMouseClick w +FD net/minecraft/client/gui/inventory/GuiContainer draggedStack x +FD net/minecraft/client/gui/inventory/GuiContainer touchUpX y +FD net/minecraft/client/gui/inventory/GuiContainer touchUpY z +FD net/minecraft/client/gui/GuiRepair anvilResource u +FD net/minecraft/client/gui/GuiRepair anvil v +FD net/minecraft/client/gui/GuiRepair nameField w +FD net/minecraft/client/gui/GuiRepair playerInventory x +FD net/minecraft/client/gui/inventory/GuiBeacon logger u +FD net/minecraft/client/gui/inventory/GuiBeacon beaconGuiTextures v +FD net/minecraft/client/gui/inventory/GuiBeacon tileBeacon w +FD net/minecraft/client/gui/inventory/GuiBeacon beaconConfirmButton x +FD net/minecraft/client/gui/inventory/GuiBeacon buttonsNotDrawn y +FD net/minecraft/client/gui/inventory/GuiBeacon$CancelButton field_146146_o o +FD net/minecraft/client/gui/inventory/GuiBeacon$ConfirmButton field_146147_o o +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146150_o o +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146149_p p +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146148_q q +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146145_o o +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146144_p p +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146143_q q +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146142_r r +FD net/minecraft/client/gui/GuiScreenBook field_175386_A A +FD net/minecraft/client/gui/GuiScreenBook field_175387_B B +FD net/minecraft/client/gui/GuiScreenBook buttonNextPage C +FD net/minecraft/client/gui/GuiScreenBook buttonPreviousPage D +FD net/minecraft/client/gui/GuiScreenBook buttonDone E +FD net/minecraft/client/gui/GuiScreenBook buttonSign F +FD net/minecraft/client/gui/GuiScreenBook buttonFinalize G +FD net/minecraft/client/gui/GuiScreenBook buttonCancel H +FD net/minecraft/client/gui/GuiScreenBook logger a +FD net/minecraft/client/gui/GuiScreenBook bookGuiTextures f +FD net/minecraft/client/gui/GuiScreenBook editingPlayer g +FD net/minecraft/client/gui/GuiScreenBook bookObj h +FD net/minecraft/client/gui/GuiScreenBook bookIsUnsigned i +FD net/minecraft/client/gui/GuiScreenBook bookIsModified r +FD net/minecraft/client/gui/GuiScreenBook bookGettingSigned s +FD net/minecraft/client/gui/GuiScreenBook updateCount t +FD net/minecraft/client/gui/GuiScreenBook bookImageWidth u +FD net/minecraft/client/gui/GuiScreenBook bookImageHeight v +FD net/minecraft/client/gui/GuiScreenBook bookTotalPages w +FD net/minecraft/client/gui/GuiScreenBook currPage x +FD net/minecraft/client/gui/GuiScreenBook bookPages y +FD net/minecraft/client/gui/GuiScreenBook bookTitle z +FD net/minecraft/client/gui/GuiScreenBook$NextPageButton field_146151_o o +FD net/minecraft/client/gui/inventory/GuiBrewingStand brewingStandGuiTextures u +FD net/minecraft/client/gui/inventory/GuiBrewingStand playerInventory v +FD net/minecraft/client/gui/inventory/GuiBrewingStand tileBrewingStand w +FD net/minecraft/client/gui/GuiCommandBlock field_146488_a a +FD net/minecraft/client/gui/GuiCommandBlock commandTextField f +FD net/minecraft/client/gui/GuiCommandBlock previousOutputTextField g +FD net/minecraft/client/gui/GuiCommandBlock localCommandBlock h +FD net/minecraft/client/gui/GuiCommandBlock doneBtn i +FD net/minecraft/client/gui/GuiCommandBlock cancelBtn r +FD net/minecraft/client/gui/GuiCommandBlock field_175390_s s +FD net/minecraft/client/gui/GuiCommandBlock field_175389_t t +FD net/minecraft/client/gui/inventory/GuiChest CHEST_GUI_TEXTURE u +FD net/minecraft/client/gui/inventory/GuiChest upperChestInventory v +FD net/minecraft/client/gui/inventory/GuiChest lowerChestInventory w +FD net/minecraft/client/gui/inventory/GuiChest inventoryRows x +FD net/minecraft/client/gui/inventory/GuiCrafting craftingTableGuiTextures u +FD net/minecraft/client/gui/inventory/CreativeCrafting mc a +FD net/minecraft/client/gui/inventory/GuiContainerCreative searchField A +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147063_B B +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147064_C C +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147057_D D +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147059_E E +FD net/minecraft/client/gui/inventory/GuiContainerCreative creativeInventoryTabs u +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147060_v v +FD net/minecraft/client/gui/inventory/GuiContainerCreative selectedTabIndex w +FD net/minecraft/client/gui/inventory/GuiContainerCreative currentScroll x +FD net/minecraft/client/gui/inventory/GuiContainerCreative isScrolling y +FD net/minecraft/client/gui/inventory/GuiContainerCreative wasClicking z +FD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative itemList a +FD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot field_148333_a a +FD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot slot b +FD net/minecraft/client/gui/inventory/GuiDispenser dispenserInventory u +FD net/minecraft/client/gui/inventory/GuiDispenser dispenserGuiTextures v +FD net/minecraft/client/gui/inventory/GuiDispenser playerInventory w +FD net/minecraft/client/renderer/InventoryEffectRenderer hasActivePotionEffects u +FD net/minecraft/util/EnchantmentNameParts instance a +FD net/minecraft/util/EnchantmentNameParts rand b +FD net/minecraft/util/EnchantmentNameParts namePartsArray c +FD net/minecraft/client/gui/GuiEnchantment field_147076_A A +FD net/minecraft/client/gui/GuiEnchantment field_147077_B B +FD net/minecraft/client/gui/GuiEnchantment ENCHANTMENT_TABLE_GUI_TEXTURE C +FD net/minecraft/client/gui/GuiEnchantment ENCHANTMENT_TABLE_BOOK_TEXTURE D +FD net/minecraft/client/gui/GuiEnchantment MODEL_BOOK E +FD net/minecraft/client/gui/GuiEnchantment playerInventory F +FD net/minecraft/client/gui/GuiEnchantment random G +FD net/minecraft/client/gui/GuiEnchantment container H +FD net/minecraft/client/gui/GuiEnchantment field_175380_I I +FD net/minecraft/client/gui/GuiEnchantment field_147073_u u +FD net/minecraft/client/gui/GuiEnchantment field_147071_v v +FD net/minecraft/client/gui/GuiEnchantment field_147069_w w +FD net/minecraft/client/gui/GuiEnchantment field_147082_x x +FD net/minecraft/client/gui/GuiEnchantment field_147081_y y +FD net/minecraft/client/gui/GuiEnchantment field_147080_z z +FD net/minecraft/client/gui/inventory/GuiFurnace furnaceGuiTextures u +FD net/minecraft/client/gui/inventory/GuiFurnace playerInventory v +FD net/minecraft/client/gui/inventory/GuiFurnace tileFurnace w +FD net/minecraft/client/gui/GuiHopper HOPPER_GUI_TEXTURE u +FD net/minecraft/client/gui/GuiHopper playerInventory v +FD net/minecraft/client/gui/GuiHopper hopperInventory w +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseGuiTextures u +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory playerInventory v +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseInventory w +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseEntity x +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory mousePosx y +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory mousePosY z +FD net/minecraft/client/gui/inventory/GuiInventory oldMouseX u +FD net/minecraft/client/gui/inventory/GuiInventory oldMouseY v +FD net/minecraft/client/gui/GuiMerchant chatComponent A +FD net/minecraft/client/gui/GuiMerchant logger u +FD net/minecraft/client/gui/GuiMerchant MERCHANT_GUI_TEXTURE v +FD net/minecraft/client/gui/GuiMerchant merchant w +FD net/minecraft/client/gui/GuiMerchant nextButton x +FD net/minecraft/client/gui/GuiMerchant previousButton y +FD net/minecraft/client/gui/GuiMerchant selectedMerchantRecipe z +FD net/minecraft/client/gui/GuiMerchant$MerchantButton field_146157_o o +FD net/minecraft/client/gui/inventory/GuiEditSign tileSign a +FD net/minecraft/client/gui/inventory/GuiEditSign updateCounter f +FD net/minecraft/client/gui/inventory/GuiEditSign editLine g +FD net/minecraft/client/gui/inventory/GuiEditSign doneBtn h +FD net/minecraft/client/gui/GuiMultiplayer lanServerList A +FD net/minecraft/client/gui/GuiMultiplayer lanServerDetector B +FD net/minecraft/client/gui/GuiMultiplayer initialized C +FD net/minecraft/client/gui/GuiMultiplayer logger a +FD net/minecraft/client/gui/GuiMultiplayer oldServerPinger f +FD net/minecraft/client/gui/GuiMultiplayer parentScreen g +FD net/minecraft/client/gui/GuiMultiplayer serverListSelector h +FD net/minecraft/client/gui/GuiMultiplayer savedServerList i +FD net/minecraft/client/gui/GuiMultiplayer btnEditServer r +FD net/minecraft/client/gui/GuiMultiplayer btnSelectServer s +FD net/minecraft/client/gui/GuiMultiplayer btnDeleteServer t +FD net/minecraft/client/gui/GuiMultiplayer deletingServer u +FD net/minecraft/client/gui/GuiMultiplayer addingServer v +FD net/minecraft/client/gui/GuiMultiplayer editingServer w +FD net/minecraft/client/gui/GuiMultiplayer directConnect x +FD net/minecraft/client/gui/GuiMultiplayer hoveringText y +FD net/minecraft/client/gui/GuiMultiplayer selectedServer z +FD net/minecraft/client/gui/ServerListEntryLanScan mc a +FD net/minecraft/client/gui/ServerListEntryLanDetected mc a +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148291_b b +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148292_c c +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148290_d d +FD net/minecraft/client/gui/ServerListEntryNormal logger a +FD net/minecraft/client/gui/ServerListEntryNormal field_148302_b b +FD net/minecraft/client/gui/ServerListEntryNormal UNKNOWN_SERVER c +FD net/minecraft/client/gui/ServerListEntryNormal SERVER_SELECTION_BUTTONS d +FD net/minecraft/client/gui/ServerListEntryNormal owner e +FD net/minecraft/client/gui/ServerListEntryNormal mc f +FD net/minecraft/client/gui/ServerListEntryNormal server g +FD net/minecraft/client/gui/ServerListEntryNormal serverIcon h +FD net/minecraft/client/gui/ServerListEntryNormal field_148299_g i +FD net/minecraft/client/gui/ServerListEntryNormal field_148305_h j +FD net/minecraft/client/gui/ServerListEntryNormal field_148298_f k +FD net/minecraft/client/gui/ServerListEntryNormal$1 field_148521_a a +FD net/minecraft/client/gui/ServerSelectionList owner u +FD net/minecraft/client/gui/ServerSelectionList serverListInternet v +FD net/minecraft/client/gui/ServerSelectionList serverListLan w +FD net/minecraft/client/gui/ServerSelectionList lanScanEntry x +FD net/minecraft/client/gui/ServerSelectionList selectedSlotIndex y +FD net/minecraft/client/gui/GuiScreenResourcePacks logger a +FD net/minecraft/client/gui/GuiScreenResourcePacks parentScreen f +FD net/minecraft/client/gui/GuiScreenResourcePacks availableResourcePacks g +FD net/minecraft/client/gui/GuiScreenResourcePacks selectedResourcePacks h +FD net/minecraft/client/gui/GuiScreenResourcePacks availableResourcePacksList i +FD net/minecraft/client/gui/GuiScreenResourcePacks selectedResourcePacksList r +FD net/minecraft/client/gui/GuiScreenResourcePacks changed s +FD net/minecraft/client/resources/ResourcePackListEntry mc a +FD net/minecraft/client/resources/ResourcePackListEntry resourcePacksGUI b +FD net/minecraft/client/resources/ResourcePackListEntry RESOURCE_PACKS_TEXTURE c +FD net/minecraft/client/resources/ResourcePackListEntry field_183020_d d +FD net/minecraft/client/resources/ResourcePackListEntry field_183021_e e +FD net/minecraft/client/resources/ResourcePackListEntry field_183022_f f +FD net/minecraft/client/resources/ResourcePackListEntry$1 field_183004_a a +FD net/minecraft/client/resources/ResourcePackListEntryDefault logger c +FD net/minecraft/client/resources/ResourcePackListEntryDefault field_148320_d d +FD net/minecraft/client/resources/ResourcePackListEntryDefault resourcePackIcon e +FD net/minecraft/client/resources/ResourcePackListEntryFound field_148319_c c +FD net/minecraft/client/gui/GuiResourcePackList mc u +FD net/minecraft/client/gui/GuiResourcePackList field_148204_l v +FD net/minecraft/client/gui/stream/GuiIngestServers field_152309_a a +FD net/minecraft/client/gui/stream/GuiIngestServers field_152310_f f +FD net/minecraft/client/gui/stream/GuiIngestServers field_152311_g g +FD net/minecraft/client/gui/stream/GuiIngestServers$ServerList field_152435_k u +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152312_a a +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152316_f f +FD net/minecraft/client/gui/stream/GuiStreamOptions parentScreen g +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152318_h h +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152319_i i +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152313_r r +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152314_s s +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152315_t t +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152322_a a +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152324_f f +FD net/minecraft/client/gui/stream/GuiStreamUnavailable parentScreen g +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152326_h h +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152327_i i +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152323_r r +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152577_a a +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152578_b b +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152579_c c +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason NO_FBO a +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason LIBRARY_ARCH_MISMATCH b +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason LIBRARY_FAILURE c +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_WINDOWS d +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_MAC e +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_OTHER f +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason ACCOUNT_NOT_MIGRATED g +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason ACCOUNT_NOT_BOUND h +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason FAILED_TWITCH_AUTH i +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason FAILED_TWITCH_AUTH_ERROR j +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason INITIALIZATION_FAILURE k +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNKNOWN l +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason field_152574_m m +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason field_152575_n n +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason $VALUES o +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152331_a a +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152335_f f +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152336_g g +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152337_h h +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152338_i i +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152332_r r +FD net/minecraft/client/gui/stream/GuiTwitchUserMode stream s +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152334_t t +FD net/minecraft/client/gui/spectator/PlayerMenuObject profile a +FD net/minecraft/client/gui/spectator/PlayerMenuObject resourceLocation b +FD net/minecraft/client/gui/spectator/BaseSpectatorGroup field_178671_a a +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178657_a a +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178655_b b +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178656_c c +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178653_d d +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178654_e e +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178651_f f +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178652_g g +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178659_h h +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178660_i i +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178658_j j +FD net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject field_178666_a a +FD net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject field_178665_b b +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178684_a a +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178682_b b +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178683_c c +FD net/minecraft/client/gui/spectator/categories/TeleportToPlayer field_178674_a a +FD net/minecraft/client/gui/spectator/categories/TeleportToPlayer field_178673_b b +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam field_178672_a a +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178678_a a +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178676_b b +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178677_c c +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178675_d d +FD net/minecraft/client/main/GameConfiguration userInfo a +FD net/minecraft/client/main/GameConfiguration displayInfo b +FD net/minecraft/client/main/GameConfiguration folderInfo c +FD net/minecraft/client/main/GameConfiguration gameInfo d +FD net/minecraft/client/main/GameConfiguration serverInfo e +FD net/minecraft/client/main/GameConfiguration$DisplayInformation width a +FD net/minecraft/client/main/GameConfiguration$DisplayInformation height b +FD net/minecraft/client/main/GameConfiguration$DisplayInformation fullscreen c +FD net/minecraft/client/main/GameConfiguration$DisplayInformation checkGlErrors d +FD net/minecraft/client/main/GameConfiguration$FolderInformation mcDataDir a +FD net/minecraft/client/main/GameConfiguration$FolderInformation resourcePacksDir b +FD net/minecraft/client/main/GameConfiguration$FolderInformation assetsDir c +FD net/minecraft/client/main/GameConfiguration$FolderInformation assetIndex d +FD net/minecraft/client/main/GameConfiguration$GameInformation isDemo a +FD net/minecraft/client/main/GameConfiguration$GameInformation version b +FD net/minecraft/client/main/GameConfiguration$ServerInformation serverName a +FD net/minecraft/client/main/GameConfiguration$ServerInformation serverPort b +FD net/minecraft/client/main/GameConfiguration$UserInformation session a +FD net/minecraft/client/main/GameConfiguration$UserInformation userProperties b +FD net/minecraft/client/main/GameConfiguration$UserInformation profileProperties c +FD net/minecraft/client/main/GameConfiguration$UserInformation proxy d +FD net/minecraft/client/model/ModelArmorStand standRightSide a +FD net/minecraft/client/model/ModelArmorStand standLeftSide b +FD net/minecraft/client/model/ModelArmorStand standWaist c +FD net/minecraft/client/model/ModelArmorStand standBase d +FD net/minecraft/client/model/ModelBanner bannerSlate a +FD net/minecraft/client/model/ModelBanner bannerStand b +FD net/minecraft/client/model/ModelBanner bannerTop c +FD net/minecraft/client/model/ModelBat batHead a +FD net/minecraft/client/model/ModelBat batBody b +FD net/minecraft/client/model/ModelBat batRightWing c +FD net/minecraft/client/model/ModelBat batLeftWing d +FD net/minecraft/client/model/ModelBat batOuterRightWing e +FD net/minecraft/client/model/ModelBat batOuterLeftWing f +FD net/minecraft/client/model/ModelBlaze blazeSticks a +FD net/minecraft/client/model/ModelBlaze blazeHead b +FD net/minecraft/client/model/ModelBoat boatSides a +FD net/minecraft/client/model/ModelBook coverRight a +FD net/minecraft/client/model/ModelBook coverLeft b +FD net/minecraft/client/model/ModelBook pagesRight c +FD net/minecraft/client/model/ModelBook pagesLeft d +FD net/minecraft/client/model/ModelBook flippingPageRight e +FD net/minecraft/client/model/ModelBook flippingPageLeft f +FD net/minecraft/client/model/ModelBook bookSpine g +FD net/minecraft/client/model/ModelChest chestLid a +FD net/minecraft/client/model/ModelChest chestBelow b +FD net/minecraft/client/model/ModelChest chestKnob c +FD net/minecraft/client/model/ModelChicken head a +FD net/minecraft/client/model/ModelChicken body b +FD net/minecraft/client/model/ModelChicken rightLeg c +FD net/minecraft/client/model/ModelChicken leftLeg d +FD net/minecraft/client/model/ModelChicken rightWing e +FD net/minecraft/client/model/ModelChicken leftWing f +FD net/minecraft/client/model/ModelChicken bill g +FD net/minecraft/client/model/ModelChicken chin h +FD net/minecraft/client/model/ModelCreeper head a +FD net/minecraft/client/model/ModelCreeper creeperArmor b +FD net/minecraft/client/model/ModelCreeper body c +FD net/minecraft/client/model/ModelCreeper leg1 d +FD net/minecraft/client/model/ModelCreeper leg2 e +FD net/minecraft/client/model/ModelCreeper leg3 f +FD net/minecraft/client/model/ModelCreeper leg4 g +FD net/minecraft/client/model/ModelEnderman isCarrying a +FD net/minecraft/client/model/ModelEnderman isAttacking b +FD net/minecraft/client/model/ModelEnderMite field_178716_a a +FD net/minecraft/client/model/ModelEnderMite field_178714_b b +FD net/minecraft/client/model/ModelEnderMite field_178715_c c +FD net/minecraft/client/model/ModelEnderMite field_178713_d d +FD net/minecraft/client/model/ModelGhast body a +FD net/minecraft/client/model/ModelGhast tentacles b +FD net/minecraft/client/model/ModelGuardian guardianBody a +FD net/minecraft/client/model/ModelGuardian guardianEye b +FD net/minecraft/client/model/ModelGuardian guardianSpines c +FD net/minecraft/client/model/ModelGuardian guardianTail d +FD net/minecraft/client/model/ModelHorse frontLeftLeg A +FD net/minecraft/client/model/ModelHorse frontLeftShin B +FD net/minecraft/client/model/ModelHorse frontLeftHoof C +FD net/minecraft/client/model/ModelHorse frontRightLeg D +FD net/minecraft/client/model/ModelHorse frontRightShin E +FD net/minecraft/client/model/ModelHorse frontRightHoof F +FD net/minecraft/client/model/ModelHorse muleLeftChest G +FD net/minecraft/client/model/ModelHorse muleRightChest H +FD net/minecraft/client/model/ModelHorse horseSaddleBottom I +FD net/minecraft/client/model/ModelHorse horseSaddleFront J +FD net/minecraft/client/model/ModelHorse horseSaddleBack K +FD net/minecraft/client/model/ModelHorse horseLeftSaddleRope L +FD net/minecraft/client/model/ModelHorse horseLeftSaddleMetal M +FD net/minecraft/client/model/ModelHorse horseRightSaddleRope N +FD net/minecraft/client/model/ModelHorse horseRightSaddleMetal O +FD net/minecraft/client/model/ModelHorse horseLeftFaceMetal P +FD net/minecraft/client/model/ModelHorse horseRightFaceMetal Q +FD net/minecraft/client/model/ModelHorse horseLeftRein R +FD net/minecraft/client/model/ModelHorse horseRightRein S +FD net/minecraft/client/model/ModelHorse head a +FD net/minecraft/client/model/ModelHorse field_178711_b b +FD net/minecraft/client/model/ModelHorse field_178712_c c +FD net/minecraft/client/model/ModelHorse horseLeftEar d +FD net/minecraft/client/model/ModelHorse horseRightEar e +FD net/minecraft/client/model/ModelHorse muleLeftEar f +FD net/minecraft/client/model/ModelHorse muleRightEar g +FD net/minecraft/client/model/ModelHorse neck h +FD net/minecraft/client/model/ModelHorse horseFaceRopes i +FD net/minecraft/client/model/ModelHorse mane j +FD net/minecraft/client/model/ModelHorse body k +FD net/minecraft/client/model/ModelHorse tailBase l +FD net/minecraft/client/model/ModelHorse tailMiddle m +FD net/minecraft/client/model/ModelHorse tailTip n +FD net/minecraft/client/model/ModelHorse backLeftLeg o +FD net/minecraft/client/model/ModelHorse backLeftShin v +FD net/minecraft/client/model/ModelHorse backLeftHoof w +FD net/minecraft/client/model/ModelHorse backRightLeg x +FD net/minecraft/client/model/ModelHorse backRightShin y +FD net/minecraft/client/model/ModelHorse backRightHoof z +FD net/minecraft/client/model/ModelHumanoidHead head b +FD net/minecraft/client/model/ModelBiped bipedHead e +FD net/minecraft/client/model/ModelBiped bipedHeadwear f +FD net/minecraft/client/model/ModelBiped bipedBody g +FD net/minecraft/client/model/ModelBiped bipedRightArm h +FD net/minecraft/client/model/ModelBiped bipedLeftArm i +FD net/minecraft/client/model/ModelBiped bipedRightLeg j +FD net/minecraft/client/model/ModelBiped bipedLeftLeg k +FD net/minecraft/client/model/ModelBiped heldItemLeft l +FD net/minecraft/client/model/ModelBiped heldItemRight m +FD net/minecraft/client/model/ModelBiped isSneak n +FD net/minecraft/client/model/ModelBiped aimedBow o +FD net/minecraft/client/model/ModelMagmaCube segments a +FD net/minecraft/client/model/ModelMagmaCube core b +FD net/minecraft/client/model/ModelLeashKnot field_110723_a a +FD net/minecraft/client/model/ModelMinecart sideModels a +FD net/minecraft/client/model/ModelBase modelTextureMap a +FD net/minecraft/client/model/ModelBase swingProgress p +FD net/minecraft/client/model/ModelBase isRiding q +FD net/minecraft/client/model/ModelBase isChild r +FD net/minecraft/client/model/ModelBase boxList s +FD net/minecraft/client/model/ModelBase textureWidth t +FD net/minecraft/client/model/ModelBase textureHeight u +FD net/minecraft/client/model/ModelOcelot ocelotBackLeftLeg a +FD net/minecraft/client/model/ModelOcelot ocelotBackRightLeg b +FD net/minecraft/client/model/ModelOcelot ocelotFrontLeftLeg c +FD net/minecraft/client/model/ModelOcelot ocelotFrontRightLeg d +FD net/minecraft/client/model/ModelOcelot ocelotTail e +FD net/minecraft/client/model/ModelOcelot ocelotTail2 f +FD net/minecraft/client/model/ModelOcelot ocelotHead g +FD net/minecraft/client/model/ModelOcelot ocelotBody h +FD net/minecraft/client/model/ModelOcelot field_78163_i i +FD net/minecraft/client/model/ModelPlayer bipedLeftArmwear a +FD net/minecraft/client/model/ModelPlayer bipedRightArmwear b +FD net/minecraft/client/model/ModelPlayer bipedLeftLegwear c +FD net/minecraft/client/model/ModelPlayer bipedRightLegwear d +FD net/minecraft/client/model/ModelPlayer bipedBodyWear v +FD net/minecraft/client/model/ModelPlayer bipedCape w +FD net/minecraft/client/model/ModelPlayer bipedDeadmau5Head x +FD net/minecraft/client/model/ModelPlayer smallArms y +FD net/minecraft/client/model/TexturedQuad vertexPositions a +FD net/minecraft/client/model/TexturedQuad nVertices b +FD net/minecraft/client/model/TexturedQuad invertNormal c +FD net/minecraft/client/model/ModelQuadruped head a +FD net/minecraft/client/model/ModelQuadruped body b +FD net/minecraft/client/model/ModelQuadruped leg1 c +FD net/minecraft/client/model/ModelQuadruped leg2 d +FD net/minecraft/client/model/ModelQuadruped leg3 e +FD net/minecraft/client/model/ModelQuadruped leg4 f +FD net/minecraft/client/model/ModelQuadruped childYOffset g +FD net/minecraft/client/model/ModelQuadruped childZOffset h +FD net/minecraft/client/model/ModelRabbit rabbitLeftFoot a +FD net/minecraft/client/model/ModelRabbit rabbitRightFoot b +FD net/minecraft/client/model/ModelRabbit rabbitLeftThigh c +FD net/minecraft/client/model/ModelRabbit rabbitRightThigh d +FD net/minecraft/client/model/ModelRabbit rabbitBody e +FD net/minecraft/client/model/ModelRabbit rabbitLeftArm f +FD net/minecraft/client/model/ModelRabbit rabbitRightArm g +FD net/minecraft/client/model/ModelRabbit rabbitHead h +FD net/minecraft/client/model/ModelRabbit rabbitRightEar i +FD net/minecraft/client/model/ModelRabbit rabbitLeftEar j +FD net/minecraft/client/model/ModelRabbit rabbitTail k +FD net/minecraft/client/model/ModelRabbit rabbitNose l +FD net/minecraft/client/model/ModelRabbit field_178701_m m +FD net/minecraft/client/model/ModelRabbit field_178699_n n +FD net/minecraft/client/model/ModelSheep1 headRotationAngleX i +FD net/minecraft/client/model/ModelSheep2 headRotationAngleX i +FD net/minecraft/client/model/ModelSign signBoard a +FD net/minecraft/client/model/ModelSign signStick b +FD net/minecraft/client/model/ModelSilverfish silverfishBodyParts a +FD net/minecraft/client/model/ModelSilverfish silverfishWings b +FD net/minecraft/client/model/ModelSilverfish field_78170_c c +FD net/minecraft/client/model/ModelSilverfish silverfishBoxLength d +FD net/minecraft/client/model/ModelSilverfish silverfishTexturePositions e +FD net/minecraft/client/model/ModelSkeletonHead skeletonHead a +FD net/minecraft/client/model/ModelSlime slimeBodies a +FD net/minecraft/client/model/ModelSlime slimeRightEye b +FD net/minecraft/client/model/ModelSlime slimeLeftEye c +FD net/minecraft/client/model/ModelSlime slimeMouth d +FD net/minecraft/client/model/ModelSnowMan body a +FD net/minecraft/client/model/ModelSnowMan bottomBody b +FD net/minecraft/client/model/ModelSnowMan head c +FD net/minecraft/client/model/ModelSnowMan rightHand d +FD net/minecraft/client/model/ModelSnowMan leftHand e +FD net/minecraft/client/model/ModelSpider spiderHead a +FD net/minecraft/client/model/ModelSpider spiderNeck b +FD net/minecraft/client/model/ModelSpider spiderBody c +FD net/minecraft/client/model/ModelSpider spiderLeg1 d +FD net/minecraft/client/model/ModelSpider spiderLeg2 e +FD net/minecraft/client/model/ModelSpider spiderLeg3 f +FD net/minecraft/client/model/ModelSpider spiderLeg4 g +FD net/minecraft/client/model/ModelSpider spiderLeg5 h +FD net/minecraft/client/model/ModelSpider spiderLeg6 i +FD net/minecraft/client/model/ModelSpider spiderLeg7 j +FD net/minecraft/client/model/ModelSpider spiderLeg8 k +FD net/minecraft/client/model/ModelSquid squidBody a +FD net/minecraft/client/model/ModelSquid squidTentacles b +FD net/minecraft/client/model/PositionTextureVertex vector3D a +FD net/minecraft/client/model/PositionTextureVertex texturePositionX b +FD net/minecraft/client/model/PositionTextureVertex texturePositionY c +FD net/minecraft/client/model/ModelIronGolem ironGolemHead a +FD net/minecraft/client/model/ModelIronGolem ironGolemBody b +FD net/minecraft/client/model/ModelIronGolem ironGolemRightArm c +FD net/minecraft/client/model/ModelIronGolem ironGolemLeftArm d +FD net/minecraft/client/model/ModelIronGolem ironGolemLeftLeg e +FD net/minecraft/client/model/ModelIronGolem ironGolemRightLeg f +FD net/minecraft/client/model/ModelVillager villagerHead a +FD net/minecraft/client/model/ModelVillager villagerBody b +FD net/minecraft/client/model/ModelVillager villagerArms c +FD net/minecraft/client/model/ModelVillager rightVillagerLeg d +FD net/minecraft/client/model/ModelVillager leftVillagerLeg e +FD net/minecraft/client/model/ModelVillager villagerNose f +FD net/minecraft/client/model/ModelWitch field_82900_g g +FD net/minecraft/client/model/ModelWitch field_82901_h h +FD net/minecraft/client/model/ModelWitch witchHat i +FD net/minecraft/client/model/ModelWither field_82905_a a +FD net/minecraft/client/model/ModelWither field_82904_b b +FD net/minecraft/client/model/ModelWolf wolfHeadMain a +FD net/minecraft/client/model/ModelWolf wolfBody b +FD net/minecraft/client/model/ModelWolf wolfLeg1 c +FD net/minecraft/client/model/ModelWolf wolfLeg2 d +FD net/minecraft/client/model/ModelWolf wolfLeg3 e +FD net/minecraft/client/model/ModelWolf wolfLeg4 f +FD net/minecraft/client/model/ModelWolf wolfTail g +FD net/minecraft/client/model/ModelWolf wolfMane h +FD net/minecraft/client/model/ModelDragon head a +FD net/minecraft/client/model/ModelDragon spine b +FD net/minecraft/client/model/ModelDragon jaw c +FD net/minecraft/client/model/ModelDragon body d +FD net/minecraft/client/model/ModelDragon rearLeg e +FD net/minecraft/client/model/ModelDragon frontLeg f +FD net/minecraft/client/model/ModelDragon rearLegTip g +FD net/minecraft/client/model/ModelDragon frontLegTip h +FD net/minecraft/client/model/ModelDragon rearFoot i +FD net/minecraft/client/model/ModelDragon frontFoot j +FD net/minecraft/client/model/ModelDragon wing k +FD net/minecraft/client/model/ModelDragon wingTip l +FD net/minecraft/client/model/ModelDragon partialTicks m +FD net/minecraft/client/model/ModelEnderCrystal cube a +FD net/minecraft/client/model/ModelEnderCrystal glass b +FD net/minecraft/client/model/ModelEnderCrystal base c +FD net/minecraft/client/model/ModelBox posX1 a +FD net/minecraft/client/model/ModelBox posY1 b +FD net/minecraft/client/model/ModelBox posZ1 c +FD net/minecraft/client/model/ModelBox posX2 d +FD net/minecraft/client/model/ModelBox posY2 e +FD net/minecraft/client/model/ModelBox posZ2 f +FD net/minecraft/client/model/ModelBox boxName g +FD net/minecraft/client/model/ModelBox vertexPositions h +FD net/minecraft/client/model/ModelBox quadList i +FD net/minecraft/client/model/ModelRenderer textureWidth a +FD net/minecraft/client/model/ModelRenderer textureHeight b +FD net/minecraft/client/model/ModelRenderer rotationPointX c +FD net/minecraft/client/model/ModelRenderer rotationPointY d +FD net/minecraft/client/model/ModelRenderer rotationPointZ e +FD net/minecraft/client/model/ModelRenderer rotateAngleX f +FD net/minecraft/client/model/ModelRenderer rotateAngleY g +FD net/minecraft/client/model/ModelRenderer rotateAngleZ h +FD net/minecraft/client/model/ModelRenderer mirror i +FD net/minecraft/client/model/ModelRenderer showModel j +FD net/minecraft/client/model/ModelRenderer isHidden k +FD net/minecraft/client/model/ModelRenderer cubeList l +FD net/minecraft/client/model/ModelRenderer childModels m +FD net/minecraft/client/model/ModelRenderer boxName n +FD net/minecraft/client/model/ModelRenderer offsetX o +FD net/minecraft/client/model/ModelRenderer offsetY p +FD net/minecraft/client/model/ModelRenderer offsetZ q +FD net/minecraft/client/model/ModelRenderer textureOffsetX r +FD net/minecraft/client/model/ModelRenderer textureOffsetY s +FD net/minecraft/client/model/ModelRenderer compiled t +FD net/minecraft/client/model/ModelRenderer displayList u +FD net/minecraft/client/model/ModelRenderer baseModel v +FD net/minecraft/client/model/TextureOffset textureOffsetX a +FD net/minecraft/client/model/TextureOffset textureOffsetY b +FD net/minecraft/client/network/NetHandlerLoginClient logger a +FD net/minecraft/client/network/NetHandlerLoginClient mc b +FD net/minecraft/client/network/NetHandlerLoginClient previousGuiScreen c +FD net/minecraft/client/network/NetHandlerLoginClient networkManager d +FD net/minecraft/client/network/NetHandlerLoginClient gameProfile e +FD net/minecraft/client/network/NetHandlerLoginClient$1 field_147495_a a +FD net/minecraft/client/network/NetHandlerLoginClient$1 field_147494_b b +FD net/minecraft/client/network/NetHandlerPlayClient currentServerMaxPlayers a +FD net/minecraft/client/network/NetHandlerPlayClient logger b +FD net/minecraft/client/network/NetHandlerPlayClient netManager c +FD net/minecraft/client/network/NetHandlerPlayClient profile d +FD net/minecraft/client/network/NetHandlerPlayClient guiScreenServer e +FD net/minecraft/client/network/NetHandlerPlayClient gameController f +FD net/minecraft/client/network/NetHandlerPlayClient clientWorldController g +FD net/minecraft/client/network/NetHandlerPlayClient doneLoadingTerrain h +FD net/minecraft/client/network/NetHandlerPlayClient playerInfoMap i +FD net/minecraft/client/network/NetHandlerPlayClient field_147308_k j +FD net/minecraft/client/network/NetHandlerPlayClient avRandomizer k +FD net/minecraft/client/network/NetHandlerPlayClient$1 field_146300_a a +FD net/minecraft/client/network/NetHandlerPlayClient$1 field_146299_f b +FD net/minecraft/client/network/NetHandlerPlayClient$2 field_178897_a a +FD net/minecraft/client/network/NetHandlerPlayClient$2 field_178896_b b +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178900_a a +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178898_b b +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178899_c c +FD net/minecraft/client/network/NetHandlerPlayClient$3$1 field_175395_a a +FD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 field_178886_a a +FD net/minecraft/client/network/NetHandlerPlayClient$4 field_178885_a a +FD net/minecraft/client/network/NetHandlerPlayClient$4 field_178884_b b +FD net/minecraft/client/multiplayer/ChunkProviderClient logger a +FD net/minecraft/client/multiplayer/ChunkProviderClient blankChunk b +FD net/minecraft/client/multiplayer/ChunkProviderClient chunkMapping c +FD net/minecraft/client/multiplayer/ChunkProviderClient chunkListing d +FD net/minecraft/client/multiplayer/ChunkProviderClient worldObj e +FD net/minecraft/client/multiplayer/PlayerControllerMP mc a +FD net/minecraft/client/multiplayer/PlayerControllerMP netClientHandler b +FD net/minecraft/client/multiplayer/PlayerControllerMP currentBlock c +FD net/minecraft/client/multiplayer/PlayerControllerMP currentItemHittingBlock d +FD net/minecraft/client/multiplayer/PlayerControllerMP curBlockDamageMP e +FD net/minecraft/client/multiplayer/PlayerControllerMP stepSoundTickCounter f +FD net/minecraft/client/multiplayer/PlayerControllerMP blockHitDelay g +FD net/minecraft/client/multiplayer/PlayerControllerMP isHittingBlock h +FD net/minecraft/client/multiplayer/PlayerControllerMP currentGameType i +FD net/minecraft/client/multiplayer/PlayerControllerMP currentPlayerItem j +FD net/minecraft/client/multiplayer/WorldClient mc I +FD net/minecraft/client/multiplayer/WorldClient previousActiveChunkSet J +FD net/minecraft/client/multiplayer/WorldClient sendQueue a +FD net/minecraft/client/multiplayer/WorldClient clientChunkProvider b +FD net/minecraft/client/multiplayer/WorldClient entityList c +FD net/minecraft/client/multiplayer/WorldClient entitySpawnQueue d +FD net/minecraft/client/multiplayer/WorldClient$1 field_78833_a a +FD net/minecraft/client/multiplayer/WorldClient$2 field_78835_a a +FD net/minecraft/client/multiplayer/WorldClient$3 field_142027_a a +FD net/minecraft/client/multiplayer/WorldClient$4 field_142029_a a +FD net/minecraft/client/network/NetworkPlayerInfo gameProfile a +FD net/minecraft/client/network/NetworkPlayerInfo gameType b +FD net/minecraft/client/network/NetworkPlayerInfo responseTime c +FD net/minecraft/client/network/NetworkPlayerInfo playerTexturesLoaded d +FD net/minecraft/client/network/NetworkPlayerInfo locationSkin e +FD net/minecraft/client/network/NetworkPlayerInfo locationCape f +FD net/minecraft/client/network/NetworkPlayerInfo skinType g +FD net/minecraft/client/network/NetworkPlayerInfo displayName h +FD net/minecraft/client/network/NetworkPlayerInfo field_178873_i i +FD net/minecraft/client/network/NetworkPlayerInfo field_178870_j j +FD net/minecraft/client/network/NetworkPlayerInfo field_178871_k k +FD net/minecraft/client/network/NetworkPlayerInfo field_178868_l l +FD net/minecraft/client/network/NetworkPlayerInfo field_178869_m m +FD net/minecraft/client/network/NetworkPlayerInfo$1 field_177224_a a +FD net/minecraft/client/network/NetworkPlayerInfo$2 field_178875_a a +FD net/minecraft/client/multiplayer/ServerAddress ipAddress a +FD net/minecraft/client/multiplayer/ServerAddress serverPort b +FD net/minecraft/client/multiplayer/ServerData serverName a +FD net/minecraft/client/multiplayer/ServerData serverIP b +FD net/minecraft/client/multiplayer/ServerData populationInfo c +FD net/minecraft/client/multiplayer/ServerData serverMOTD d +FD net/minecraft/client/multiplayer/ServerData pingToServer e +FD net/minecraft/client/multiplayer/ServerData version f +FD net/minecraft/client/multiplayer/ServerData gameVersion g +FD net/minecraft/client/multiplayer/ServerData field_78841_f h +FD net/minecraft/client/multiplayer/ServerData playerList i +FD net/minecraft/client/multiplayer/ServerData resourceMode j +FD net/minecraft/client/multiplayer/ServerData serverIcon k +FD net/minecraft/client/multiplayer/ServerData lanServer l +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode ENABLED a +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode DISABLED b +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode PROMPT c +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode motd d +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode $VALUES e +FD net/minecraft/client/multiplayer/ServerList logger a +FD net/minecraft/client/multiplayer/ServerList mc b +FD net/minecraft/client/multiplayer/ServerList servers c +FD net/minecraft/client/network/OldServerPinger PING_RESPONSE_SPLITTER a +FD net/minecraft/client/network/OldServerPinger logger b +FD net/minecraft/client/network/OldServerPinger pingDestinations c +FD net/minecraft/client/network/OldServerPinger$1 field_147404_b a +FD net/minecraft/client/network/OldServerPinger$1 field_147406_a b +FD net/minecraft/client/network/OldServerPinger$1 field_147405_c c +FD net/minecraft/client/network/OldServerPinger$1 field_147403_d d +FD net/minecraft/client/network/OldServerPinger$1 field_183009_e e +FD net/minecraft/client/network/OldServerPinger$1 field_175092_e f +FD net/minecraft/client/network/OldServerPinger$2 field_147218_a a +FD net/minecraft/client/network/OldServerPinger$2 field_147216_b b +FD net/minecraft/client/network/OldServerPinger$2 field_147217_c c +FD net/minecraft/client/network/OldServerPinger$2$1 field_147220_a a +FD net/minecraft/client/particle/EntityCrit2FX field_174839_a a +FD net/minecraft/client/particle/EntityDropParticleFX materialType a +FD net/minecraft/client/particle/EntityDropParticleFX bobTimer az +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX field_70565_a a +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordY aA +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordZ aB +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordX az +FD net/minecraft/client/particle/EntityFirework$SparkFX baseTextureIndex a +FD net/minecraft/client/particle/EntityFirework$SparkFX twinkle aA +FD net/minecraft/client/particle/EntityFirework$SparkFX field_92047_az aB +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourRed aC +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourGreen aD +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourBlue aE +FD net/minecraft/client/particle/EntityFirework$SparkFX hasFadeColour aF +FD net/minecraft/client/particle/EntityFirework$SparkFX trail az +FD net/minecraft/client/particle/EntityFirework$StarterFX twinkle a +FD net/minecraft/client/particle/EntityFirework$StarterFX theEffectRenderer aA +FD net/minecraft/client/particle/EntityFirework$StarterFX fireworkExplosions aB +FD net/minecraft/client/particle/EntityFirework$StarterFX fireworkAge az +FD net/minecraft/client/particle/EntityFlameFX flameScale a +FD net/minecraft/client/particle/EntityFootStepFX FOOTPRINT_TEXTURE a +FD net/minecraft/client/particle/EntityFootStepFX footstepMaxAge aA +FD net/minecraft/client/particle/EntityFootStepFX currentFootSteps aB +FD net/minecraft/client/particle/EntityFootStepFX footstepAge az +FD net/minecraft/client/particle/EntityHeartFX particleScaleOverTime a +FD net/minecraft/client/particle/EntityLargeExplodeFX EXPLOSION_TEXTURE a +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70581_a aA +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70584_aq aB +FD net/minecraft/client/particle/EntityLargeExplodeFX theRenderEngine aC +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70582_as aD +FD net/minecraft/client/particle/EntityLargeExplodeFX field_181549_az az +FD net/minecraft/client/particle/EntityHugeExplodeFX timeSinceStart a +FD net/minecraft/client/particle/EntityHugeExplodeFX maximumTime az +FD net/minecraft/client/particle/EntityPickupFX field_174840_a a +FD net/minecraft/client/particle/EntityPickupFX age aA +FD net/minecraft/client/particle/EntityPickupFX maxAge aB +FD net/minecraft/client/particle/EntityPickupFX field_174841_aA aC +FD net/minecraft/client/particle/EntityPickupFX field_174842_aB aD +FD net/minecraft/client/particle/EntityPickupFX field_174843_ax az +FD net/minecraft/client/particle/EntityLavaFX lavaParticleScale a +FD net/minecraft/client/particle/MobAppearance entity a +FD net/minecraft/client/particle/EntityNoteFX noteParticleScale a +FD net/minecraft/client/particle/EntityFX particleRed ar +FD net/minecraft/client/particle/EntityFX particleGreen as +FD net/minecraft/client/particle/EntityFX particleBlue at +FD net/minecraft/client/particle/EntityFX particleAlpha au +FD net/minecraft/client/particle/EntityFX particleIcon av +FD net/minecraft/client/particle/EntityFX interpPosX aw +FD net/minecraft/client/particle/EntityFX interpPosY ax +FD net/minecraft/client/particle/EntityFX interpPosZ ay +FD net/minecraft/client/particle/EntityFX particleTextureIndexX b +FD net/minecraft/client/particle/EntityFX particleTextureIndexY c +FD net/minecraft/client/particle/EntityFX particleTextureJitterX d +FD net/minecraft/client/particle/EntityFX particleTextureJitterY e +FD net/minecraft/client/particle/EntityFX particleAge f +FD net/minecraft/client/particle/EntityFX particleMaxAge g +FD net/minecraft/client/particle/EntityFX particleScale h +FD net/minecraft/client/particle/EntityFX particleGravity i +FD net/minecraft/client/particle/EffectRenderer worldObj a +FD net/minecraft/client/particle/EffectRenderer particleTextures b +FD net/minecraft/client/particle/EffectRenderer fxLayers c +FD net/minecraft/client/particle/EffectRenderer particleEmitters d +FD net/minecraft/client/particle/EffectRenderer renderer e +FD net/minecraft/client/particle/EffectRenderer rand f +FD net/minecraft/client/particle/EffectRenderer particleTypes g +FD net/minecraft/client/particle/EffectRenderer$1 field_147214_a a +FD net/minecraft/client/particle/EffectRenderer$1 field_147213_b b +FD net/minecraft/client/particle/EffectRenderer$2 field_147898_a a +FD net/minecraft/client/particle/EffectRenderer$2 field_147897_b b +FD net/minecraft/client/particle/EffectRenderer$3 field_147901_a a +FD net/minecraft/client/particle/EffectRenderer$3 field_147900_b b +FD net/minecraft/client/particle/EffectRenderer$4 field_147904_a a +FD net/minecraft/client/particle/EffectRenderer$4 field_147903_b b +FD net/minecraft/client/particle/EntityCloudFX field_70569_a a +FD net/minecraft/client/particle/EntityPortalFX portalParticleScale a +FD net/minecraft/client/particle/EntityPortalFX portalPosY aA +FD net/minecraft/client/particle/EntityPortalFX portalPosZ aB +FD net/minecraft/client/particle/EntityPortalFX portalPosX az +FD net/minecraft/client/particle/EntityReddustFX reddustParticleScale a +FD net/minecraft/client/particle/EntitySmokeFX smokeParticleScale a +FD net/minecraft/client/particle/EntitySnowShovelFX snowDigParticleScale a +FD net/minecraft/client/particle/EntitySpellParticleFX RANDOM a +FD net/minecraft/client/particle/EntitySpellParticleFX baseSpellTextureIndex az +FD net/minecraft/client/particle/EntityDiggingFX sourceState a +FD net/minecraft/client/particle/EntityDiggingFX sourcePos az +FD net/minecraft/client/particle/EntityParticleEmitter attachedEntity a +FD net/minecraft/client/particle/EntityParticleEmitter lifetime aA +FD net/minecraft/client/particle/EntityParticleEmitter particleTypes aB +FD net/minecraft/client/particle/EntityParticleEmitter age az +FD net/minecraft/client/entity/AbstractClientPlayer playerInfo a +FD net/minecraft/util/MovementInput moveStrafe a +FD net/minecraft/util/MovementInput moveForward b +FD net/minecraft/util/MovementInput jump c +FD net/minecraft/util/MovementInput sneak d +FD net/minecraft/util/MovementInputFromOptions gameSettings e +FD net/minecraft/client/entity/EntityPlayerSP sendQueue a +FD net/minecraft/client/entity/EntityPlayerSP movementInput b +FD net/minecraft/client/entity/EntityPlayerSP timeInPortal bH +FD net/minecraft/client/entity/EntityPlayerSP prevTimeInPortal bI +FD net/minecraft/client/entity/EntityPlayerSP statWriter bJ +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosX bK +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosY bL +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosZ bM +FD net/minecraft/client/entity/EntityPlayerSP lastReportedYaw bN +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPitch bO +FD net/minecraft/client/entity/EntityPlayerSP serverSneakState bP +FD net/minecraft/client/entity/EntityPlayerSP serverSprintState bQ +FD net/minecraft/client/entity/EntityPlayerSP positionUpdateTicks bR +FD net/minecraft/client/entity/EntityPlayerSP hasValidHealth bS +FD net/minecraft/client/entity/EntityPlayerSP clientBrand bT +FD net/minecraft/client/entity/EntityPlayerSP horseJumpPowerCounter bU +FD net/minecraft/client/entity/EntityPlayerSP horseJumpPower bV +FD net/minecraft/client/entity/EntityPlayerSP mc c +FD net/minecraft/client/entity/EntityPlayerSP sprintToggleTimer d +FD net/minecraft/client/entity/EntityPlayerSP sprintingTicksLeft e +FD net/minecraft/client/entity/EntityPlayerSP renderArmYaw f +FD net/minecraft/client/entity/EntityPlayerSP renderArmPitch g +FD net/minecraft/client/entity/EntityPlayerSP prevRenderArmYaw h +FD net/minecraft/client/entity/EntityPlayerSP prevRenderArmPitch i +FD net/minecraft/client/entity/EntityOtherPlayerMP isItemInUse a +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPPosRotationIncrements b +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPX c +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPY d +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPZ e +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPYaw f +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPPitch g +FD net/minecraft/client/player/inventory/LocalBlockIntercommunication guiID a +FD net/minecraft/client/player/inventory/LocalBlockIntercommunication displayName b +FD net/minecraft/client/player/inventory/ContainerLocalMenu guiID a +FD net/minecraft/client/player/inventory/ContainerLocalMenu field_174895_b b +FD net/minecraft/entity/boss/BossStatus healthScale a +FD net/minecraft/entity/boss/BossStatus statusBarTime b +FD net/minecraft/entity/boss/BossStatus bossName c +FD net/minecraft/entity/boss/BossStatus hasColorModifier d +FD net/minecraft/client/renderer/WorldRenderer byteBuffer a +FD net/minecraft/client/renderer/WorldRenderer rawIntBuffer b +FD net/minecraft/client/renderer/WorldRenderer rawShortBuffer c +FD net/minecraft/client/renderer/WorldRenderer rawFloatBuffer d +FD net/minecraft/client/renderer/WorldRenderer vertexCount e +FD net/minecraft/client/renderer/WorldRenderer vertexFormatElement f +FD net/minecraft/client/renderer/WorldRenderer vertexFormatIndex g +FD net/minecraft/client/renderer/WorldRenderer noColor h +FD net/minecraft/client/renderer/WorldRenderer drawMode i +FD net/minecraft/client/renderer/WorldRenderer xOffset j +FD net/minecraft/client/renderer/WorldRenderer yOffset k +FD net/minecraft/client/renderer/WorldRenderer zOffset l +FD net/minecraft/client/renderer/WorldRenderer vertexFormat m +FD net/minecraft/client/renderer/WorldRenderer isDrawing n +FD net/minecraft/client/renderer/WorldRenderer$1 field_181659_a a +FD net/minecraft/client/renderer/WorldRenderer$1 field_181660_b b +FD net/minecraft/client/renderer/WorldRenderer$2 field_181661_a a +FD net/minecraft/client/renderer/WorldRenderer$State field_179021_a a +FD net/minecraft/client/renderer/WorldRenderer$State stateRawBuffer b +FD net/minecraft/client/renderer/WorldRenderer$State stateVertexFormat c +FD net/minecraft/client/renderer/WorldVertexBufferUploader$1 field_178958_a a +FD net/minecraft/client/renderer/RegionRenderCache DEFAULT_STATE f +FD net/minecraft/client/renderer/RegionRenderCache position g +FD net/minecraft/client/renderer/RegionRenderCache combinedLights h +FD net/minecraft/client/renderer/RegionRenderCache blockStates i +FD net/minecraft/client/renderer/RegionRenderCacheBuilder worldRenderers a +FD net/minecraft/client/renderer/ChunkRenderContainer renderChunks a +FD net/minecraft/client/renderer/ChunkRenderContainer initialized b +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityX c +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityY d +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityZ e +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer instance a +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer field_147717_b b +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer field_147718_c c +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer enderChest d +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer banner e +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer skull f +FD net/minecraft/client/renderer/EnumFaceDirection DOWN a +FD net/minecraft/client/renderer/EnumFaceDirection UP b +FD net/minecraft/client/renderer/EnumFaceDirection NORTH c +FD net/minecraft/client/renderer/EnumFaceDirection SOUTH d +FD net/minecraft/client/renderer/EnumFaceDirection WEST e +FD net/minecraft/client/renderer/EnumFaceDirection EAST f +FD net/minecraft/client/renderer/EnumFaceDirection facings g +FD net/minecraft/client/renderer/EnumFaceDirection vertexInfos h +FD net/minecraft/client/renderer/EnumFaceDirection $VALUES i +FD net/minecraft/client/renderer/EnumFaceDirection$Constants SOUTH_INDEX a +FD net/minecraft/client/renderer/EnumFaceDirection$Constants UP_INDEX b +FD net/minecraft/client/renderer/EnumFaceDirection$Constants EAST_INDEX c +FD net/minecraft/client/renderer/EnumFaceDirection$Constants NORTH_INDEX d +FD net/minecraft/client/renderer/EnumFaceDirection$Constants DOWN_INDEX e +FD net/minecraft/client/renderer/EnumFaceDirection$Constants WEST_INDEX f +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation xIndex a +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation yIndex b +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation zIndex c +FD net/minecraft/client/renderer/EntityRenderer bossColorModifierPrev A +FD net/minecraft/client/renderer/EntityRenderer cloudFog B +FD net/minecraft/client/renderer/EntityRenderer renderHand C +FD net/minecraft/client/renderer/EntityRenderer drawBlockOutline D +FD net/minecraft/client/renderer/EntityRenderer prevFrameTime E +FD net/minecraft/client/renderer/EntityRenderer renderEndNanoTime F +FD net/minecraft/client/renderer/EntityRenderer lightmapTexture G +FD net/minecraft/client/renderer/EntityRenderer lightmapColors H +FD net/minecraft/client/renderer/EntityRenderer locationLightMap I +FD net/minecraft/client/renderer/EntityRenderer lightmapUpdateNeeded J +FD net/minecraft/client/renderer/EntityRenderer torchFlickerX K +FD net/minecraft/client/renderer/EntityRenderer torchFlickerDX L +FD net/minecraft/client/renderer/EntityRenderer rainSoundCounter M +FD net/minecraft/client/renderer/EntityRenderer rainXCoords N +FD net/minecraft/client/renderer/EntityRenderer rainYCoords O +FD net/minecraft/client/renderer/EntityRenderer fogColorBuffer P +FD net/minecraft/client/renderer/EntityRenderer fogColorRed Q +FD net/minecraft/client/renderer/EntityRenderer fogColorGreen R +FD net/minecraft/client/renderer/EntityRenderer fogColorBlue S +FD net/minecraft/client/renderer/EntityRenderer fogColor2 T +FD net/minecraft/client/renderer/EntityRenderer fogColor1 U +FD net/minecraft/client/renderer/EntityRenderer debugViewDirection V +FD net/minecraft/client/renderer/EntityRenderer debugView W +FD net/minecraft/client/renderer/EntityRenderer cameraZoom X +FD net/minecraft/client/renderer/EntityRenderer cameraYaw Y +FD net/minecraft/client/renderer/EntityRenderer cameraPitch Z +FD net/minecraft/client/renderer/EntityRenderer anaglyphEnable a +FD net/minecraft/client/renderer/EntityRenderer theShaderGroup aa +FD net/minecraft/client/renderer/EntityRenderer shaderResourceLocations ab +FD net/minecraft/client/renderer/EntityRenderer shaderIndex ac +FD net/minecraft/client/renderer/EntityRenderer useShader ad +FD net/minecraft/client/renderer/EntityRenderer frameCount ae +FD net/minecraft/client/renderer/EntityRenderer anaglyphField b +FD net/minecraft/client/renderer/EntityRenderer itemRenderer c +FD net/minecraft/client/renderer/EntityRenderer shaderCount d +FD net/minecraft/client/renderer/EntityRenderer logger e +FD net/minecraft/client/renderer/EntityRenderer locationRainPng f +FD net/minecraft/client/renderer/EntityRenderer locationSnowPng g +FD net/minecraft/client/renderer/EntityRenderer mc h +FD net/minecraft/client/renderer/EntityRenderer resourceManager i +FD net/minecraft/client/renderer/EntityRenderer random j +FD net/minecraft/client/renderer/EntityRenderer farPlaneDistance k +FD net/minecraft/client/renderer/EntityRenderer theMapItemRenderer l +FD net/minecraft/client/renderer/EntityRenderer rendererUpdateCount m +FD net/minecraft/client/renderer/EntityRenderer pointedEntity n +FD net/minecraft/client/renderer/EntityRenderer mouseFilterXAxis o +FD net/minecraft/client/renderer/EntityRenderer mouseFilterYAxis p +FD net/minecraft/client/renderer/EntityRenderer thirdPersonDistance q +FD net/minecraft/client/renderer/EntityRenderer thirdPersonDistanceTemp r +FD net/minecraft/client/renderer/EntityRenderer smoothCamYaw s +FD net/minecraft/client/renderer/EntityRenderer smoothCamPitch t +FD net/minecraft/client/renderer/EntityRenderer smoothCamFilterX u +FD net/minecraft/client/renderer/EntityRenderer smoothCamFilterY v +FD net/minecraft/client/renderer/EntityRenderer smoothCamPartialTicks w +FD net/minecraft/client/renderer/EntityRenderer fovModifierHand x +FD net/minecraft/client/renderer/EntityRenderer fovModifierHandPrev y +FD net/minecraft/client/renderer/EntityRenderer bossColorModifier z +FD net/minecraft/client/renderer/EntityRenderer$1 field_90032_a a +FD net/minecraft/client/renderer/EntityRenderer$2 field_90025_c a +FD net/minecraft/client/renderer/EntityRenderer$3 field_181048_a a +FD net/minecraft/client/renderer/EntityRenderer$3 field_181049_b b +FD net/minecraft/client/renderer/EntityRenderer$3 field_90028_b c +FD net/minecraft/client/renderer/EntityRenderer$4 field_181046_a a +FD net/minecraft/client/renderer/EntityRenderer$4 field_181047_b b +FD net/minecraft/client/renderer/GlStateManager alphaState a +FD net/minecraft/client/renderer/GlStateManager lightingState b +FD net/minecraft/client/renderer/GlStateManager lightState c +FD net/minecraft/client/renderer/GlStateManager colorMaterialState d +FD net/minecraft/client/renderer/GlStateManager blendState e +FD net/minecraft/client/renderer/GlStateManager depthState f +FD net/minecraft/client/renderer/GlStateManager fogState g +FD net/minecraft/client/renderer/GlStateManager cullState h +FD net/minecraft/client/renderer/GlStateManager polygonOffsetState i +FD net/minecraft/client/renderer/GlStateManager colorLogicState j +FD net/minecraft/client/renderer/GlStateManager texGenState k +FD net/minecraft/client/renderer/GlStateManager clearState l +FD net/minecraft/client/renderer/GlStateManager stencilState m +FD net/minecraft/client/renderer/GlStateManager normalizeState n +FD net/minecraft/client/renderer/GlStateManager activeTextureUnit o +FD net/minecraft/client/renderer/GlStateManager textureState p +FD net/minecraft/client/renderer/GlStateManager activeShadeModel q +FD net/minecraft/client/renderer/GlStateManager rescaleNormalState r +FD net/minecraft/client/renderer/GlStateManager colorMaskState s +FD net/minecraft/client/renderer/GlStateManager colorState t +FD net/minecraft/client/renderer/GlStateManager$1 field_179175_a a +FD net/minecraft/client/renderer/GlStateManager$AlphaState alphaTest a +FD net/minecraft/client/renderer/GlStateManager$AlphaState func b +FD net/minecraft/client/renderer/GlStateManager$AlphaState ref c +FD net/minecraft/client/renderer/GlStateManager$BlendState blend a +FD net/minecraft/client/renderer/GlStateManager$BlendState srcFactor b +FD net/minecraft/client/renderer/GlStateManager$BlendState dstFactor c +FD net/minecraft/client/renderer/GlStateManager$BlendState srcFactorAlpha d +FD net/minecraft/client/renderer/GlStateManager$BlendState dstFactorAlpha e +FD net/minecraft/client/renderer/GlStateManager$BooleanState capability a +FD net/minecraft/client/renderer/GlStateManager$BooleanState currentState b +FD net/minecraft/client/renderer/GlStateManager$ClearState depth a +FD net/minecraft/client/renderer/GlStateManager$ClearState color b +FD net/minecraft/client/renderer/GlStateManager$ClearState field_179204_c c +FD net/minecraft/client/renderer/GlStateManager$Color red a +FD net/minecraft/client/renderer/GlStateManager$Color green b +FD net/minecraft/client/renderer/GlStateManager$Color blue c +FD net/minecraft/client/renderer/GlStateManager$Color alpha d +FD net/minecraft/client/renderer/GlStateManager$ColorLogicState colorLogicOp a +FD net/minecraft/client/renderer/GlStateManager$ColorLogicState opcode b +FD net/minecraft/client/renderer/GlStateManager$ColorMask red a +FD net/minecraft/client/renderer/GlStateManager$ColorMask green b +FD net/minecraft/client/renderer/GlStateManager$ColorMask blue c +FD net/minecraft/client/renderer/GlStateManager$ColorMask alpha d +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState colorMaterial a +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState face b +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState mode c +FD net/minecraft/client/renderer/GlStateManager$CullState cullFace a +FD net/minecraft/client/renderer/GlStateManager$CullState mode b +FD net/minecraft/client/renderer/GlStateManager$DepthState depthTest a +FD net/minecraft/client/renderer/GlStateManager$DepthState maskEnabled b +FD net/minecraft/client/renderer/GlStateManager$DepthState depthFunc c +FD net/minecraft/client/renderer/GlStateManager$FogState fog a +FD net/minecraft/client/renderer/GlStateManager$FogState mode b +FD net/minecraft/client/renderer/GlStateManager$FogState density c +FD net/minecraft/client/renderer/GlStateManager$FogState start d +FD net/minecraft/client/renderer/GlStateManager$FogState end e +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState polygonOffsetFill a +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState polygonOffsetLine b +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState factor c +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState units d +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179081_a a +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179079_b b +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179080_c c +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179078_a a +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179076_b b +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179077_c c +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179074_d d +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179075_e e +FD net/minecraft/client/renderer/GlStateManager$TexGen S a +FD net/minecraft/client/renderer/GlStateManager$TexGen T b +FD net/minecraft/client/renderer/GlStateManager$TexGen R c +FD net/minecraft/client/renderer/GlStateManager$TexGen Q d +FD net/minecraft/client/renderer/GlStateManager$TexGen $VALUES e +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord textureGen a +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord coord b +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord param c +FD net/minecraft/client/renderer/GlStateManager$TexGenState s a +FD net/minecraft/client/renderer/GlStateManager$TexGenState t b +FD net/minecraft/client/renderer/GlStateManager$TexGenState r c +FD net/minecraft/client/renderer/GlStateManager$TexGenState q d +FD net/minecraft/client/renderer/GlStateManager$TextureState texture2DState a +FD net/minecraft/client/renderer/GlStateManager$TextureState textureName b +FD net/minecraft/client/renderer/ItemRenderer RES_MAP_BACKGROUND a +FD net/minecraft/client/renderer/ItemRenderer RES_UNDERWATER_OVERLAY b +FD net/minecraft/client/renderer/ItemRenderer mc c +FD net/minecraft/client/renderer/ItemRenderer itemToRender d +FD net/minecraft/client/renderer/ItemRenderer equippedProgress e +FD net/minecraft/client/renderer/ItemRenderer prevEquippedProgress f +FD net/minecraft/client/renderer/ItemRenderer renderManager g +FD net/minecraft/client/renderer/ItemRenderer itemRenderer h +FD net/minecraft/client/renderer/ItemRenderer equippedItemSlot i +FD net/minecraft/client/renderer/ItemRenderer$1 field_178094_a a +FD net/minecraft/client/renderer/ItemModelMesher simpleShapes a +FD net/minecraft/client/renderer/ItemModelMesher simpleShapesCache b +FD net/minecraft/client/renderer/ItemModelMesher shapers c +FD net/minecraft/client/renderer/ItemModelMesher modelManager d +FD net/minecraft/client/renderer/RenderGlobal entityOutlineFramebuffer A +FD net/minecraft/client/renderer/RenderGlobal entityOutlineShader B +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosX C +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosY D +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosZ E +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkX F +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkY G +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkZ H +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityX I +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityY J +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityZ K +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityPitch L +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityYaw M +FD net/minecraft/client/renderer/RenderGlobal renderDispatcher N +FD net/minecraft/client/renderer/RenderGlobal renderContainer O +FD net/minecraft/client/renderer/RenderGlobal renderDistanceChunks P +FD net/minecraft/client/renderer/RenderGlobal renderEntitiesStartupCounter Q +FD net/minecraft/client/renderer/RenderGlobal countEntitiesTotal R +FD net/minecraft/client/renderer/RenderGlobal countEntitiesRendered S +FD net/minecraft/client/renderer/RenderGlobal countEntitiesHidden T +FD net/minecraft/client/renderer/RenderGlobal debugFixTerrainFrustum U +FD net/minecraft/client/renderer/RenderGlobal debugFixedClippingHelper V +FD net/minecraft/client/renderer/RenderGlobal debugTerrainMatrix W +FD net/minecraft/client/renderer/RenderGlobal debugTerrainFrustumPosition X +FD net/minecraft/client/renderer/RenderGlobal vboEnabled Y +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortX Z +FD net/minecraft/client/renderer/RenderGlobal renderChunkFactory a +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortY aa +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortZ ab +FD net/minecraft/client/renderer/RenderGlobal displayListEntitiesDirty ac +FD net/minecraft/client/renderer/RenderGlobal logger b +FD net/minecraft/client/renderer/RenderGlobal locationMoonPhasesPng c +FD net/minecraft/client/renderer/RenderGlobal locationSunPng d +FD net/minecraft/client/renderer/RenderGlobal locationCloudsPng e +FD net/minecraft/client/renderer/RenderGlobal locationEndSkyPng f +FD net/minecraft/client/renderer/RenderGlobal locationForcefieldPng g +FD net/minecraft/client/renderer/RenderGlobal mc h +FD net/minecraft/client/renderer/RenderGlobal renderEngine i +FD net/minecraft/client/renderer/RenderGlobal renderManager j +FD net/minecraft/client/renderer/RenderGlobal theWorld k +FD net/minecraft/client/renderer/RenderGlobal chunksToUpdate l +FD net/minecraft/client/renderer/RenderGlobal renderInfos m +FD net/minecraft/client/renderer/RenderGlobal setTileEntities n +FD net/minecraft/client/renderer/RenderGlobal viewFrustum o +FD net/minecraft/client/renderer/RenderGlobal starGLCallList p +FD net/minecraft/client/renderer/RenderGlobal glSkyList q +FD net/minecraft/client/renderer/RenderGlobal glSkyList2 r +FD net/minecraft/client/renderer/RenderGlobal vertexBufferFormat s +FD net/minecraft/client/renderer/RenderGlobal starVBO t +FD net/minecraft/client/renderer/RenderGlobal skyVBO u +FD net/minecraft/client/renderer/RenderGlobal sky2VBO v +FD net/minecraft/client/renderer/RenderGlobal cloudTickCounter w +FD net/minecraft/client/renderer/RenderGlobal damagedBlocks x +FD net/minecraft/client/renderer/RenderGlobal mapSoundPositions y +FD net/minecraft/client/renderer/RenderGlobal destroyBlockIcons z +FD net/minecraft/client/renderer/RenderGlobal$1 field_85101_a a +FD net/minecraft/client/renderer/RenderGlobal$1 field_85099_b b +FD net/minecraft/client/renderer/RenderGlobal$1 field_85100_c c +FD net/minecraft/client/renderer/RenderGlobal$1 field_85098_d d +FD net/minecraft/client/renderer/RenderGlobal$2 field_178037_a a +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation renderChunk a +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation facing b +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation setFacing c +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation counter d +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation field_178033_e e +FD net/minecraft/client/renderer/ImageBufferDownload imageData a +FD net/minecraft/client/renderer/ImageBufferDownload imageWidth b +FD net/minecraft/client/renderer/ImageBufferDownload imageHeight c +FD net/minecraft/client/shader/Framebuffer framebufferTextureWidth a +FD net/minecraft/client/shader/Framebuffer framebufferTextureHeight b +FD net/minecraft/client/shader/Framebuffer framebufferWidth c +FD net/minecraft/client/shader/Framebuffer framebufferHeight d +FD net/minecraft/client/shader/Framebuffer useDepth e +FD net/minecraft/client/shader/Framebuffer framebufferObject f +FD net/minecraft/client/shader/Framebuffer framebufferTexture g +FD net/minecraft/client/shader/Framebuffer depthBuffer h +FD net/minecraft/client/shader/Framebuffer framebufferColor i +FD net/minecraft/client/shader/Framebuffer framebufferFilter j +FD net/minecraft/client/renderer/Tessellator worldRenderer a +FD net/minecraft/client/renderer/Tessellator vboUploader b +FD net/minecraft/client/renderer/Tessellator instance c +FD net/minecraft/client/renderer/VertexBufferUploader vertexBuffer a +FD net/minecraft/client/renderer/ViewFrustum renderGlobal a +FD net/minecraft/client/renderer/ViewFrustum world b +FD net/minecraft/client/renderer/ViewFrustum countChunksY c +FD net/minecraft/client/renderer/ViewFrustum countChunksX d +FD net/minecraft/client/renderer/ViewFrustum countChunksZ e +FD net/minecraft/client/renderer/ViewFrustum renderChunks f +FD net/minecraft/client/renderer/BlockModelShapes bakedModelStore a +FD net/minecraft/client/renderer/BlockModelShapes blockStateMapper b +FD net/minecraft/client/renderer/BlockModelShapes modelManager c +FD net/minecraft/client/renderer/BlockModelShapes$1 field_178143_a a +FD net/minecraft/client/renderer/BlockModelShapes$2 field_178136_a a +FD net/minecraft/client/renderer/BlockModelShapes$3 field_178137_a a +FD net/minecraft/client/renderer/BlockModelShapes$4 field_178134_a a +FD net/minecraft/client/renderer/BlockModelShapes$5 field_178135_a a +FD net/minecraft/client/renderer/BlockModelShapes$6 field_178139_a a +FD net/minecraft/client/renderer/BlockModelShapes$7 field_178138_a a +FD net/minecraft/client/renderer/BlockModelShapes$8 field_178257_a a +FD net/minecraft/client/renderer/BlockRendererDispatcher blockModelShapes a +FD net/minecraft/client/renderer/BlockRendererDispatcher gameSettings b +FD net/minecraft/client/renderer/BlockRendererDispatcher blockModelRenderer c +FD net/minecraft/client/renderer/BlockRendererDispatcher chestRenderer d +FD net/minecraft/client/renderer/BlockRendererDispatcher fluidRenderer e +FD net/minecraft/client/renderer/BlockFluidRenderer atlasSpritesLava a +FD net/minecraft/client/renderer/BlockFluidRenderer atlasSpritesWater b +FD net/minecraft/client/renderer/BlockModelRenderer$1 field_178290_a a +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo DOWN a +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo UP b +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo NORTH c +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo SOUTH d +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo WEST e +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo EAST f +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178276_g g +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178288_h h +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178289_i i +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178286_j j +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178287_k k +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178284_l l +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178285_m m +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo VALUES n +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo $VALUES o +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace field_178208_a a +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace vertexColorMultiplier b +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace vertexBrightness c +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations DOWN a +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations UP b +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations NORTH c +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations SOUTH d +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations WEST e +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations EAST f +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178191_g g +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178200_h h +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178201_i i +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178198_j j +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations VALUES k +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations $VALUES l +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation DOWN a +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation UP b +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation NORTH c +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation SOUTH d +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation WEST e +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation EAST f +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_DOWN g +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_UP h +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_NORTH i +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_SOUTH j +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_WEST k +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_EAST l +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation field_178229_m m +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation $VALUES n +FD net/minecraft/client/renderer/block/model/BakedQuad vertexData a +FD net/minecraft/client/renderer/block/model/BakedQuad tintIndex b +FD net/minecraft/client/renderer/block/model/BakedQuad face c +FD net/minecraft/client/renderer/block/model/BlockPart positionFrom a +FD net/minecraft/client/renderer/block/model/BlockPart positionTo b +FD net/minecraft/client/renderer/block/model/BlockPart mapFaces c +FD net/minecraft/client/renderer/block/model/BlockPart partRotation d +FD net/minecraft/client/renderer/block/model/BlockPart shade e +FD net/minecraft/client/renderer/block/model/BlockPart$1 field_178234_a a +FD net/minecraft/client/renderer/block/model/BlockPartFace FACING_DEFAULT a +FD net/minecraft/client/renderer/block/model/BlockPartFace cullFace b +FD net/minecraft/client/renderer/block/model/BlockPartFace tintIndex c +FD net/minecraft/client/renderer/block/model/BlockPartFace texture d +FD net/minecraft/client/renderer/block/model/BlockPartFace blockFaceUV e +FD net/minecraft/client/renderer/block/model/BlockPartRotation origin a +FD net/minecraft/client/renderer/block/model/BlockPartRotation axis b +FD net/minecraft/client/renderer/block/model/BlockPartRotation angle c +FD net/minecraft/client/renderer/block/model/BlockPartRotation rescale d +FD net/minecraft/client/renderer/block/model/BlockFaceUV uvs a +FD net/minecraft/client/renderer/block/model/BlockFaceUV rotation b +FD net/minecraft/client/renderer/block/model/ModelBlock SERIALIZER a +FD net/minecraft/client/renderer/block/model/ModelBlock name b +FD net/minecraft/client/renderer/block/model/ModelBlock textures c +FD net/minecraft/client/renderer/block/model/ModelBlock parent d +FD net/minecraft/client/renderer/block/model/ModelBlock parentLocation e +FD net/minecraft/client/renderer/block/model/ModelBlock LOGGER f +FD net/minecraft/client/renderer/block/model/ModelBlock elements g +FD net/minecraft/client/renderer/block/model/ModelBlock gui3d h +FD net/minecraft/client/renderer/block/model/ModelBlock ambientOcclusion i +FD net/minecraft/client/renderer/block/model/ModelBlock cameraTransforms j +FD net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep model a +FD net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep modelExt b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition GSON a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition mapVariants b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$MissingVariantException field_178438_a a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant modelLocation a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant modelRotation b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant uvLock c +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant weight d +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants name a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants listVariants b +FD net/minecraft/client/renderer/block/model/BreakingFour texture d +FD net/minecraft/client/renderer/block/model/BreakingFour$1 field_178419_a a +FD net/minecraft/client/renderer/block/model/FaceBakery SCALE_ROTATION_22_5 a +FD net/minecraft/client/renderer/block/model/FaceBakery SCALE_ROTATION_GENERAL b +FD net/minecraft/client/renderer/block/model/FaceBakery$1 field_178400_a a +FD net/minecraft/client/renderer/block/model/FaceBakery$1 field_178399_b b +FD net/minecraft/client/renderer/block/model/ItemModelGenerator LAYERS a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$1 field_178390_a a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span spanFacing a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178387_b b +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178388_c c +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178386_d d +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing UP a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing DOWN b +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing LEFT c +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing RIGHT d +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing facing e +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing field_178373_f f +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing field_178374_g g +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing $VALUES h +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f DEFAULT a +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f rotation b +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f translation c +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f scale d +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer ROTATION_DEFAULT a +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer TRANSLATION_DEFAULT b +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer SCALE_DEFAULT c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms DEFAULT a +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181690_b b +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181691_c c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181692_d d +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181693_e e +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181694_f f +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181695_g g +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181696_h h +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181697_i i +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181698_j j +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms thirdPerson k +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms firstPerson l +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms head m +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms gui n +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms ground o +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms fixed p +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$1 field_181684_a a +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType NONE a +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType THIRD_PERSON b +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType FIRST_PERSON c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType HEAD d +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType GUI e +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType GROUND f +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType FIXED g +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType $VALUES h +FD net/minecraft/client/renderer/block/statemap/StateMapperBase mapStateModelLocations b +FD net/minecraft/client/renderer/block/statemap/BlockStateMapper blockStateMap a +FD net/minecraft/client/renderer/block/statemap/BlockStateMapper setBuiltInBlocks b +FD net/minecraft/client/renderer/block/statemap/StateMap name a +FD net/minecraft/client/renderer/block/statemap/StateMap suffix c +FD net/minecraft/client/renderer/block/statemap/StateMap ignored d +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder name a +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder suffix b +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder ignored c +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer DESIGNS c +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer BANNERTEXTURES d +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer bannerModel e +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture systemTime a +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture bannerTexture b +FD net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer beaconBeam c +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher instance a +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerX b +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerY c +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerZ d +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderEngine e +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher worldObj f +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entity g +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityYaw h +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityPitch i +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityX j +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityY k +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityZ l +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher mapSpecialRenderers m +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher fontRenderer n +FD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer DESTROY_STAGES a +FD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer rendererDispatcher b +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureTrappedDouble c +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureChristmasDouble d +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureNormalDouble e +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureTrapped f +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureChristmas g +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureNormal h +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer simpleChest i +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer largeChest j +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer isChristmas k +FD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer TEXTURE_BOOK c +FD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer field_147541_c d +FD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer ENDER_CHEST_TEXTURE c +FD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer field_147521_c d +FD net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer blockRenderer c +FD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer SIGN_TEXTURE c +FD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer model d +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer instance c +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer SKELETON_TEXTURES d +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer WITHER_SKELETON_TEXTURES e +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer ZOMBIE_TEXTURES f +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer CREEPER_TEXTURES g +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer skeletonHead h +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer humanoidHead i +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer$1 field_178458_a a +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer field_147528_b c +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer END_SKY_TEXTURE d +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer END_PORTAL_TEXTURE e +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer field_147527_e f +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator renderChunk a +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator lock b +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator listFinishRunnables c +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator type d +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator regionRenderCacheBuilder e +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator compiledChunk f +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator status g +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator finished h +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status PENDING a +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status COMPILING b +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status UPLOADING c +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status DONE d +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status $VALUES e +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type REBUILD_CHUNK a +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type RESORT_TRANSPARENCY b +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type $VALUES c +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher logger a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher threadFactory b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher listThreadedWorkers c +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueChunkUpdates d +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueFreeRenderBuilders e +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher worldVertexUploader f +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher vertexUploader g +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueChunkUploads h +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher renderWorker i +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 field_178527_a a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 field_178526_b b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 field_178529_a a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 field_178528_b b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178534_a a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178532_b b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178533_c c +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178530_d d +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178531_e e +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker LOGGER a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker chunkRenderDispatcher b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker regionRenderCacheBuilder c +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 field_178480_a a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 field_178479_b b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178484_a a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178482_b b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178483_c c +FD net/minecraft/client/renderer/chunk/CompiledChunk DUMMY a +FD net/minecraft/client/renderer/chunk/CompiledChunk layersUsed b +FD net/minecraft/client/renderer/chunk/CompiledChunk layersStarted c +FD net/minecraft/client/renderer/chunk/CompiledChunk empty d +FD net/minecraft/client/renderer/chunk/CompiledChunk tileEntities e +FD net/minecraft/client/renderer/chunk/CompiledChunk setVisibility f +FD net/minecraft/client/renderer/chunk/CompiledChunk state g +FD net/minecraft/client/renderer/chunk/ListedRenderChunk baseDisplayList d +FD net/minecraft/client/renderer/chunk/RenderChunk renderChunksUpdated a +FD net/minecraft/client/renderer/chunk/RenderChunk compiledChunk b +FD net/minecraft/client/renderer/chunk/RenderChunk boundingBox c +FD net/minecraft/client/renderer/chunk/RenderChunk world d +FD net/minecraft/client/renderer/chunk/RenderChunk renderGlobal e +FD net/minecraft/client/renderer/chunk/RenderChunk position f +FD net/minecraft/client/renderer/chunk/RenderChunk lockCompileTask g +FD net/minecraft/client/renderer/chunk/RenderChunk lockCompiledChunk h +FD net/minecraft/client/renderer/chunk/RenderChunk compileTask i +FD net/minecraft/client/renderer/chunk/RenderChunk setTileEntities j +FD net/minecraft/client/renderer/chunk/RenderChunk index k +FD net/minecraft/client/renderer/chunk/RenderChunk modelviewMatrix l +FD net/minecraft/client/renderer/chunk/RenderChunk vertexBuffers m +FD net/minecraft/client/renderer/chunk/RenderChunk frameIndex n +FD net/minecraft/client/renderer/chunk/RenderChunk needsUpdate o +FD net/minecraft/client/renderer/chunk/RenderChunk mapEnumFacing p +FD net/minecraft/client/renderer/chunk/VisGraph field_178616_a a +FD net/minecraft/client/renderer/chunk/VisGraph field_178614_b b +FD net/minecraft/client/renderer/chunk/VisGraph field_178615_c c +FD net/minecraft/client/renderer/chunk/VisGraph field_178612_d d +FD net/minecraft/client/renderer/chunk/VisGraph field_178613_e e +FD net/minecraft/client/renderer/chunk/VisGraph field_178611_f f +FD net/minecraft/client/renderer/chunk/VisGraph$1 field_178617_a a +FD net/minecraft/client/renderer/chunk/SetVisibility COUNT_FACES a +FD net/minecraft/client/renderer/chunk/SetVisibility bitSet b +FD net/minecraft/client/renderer/culling/ClippingHelperImpl instance e +FD net/minecraft/client/renderer/culling/ClippingHelperImpl projectionMatrixBuffer f +FD net/minecraft/client/renderer/culling/ClippingHelperImpl modelviewMatrixBuffer g +FD net/minecraft/client/renderer/culling/ClippingHelperImpl field_78564_h h +FD net/minecraft/client/renderer/culling/Frustum clippingHelper a +FD net/minecraft/client/renderer/culling/Frustum xPosition b +FD net/minecraft/client/renderer/culling/Frustum yPosition c +FD net/minecraft/client/renderer/culling/Frustum zPosition d +FD net/minecraft/client/renderer/culling/ClippingHelper frustum a +FD net/minecraft/client/renderer/culling/ClippingHelper projectionMatrix b +FD net/minecraft/client/renderer/culling/ClippingHelper modelviewMatrix c +FD net/minecraft/client/renderer/culling/ClippingHelper clippingMatrix d +FD net/minecraft/client/renderer/entity/ArmorStandRenderer TEXTURE_ARMOR_STAND a +FD net/minecraft/client/renderer/entity/ArmorStandRenderer$1 field_177196_a a +FD net/minecraft/client/renderer/entity/RenderArrow arrowTextures a +FD net/minecraft/client/renderer/entity/RenderBat batTextures a +FD net/minecraft/client/renderer/entity/RenderBlaze blazeTextures a +FD net/minecraft/client/renderer/entity/RenderBoat modelBoat a +FD net/minecraft/client/renderer/entity/RenderBoat boatTextures e +FD net/minecraft/client/renderer/entity/RenderCaveSpider caveSpiderTextures a +FD net/minecraft/client/renderer/entity/RenderChicken chickenTextures a +FD net/minecraft/client/renderer/entity/RenderCow cowTextures a +FD net/minecraft/client/renderer/entity/RenderCreeper creeperTextures a +FD net/minecraft/client/renderer/tileentity/RenderEnderCrystal enderCrystalTextures a +FD net/minecraft/client/renderer/tileentity/RenderEnderCrystal modelEnderCrystal e +FD net/minecraft/client/renderer/entity/RenderDragon modelDragon a +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonCrystalBeamTextures e +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonExplodingTextures j +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonTextures k +FD net/minecraft/client/renderer/entity/RenderEnderman endermanTextures a +FD net/minecraft/client/renderer/entity/RenderEnderman endermanModel e +FD net/minecraft/client/renderer/entity/RenderEnderman rnd j +FD net/minecraft/client/renderer/entity/RenderEndermite ENDERMITE_TEXTURES a +FD net/minecraft/client/renderer/entity/RenderManager renderEngine a +FD net/minecraft/client/renderer/entity/RenderManager worldObj b +FD net/minecraft/client/renderer/entity/RenderManager livingPlayer c +FD net/minecraft/client/renderer/entity/RenderManager pointedEntity d +FD net/minecraft/client/renderer/entity/RenderManager playerViewY e +FD net/minecraft/client/renderer/entity/RenderManager playerViewX f +FD net/minecraft/client/renderer/entity/RenderManager options g +FD net/minecraft/client/renderer/entity/RenderManager viewerPosX h +FD net/minecraft/client/renderer/entity/RenderManager viewerPosY i +FD net/minecraft/client/renderer/entity/RenderManager viewerPosZ j +FD net/minecraft/client/renderer/entity/RenderManager entityRenderMap k +FD net/minecraft/client/renderer/entity/RenderManager skinMap l +FD net/minecraft/client/renderer/entity/RenderManager playerRenderer m +FD net/minecraft/client/renderer/entity/RenderManager textRenderer n +FD net/minecraft/client/renderer/entity/RenderManager renderPosX o +FD net/minecraft/client/renderer/entity/RenderManager renderPosY p +FD net/minecraft/client/renderer/entity/RenderManager renderPosZ q +FD net/minecraft/client/renderer/entity/RenderManager renderOutlines r +FD net/minecraft/client/renderer/entity/RenderManager renderShadow s +FD net/minecraft/client/renderer/entity/RenderManager debugBoundingBox t +FD net/minecraft/client/renderer/entity/Render shadowTextures a +FD net/minecraft/client/renderer/entity/Render renderManager b +FD net/minecraft/client/renderer/entity/Render shadowSize c +FD net/minecraft/client/renderer/entity/Render shadowOpaque d +FD net/minecraft/client/renderer/entity/RenderXPOrb experienceOrbTextures a +FD net/minecraft/client/renderer/entity/RenderFireball scale a +FD net/minecraft/client/renderer/entity/RenderFish FISH_PARTICLES a +FD net/minecraft/client/renderer/entity/RenderGhast ghastTextures a +FD net/minecraft/client/renderer/entity/RenderGhast ghastShootingTextures e +FD net/minecraft/client/renderer/entity/RenderGiantZombie zombieTextures a +FD net/minecraft/client/renderer/entity/RenderGiantZombie scale e +FD net/minecraft/client/renderer/entity/RenderGiantZombie$1 field_177197_a a +FD net/minecraft/client/renderer/entity/RenderGuardian field_177115_a a +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_TEXTURE e +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_ELDER_TEXTURE j +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_BEAM_TEXTURE k +FD net/minecraft/client/renderer/entity/RenderHorse field_110852_a a +FD net/minecraft/client/renderer/entity/RenderHorse whiteHorseTextures e +FD net/minecraft/client/renderer/entity/RenderHorse muleTextures j +FD net/minecraft/client/renderer/entity/RenderHorse donkeyTextures k +FD net/minecraft/client/renderer/entity/RenderHorse zombieHorseTextures l +FD net/minecraft/client/renderer/entity/RenderHorse skeletonHorseTextures m +FD net/minecraft/client/renderer/entity/RenderBiped modelBipedMain a +FD net/minecraft/client/renderer/entity/RenderBiped field_77070_b e +FD net/minecraft/client/renderer/entity/RenderBiped DEFAULT_RES_LOC j +FD net/minecraft/client/renderer/entity/RenderEntityItem itemRenderer a +FD net/minecraft/client/renderer/entity/RenderEntityItem field_177079_e e +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mapBackgroundTextures a +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mc e +FD net/minecraft/client/renderer/tileentity/RenderItemFrame itemFrameModel f +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mapModel g +FD net/minecraft/client/renderer/tileentity/RenderItemFrame itemRenderer h +FD net/minecraft/client/renderer/entity/RenderItem zLevel a +FD net/minecraft/client/renderer/entity/RenderItem RES_ITEM_GLINT b +FD net/minecraft/client/renderer/entity/RenderItem notRenderingEffectsInGUI c +FD net/minecraft/client/renderer/entity/RenderItem itemModelMesher d +FD net/minecraft/client/renderer/entity/RenderItem textureManager e +FD net/minecraft/client/renderer/entity/RenderItem$1 field_147929_a a +FD net/minecraft/client/renderer/entity/RenderItem$1 field_147928_b b +FD net/minecraft/client/renderer/entity/RenderItem$2 field_147926_a a +FD net/minecraft/client/renderer/entity/RenderItem$2 field_147925_b b +FD net/minecraft/client/renderer/entity/RenderItem$3 field_147935_a a +FD net/minecraft/client/renderer/entity/RenderItem$3 field_147934_b b +FD net/minecraft/client/renderer/entity/RenderItem$4 field_147932_a a +FD net/minecraft/client/renderer/entity/RenderItem$4 field_147931_b b +FD net/minecraft/client/renderer/entity/RenderItem$5 field_178117_a a +FD net/minecraft/client/renderer/entity/RenderItem$6 field_178118_a a +FD net/minecraft/client/renderer/entity/RenderItem$7 field_178115_a a +FD net/minecraft/client/renderer/entity/RenderItem$8 field_178116_a a +FD net/minecraft/client/renderer/entity/RenderItem$9 field_178114_a a +FD net/minecraft/client/renderer/entity/RenderMagmaCube magmaCubeTextures a +FD net/minecraft/client/renderer/entity/RenderLeashKnot leashKnotTextures a +FD net/minecraft/client/renderer/entity/RenderLeashKnot leashKnotModel e +FD net/minecraft/client/renderer/entity/RendererLivingEntity logger a +FD net/minecraft/client/renderer/entity/RendererLivingEntity textureBrightness e +FD net/minecraft/client/renderer/entity/RendererLivingEntity mainModel f +FD net/minecraft/client/renderer/entity/RendererLivingEntity brightnessBuffer g +FD net/minecraft/client/renderer/entity/RendererLivingEntity layerRenderers h +FD net/minecraft/client/renderer/entity/RendererLivingEntity renderOutlines i +FD net/minecraft/client/renderer/entity/RendererLivingEntity$1 field_178679_a a +FD net/minecraft/client/renderer/entity/RenderMinecart modelMinecart a +FD net/minecraft/client/renderer/entity/RenderMinecart minecartTextures e +FD net/minecraft/client/renderer/entity/RenderMooshroom mooshroomTextures a +FD net/minecraft/client/renderer/entity/RenderOcelot blackOcelotTextures a +FD net/minecraft/client/renderer/entity/RenderOcelot ocelotTextures e +FD net/minecraft/client/renderer/entity/RenderOcelot redOcelotTextures j +FD net/minecraft/client/renderer/entity/RenderOcelot siameseOcelotTextures k +FD net/minecraft/client/renderer/entity/RenderPainting KRISTOFFER_PAINTING_TEXTURE a +FD net/minecraft/client/renderer/entity/RenderPig pigTextures a +FD net/minecraft/client/renderer/entity/RenderPigZombie ZOMBIE_PIGMAN_TEXTURE j +FD net/minecraft/client/renderer/entity/RenderPigZombie$1 field_177198_a a +FD net/minecraft/client/renderer/entity/RenderRabbit BROWN a +FD net/minecraft/client/renderer/entity/RenderRabbit WHITE e +FD net/minecraft/client/renderer/entity/RenderRabbit BLACK j +FD net/minecraft/client/renderer/entity/RenderRabbit GOLD k +FD net/minecraft/client/renderer/entity/RenderRabbit SALT l +FD net/minecraft/client/renderer/entity/RenderRabbit WHITE_SPLOTCHED m +FD net/minecraft/client/renderer/entity/RenderRabbit TOAST n +FD net/minecraft/client/renderer/entity/RenderRabbit CAERBANNOG o +FD net/minecraft/client/renderer/entity/RenderSheep shearedSheepTextures a +FD net/minecraft/client/renderer/entity/RenderSilverfish silverfishTextures a +FD net/minecraft/client/renderer/entity/RenderSkeleton skeletonTextures j +FD net/minecraft/client/renderer/entity/RenderSkeleton witherSkeletonTextures k +FD net/minecraft/client/renderer/entity/RenderSkeleton$1 field_177199_a a +FD net/minecraft/client/renderer/entity/RenderSlime slimeTextures a +FD net/minecraft/client/renderer/entity/RenderSnowMan snowManTextures a +FD net/minecraft/client/renderer/entity/RenderSpider spiderTextures a +FD net/minecraft/client/renderer/entity/RenderSquid squidTextures a +FD net/minecraft/client/renderer/entity/RenderSnowball field_177084_a a +FD net/minecraft/client/renderer/entity/RenderSnowball field_177083_e e +FD net/minecraft/client/renderer/entity/RenderIronGolem ironGolemTextures a +FD net/minecraft/client/renderer/entity/RenderVillager villagerTextures a +FD net/minecraft/client/renderer/entity/RenderVillager farmerVillagerTextures e +FD net/minecraft/client/renderer/entity/RenderVillager librarianVillagerTextures j +FD net/minecraft/client/renderer/entity/RenderVillager priestVillagerTextures k +FD net/minecraft/client/renderer/entity/RenderVillager smithVillagerTextures l +FD net/minecraft/client/renderer/entity/RenderVillager butcherVillagerTextures m +FD net/minecraft/client/renderer/entity/RenderWitch witchTextures a +FD net/minecraft/client/renderer/entity/RenderWither invulnerableWitherTextures a +FD net/minecraft/client/renderer/entity/RenderWither witherTextures e +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull invulnerableWitherTextures a +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull witherTextures e +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull skeletonHeadModel f +FD net/minecraft/client/renderer/entity/RenderWolf wolfTextures a +FD net/minecraft/client/renderer/entity/RenderWolf tamedWolfTextures e +FD net/minecraft/client/renderer/entity/RenderWolf anrgyWolfTextures j +FD net/minecraft/client/renderer/entity/RenderZombie zombieTextures j +FD net/minecraft/client/renderer/entity/RenderZombie zombieVillagerTextures k +FD net/minecraft/client/renderer/entity/RenderZombie field_82434_o l +FD net/minecraft/client/renderer/entity/RenderZombie zombieVillagerModel m +FD net/minecraft/client/renderer/entity/RenderZombie field_177121_n n +FD net/minecraft/client/renderer/entity/RenderZombie field_177122_o o +FD net/minecraft/client/renderer/entity/RenderZombie$1 field_177200_a a +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderer a +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase ENCHANTED_ITEM_GLINT_RES b +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase modelLeggings c +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase modelArmor d +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase alpha e +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorR f +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorG g +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorB h +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase skipRenderGlint i +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase ARMOR_TEXTURE_RES_MAP j +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase$1 field_178747_a a +FD net/minecraft/client/renderer/entity/layers/LayerArrow field_177168_a a +FD net/minecraft/client/renderer/entity/layers/LayerCape playerRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerHeldBlock endermanRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge LIGHTNING_TEXTURE a +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge creeperRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge creeperModel c +FD net/minecraft/client/renderer/entity/layers/LayerCustomHead field_177209_a a +FD net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head playerRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes TEXTURE a +FD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes dragonRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes RES_ENDERMAN_EYES a +FD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes endermanRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerHeldItem livingEntityRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom mooshroomRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerSaddle TEXTURE a +FD net/minecraft/client/renderer/entity/layers/LayerSaddle pigRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerSaddle pigModel c +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool TEXTURE a +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool sheepRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool sheepModel c +FD net/minecraft/client/renderer/entity/layers/LayerSlimeGel slimeRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerSlimeGel slimeModel b +FD net/minecraft/client/renderer/entity/layers/LayerSnowmanHead snowManRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes SPIDER_EYES a +FD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes spiderRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower ironGolemRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch witchRenderer a +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura WITHER_ARMOR a +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura witherRenderer b +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura witherModel c +FD net/minecraft/client/renderer/entity/layers/LayerWolfCollar WOLF_COLLAR a +FD net/minecraft/client/renderer/entity/layers/LayerWolfCollar wolfRenderer b +FD net/minecraft/client/renderer/entity/RenderPlayer smallArms a +FD net/minecraft/client/util/JsonBlendingMode field_148118_a a +FD net/minecraft/client/util/JsonBlendingMode field_148116_b b +FD net/minecraft/client/util/JsonBlendingMode field_148117_c c +FD net/minecraft/client/util/JsonBlendingMode field_148114_d d +FD net/minecraft/client/util/JsonBlendingMode field_148115_e e +FD net/minecraft/client/util/JsonBlendingMode field_148112_f f +FD net/minecraft/client/util/JsonBlendingMode field_148113_g g +FD net/minecraft/client/util/JsonBlendingMode field_148119_h h +FD net/minecraft/client/shader/ShaderManager logger a +FD net/minecraft/client/shader/ShaderManager defaultShaderUniform b +FD net/minecraft/client/shader/ShaderManager staticShaderManager c +FD net/minecraft/client/shader/ShaderManager currentProgram d +FD net/minecraft/client/shader/ShaderManager field_148000_e e +FD net/minecraft/client/shader/ShaderManager shaderSamplers f +FD net/minecraft/client/shader/ShaderManager samplerNames g +FD net/minecraft/client/shader/ShaderManager shaderSamplerLocations h +FD net/minecraft/client/shader/ShaderManager shaderUniforms i +FD net/minecraft/client/shader/ShaderManager shaderUniformLocations j +FD net/minecraft/client/shader/ShaderManager mappedShaderUniforms k +FD net/minecraft/client/shader/ShaderManager program l +FD net/minecraft/client/shader/ShaderManager programFilename m +FD net/minecraft/client/shader/ShaderManager useFaceCulling n +FD net/minecraft/client/shader/ShaderManager isDirty o +FD net/minecraft/client/shader/ShaderManager field_148016_p p +FD net/minecraft/client/shader/ShaderManager attribLocations q +FD net/minecraft/client/shader/ShaderManager attributes r +FD net/minecraft/client/shader/ShaderManager vertexShaderLoader s +FD net/minecraft/client/shader/ShaderManager fragmentShaderLoader t +FD net/minecraft/client/shader/ShaderGroup mainFramebuffer a +FD net/minecraft/client/shader/ShaderGroup resourceManager b +FD net/minecraft/client/shader/ShaderGroup shaderGroupName c +FD net/minecraft/client/shader/ShaderGroup listShaders d +FD net/minecraft/client/shader/ShaderGroup mapFramebuffers e +FD net/minecraft/client/shader/ShaderGroup listFramebuffers f +FD net/minecraft/client/shader/ShaderGroup projectionMatrix g +FD net/minecraft/client/shader/ShaderGroup mainFramebufferWidth h +FD net/minecraft/client/shader/ShaderGroup mainFramebufferHeight i +FD net/minecraft/client/shader/ShaderGroup field_148036_j j +FD net/minecraft/client/shader/ShaderGroup field_148037_k k +FD net/minecraft/client/shader/Shader framebufferIn a +FD net/minecraft/client/shader/Shader framebufferOut b +FD net/minecraft/client/shader/Shader manager c +FD net/minecraft/client/shader/Shader listAuxFramebuffers d +FD net/minecraft/client/shader/Shader listAuxNames e +FD net/minecraft/client/shader/Shader listAuxWidths f +FD net/minecraft/client/shader/Shader listAuxHeights g +FD net/minecraft/client/shader/Shader projectionMatrix h +FD net/minecraft/client/shader/ShaderLoader shaderType a +FD net/minecraft/client/shader/ShaderLoader shaderFilename b +FD net/minecraft/client/shader/ShaderLoader shader c +FD net/minecraft/client/shader/ShaderLoader shaderAttachCount d +FD net/minecraft/client/shader/ShaderLoader$ShaderType VERTEX a +FD net/minecraft/client/shader/ShaderLoader$ShaderType FRAGMENT b +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderName c +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderExtension d +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderMode e +FD net/minecraft/client/shader/ShaderLoader$ShaderType loadedShaders f +FD net/minecraft/client/shader/ShaderLoader$ShaderType $VALUES g +FD net/minecraft/client/shader/ShaderLinkHelper logger a +FD net/minecraft/client/shader/ShaderLinkHelper staticShaderLinkHelper b +FD net/minecraft/client/shader/ShaderUniform logger a +FD net/minecraft/client/shader/ShaderUniform uniformLocation b +FD net/minecraft/client/shader/ShaderUniform uniformCount c +FD net/minecraft/client/shader/ShaderUniform uniformType d +FD net/minecraft/client/shader/ShaderUniform uniformIntBuffer e +FD net/minecraft/client/shader/ShaderUniform uniformFloatBuffer f +FD net/minecraft/client/shader/ShaderUniform shaderName g +FD net/minecraft/client/shader/ShaderUniform dirty h +FD net/minecraft/client/shader/ShaderUniform shaderManager i +FD net/minecraft/client/renderer/texture/AbstractTexture glTextureId a +FD net/minecraft/client/renderer/texture/AbstractTexture blur b +FD net/minecraft/client/renderer/texture/AbstractTexture mipmap c +FD net/minecraft/client/renderer/texture/AbstractTexture blurLast d +FD net/minecraft/client/renderer/texture/AbstractTexture mipmapLast e +FD net/minecraft/client/renderer/texture/DynamicTexture dynamicTextureData f +FD net/minecraft/client/renderer/texture/DynamicTexture width g +FD net/minecraft/client/renderer/texture/DynamicTexture height h +FD net/minecraft/client/renderer/ThreadDownloadImageData logger g +FD net/minecraft/client/renderer/ThreadDownloadImageData threadDownloadCounter h +FD net/minecraft/client/renderer/ThreadDownloadImageData cacheFile i +FD net/minecraft/client/renderer/ThreadDownloadImageData imageUrl j +FD net/minecraft/client/renderer/ThreadDownloadImageData imageBuffer k +FD net/minecraft/client/renderer/ThreadDownloadImageData bufferedImage l +FD net/minecraft/client/renderer/ThreadDownloadImageData imageThread m +FD net/minecraft/client/renderer/ThreadDownloadImageData textureUploaded n +FD net/minecraft/client/renderer/ThreadDownloadImageData$1 field_110932_a a +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture LOG f +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture textureLocation g +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture field_174949_h h +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture field_174950_i i +FD net/minecraft/client/renderer/texture/LayeredTexture layeredTextureNames f +FD net/minecraft/client/renderer/texture/LayeredTexture logger g +FD net/minecraft/client/renderer/texture/SimpleTexture textureLocation f +FD net/minecraft/client/renderer/texture/SimpleTexture logger g +FD net/minecraft/client/renderer/texture/Stitcher mipmapLevelStitcher a +FD net/minecraft/client/renderer/texture/Stitcher setStitchHolders b +FD net/minecraft/client/renderer/texture/Stitcher stitchSlots c +FD net/minecraft/client/renderer/texture/Stitcher currentWidth d +FD net/minecraft/client/renderer/texture/Stitcher currentHeight e +FD net/minecraft/client/renderer/texture/Stitcher maxWidth f +FD net/minecraft/client/renderer/texture/Stitcher maxHeight g +FD net/minecraft/client/renderer/texture/Stitcher forcePowerOf2 h +FD net/minecraft/client/renderer/texture/Stitcher maxTileDimension i +FD net/minecraft/client/renderer/texture/Stitcher$Holder theTexture a +FD net/minecraft/client/renderer/texture/Stitcher$Holder width b +FD net/minecraft/client/renderer/texture/Stitcher$Holder height c +FD net/minecraft/client/renderer/texture/Stitcher$Holder mipmapLevelHolder d +FD net/minecraft/client/renderer/texture/Stitcher$Holder rotated e +FD net/minecraft/client/renderer/texture/Stitcher$Holder scaleFactor f +FD net/minecraft/client/renderer/texture/Stitcher$Slot originX a +FD net/minecraft/client/renderer/texture/Stitcher$Slot originY b +FD net/minecraft/client/renderer/texture/Stitcher$Slot width c +FD net/minecraft/client/renderer/texture/Stitcher$Slot height d +FD net/minecraft/client/renderer/texture/Stitcher$Slot subSlots e +FD net/minecraft/client/renderer/texture/Stitcher$Slot holder f +FD net/minecraft/client/renderer/StitcherException holder a +FD net/minecraft/client/renderer/texture/TextureMap LOCATION_MISSING_TEXTURE f +FD net/minecraft/client/renderer/texture/TextureMap locationBlocksTexture g +FD net/minecraft/client/renderer/texture/TextureMap logger h +FD net/minecraft/client/renderer/texture/TextureMap listAnimatedSprites i +FD net/minecraft/client/renderer/texture/TextureMap mapRegisteredSprites j +FD net/minecraft/client/renderer/texture/TextureMap mapUploadedSprites k +FD net/minecraft/client/renderer/texture/TextureMap basePath l +FD net/minecraft/client/renderer/texture/TextureMap iconCreator m +FD net/minecraft/client/renderer/texture/TextureMap mipmapLevels n +FD net/minecraft/client/renderer/texture/TextureMap missingImage o +FD net/minecraft/client/renderer/texture/TextureMap$1 field_147980_a a +FD net/minecraft/client/renderer/texture/TextureMap$1 field_147979_b b +FD net/minecraft/client/renderer/texture/TextureMap$2 field_147977_a a +FD net/minecraft/client/renderer/texture/TextureMap$2 field_147976_b b +FD net/minecraft/client/renderer/texture/TextureMap$3 field_147974_a a +FD net/minecraft/client/renderer/texture/TextureMap$3 field_147973_b b +FD net/minecraft/client/renderer/texture/TextureAtlasSprite framesTextureData a +FD net/minecraft/client/renderer/texture/TextureAtlasSprite interpolatedFrameData b +FD net/minecraft/client/renderer/texture/TextureAtlasSprite rotated c +FD net/minecraft/client/renderer/texture/TextureAtlasSprite originX d +FD net/minecraft/client/renderer/texture/TextureAtlasSprite originY e +FD net/minecraft/client/renderer/texture/TextureAtlasSprite width f +FD net/minecraft/client/renderer/texture/TextureAtlasSprite height g +FD net/minecraft/client/renderer/texture/TextureAtlasSprite frameCounter h +FD net/minecraft/client/renderer/texture/TextureAtlasSprite tickCounter i +FD net/minecraft/client/renderer/texture/TextureAtlasSprite iconName j +FD net/minecraft/client/renderer/texture/TextureAtlasSprite animationMetadata k +FD net/minecraft/client/renderer/texture/TextureAtlasSprite minU l +FD net/minecraft/client/renderer/texture/TextureAtlasSprite maxU m +FD net/minecraft/client/renderer/texture/TextureAtlasSprite minV n +FD net/minecraft/client/renderer/texture/TextureAtlasSprite maxV o +FD net/minecraft/client/renderer/texture/TextureAtlasSprite locationNameClock p +FD net/minecraft/client/renderer/texture/TextureAtlasSprite locationNameCompass q +FD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 field_147983_a a +FD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 field_147982_b b +FD net/minecraft/client/renderer/texture/TextureManager logger a +FD net/minecraft/client/renderer/texture/TextureManager mapTextureObjects b +FD net/minecraft/client/renderer/texture/TextureManager listTickables c +FD net/minecraft/client/renderer/texture/TextureManager mapTextureCounters d +FD net/minecraft/client/renderer/texture/TextureManager theResourceManager e +FD net/minecraft/client/renderer/texture/TextureManager$1 field_135062_a a +FD net/minecraft/client/renderer/texture/TextureManager$1 field_135061_b b +FD net/minecraft/client/renderer/texture/TextureUtil missingTexture a +FD net/minecraft/client/renderer/texture/TextureUtil missingTextureData b +FD net/minecraft/client/renderer/texture/TextureUtil logger c +FD net/minecraft/client/renderer/texture/TextureUtil dataBuffer d +FD net/minecraft/client/renderer/texture/TextureUtil mipmapBuffer e +FD net/minecraft/client/renderer/texture/TextureClock currentAngle j +FD net/minecraft/client/renderer/texture/TextureClock angleDelta k +FD net/minecraft/client/renderer/texture/TextureCompass currentAngle j +FD net/minecraft/client/renderer/texture/TextureCompass angleDelta k +FD net/minecraft/client/renderer/texture/TextureCompass locationSprite l +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats BLOCK a +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats ITEM b +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats OLDMODEL_POSITION_TEX_NORMAL c +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats PARTICLE_POSITION_TEX_COLOR_LMAP d +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION e +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_COLOR f +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX g +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_NORMAL h +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_COLOR i +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_NORMAL j +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_LMAP_COLOR k +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_COLOR_NORMAL l +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_3F m +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats COLOR_4UB n +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats TEX_2F o +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats TEX_2S p +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats NORMAL_3B q +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats PADDING_1B r +FD net/minecraft/client/renderer/vertex/VertexBuffer glBufferId a +FD net/minecraft/client/renderer/vertex/VertexBuffer vertexFormat b +FD net/minecraft/client/renderer/vertex/VertexBuffer count c +FD net/minecraft/client/renderer/vertex/VertexFormat LOGGER a +FD net/minecraft/client/renderer/vertex/VertexFormat elements b +FD net/minecraft/client/renderer/vertex/VertexFormat offsets c +FD net/minecraft/client/renderer/vertex/VertexFormat nextOffset d +FD net/minecraft/client/renderer/vertex/VertexFormat colorElementOffset e +FD net/minecraft/client/renderer/vertex/VertexFormat uvOffsetsById f +FD net/minecraft/client/renderer/vertex/VertexFormat normalElementOffset g +FD net/minecraft/client/renderer/vertex/VertexFormat$1 field_177382_a a +FD net/minecraft/client/renderer/vertex/VertexFormatElement LOGGER a +FD net/minecraft/client/renderer/vertex/VertexFormatElement type b +FD net/minecraft/client/renderer/vertex/VertexFormatElement usage c +FD net/minecraft/client/renderer/vertex/VertexFormatElement index d +FD net/minecraft/client/renderer/vertex/VertexFormatElement elementCount e +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType FLOAT a +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType UBYTE b +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType BYTE c +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType USHORT d +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType SHORT e +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType UINT f +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType INT g +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType size h +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType displayName i +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType glConstant j +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType $VALUES k +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage POSITION a +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage NORMAL b +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage COLOR c +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage UV d +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage MATRIX e +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage BLEND_WEIGHT f +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage PADDING g +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage displayName h +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage $VALUES i +FD net/minecraft/client/resources/AbstractResourcePack resourcePackFile a +FD net/minecraft/client/resources/AbstractResourcePack resourceLog b +FD net/minecraft/client/resources/ResourceIndex logger a +FD net/minecraft/client/resources/ResourceIndex resourceMap b +FD net/minecraft/client/resources/DefaultPlayerSkin TEXTURE_STEVE a +FD net/minecraft/client/resources/DefaultPlayerSkin TEXTURE_ALEX b +FD net/minecraft/client/resources/DefaultResourcePack defaultResourceDomains a +FD net/minecraft/client/resources/DefaultResourcePack mapAssets b +FD net/minecraft/client/resources/FallbackResourceManager resourcePacks a +FD net/minecraft/client/resources/FallbackResourceManager logger b +FD net/minecraft/client/resources/FallbackResourceManager frmMetadataSerializer c +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger inputStream a +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger message b +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger isClosed c +FD net/minecraft/client/resources/FileResourcePack entryNameSplitter b +FD net/minecraft/client/resources/FileResourcePack resourcePackZipFile c +FD net/minecraft/client/resources/FoliageColorReloadListener LOC_FOLIAGE_PNG a +FD net/minecraft/client/resources/GrassColorReloadListener LOC_GRASS_PNG a +FD net/minecraft/client/resources/ResourcePackRepository rprDefaultResourcePack a +FD net/minecraft/client/resources/ResourcePackRepository rprMetadataSerializer b +FD net/minecraft/client/resources/ResourcePackRepository logger c +FD net/minecraft/client/resources/ResourcePackRepository resourcePackFilter d +FD net/minecraft/client/resources/ResourcePackRepository dirResourcepacks e +FD net/minecraft/client/resources/ResourcePackRepository dirServerResourcepacks f +FD net/minecraft/client/resources/ResourcePackRepository resourcePackInstance g +FD net/minecraft/client/resources/ResourcePackRepository lock h +FD net/minecraft/client/resources/ResourcePackRepository downloadingPacks i +FD net/minecraft/client/resources/ResourcePackRepository repositoryEntriesAll j +FD net/minecraft/client/resources/ResourcePackRepository repositoryEntries k +FD net/minecraft/client/resources/ResourcePackRepository$2 field_177324_a a +FD net/minecraft/client/resources/ResourcePackRepository$2 field_177323_b b +FD net/minecraft/client/resources/ResourcePackRepository$2 field_148523_a c +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177327_a a +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177325_b b +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177326_c c +FD net/minecraft/client/resources/ResourcePackRepository$Entry field_110525_a a +FD net/minecraft/client/resources/ResourcePackRepository$Entry resourcePackFile b +FD net/minecraft/client/resources/ResourcePackRepository$Entry reResourcePack c +FD net/minecraft/client/resources/ResourcePackRepository$Entry rePackMetadataSection d +FD net/minecraft/client/resources/ResourcePackRepository$Entry texturePackIcon e +FD net/minecraft/client/resources/ResourcePackRepository$Entry locationTexturePackIcon f +FD net/minecraft/client/resources/SimpleReloadableResourceManager logger a +FD net/minecraft/client/resources/SimpleReloadableResourceManager joinerResourcePacks b +FD net/minecraft/client/resources/SimpleReloadableResourceManager domainResourceManagers c +FD net/minecraft/client/resources/SimpleReloadableResourceManager reloadListeners d +FD net/minecraft/client/resources/SimpleReloadableResourceManager setResourceDomains e +FD net/minecraft/client/resources/SimpleReloadableResourceManager rmMetadataSerializer f +FD net/minecraft/client/resources/SimpleReloadableResourceManager$1 field_130076_a a +FD net/minecraft/client/resources/SimpleResource mapMetadataSections a +FD net/minecraft/client/resources/SimpleResource resourcePackName b +FD net/minecraft/client/resources/SimpleResource srResourceLocation c +FD net/minecraft/client/resources/SimpleResource resourceInputStream d +FD net/minecraft/client/resources/SimpleResource mcmetaInputStream e +FD net/minecraft/client/resources/SimpleResource srMetadataSerializer f +FD net/minecraft/client/resources/SimpleResource mcmetaJsonChecked g +FD net/minecraft/client/resources/SimpleResource mcmetaJson h +FD net/minecraft/client/resources/SkinManager THREAD_POOL a +FD net/minecraft/client/resources/SkinManager textureManager b +FD net/minecraft/client/resources/SkinManager skinCacheDir c +FD net/minecraft/client/resources/SkinManager sessionService d +FD net/minecraft/client/resources/SkinManager skinCacheLoader e +FD net/minecraft/client/resources/SkinManager$1 field_152787_a a +FD net/minecraft/client/resources/SkinManager$2 field_152635_a a +FD net/minecraft/client/resources/SkinManager$2 field_152636_b b +FD net/minecraft/client/resources/SkinManager$2 field_152637_c c +FD net/minecraft/client/resources/SkinManager$2 field_152638_d d +FD net/minecraft/client/resources/SkinManager$2 field_177249_e e +FD net/minecraft/client/resources/SkinManager$2 field_152639_e f +FD net/minecraft/client/resources/SkinManager$3 field_152799_a a +FD net/minecraft/client/resources/SkinManager$3 field_152800_b b +FD net/minecraft/client/resources/SkinManager$3 field_152801_c c +FD net/minecraft/client/resources/SkinManager$3 field_152802_d d +FD net/minecraft/client/resources/SkinManager$3$1 field_152803_a a +FD net/minecraft/client/resources/SkinManager$3$1 field_152804_b b +FD net/minecraft/client/resources/I18n i18nLocale a +FD net/minecraft/client/resources/Language languageCode a +FD net/minecraft/client/resources/Language region b +FD net/minecraft/client/resources/Language name c +FD net/minecraft/client/resources/Language bidirectional d +FD net/minecraft/client/resources/LanguageManager currentLocale a +FD net/minecraft/client/resources/LanguageManager logger b +FD net/minecraft/client/resources/LanguageManager theMetadataSerializer c +FD net/minecraft/client/resources/LanguageManager currentLanguage d +FD net/minecraft/client/resources/LanguageManager languageMap e +FD net/minecraft/client/resources/Locale properties a +FD net/minecraft/client/resources/Locale splitter b +FD net/minecraft/client/resources/Locale pattern c +FD net/minecraft/client/resources/Locale unicode d +FD net/minecraft/client/resources/data/IMetadataSerializer metadataSectionSerializerRegistry a +FD net/minecraft/client/resources/data/IMetadataSerializer gsonBuilder b +FD net/minecraft/client/resources/data/IMetadataSerializer gson c +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration section a +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration clazz b +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration field_110501_c c +FD net/minecraft/client/resources/data/AnimationFrame frameIndex a +FD net/minecraft/client/resources/data/AnimationFrame frameTime b +FD net/minecraft/client/resources/data/AnimationMetadataSection animationFrames a +FD net/minecraft/client/resources/data/AnimationMetadataSection frameWidth b +FD net/minecraft/client/resources/data/AnimationMetadataSection frameHeight c +FD net/minecraft/client/resources/data/AnimationMetadataSection frameTime d +FD net/minecraft/client/resources/data/AnimationMetadataSection interpolate e +FD net/minecraft/client/resources/data/FontMetadataSection charWidths a +FD net/minecraft/client/resources/data/FontMetadataSection charLefts b +FD net/minecraft/client/resources/data/FontMetadataSection charSpacings c +FD net/minecraft/client/resources/data/LanguageMetadataSection languages a +FD net/minecraft/client/resources/data/PackMetadataSection packDescription a +FD net/minecraft/client/resources/data/PackMetadataSection packFormat b +FD net/minecraft/client/resources/data/TextureMetadataSection textureBlur a +FD net/minecraft/client/resources/data/TextureMetadataSection textureClamp b +FD net/minecraft/client/resources/data/TextureMetadataSection listMipmaps c +FD net/minecraft/client/resources/model/ModelRotation X0_Y0 a +FD net/minecraft/client/resources/model/ModelRotation X0_Y90 b +FD net/minecraft/client/resources/model/ModelRotation X0_Y180 c +FD net/minecraft/client/resources/model/ModelRotation X0_Y270 d +FD net/minecraft/client/resources/model/ModelRotation X90_Y0 e +FD net/minecraft/client/resources/model/ModelRotation X90_Y90 f +FD net/minecraft/client/resources/model/ModelRotation X90_Y180 g +FD net/minecraft/client/resources/model/ModelRotation X90_Y270 h +FD net/minecraft/client/resources/model/ModelRotation X180_Y0 i +FD net/minecraft/client/resources/model/ModelRotation X180_Y90 j +FD net/minecraft/client/resources/model/ModelRotation X180_Y180 k +FD net/minecraft/client/resources/model/ModelRotation X180_Y270 l +FD net/minecraft/client/resources/model/ModelRotation X270_Y0 m +FD net/minecraft/client/resources/model/ModelRotation X270_Y90 n +FD net/minecraft/client/resources/model/ModelRotation X270_Y180 o +FD net/minecraft/client/resources/model/ModelRotation X270_Y270 p +FD net/minecraft/client/resources/model/ModelRotation mapRotations q +FD net/minecraft/client/resources/model/ModelRotation combinedXY r +FD net/minecraft/client/resources/model/ModelRotation matrix4d s +FD net/minecraft/client/resources/model/ModelRotation quartersX t +FD net/minecraft/client/resources/model/ModelRotation quartersY u +FD net/minecraft/client/resources/model/ModelRotation $VALUES v +FD net/minecraft/client/resources/model/BuiltInModel cameraTransforms a +FD net/minecraft/client/resources/model/ModelBakery MODEL_MISSING a +FD net/minecraft/client/resources/model/ModelBakery LOCATIONS_BUILTIN_TEXTURES b +FD net/minecraft/client/resources/model/ModelBakery LOGGER c +FD net/minecraft/client/resources/model/ModelBakery BUILT_IN_MODELS d +FD net/minecraft/client/resources/model/ModelBakery JOINER e +FD net/minecraft/client/resources/model/ModelBakery resourceManager f +FD net/minecraft/client/resources/model/ModelBakery sprites g +FD net/minecraft/client/resources/model/ModelBakery models h +FD net/minecraft/client/resources/model/ModelBakery variants i +FD net/minecraft/client/resources/model/ModelBakery textureMap j +FD net/minecraft/client/resources/model/ModelBakery blockModelShapes k +FD net/minecraft/client/resources/model/ModelBakery faceBakery l +FD net/minecraft/client/resources/model/ModelBakery itemModelGenerator m +FD net/minecraft/client/resources/model/ModelBakery bakedRegistry n +FD net/minecraft/client/resources/model/ModelBakery MODEL_GENERATED o +FD net/minecraft/client/resources/model/ModelBakery MODEL_COMPASS p +FD net/minecraft/client/resources/model/ModelBakery MODEL_CLOCK q +FD net/minecraft/client/resources/model/ModelBakery MODEL_ENTITY r +FD net/minecraft/client/resources/model/ModelBakery itemLocations s +FD net/minecraft/client/resources/model/ModelBakery blockDefinitions t +FD net/minecraft/client/resources/model/ModelBakery variantNames u +FD net/minecraft/client/resources/model/ModelBakery$1 field_177506_a a +FD net/minecraft/client/resources/model/ModelBakery$2 field_177061_a a +FD net/minecraft/client/resources/model/ModelBakery$2 field_177060_b b +FD net/minecraft/client/resources/model/ModelManager modelRegistry a +FD net/minecraft/client/resources/model/ModelManager texMap b +FD net/minecraft/client/resources/model/ModelManager modelProvider c +FD net/minecraft/client/resources/model/ModelManager defaultModel d +FD net/minecraft/client/resources/model/ModelResourceLocation variant c +FD net/minecraft/client/resources/model/SimpleBakedModel generalQuads a +FD net/minecraft/client/resources/model/SimpleBakedModel faceQuads b +FD net/minecraft/client/resources/model/SimpleBakedModel ambientOcclusion c +FD net/minecraft/client/resources/model/SimpleBakedModel gui3d d +FD net/minecraft/client/resources/model/SimpleBakedModel texture e +FD net/minecraft/client/resources/model/SimpleBakedModel cameraTransforms f +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderGeneralQuads a +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderFaceQuads b +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderAmbientOcclusion c +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderTexture d +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderGui3d e +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderCameraTransforms f +FD net/minecraft/client/resources/model/WeightedBakedModel totalWeight a +FD net/minecraft/client/resources/model/WeightedBakedModel models b +FD net/minecraft/client/resources/model/WeightedBakedModel baseModel c +FD net/minecraft/client/resources/model/WeightedBakedModel$Builder listItems a +FD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem model b +FD net/minecraft/client/audio/PositionedSound positionedSoundLocation a +FD net/minecraft/client/audio/PositionedSound volume b +FD net/minecraft/client/audio/PositionedSound pitch c +FD net/minecraft/client/audio/PositionedSound xPosF d +FD net/minecraft/client/audio/PositionedSound yPosF e +FD net/minecraft/client/audio/PositionedSound zPosF f +FD net/minecraft/client/audio/PositionedSound repeat g +FD net/minecraft/client/audio/PositionedSound repeatDelay h +FD net/minecraft/client/audio/PositionedSound attenuationType i +FD net/minecraft/client/audio/MovingSound donePlaying j +FD net/minecraft/client/audio/GuardianSound guardian k +FD net/minecraft/client/audio/MovingSoundMinecart minecart k +FD net/minecraft/client/audio/MovingSoundMinecart distance l +FD net/minecraft/client/audio/MovingSoundMinecartRiding player k +FD net/minecraft/client/audio/MovingSoundMinecartRiding minecart l +FD net/minecraft/client/audio/SoundCategory MASTER a +FD net/minecraft/client/audio/SoundCategory MUSIC b +FD net/minecraft/client/audio/SoundCategory RECORDS c +FD net/minecraft/client/audio/SoundCategory WEATHER d +FD net/minecraft/client/audio/SoundCategory BLOCKS e +FD net/minecraft/client/audio/SoundCategory MOBS f +FD net/minecraft/client/audio/SoundCategory ANIMALS g +FD net/minecraft/client/audio/SoundCategory PLAYERS h +FD net/minecraft/client/audio/SoundCategory AMBIENT i +FD net/minecraft/client/audio/SoundCategory NAME_CATEGORY_MAP j +FD net/minecraft/client/audio/SoundCategory ID_CATEGORY_MAP k +FD net/minecraft/client/audio/SoundCategory categoryName l +FD net/minecraft/client/audio/SoundCategory categoryId m +FD net/minecraft/client/audio/SoundCategory $VALUES n +FD net/minecraft/client/audio/SoundList soundList a +FD net/minecraft/client/audio/SoundList replaceExisting b +FD net/minecraft/client/audio/SoundList category c +FD net/minecraft/client/audio/SoundList$SoundEntry name a +FD net/minecraft/client/audio/SoundList$SoundEntry volume b +FD net/minecraft/client/audio/SoundList$SoundEntry pitch c +FD net/minecraft/client/audio/SoundList$SoundEntry weight d +FD net/minecraft/client/audio/SoundList$SoundEntry type e +FD net/minecraft/client/audio/SoundList$SoundEntry streaming f +FD net/minecraft/client/audio/SoundList$SoundEntry$Type FILE a +FD net/minecraft/client/audio/SoundList$SoundEntry$Type SOUND_EVENT b +FD net/minecraft/client/audio/SoundList$SoundEntry$Type field_148583_c c +FD net/minecraft/client/audio/SoundList$SoundEntry$Type $VALUES d +FD net/minecraft/client/audio/ISound$AttenuationType NONE a +FD net/minecraft/client/audio/ISound$AttenuationType LINEAR b +FD net/minecraft/client/audio/ISound$AttenuationType type c +FD net/minecraft/client/audio/ISound$AttenuationType $VALUES d +FD net/minecraft/server/integrated/IntegratedPlayerList hostPlayerData f +FD net/minecraft/server/integrated/IntegratedServer logger k +FD net/minecraft/server/integrated/IntegratedServer mc l +FD net/minecraft/server/integrated/IntegratedServer theWorldSettings m +FD net/minecraft/server/integrated/IntegratedServer isGamePaused n +FD net/minecraft/server/integrated/IntegratedServer isPublic o +FD net/minecraft/server/integrated/IntegratedServer lanServerPing p +FD net/minecraft/server/integrated/IntegratedServer$1 field_76974_a a +FD net/minecraft/server/integrated/IntegratedServer$2 field_76972_a a +FD net/minecraft/server/integrated/IntegratedServer$3 field_177494_a a +FD net/minecraft/client/network/LanServerDetector field_148551_a a +FD net/minecraft/client/network/LanServerDetector logger b +FD net/minecraft/client/network/LanServerDetector$LanServer lanServerMotd a +FD net/minecraft/client/network/LanServerDetector$LanServer lanServerIpPort b +FD net/minecraft/client/network/LanServerDetector$LanServer timeLastSeen c +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind localServerList a +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind broadcastAddress b +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind socket c +FD net/minecraft/client/network/LanServerDetector$LanServerList wasUpdated a +FD net/minecraft/client/network/LanServerDetector$LanServerList listOfLanServers b +FD net/minecraft/client/multiplayer/ThreadLanServerPing field_148658_a a +FD net/minecraft/client/multiplayer/ThreadLanServerPing logger b +FD net/minecraft/client/multiplayer/ThreadLanServerPing motd c +FD net/minecraft/client/multiplayer/ThreadLanServerPing socket d +FD net/minecraft/client/multiplayer/ThreadLanServerPing isStopping e +FD net/minecraft/client/multiplayer/ThreadLanServerPing address f +FD net/minecraft/client/audio/MusicTicker rand a +FD net/minecraft/client/audio/MusicTicker mc b +FD net/minecraft/client/audio/MusicTicker currentMusic c +FD net/minecraft/client/audio/MusicTicker timeUntilNextMusic d +FD net/minecraft/client/audio/MusicTicker$MusicType MENU a +FD net/minecraft/client/audio/MusicTicker$MusicType GAME b +FD net/minecraft/client/audio/MusicTicker$MusicType CREATIVE c +FD net/minecraft/client/audio/MusicTicker$MusicType CREDITS d +FD net/minecraft/client/audio/MusicTicker$MusicType NETHER e +FD net/minecraft/client/audio/MusicTicker$MusicType END_BOSS f +FD net/minecraft/client/audio/MusicTicker$MusicType END g +FD net/minecraft/client/audio/MusicTicker$MusicType musicLocation h +FD net/minecraft/client/audio/MusicTicker$MusicType minDelay i +FD net/minecraft/client/audio/MusicTicker$MusicType maxDelay j +FD net/minecraft/client/audio/MusicTicker$MusicType $VALUES k +FD net/minecraft/client/audio/SoundPoolEntry location a +FD net/minecraft/client/audio/SoundPoolEntry streamingSound b +FD net/minecraft/client/audio/SoundPoolEntry pitch c +FD net/minecraft/client/audio/SoundPoolEntry volume d +FD net/minecraft/client/audio/SoundManager LOG_MARKER a +FD net/minecraft/client/audio/SoundManager logger b +FD net/minecraft/client/audio/SoundManager sndHandler c +FD net/minecraft/client/audio/SoundManager options d +FD net/minecraft/client/audio/SoundManager sndSystem e +FD net/minecraft/client/audio/SoundManager loaded f +FD net/minecraft/client/audio/SoundManager playTime g +FD net/minecraft/client/audio/SoundManager playingSounds h +FD net/minecraft/client/audio/SoundManager invPlayingSounds i +FD net/minecraft/client/audio/SoundManager playingSoundPoolEntries j +FD net/minecraft/client/audio/SoundManager categorySounds k +FD net/minecraft/client/audio/SoundManager tickableSounds l +FD net/minecraft/client/audio/SoundManager delayedSounds m +FD net/minecraft/client/audio/SoundManager playingSoundsStopTime n +FD net/minecraft/client/audio/SoundManager$1 field_148631_a a +FD net/minecraft/client/audio/SoundManager$1$1 field_177950_a a +FD net/minecraft/client/audio/SoundManager$2 field_148592_a a +FD net/minecraft/client/audio/SoundManager$2$1 field_148593_a a +FD net/minecraft/client/audio/SoundManager$SoundSystemStarterThread field_148591_a a +FD net/minecraft/client/audio/SoundEventAccessorComposite soundPool a +FD net/minecraft/client/audio/SoundEventAccessorComposite rnd b +FD net/minecraft/client/audio/SoundEventAccessorComposite soundLocation c +FD net/minecraft/client/audio/SoundEventAccessorComposite category d +FD net/minecraft/client/audio/SoundEventAccessorComposite eventPitch e +FD net/minecraft/client/audio/SoundEventAccessorComposite eventVolume f +FD net/minecraft/client/audio/SoundHandler missing_sound a +FD net/minecraft/client/audio/SoundHandler logger b +FD net/minecraft/client/audio/SoundHandler GSON c +FD net/minecraft/client/audio/SoundHandler TYPE d +FD net/minecraft/client/audio/SoundHandler sndRegistry e +FD net/minecraft/client/audio/SoundHandler sndManager f +FD net/minecraft/client/audio/SoundHandler mcResourceManager g +FD net/minecraft/client/audio/SoundHandler$2 field_148726_a a +FD net/minecraft/client/audio/SoundHandler$2 field_148724_b b +FD net/minecraft/client/audio/SoundHandler$2 field_148725_c c +FD net/minecraft/client/audio/SoundHandler$2 field_148723_d d +FD net/minecraft/client/audio/SoundHandler$3 field_148765_a a +FD net/minecraft/client/audio/SoundRegistry soundRegistry a +FD net/minecraft/client/audio/SoundEventAccessor entry a +FD net/minecraft/client/audio/SoundEventAccessor weight b +FD net/minecraft/client/stream/Metadata field_152811_a a +FD net/minecraft/client/stream/Metadata name b +FD net/minecraft/client/stream/Metadata description c +FD net/minecraft/client/stream/Metadata payload d +FD net/minecraft/client/stream/BroadcastController ingestServTester A +FD net/minecraft/client/stream/BroadcastController streamCallback B +FD net/minecraft/client/stream/BroadcastController field_177949_C C +FD net/minecraft/client/stream/BroadcastController logger D +FD net/minecraft/client/stream/BroadcastController field_152862_C E +FD net/minecraft/client/stream/BroadcastController lastError F +FD net/minecraft/client/stream/BroadcastController errorCode G +FD net/minecraft/client/stream/BroadcastController field_152865_a a +FD net/minecraft/client/stream/BroadcastController field_152866_b b +FD net/minecraft/client/stream/BroadcastController broadcastListener c +FD net/minecraft/client/stream/BroadcastController field_152868_d d +FD net/minecraft/client/stream/BroadcastController field_152869_e e +FD net/minecraft/client/stream/BroadcastController field_152870_f f +FD net/minecraft/client/stream/BroadcastController field_152871_g g +FD net/minecraft/client/stream/BroadcastController streamCore h +FD net/minecraft/client/stream/BroadcastController theStream i +FD net/minecraft/client/stream/BroadcastController field_152874_j j +FD net/minecraft/client/stream/BroadcastController field_152875_k k +FD net/minecraft/client/stream/BroadcastController field_152876_l l +FD net/minecraft/client/stream/BroadcastController field_152877_m m +FD net/minecraft/client/stream/BroadcastController field_152878_n n +FD net/minecraft/client/stream/BroadcastController broadcastState o +FD net/minecraft/client/stream/BroadcastController field_152880_p p +FD net/minecraft/client/stream/BroadcastController videoParamaters q +FD net/minecraft/client/stream/BroadcastController audioParamaters r +FD net/minecraft/client/stream/BroadcastController ingestList s +FD net/minecraft/client/stream/BroadcastController ingestServ t +FD net/minecraft/client/stream/BroadcastController authenticationToken u +FD net/minecraft/client/stream/BroadcastController channelInfo v +FD net/minecraft/client/stream/BroadcastController userInfo w +FD net/minecraft/client/stream/BroadcastController streamInfo x +FD net/minecraft/client/stream/BroadcastController archivingState y +FD net/minecraft/client/stream/BroadcastController field_152890_z z +FD net/minecraft/client/stream/BroadcastController$1 field_177945_a a +FD net/minecraft/client/stream/BroadcastController$2 field_177772_a a +FD net/minecraft/client/stream/BroadcastController$3 field_177773_a a +FD net/minecraft/client/stream/BroadcastController$BroadcastState Uninitialized a +FD net/minecraft/client/stream/BroadcastController$BroadcastState Initialized b +FD net/minecraft/client/stream/BroadcastController$BroadcastState Authenticating c +FD net/minecraft/client/stream/BroadcastController$BroadcastState Authenticated d +FD net/minecraft/client/stream/BroadcastController$BroadcastState LoggingIn e +FD net/minecraft/client/stream/BroadcastController$BroadcastState LoggedIn f +FD net/minecraft/client/stream/BroadcastController$BroadcastState FindingIngestServer g +FD net/minecraft/client/stream/BroadcastController$BroadcastState ReceivedIngestServers h +FD net/minecraft/client/stream/BroadcastController$BroadcastState ReadyToBroadcast i +FD net/minecraft/client/stream/BroadcastController$BroadcastState Starting j +FD net/minecraft/client/stream/BroadcastController$BroadcastState Broadcasting k +FD net/minecraft/client/stream/BroadcastController$BroadcastState Stopping l +FD net/minecraft/client/stream/BroadcastController$BroadcastState Paused m +FD net/minecraft/client/stream/BroadcastController$BroadcastState IngestTesting n +FD net/minecraft/client/stream/BroadcastController$BroadcastState $VALUES o +FD net/minecraft/client/stream/ChatController field_153003_a a +FD net/minecraft/client/stream/ChatController field_153004_b b +FD net/minecraft/client/stream/ChatController field_153006_d c +FD net/minecraft/client/stream/ChatController field_153007_e d +FD net/minecraft/client/stream/ChatController field_175992_e e +FD net/minecraft/client/stream/ChatController field_153008_f f +FD net/minecraft/client/stream/ChatController field_153011_i g +FD net/minecraft/client/stream/ChatController field_153012_j h +FD net/minecraft/client/stream/ChatController field_175998_i i +FD net/minecraft/client/stream/ChatController field_153015_m j +FD net/minecraft/client/stream/ChatController field_175997_k k +FD net/minecraft/client/stream/ChatController field_175995_l l +FD net/minecraft/client/stream/ChatController field_175996_m m +FD net/minecraft/client/stream/ChatController field_175993_n n +FD net/minecraft/client/stream/ChatController field_175994_o o +FD net/minecraft/client/stream/ChatController field_175999_p p +FD net/minecraft/client/stream/ChatController LOGGER q +FD net/minecraft/client/stream/ChatController$1 field_176000_a a +FD net/minecraft/client/stream/ChatController$2 field_175976_a a +FD net/minecraft/client/stream/ChatController$2 field_175974_b b +FD net/minecraft/client/stream/ChatController$2 field_175975_c c +FD net/minecraft/client/stream/ChatController$EnumChannelState Created a +FD net/minecraft/client/stream/ChatController$EnumChannelState Connecting b +FD net/minecraft/client/stream/ChatController$EnumChannelState Connected c +FD net/minecraft/client/stream/ChatController$EnumChannelState Disconnecting d +FD net/minecraft/client/stream/ChatController$EnumChannelState Disconnected e +FD net/minecraft/client/stream/ChatController$EnumChannelState $VALUES f +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176048_a a +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176046_b b +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176047_c c +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176044_d d +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176045_e e +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176042_f f +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176043_g g +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176049_h h +FD net/minecraft/client/stream/ChatController$ChatState Uninitialized a +FD net/minecraft/client/stream/ChatController$ChatState Initializing b +FD net/minecraft/client/stream/ChatController$ChatState Initialized c +FD net/minecraft/client/stream/ChatController$ChatState ShuttingDown d +FD net/minecraft/client/stream/ChatController$ChatState $VALUES e +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode None a +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode Url b +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode TextureAtlas c +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode $VALUES d +FD net/minecraft/client/stream/IngestServerTester field_176005_A A +FD net/minecraft/client/stream/IngestServerTester field_176006_B B +FD net/minecraft/client/stream/IngestServerTester field_153044_b a +FD net/minecraft/client/stream/IngestServerTester field_153045_c b +FD net/minecraft/client/stream/IngestServerTester field_153046_d c +FD net/minecraft/client/stream/IngestServerTester field_153047_e d +FD net/minecraft/client/stream/IngestServerTester field_153048_f e +FD net/minecraft/client/stream/IngestServerTester field_153049_g f +FD net/minecraft/client/stream/IngestServerTester field_153050_h g +FD net/minecraft/client/stream/IngestServerTester field_153051_i h +FD net/minecraft/client/stream/IngestServerTester field_153052_j i +FD net/minecraft/client/stream/IngestServerTester audioParameters j +FD net/minecraft/client/stream/IngestServerTester field_153054_l k +FD net/minecraft/client/stream/IngestServerTester field_153055_m l +FD net/minecraft/client/stream/IngestServerTester field_153056_n m +FD net/minecraft/client/stream/IngestServerTester field_153057_o n +FD net/minecraft/client/stream/IngestServerTester field_153058_p o +FD net/minecraft/client/stream/IngestServerTester field_153059_q p +FD net/minecraft/client/stream/IngestServerTester field_153060_r q +FD net/minecraft/client/stream/IngestServerTester field_153061_s r +FD net/minecraft/client/stream/IngestServerTester field_153062_t s +FD net/minecraft/client/stream/IngestServerTester field_153063_u t +FD net/minecraft/client/stream/IngestServerTester field_153064_v u +FD net/minecraft/client/stream/IngestServerTester field_153065_w v +FD net/minecraft/client/stream/IngestServerTester field_153066_x w +FD net/minecraft/client/stream/IngestServerTester field_176009_x x +FD net/minecraft/client/stream/IngestServerTester field_176008_y y +FD net/minecraft/client/stream/IngestServerTester field_176007_z z +FD net/minecraft/client/stream/IngestServerTester$1 field_176010_a a +FD net/minecraft/client/stream/IngestServerTester$2 field_176001_a a +FD net/minecraft/client/stream/IngestServerTester$3 field_176003_a a +FD net/minecraft/client/stream/IngestServerTester$3 field_176002_b b +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Uninitalized a +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Starting b +FD net/minecraft/client/stream/IngestServerTester$IngestTestState ConnectingToServer c +FD net/minecraft/client/stream/IngestServerTester$IngestTestState TestingServer d +FD net/minecraft/client/stream/IngestServerTester$IngestTestState DoneTestingServer e +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Finished f +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Cancelling g +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Cancelled h +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Failed i +FD net/minecraft/client/stream/IngestServerTester$IngestTestState $VALUES j +FD net/minecraft/client/stream/IStream$AuthFailureReason ERROR a +FD net/minecraft/client/stream/IStream$AuthFailureReason INVALID_TOKEN b +FD net/minecraft/client/stream/IStream$AuthFailureReason $VALUES c +FD net/minecraft/client/stream/TwitchStream STREAM_MARKER a +FD net/minecraft/client/stream/TwitchStream LOGGER b +FD net/minecraft/client/stream/TwitchStream broadcastController c +FD net/minecraft/client/stream/TwitchStream chatController d +FD net/minecraft/client/stream/TwitchStream field_176029_e e +FD net/minecraft/client/stream/TwitchStream mc f +FD net/minecraft/client/stream/TwitchStream twitchComponent g +FD net/minecraft/client/stream/TwitchStream field_152955_g h +FD net/minecraft/client/stream/TwitchStream framebuffer i +FD net/minecraft/client/stream/TwitchStream field_152957_i j +FD net/minecraft/client/stream/TwitchStream targetFPS k +FD net/minecraft/client/stream/TwitchStream field_152959_k l +FD net/minecraft/client/stream/TwitchStream field_152960_l m +FD net/minecraft/client/stream/TwitchStream loggedIn n +FD net/minecraft/client/stream/TwitchStream field_152962_n o +FD net/minecraft/client/stream/TwitchStream field_152963_o p +FD net/minecraft/client/stream/TwitchStream authFailureReason q +FD net/minecraft/client/stream/TwitchStream field_152965_q r +FD net/minecraft/client/stream/TwitchStream$1 field_153083_a a +FD net/minecraft/client/stream/TwitchStream$1 field_153084_b b +FD net/minecraft/client/stream/TwitchStream$1$1 field_153082_a a +FD net/minecraft/client/stream/NullStream field_152938_a a +FD net/minecraft/util/Vector3d x a +FD net/minecraft/util/Vector3d y b +FD net/minecraft/util/Vector3d z c +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE1_RGB A +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE2_RGB B +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND0_RGB C +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND1_RGB D +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND2_RGB E +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE_ALPHA F +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE0_ALPHA G +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE1_ALPHA H +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE2_ALPHA I +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND0_ALPHA J +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND1_ALPHA K +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND2_ALPHA L +FD net/minecraft/client/renderer/OpenGlHelper extBlendFuncSeparate M +FD net/minecraft/client/renderer/OpenGlHelper openGL21 N +FD net/minecraft/client/renderer/OpenGlHelper shadersSupported O +FD net/minecraft/client/renderer/OpenGlHelper vboSupported P +FD net/minecraft/client/renderer/OpenGlHelper vboSupportedAti Q +FD net/minecraft/client/renderer/OpenGlHelper GL_ARRAY_BUFFER R +FD net/minecraft/client/renderer/OpenGlHelper GL_STATIC_DRAW S +FD net/minecraft/client/renderer/OpenGlHelper framebufferType T +FD net/minecraft/client/renderer/OpenGlHelper shadersAvailable U +FD net/minecraft/client/renderer/OpenGlHelper arbShaders V +FD net/minecraft/client/renderer/OpenGlHelper arbMultitexture W +FD net/minecraft/client/renderer/OpenGlHelper arbTextureEnvCombine X +FD net/minecraft/client/renderer/OpenGlHelper openGL14 Y +FD net/minecraft/client/renderer/OpenGlHelper logText Z +FD net/minecraft/client/renderer/OpenGlHelper nvidia a +FD net/minecraft/client/renderer/OpenGlHelper cpu aa +FD net/minecraft/client/renderer/OpenGlHelper arbVbo ab +FD net/minecraft/client/renderer/OpenGlHelper ati b +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAMEBUFFER c +FD net/minecraft/client/renderer/OpenGlHelper GL_RENDERBUFFER d +FD net/minecraft/client/renderer/OpenGlHelper GL_COLOR_ATTACHMENT0 e +FD net/minecraft/client/renderer/OpenGlHelper GL_DEPTH_ATTACHMENT f +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAMEBUFFER_COMPLETE g +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_ATTACHMENT h +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_MISS_ATTACH i +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_DRAW_BUFFER j +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_READ_BUFFER k +FD net/minecraft/client/renderer/OpenGlHelper framebufferSupported l +FD net/minecraft/client/renderer/OpenGlHelper GL_LINK_STATUS m +FD net/minecraft/client/renderer/OpenGlHelper GL_COMPILE_STATUS n +FD net/minecraft/client/renderer/OpenGlHelper GL_VERTEX_SHADER o +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAGMENT_SHADER p +FD net/minecraft/client/renderer/OpenGlHelper defaultTexUnit q +FD net/minecraft/client/renderer/OpenGlHelper lightmapTexUnit r +FD net/minecraft/client/renderer/OpenGlHelper GL_TEXTURE2 s +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE t +FD net/minecraft/client/renderer/OpenGlHelper GL_INTERPOLATE u +FD net/minecraft/client/renderer/OpenGlHelper GL_PRIMARY_COLOR v +FD net/minecraft/client/renderer/OpenGlHelper GL_CONSTANT w +FD net/minecraft/client/renderer/OpenGlHelper GL_PREVIOUS x +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE_RGB y +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE0_RGB z +FD net/minecraft/client/main/Main$1 field_178749_a a +FD net/minecraft/client/main/Main$1 field_178748_b b +FD net/minecraft/realms/RealmsConnect$1 field_154355_a a +FD net/minecraft/realms/RealmsConnect$1 field_154356_b b +FD net/minecraft/realms/RealmsConnect$1 field_154357_c c +FD net/minecraft/server/MinecraftServer canSpawnAnimals A +FD net/minecraft/server/MinecraftServer canSpawnNPCs B +FD net/minecraft/server/MinecraftServer pvpEnabled C +FD net/minecraft/server/MinecraftServer allowFlight D +FD net/minecraft/server/MinecraftServer motd E +FD net/minecraft/server/MinecraftServer buildLimit F +FD net/minecraft/server/MinecraftServer maxPlayerIdleMinutes G +FD net/minecraft/server/MinecraftServer serverKeyPair H +FD net/minecraft/server/MinecraftServer serverOwner I +FD net/minecraft/server/MinecraftServer folderName J +FD net/minecraft/server/MinecraftServer worldName K +FD net/minecraft/server/MinecraftServer isDemo L +FD net/minecraft/server/MinecraftServer enableBonusChest M +FD net/minecraft/server/MinecraftServer worldIsBeingDeleted N +FD net/minecraft/server/MinecraftServer resourcePackUrl O +FD net/minecraft/server/MinecraftServer resourcePackHash P +FD net/minecraft/server/MinecraftServer serverIsRunning Q +FD net/minecraft/server/MinecraftServer timeOfLastWarning R +FD net/minecraft/server/MinecraftServer userMessage S +FD net/minecraft/server/MinecraftServer startProfiling T +FD net/minecraft/server/MinecraftServer isGamemodeForced U +FD net/minecraft/server/MinecraftServer authService V +FD net/minecraft/server/MinecraftServer sessionService W +FD net/minecraft/server/MinecraftServer nanoTimeSinceStatusRefresh X +FD net/minecraft/server/MinecraftServer profileRepo Y +FD net/minecraft/server/MinecraftServer profileCache Z +FD net/minecraft/server/MinecraftServer USER_CACHE_FILE a +FD net/minecraft/server/MinecraftServer serverThread aa +FD net/minecraft/server/MinecraftServer currentTime ab +FD net/minecraft/server/MinecraftServer commandManager b +FD net/minecraft/server/MinecraftServer theProfiler c +FD net/minecraft/server/MinecraftServer worldServers d +FD net/minecraft/server/MinecraftServer serverProxy e +FD net/minecraft/server/MinecraftServer currentTask f +FD net/minecraft/server/MinecraftServer percentDone g +FD net/minecraft/server/MinecraftServer tickTimeArray h +FD net/minecraft/server/MinecraftServer timeOfLastDimensionTick i +FD net/minecraft/server/MinecraftServer futureTaskQueue j +FD net/minecraft/server/MinecraftServer logger k +FD net/minecraft/server/MinecraftServer mcServer l +FD net/minecraft/server/MinecraftServer anvilConverterForAnvilFile m +FD net/minecraft/server/MinecraftServer usageSnooper n +FD net/minecraft/server/MinecraftServer anvilFile o +FD net/minecraft/server/MinecraftServer playersOnline p +FD net/minecraft/server/MinecraftServer networkSystem q +FD net/minecraft/server/MinecraftServer statusResponse r +FD net/minecraft/server/MinecraftServer random s +FD net/minecraft/server/MinecraftServer hostname t +FD net/minecraft/server/MinecraftServer serverPort u +FD net/minecraft/server/MinecraftServer serverConfigManager v +FD net/minecraft/server/MinecraftServer serverRunning w +FD net/minecraft/server/MinecraftServer serverStopped x +FD net/minecraft/server/MinecraftServer tickCounter y +FD net/minecraft/server/MinecraftServer onlineMode z +FD net/minecraft/server/MinecraftServer$1 field_74267_a a +FD net/minecraft/server/MinecraftServer$1 startTime b +FD net/minecraft/server/MinecraftServer$2 field_96244_a a +FD net/minecraft/server/MinecraftServer$3 field_73716_a a +FD net/minecraft/server/MinecraftServer$4 field_74274_a a +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154341_a a +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154342_b b +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154343_c c +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154344_d d +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154345_e e +MD net/minecraft/util/EnumChatFormatting func_175744_a (I)Lnet/minecraft/util/EnumChatFormatting; a +MD net/minecraft/util/EnumChatFormatting getTextWithoutFormattingCodes (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/EnumChatFormatting getValidValues (ZZ)Ljava/util/Collection; a +MD net/minecraft/util/EnumChatFormatting getColorIndex ()I b +MD net/minecraft/util/EnumChatFormatting getValueByName (Ljava/lang/String;)Lnet/minecraft/util/EnumChatFormatting; b +MD net/minecraft/util/EnumChatFormatting isFancyStyling ()Z c +MD net/minecraft/util/EnumChatFormatting func_175745_c (Ljava/lang/String;)Ljava/lang/String; c +MD net/minecraft/util/EnumChatFormatting isColor ()Z d +MD net/minecraft/util/EnumChatFormatting getFriendlyName ()Ljava/lang/String; e +MD net/minecraft/util/EnumChatFormatting toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumChatFormatting valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumChatFormatting; valueOf +MD net/minecraft/util/EnumChatFormatting values ()[Lnet/minecraft/util/EnumChatFormatting; values +MD net/minecraft/crash/CrashReport getDescription ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport saveToFile (Ljava/io/File;)Z a +MD net/minecraft/crash/CrashReport makeCategory (Ljava/lang/String;)Lnet/minecraft/crash/CrashReportCategory; a +MD net/minecraft/crash/CrashReport makeCategoryDepth (Ljava/lang/String;I)Lnet/minecraft/crash/CrashReportCategory; a +MD net/minecraft/crash/CrashReport getSectionsInStringBuilder (Ljava/lang/StringBuilder;)V a +MD net/minecraft/crash/CrashReport makeCrashReport (Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/crash/CrashReport; a +MD net/minecraft/crash/CrashReport getCrashCause ()Ljava/lang/Throwable; b +MD net/minecraft/crash/CrashReport getCauseStackTraceOrString ()Ljava/lang/String; d +MD net/minecraft/crash/CrashReport getCompleteReport ()Ljava/lang/String; e +MD net/minecraft/crash/CrashReport getFile ()Ljava/io/File; f +MD net/minecraft/crash/CrashReport getCategory ()Lnet/minecraft/crash/CrashReportCategory; g +MD net/minecraft/crash/CrashReport populateEnvironment ()V h +MD net/minecraft/crash/CrashReport getWittyComment ()Ljava/lang/String; i +MD net/minecraft/crash/CrashReport$1 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$1 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$2 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$2 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$3 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$3 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$4 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$4 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$5 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$5 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$6 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$6 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$7 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReport$7 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory getStackTrace ()[Ljava/lang/StackTraceElement; a +MD net/minecraft/crash/CrashReportCategory getCoordinateInfo (DDD)Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory getPrunedStackTrace (I)I a +MD net/minecraft/crash/CrashReportCategory addBlockInfo (Lnet/minecraft/crash/CrashReportCategory;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;I)V a +MD net/minecraft/crash/CrashReportCategory addBlockInfo (Lnet/minecraft/crash/CrashReportCategory;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/crash/CrashReportCategory getCoordinateInfo (Lnet/minecraft/util/BlockPos;)Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory firstTwoElementsOfStackTraceMatch (Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;)Z a +MD net/minecraft/crash/CrashReportCategory addCrashSection (Ljava/lang/String;Ljava/lang/Object;)V a +MD net/minecraft/crash/CrashReportCategory addCrashSectionThrowable (Ljava/lang/String;Ljava/lang/Throwable;)V a +MD net/minecraft/crash/CrashReportCategory addCrashSectionCallable (Ljava/lang/String;Ljava/util/concurrent/Callable;)V a +MD net/minecraft/crash/CrashReportCategory appendToStringBuilder (Ljava/lang/StringBuilder;)V a +MD net/minecraft/crash/CrashReportCategory trimStackTraceEntriesFromBottom (I)V b +MD net/minecraft/crash/CrashReportCategory$1 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$1 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$2 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$2 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$3 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$3 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$6 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$6 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$7 call ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$7 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$Entry getKey ()Ljava/lang/String; a +MD net/minecraft/crash/CrashReportCategory$Entry getValue ()Ljava/lang/String; b +MD net/minecraft/util/ReportedException getCrashReport ()Lnet/minecraft/crash/CrashReport; a +MD net/minecraft/util/ReportedException getCause ()Ljava/lang/Throwable; getCause +MD net/minecraft/util/ReportedException getMessage ()Ljava/lang/String; getMessage +MD net/minecraft/util/ChatAllowedCharacters isAllowedCharacter (C)Z a +MD net/minecraft/util/ChatAllowedCharacters filterAllowedCharacters (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/Util getOSType ()Lnet/minecraft/util/Util$EnumOS; a +MD net/minecraft/util/Util runTask (Ljava/util/concurrent/FutureTask;Lorg/apache/logging/log4j/Logger;)Ljava/lang/Object; a +MD net/minecraft/util/Util$EnumOS valueOf (Ljava/lang/String;)Lnet/minecraft/util/Util$EnumOS; valueOf +MD net/minecraft/util/Util$EnumOS values ()[Lnet/minecraft/util/Util$EnumOS; values +MD net/minecraft/command/IAdminCommand notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;ILjava/lang/String;[Ljava/lang/Object;)V a +MD net/minecraft/command/CommandBase getRequiredPermissionLevel ()I a +MD net/minecraft/command/CommandBase parseCoordinate (DLjava/lang/String;IIZ)Lnet/minecraft/command/CommandBase$CoordinateArg; a +MD net/minecraft/command/CommandBase parseCoordinate (DLjava/lang/String;Z)Lnet/minecraft/command/CommandBase$CoordinateArg; a +MD net/minecraft/command/CommandBase setAdminCommander (Lnet/minecraft/command/IAdminCommand;)V a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;)I a +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;D)D a +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;DD)D a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;I)I a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;II)I a +MD net/minecraft/command/CommandBase parseLong (Ljava/lang/String;JJ)J a +MD net/minecraft/command/CommandBase doesStringStartWith (Ljava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/command/CommandBase joinNiceStringFromCollection (Ljava/util/Collection;)Ljava/lang/String; a +MD net/minecraft/command/CommandBase join (Ljava/util/List;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/command/CommandBase compareTo (Lnet/minecraft/command/ICommand;)I a +MD net/minecraft/command/CommandBase getPlayer (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; a +MD net/minecraft/command/CommandBase getEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/command/CommandBase notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;ILjava/lang/String;[Ljava/lang/Object;)V a +MD net/minecraft/command/CommandBase notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;Ljava/lang/String;[Ljava/lang/Object;)V a +MD net/minecraft/command/CommandBase getChatComponentFromNthArg (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/command/CommandBase parseBlockPos (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;IZ)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/command/CommandBase joinNiceString ([Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/command/CommandBase buildString ([Ljava/lang/String;I)Ljava/lang/String; a +MD net/minecraft/command/CommandBase func_175771_a ([Ljava/lang/String;ILnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/CommandBase getListOfStringsMatchingLastWord ([Ljava/lang/String;Ljava/util/Collection;)Ljava/util/List; a +MD net/minecraft/command/CommandBase getListOfStringsMatchingLastWord ([Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List; a +MD net/minecraft/command/CommandBase parseDouble (DLjava/lang/String;IIZ)D b +MD net/minecraft/command/CommandBase parseDouble (DLjava/lang/String;Z)D b +MD net/minecraft/command/CommandBase parseLong (Ljava/lang/String;)J b +MD net/minecraft/command/CommandBase getCommandSenderAsPlayer (Lnet/minecraft/command/ICommandSender;)Lnet/minecraft/entity/player/EntityPlayerMP; b +MD net/minecraft/command/CommandBase getEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/Entity; b +MD net/minecraft/command/CommandBase getChatComponentFromNthArg (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;IZ)Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/command/CommandBase func_181043_b ([Ljava/lang/String;ILnet/minecraft/util/BlockPos;)Ljava/util/List; b +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;)D c +MD net/minecraft/command/CommandBase func_175763_c (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/util/List; c +MD net/minecraft/command/CommandBase parseBoolean (Ljava/lang/String;)Z d +MD net/minecraft/command/CommandBase getPlayerName (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/lang/String; d +MD net/minecraft/command/CommandBase getEntityName (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/lang/String; e +MD net/minecraft/command/CommandBase getItemByText (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/item/Item; f +MD net/minecraft/command/CommandBase getBlockByText (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/block/Block; g +MD net/minecraft/command/CommandBase compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/command/CommandBase$CoordinateArg func_179628_a ()D a +MD net/minecraft/command/CommandBase$CoordinateArg func_179629_b ()D b +MD net/minecraft/command/CommandBase$CoordinateArg func_179630_c ()Z c +MD net/minecraft/command/CommandHandler registerCommand (Lnet/minecraft/command/ICommand;)Lnet/minecraft/command/ICommand; a +MD net/minecraft/command/CommandHandler getUsernameIndex (Lnet/minecraft/command/ICommand;[Ljava/lang/String;)I a +MD net/minecraft/command/CommandHandler tryExecute (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;Lnet/minecraft/command/ICommand;Ljava/lang/String;)Z a +MD net/minecraft/command/CommandHandler dropFirstString ([Ljava/lang/String;)[Ljava/lang/String; a +MD net/minecraft/command/ICommand canCommandSenderUseCommand (Lnet/minecraft/command/ICommandSender;)Z a +MD net/minecraft/command/ICommand processCommand (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;)V a +MD net/minecraft/command/ICommand addTabCompletionOptions (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/ICommand getCommandAliases ()Ljava/util/List; b +MD net/minecraft/command/ICommand isUsernameIndex ([Ljava/lang/String;I)Z b +MD net/minecraft/command/ICommand getCommandName ()Ljava/lang/String; c +MD net/minecraft/command/ICommand getCommandUsage (Lnet/minecraft/command/ICommandSender;)Ljava/lang/String; c +MD net/minecraft/command/ICommandManager getCommands ()Ljava/util/Map; a +MD net/minecraft/command/ICommandManager getPossibleCommands (Lnet/minecraft/command/ICommandSender;)Ljava/util/List; a +MD net/minecraft/command/ICommandManager executeCommand (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)I a +MD net/minecraft/command/ICommandManager getTabCompletionOptions (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/ICommandSender canCommandSenderUseCommand (ILjava/lang/String;)Z a +MD net/minecraft/command/ICommandSender addChatMessage (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/command/ICommandSender setCommandStat (Lnet/minecraft/command/CommandResultStats$Type;I)V a +MD net/minecraft/command/ICommandSender getPosition ()Lnet/minecraft/util/BlockPos; c +MD net/minecraft/command/ICommandSender getPositionVector ()Lnet/minecraft/util/Vec3; d +MD net/minecraft/command/ICommandSender getEntityWorld ()Lnet/minecraft/world/World; e +MD net/minecraft/command/ICommandSender getName ()Ljava/lang/String; e_ +MD net/minecraft/command/ICommandSender getCommandSenderEntity ()Lnet/minecraft/entity/Entity; f +MD net/minecraft/command/ICommandSender getDisplayName ()Lnet/minecraft/util/IChatComponent; f_ +MD net/minecraft/command/ICommandSender sendCommandFeedback ()Z u_ +MD net/minecraft/command/CommandResultStats readStatsFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/command/CommandResultStats setCommandStatScore (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/CommandResultStats$Type;I)V a +MD net/minecraft/command/CommandResultStats addAllStats (Lnet/minecraft/command/CommandResultStats;)V a +MD net/minecraft/command/CommandResultStats removeScoreBoardStat (Lnet/minecraft/command/CommandResultStats;Lnet/minecraft/command/CommandResultStats$Type;)V a +MD net/minecraft/command/CommandResultStats setScoreBoardStat (Lnet/minecraft/command/CommandResultStats;Lnet/minecraft/command/CommandResultStats$Type;Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/command/CommandResultStats writeStatsToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/command/CommandResultStats$Type getTypeID ()I a +MD net/minecraft/command/CommandResultStats$Type getTypeByName (Ljava/lang/String;)Lnet/minecraft/command/CommandResultStats$Type; a +MD net/minecraft/command/CommandResultStats$Type getTypeName ()Ljava/lang/String; b +MD net/minecraft/command/CommandResultStats$Type getTypeNames ()[Ljava/lang/String; c +MD net/minecraft/command/CommandResultStats$Type valueOf (Ljava/lang/String;)Lnet/minecraft/command/CommandResultStats$Type; valueOf +MD net/minecraft/command/CommandResultStats$Type values ()[Lnet/minecraft/command/CommandResultStats$Type; values +MD net/minecraft/command/PlayerSelector func_179650_a (I)I a +MD net/minecraft/command/PlayerSelector func_179661_a (Lnet/minecraft/util/BlockPos;III)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/command/PlayerSelector matchesMultiplePlayers (Ljava/lang/String;)Z a +MD net/minecraft/command/PlayerSelector func_179658_a (Ljava/util/List;Ljava/util/Map;Lnet/minecraft/command/ICommandSender;Ljava/lang/Class;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/PlayerSelector func_96560_a (Ljava/util/Map;)Ljava/util/Map; a +MD net/minecraft/command/PlayerSelector func_180698_a (Ljava/util/Map;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/PlayerSelector filterResults (Ljava/util/Map;Ljava/lang/Class;Ljava/util/List;Ljava/lang/String;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/command/PlayerSelector func_179663_a (Ljava/util/Map;Ljava/lang/String;)Ljava/util/List; a +MD net/minecraft/command/PlayerSelector parseIntWithDefault (Ljava/util/Map;Ljava/lang/String;I)I a +MD net/minecraft/command/PlayerSelector matchOnePlayer (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; a +MD net/minecraft/command/PlayerSelector matchOneEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/command/PlayerSelector getWorlds (Lnet/minecraft/command/ICommandSender;Ljava/util/Map;)Ljava/util/List; a +MD net/minecraft/command/PlayerSelector hasArguments (Ljava/lang/String;)Z b +MD net/minecraft/command/PlayerSelector getXpLevelPredicates (Ljava/util/Map;)Ljava/util/List; b +MD net/minecraft/command/PlayerSelector func_179664_b (Ljava/util/Map;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; b +MD net/minecraft/command/PlayerSelector func_179651_b (Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/command/PlayerSelector matchEntitiesToChatComponent (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/command/PlayerSelector matchEntities (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List; b +MD net/minecraft/command/PlayerSelector isEntityTypeValid (Lnet/minecraft/command/ICommandSender;Ljava/util/Map;)Z b +MD net/minecraft/command/PlayerSelector getArgumentMap (Ljava/lang/String;)Ljava/util/Map; c +MD net/minecraft/command/PlayerSelector getGamemodePredicates (Ljava/util/Map;)Ljava/util/List; c +MD net/minecraft/command/PlayerSelector getTeamPredicates (Ljava/util/Map;)Ljava/util/List; d +MD net/minecraft/command/PlayerSelector getScorePredicates (Ljava/util/Map;)Ljava/util/List; e +MD net/minecraft/command/PlayerSelector getNamePredicates (Ljava/util/Map;)Ljava/util/List; f +MD net/minecraft/command/PlayerSelector getRotationsPredicates (Ljava/util/Map;)Ljava/util/List; g +MD net/minecraft/command/PlayerSelector func_179665_h (Ljava/util/Map;)Z h +MD net/minecraft/command/PlayerSelector$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$2 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$3 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$3 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$4 compare (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)I a +MD net/minecraft/command/PlayerSelector$4 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/command/PlayerSelector$5 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$5 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$6 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$6 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$7 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$7 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$8 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$8 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$9 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$9 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$10 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$10 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$11 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$11 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$12 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/command/PlayerSelector$12 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/server/CommandAchievement$1 apply (Lnet/minecraft/stats/Achievement;)Z a +MD net/minecraft/command/server/CommandAchievement$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/server/CommandBanIp func_147210_a (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/command/CommandClearInventory func_147209_d ()[Ljava/lang/String; d +MD net/minecraft/command/CommandDebug func_147202_a (ILjava/lang/String;Ljava/lang/StringBuilder;)V a +MD net/minecraft/command/CommandDebug saveProfileResults (JI)V a +MD net/minecraft/command/CommandDebug getProfileResults (JI)Ljava/lang/String; b +MD net/minecraft/command/CommandDebug getWittyComment ()Ljava/lang/String; d +MD net/minecraft/command/CommandDefaultGameMode setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/command/CommandEffect getAllUsernames ()[Ljava/lang/String; d +MD net/minecraft/command/CommandEnchant getListOfPlayers ()[Ljava/lang/String; d +MD net/minecraft/command/CommandXP getAllUsernames ()[Ljava/lang/String; d +MD net/minecraft/command/CommandDifficulty getDifficultyFromCommand (Ljava/lang/String;)Lnet/minecraft/world/EnumDifficulty; e +MD net/minecraft/command/CommandGameMode getListOfPlayerUsernames ()[Ljava/lang/String; d +MD net/minecraft/command/CommandGameMode getGameModeFromCommand (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; h +MD net/minecraft/command/CommandGameRule func_175773_a (Lnet/minecraft/world/GameRules;Ljava/lang/String;)V a +MD net/minecraft/command/CommandGameRule getGameRules ()Lnet/minecraft/world/GameRules; d +MD net/minecraft/command/CommandGive getPlayers ()[Ljava/lang/String; d +MD net/minecraft/command/CommandHelp getCommands ()Ljava/util/Map; d +MD net/minecraft/command/CommandHelp getSortedPossibleCommands (Lnet/minecraft/command/ICommandSender;)Ljava/util/List; d +MD net/minecraft/command/CommandReplaceItem getUsernames ()[Ljava/lang/String; d +MD net/minecraft/command/CommandReplaceItem getSlotForShortcut (Ljava/lang/String;)I e +MD net/minecraft/command/server/CommandScoreboard getObjective (Ljava/lang/String;Z)Lnet/minecraft/scoreboard/ScoreObjective; a +MD net/minecraft/command/server/CommandScoreboard func_147184_a (Z)Ljava/util/List; a +MD net/minecraft/command/server/CommandScoreboard func_175780_b (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;)Z b +MD net/minecraft/command/server/CommandScoreboard addObjective (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V b +MD net/minecraft/command/server/CommandScoreboard addTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V c +MD net/minecraft/command/server/CommandScoreboard getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; d +MD net/minecraft/command/server/CommandScoreboard listObjectives (Lnet/minecraft/command/ICommandSender;)V d +MD net/minecraft/command/server/CommandScoreboard setTeamOption (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V d +MD net/minecraft/command/server/CommandScoreboard func_175782_e ()Ljava/util/List; e +MD net/minecraft/command/server/CommandScoreboard getTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; e +MD net/minecraft/command/server/CommandScoreboard removeTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V e +MD net/minecraft/command/server/CommandScoreboard listTeams (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V f +MD net/minecraft/command/server/CommandScoreboard joinTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V g +MD net/minecraft/command/server/CommandScoreboard removeObjective (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)V h +MD net/minecraft/command/server/CommandScoreboard leaveTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V h +MD net/minecraft/command/server/CommandScoreboard emptyTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V i +MD net/minecraft/command/server/CommandScoreboard setObjectiveDisplay (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V j +MD net/minecraft/command/server/CommandScoreboard listPlayers (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V k +MD net/minecraft/command/server/CommandScoreboard setPlayer (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V l +MD net/minecraft/command/server/CommandScoreboard resetPlayers (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V m +MD net/minecraft/command/server/CommandScoreboard func_175779_n (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V n +MD net/minecraft/command/server/CommandScoreboard func_175781_o (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V o +MD net/minecraft/command/server/CommandScoreboard func_175778_p (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V p +MD net/minecraft/command/CommandSpreadPlayers func_110668_a (Lnet/minecraft/command/CommandSpreadPlayers$Position;DLnet/minecraft/world/World;Ljava/util/Random;DDDD[Lnet/minecraft/command/CommandSpreadPlayers$Position;Z)I a +MD net/minecraft/command/CommandSpreadPlayers func_110671_a (Ljava/util/List;Lnet/minecraft/world/World;[Lnet/minecraft/command/CommandSpreadPlayers$Position;Z)D a +MD net/minecraft/command/CommandSpreadPlayers func_110670_a (Ljava/util/Random;IDDDD)[Lnet/minecraft/command/CommandSpreadPlayers$Position; a +MD net/minecraft/command/CommandSpreadPlayers func_110669_a (Lnet/minecraft/command/ICommandSender;Ljava/util/List;Lnet/minecraft/command/CommandSpreadPlayers$Position;DDLnet/minecraft/world/World;Z)V a +MD net/minecraft/command/CommandSpreadPlayers func_110667_a (Ljava/util/List;)I b +MD net/minecraft/command/CommandSpreadPlayers$Position func_111095_a ()V a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111093_a (DDDD)Z a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111092_a (Lnet/minecraft/world/World;)I a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111099_a (Lnet/minecraft/command/CommandSpreadPlayers$Position;)D a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111097_a (Ljava/util/Random;DDDD)V a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111096_b ()F b +MD net/minecraft/command/CommandSpreadPlayers$Position func_111098_b (Lnet/minecraft/world/World;)Z b +MD net/minecraft/command/CommandSpreadPlayers$Position func_111094_b (Lnet/minecraft/command/CommandSpreadPlayers$Position;)V b +MD net/minecraft/command/CommandStats func_175776_d ()[Ljava/lang/String; d +MD net/minecraft/command/CommandStats func_175777_e ()Ljava/util/List; e +MD net/minecraft/command/CommandTime setTime (Lnet/minecraft/command/ICommandSender;I)V a +MD net/minecraft/command/CommandTime addTime (Lnet/minecraft/command/ICommandSender;I)V b +MD net/minecraft/command/CommandToggleDownfall toggleDownfall ()V d +MD net/minecraft/command/CommandWorldBorder getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; d +MD net/minecraft/command/CommandException getErrorObjects ()[Ljava/lang/Object; a +MD net/minecraft/util/BlockPos up ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos add (DDD)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos add (III)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos fromLong (J)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos getAllInBox (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Ljava/lang/Iterable; a +MD net/minecraft/util/BlockPos offset (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos offset (Lnet/minecraft/util/EnumFacing;I)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos add (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos down ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/util/BlockPos up (I)Lnet/minecraft/util/BlockPos; b +MD net/minecraft/util/BlockPos getAllInBoxMutable (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Ljava/lang/Iterable; b +MD net/minecraft/util/BlockPos subtract (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; b +MD net/minecraft/util/BlockPos north ()Lnet/minecraft/util/BlockPos; c +MD net/minecraft/util/BlockPos down (I)Lnet/minecraft/util/BlockPos; c +MD net/minecraft/util/BlockPos crossProduct (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; c +MD net/minecraft/util/BlockPos south ()Lnet/minecraft/util/BlockPos; d +MD net/minecraft/util/BlockPos north (I)Lnet/minecraft/util/BlockPos; d +MD net/minecraft/util/BlockPos west ()Lnet/minecraft/util/BlockPos; e +MD net/minecraft/util/BlockPos south (I)Lnet/minecraft/util/BlockPos; e +MD net/minecraft/util/BlockPos east ()Lnet/minecraft/util/BlockPos; f +MD net/minecraft/util/BlockPos west (I)Lnet/minecraft/util/BlockPos; f +MD net/minecraft/util/BlockPos toLong ()J g +MD net/minecraft/util/BlockPos east (I)Lnet/minecraft/util/BlockPos; g +MD net/minecraft/util/BlockPos$1 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/BlockPos$1$1 computeNext ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/BlockPos$1$1 computeNext ()Ljava/lang/Object; computeNext +MD net/minecraft/util/BlockPos$2 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/BlockPos$2$1 computeNext ()Lnet/minecraft/util/BlockPos$MutableBlockPos; a +MD net/minecraft/util/BlockPos$2$1 computeNext ()Ljava/lang/Object; computeNext +MD net/minecraft/util/BlockPos$MutableBlockPos access$002 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I a +MD net/minecraft/util/BlockPos$MutableBlockPos access$102 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I b +MD net/minecraft/util/BlockPos$MutableBlockPos set (III)Lnet/minecraft/util/BlockPos$MutableBlockPos; c +MD net/minecraft/util/BlockPos$MutableBlockPos access$202 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I c +MD net/minecraft/dispenser/IBlockSource getBlockPos ()Lnet/minecraft/util/BlockPos; d +MD net/minecraft/dispenser/IBlockSource getBlockMetadata ()I f +MD net/minecraft/dispenser/IBlockSource getBlockTileEntity ()Lnet/minecraft/tileentity/TileEntity; h +MD net/minecraft/util/Cartesian access$200 (Ljava/lang/Class;I)[Ljava/lang/Object; a +MD net/minecraft/util/Cartesian cartesianProduct (Ljava/lang/Class;Ljava/lang/Iterable;)Ljava/lang/Iterable; a +MD net/minecraft/util/Cartesian cartesianProduct (Ljava/lang/Iterable;)Ljava/lang/Iterable; a +MD net/minecraft/util/Cartesian createArray (Ljava/lang/Class;I)[Ljava/lang/Object; b +MD net/minecraft/util/Cartesian toArray (Ljava/lang/Class;Ljava/lang/Iterable;)[Ljava/lang/Object; b +MD net/minecraft/util/Cartesian arraysAsLists (Ljava/lang/Iterable;)Ljava/lang/Iterable; b +MD net/minecraft/util/Cartesian$GetList apply ([Ljava/lang/Object;)Ljava/util/List; a +MD net/minecraft/util/Cartesian$GetList apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/util/Cartesian$Product iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/Cartesian$Product$ProductIterator next ()[Ljava/lang/Object; a +MD net/minecraft/util/Cartesian$Product$ProductIterator endOfData ()V b +MD net/minecraft/util/Cartesian$Product$ProductIterator hasNext ()Z hasNext +MD net/minecraft/util/Cartesian$Product$ProductIterator next ()Ljava/lang/Object; next +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem doDispense (Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;Lnet/minecraft/dispenser/IPosition;)V a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem playDispenseSound (Lnet/minecraft/dispenser/IBlockSource;)V a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem spawnDispenseParticles (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem func_82488_a (Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem dispenseStack (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/util/RegistryNamespacedDefaultedByKey validateKey ()V a +MD net/minecraft/util/EnumFacing getIndex ()I a +MD net/minecraft/util/EnumFacing fromAngle (D)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing getFacingFromVector (FFF)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing getFront (I)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing rotateAround (Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing getFacingFromAxis (Lnet/minecraft/util/EnumFacing$AxisDirection;Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing byName (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing random (Ljava/util/Random;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing getHorizontalIndex ()I b +MD net/minecraft/util/EnumFacing getHorizontal (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/util/EnumFacing getAxisDirection ()Lnet/minecraft/util/EnumFacing$AxisDirection; c +MD net/minecraft/util/EnumFacing getOpposite ()Lnet/minecraft/util/EnumFacing; d +MD net/minecraft/util/EnumFacing rotateY ()Lnet/minecraft/util/EnumFacing; e +MD net/minecraft/util/EnumFacing rotateYCCW ()Lnet/minecraft/util/EnumFacing; f +MD net/minecraft/util/EnumFacing getFrontOffsetX ()I g +MD net/minecraft/util/EnumFacing getFrontOffsetY ()I h +MD net/minecraft/util/EnumFacing getFrontOffsetZ ()I i +MD net/minecraft/util/EnumFacing getName2 ()Ljava/lang/String; j +MD net/minecraft/util/EnumFacing getAxis ()Lnet/minecraft/util/EnumFacing$Axis; k +MD net/minecraft/util/EnumFacing getDirectionVec ()Lnet/minecraft/util/Vec3i; m +MD net/minecraft/util/EnumFacing rotateX ()Lnet/minecraft/util/EnumFacing; n +MD net/minecraft/util/EnumFacing rotateZ ()Lnet/minecraft/util/EnumFacing; p +MD net/minecraft/util/EnumFacing toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; valueOf +MD net/minecraft/util/EnumFacing values ()[Lnet/minecraft/util/EnumFacing; values +MD net/minecraft/util/EnumFacing$Axis getName2 ()Ljava/lang/String; a +MD net/minecraft/util/EnumFacing$Axis apply (Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/util/EnumFacing$Axis byName (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Axis; a +MD net/minecraft/util/EnumFacing$Axis isVertical ()Z b +MD net/minecraft/util/EnumFacing$Axis isHorizontal ()Z c +MD net/minecraft/util/EnumFacing$Axis getPlane ()Lnet/minecraft/util/EnumFacing$Plane; d +MD net/minecraft/util/EnumFacing$Axis apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EnumFacing$Axis toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing$Axis valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Axis; valueOf +MD net/minecraft/util/EnumFacing$Axis values ()[Lnet/minecraft/util/EnumFacing$Axis; values +MD net/minecraft/util/EnumFacing$AxisDirection getOffset ()I a +MD net/minecraft/util/EnumFacing$AxisDirection toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing$AxisDirection valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$AxisDirection; valueOf +MD net/minecraft/util/EnumFacing$AxisDirection values ()[Lnet/minecraft/util/EnumFacing$AxisDirection; values +MD net/minecraft/util/EnumFacing$Plane facings ()[Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing$Plane apply (Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/util/EnumFacing$Plane random (Ljava/util/Random;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/util/EnumFacing$Plane apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EnumFacing$Plane iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/EnumFacing$Plane valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Plane; valueOf +MD net/minecraft/util/EnumFacing$Plane values ()[Lnet/minecraft/util/EnumFacing$Plane; values +MD net/minecraft/dispenser/IBehaviorDispenseItem dispense (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/util/ObjectIntIdentityMap getByValue (I)Ljava/lang/Object; a +MD net/minecraft/util/ObjectIntIdentityMap put (Ljava/lang/Object;I)V a +MD net/minecraft/util/ObjectIntIdentityMap get (Ljava/lang/Object;)I b +MD net/minecraft/util/ObjectIntIdentityMap iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/dispenser/ILocation getWorld ()Lnet/minecraft/world/World; i +MD net/minecraft/util/MapPopulator populateMap (Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map; a +MD net/minecraft/util/MapPopulator createMap (Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Map; b +MD net/minecraft/util/RegistryNamespaced getObjectById (I)Ljava/lang/Object; a +MD net/minecraft/util/RegistryNamespaced register (ILjava/lang/Object;Ljava/lang/Object;)V a +MD net/minecraft/util/RegistryNamespaced getIDForObject (Ljava/lang/Object;)I b +MD net/minecraft/util/RegistryNamespaced getNameForObject (Ljava/lang/Object;)Ljava/lang/Object; c +MD net/minecraft/util/EnumParticleTypes getParticleNames ()[Ljava/lang/String; a +MD net/minecraft/util/EnumParticleTypes getParticleFromId (I)Lnet/minecraft/util/EnumParticleTypes; a +MD net/minecraft/util/EnumParticleTypes getParticleName ()Ljava/lang/String; b +MD net/minecraft/util/EnumParticleTypes getParticleID ()I c +MD net/minecraft/util/EnumParticleTypes getArgumentCount ()I d +MD net/minecraft/util/EnumParticleTypes getShouldIgnoreRange ()Z e +MD net/minecraft/util/EnumParticleTypes hasArguments ()Z f +MD net/minecraft/util/EnumParticleTypes valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumParticleTypes; valueOf +MD net/minecraft/util/EnumParticleTypes values ()[Lnet/minecraft/util/EnumParticleTypes; values +MD net/minecraft/dispenser/IPosition getX ()D a +MD net/minecraft/dispenser/IPosition getY ()D b +MD net/minecraft/dispenser/IPosition getZ ()D c +MD net/minecraft/util/IRegistry getObject (Ljava/lang/Object;)Ljava/lang/Object; a +MD net/minecraft/util/IRegistry putObject (Ljava/lang/Object;Ljava/lang/Object;)V a +MD net/minecraft/util/Rotations writeToNBT ()Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/util/Rotations getX ()F b +MD net/minecraft/util/Rotations getY ()F c +MD net/minecraft/util/Rotations getZ ()F d +MD net/minecraft/util/Rotations equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/RegistrySimple createUnderlyingMap ()Ljava/util/Map; b +MD net/minecraft/util/RegistrySimple getKeys ()Ljava/util/Set; c +MD net/minecraft/util/RegistrySimple containsKey (Ljava/lang/Object;)Z d +MD net/minecraft/util/RegistrySimple iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/Vec3i distanceSq (DDD)D c +MD net/minecraft/util/Vec3i distanceSqToCenter (DDD)D d +MD net/minecraft/util/Vec3i crossProduct (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/Vec3i; d +MD net/minecraft/util/Vec3i compareTo (Lnet/minecraft/util/Vec3i;)I g +MD net/minecraft/util/Vec3i distanceSq (Lnet/minecraft/util/Vec3i;)D i +MD net/minecraft/util/Vec3i getX ()I n +MD net/minecraft/util/Vec3i getY ()I o +MD net/minecraft/util/Vec3i getZ ()I p +MD net/minecraft/util/Vec3i compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/util/Vec3i equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/Vec3i hashCode ()I hashCode +MD net/minecraft/util/Vec3i toString ()Ljava/lang/String; toString +MD net/minecraft/util/StatCollector getLastTranslationUpdateTimeInMilliseconds ()J a +MD net/minecraft/util/StatCollector translateToLocal (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/StatCollector translateToLocalFormatted (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/util/StatCollector translateToFallback (Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/util/StatCollector canTranslate (Ljava/lang/String;)Z c +MD net/minecraft/util/StringTranslate getInstance ()Lnet/minecraft/util/StringTranslate; a +MD net/minecraft/util/StringTranslate translateKey (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/StringTranslate translateKeyFormat (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/util/StringTranslate replaceWith (Ljava/util/Map;)V a +MD net/minecraft/util/StringTranslate isKeyTranslated (Ljava/lang/String;)Z b +MD net/minecraft/util/StringTranslate getLastUpdateTimeInMilliseconds ()J c +MD net/minecraft/util/StringTranslate tryTranslateKey (Ljava/lang/String;)Ljava/lang/String; c +MD net/minecraft/nbt/NBTTagByteArray getByteArray ()[B c +MD net/minecraft/nbt/NBTTagCompound readNBT (BLjava/lang/String;Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/nbt/NBTTagCompound merge (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/nbt/NBTTagCompound readType (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)B a +MD net/minecraft/nbt/NBTTagCompound getTag (Ljava/lang/String;)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/nbt/NBTTagCompound setByte (Ljava/lang/String;B)V a +MD net/minecraft/nbt/NBTTagCompound setDouble (Ljava/lang/String;D)V a +MD net/minecraft/nbt/NBTTagCompound setFloat (Ljava/lang/String;F)V a +MD net/minecraft/nbt/NBTTagCompound setInteger (Ljava/lang/String;I)V a +MD net/minecraft/nbt/NBTTagCompound createCrashReport (Ljava/lang/String;ILjava/lang/ClassCastException;)Lnet/minecraft/crash/CrashReport; a +MD net/minecraft/nbt/NBTTagCompound setLong (Ljava/lang/String;J)V a +MD net/minecraft/nbt/NBTTagCompound setTag (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;)V a +MD net/minecraft/nbt/NBTTagCompound writeEntry (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;Ljava/io/DataOutput;)V a +MD net/minecraft/nbt/NBTTagCompound setString (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/nbt/NBTTagCompound setShort (Ljava/lang/String;S)V a +MD net/minecraft/nbt/NBTTagCompound setBoolean (Ljava/lang/String;Z)V a +MD net/minecraft/nbt/NBTTagCompound setByteArray (Ljava/lang/String;[B)V a +MD net/minecraft/nbt/NBTTagCompound setIntArray (Ljava/lang/String;[I)V a +MD net/minecraft/nbt/NBTTagCompound access$000 (Lnet/minecraft/nbt/NBTTagCompound;)Ljava/util/Map; b +MD net/minecraft/nbt/NBTTagCompound readKey (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)Ljava/lang/String; b +MD net/minecraft/nbt/NBTTagCompound getTagId (Ljava/lang/String;)B b +MD net/minecraft/nbt/NBTTagCompound hasKey (Ljava/lang/String;I)Z b +MD net/minecraft/nbt/NBTTagCompound getKeySet ()Ljava/util/Set; c +MD net/minecraft/nbt/NBTTagCompound hasKey (Ljava/lang/String;)Z c +MD net/minecraft/nbt/NBTTagCompound getTagList (Ljava/lang/String;I)Lnet/minecraft/nbt/NBTTagList; c +MD net/minecraft/nbt/NBTTagCompound getByte (Ljava/lang/String;)B d +MD net/minecraft/nbt/NBTTagCompound getShort (Ljava/lang/String;)S e +MD net/minecraft/nbt/NBTTagCompound getInteger (Ljava/lang/String;)I f +MD net/minecraft/nbt/NBTTagCompound getLong (Ljava/lang/String;)J g +MD net/minecraft/nbt/NBTTagCompound getFloat (Ljava/lang/String;)F h +MD net/minecraft/nbt/NBTTagCompound getDouble (Ljava/lang/String;)D i +MD net/minecraft/nbt/NBTTagCompound getString (Ljava/lang/String;)Ljava/lang/String; j +MD net/minecraft/nbt/NBTTagCompound getByteArray (Ljava/lang/String;)[B k +MD net/minecraft/nbt/NBTTagCompound getIntArray (Ljava/lang/String;)[I l +MD net/minecraft/nbt/NBTTagCompound getCompoundTag (Ljava/lang/String;)Lnet/minecraft/nbt/NBTTagCompound; m +MD net/minecraft/nbt/NBTTagCompound getBoolean (Ljava/lang/String;)Z n +MD net/minecraft/nbt/NBTTagCompound removeTag (Ljava/lang/String;)V o +MD net/minecraft/nbt/NBTTagCompound$1 call ()Ljava/lang/String; a +MD net/minecraft/nbt/NBTTagCompound$1 call ()Ljava/lang/Object; call +MD net/minecraft/nbt/NBTTagCompound$2 call ()Ljava/lang/String; a +MD net/minecraft/nbt/NBTTagCompound$2 call ()Ljava/lang/Object; call +MD net/minecraft/nbt/NBTTagIntArray getIntArray ()[I c +MD net/minecraft/nbt/NBTTagList removeTag (I)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/nbt/NBTTagList set (ILnet/minecraft/nbt/NBTBase;)V a +MD net/minecraft/nbt/NBTTagList appendTag (Lnet/minecraft/nbt/NBTBase;)V a +MD net/minecraft/nbt/NBTTagList getCompoundTagAt (I)Lnet/minecraft/nbt/NBTTagCompound; b +MD net/minecraft/nbt/NBTTagList tagCount ()I c +MD net/minecraft/nbt/NBTTagList getIntArrayAt (I)[I c +MD net/minecraft/nbt/NBTTagList getDoubleAt (I)D d +MD net/minecraft/nbt/NBTTagList getFloatAt (I)F e +MD net/minecraft/nbt/NBTTagList getTagType ()I f +MD net/minecraft/nbt/NBTTagList getStringTagAt (I)Ljava/lang/String; f +MD net/minecraft/nbt/NBTTagList get (I)Lnet/minecraft/nbt/NBTBase; g +MD net/minecraft/nbt/NBTSizeTracker read (J)V a +MD net/minecraft/nbt/CompressedStreamTools write (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/DataOutput;)V a +MD net/minecraft/nbt/CompressedStreamTools safeWrite (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/File;)V a +MD net/minecraft/nbt/CompressedStreamTools writeCompressed (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/OutputStream;)V a +MD net/minecraft/nbt/CompressedStreamTools writeTag (Lnet/minecraft/nbt/NBTBase;Ljava/io/DataOutput;)V a +MD net/minecraft/nbt/CompressedStreamTools func_152455_a (Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/DataInputStream;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/File;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/CompressedStreamTools readCompressed (Ljava/io/InputStream;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/CompressedStreamTools write (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/File;)V b +MD net/minecraft/nbt/NBTUtil readGameProfileFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/nbt/NBTUtil writeGameProfile (Lnet/minecraft/nbt/NBTTagCompound;Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/NBTUtil func_181123_a (Lnet/minecraft/nbt/NBTBase;Lnet/minecraft/nbt/NBTBase;Z)Z a +MD net/minecraft/nbt/NBTBase getId ()B a +MD net/minecraft/nbt/NBTBase createNewByType (B)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/nbt/NBTBase read (Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)V a +MD net/minecraft/nbt/NBTBase write (Ljava/io/DataOutput;)V a +MD net/minecraft/nbt/NBTBase getString ()Ljava/lang/String; a_ +MD net/minecraft/nbt/NBTBase copy ()Lnet/minecraft/nbt/NBTBase; b +MD net/minecraft/nbt/NBTBase hasNoTags ()Z c_ +MD net/minecraft/nbt/NBTBase equals (Ljava/lang/Object;)Z equals +MD net/minecraft/nbt/NBTBase hashCode ()I hashCode +MD net/minecraft/nbt/NBTBase toString ()Ljava/lang/String; toString +MD net/minecraft/nbt/NBTBase$NBTPrimitive getLong ()J c +MD net/minecraft/nbt/NBTBase$NBTPrimitive getInt ()I d +MD net/minecraft/nbt/NBTBase$NBTPrimitive getShort ()S e +MD net/minecraft/nbt/NBTBase$NBTPrimitive getByte ()B f +MD net/minecraft/nbt/NBTBase$NBTPrimitive getDouble ()D g +MD net/minecraft/nbt/NBTBase$NBTPrimitive getFloat ()F h +MD net/minecraft/nbt/JsonToNBT getTagFromJson (Ljava/lang/String;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/nbt/JsonToNBT func_150312_a (Ljava/lang/String;C)I a +MD net/minecraft/nbt/JsonToNBT func_179269_a (Ljava/lang/String;I)Ljava/lang/String; a +MD net/minecraft/nbt/JsonToNBT func_150316_a (Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/nbt/JsonToNBT$Any; a +MD net/minecraft/nbt/JsonToNBT func_179270_a (Ljava/lang/String;Z)Lnet/minecraft/nbt/JsonToNBT$Any; a +MD net/minecraft/nbt/JsonToNBT func_179272_a ([Ljava/lang/String;)Lnet/minecraft/nbt/JsonToNBT$Any; a +MD net/minecraft/nbt/JsonToNBT func_150310_b (Ljava/lang/String;)I b +MD net/minecraft/nbt/JsonToNBT func_179271_b (Ljava/lang/String;I)Z b +MD net/minecraft/nbt/JsonToNBT func_150314_a (Ljava/lang/String;Z)Ljava/lang/String; b +MD net/minecraft/nbt/JsonToNBT func_150313_b (Ljava/lang/String;Z)Ljava/lang/String; c +MD net/minecraft/nbt/JsonToNBT func_150311_c (Ljava/lang/String;Z)Ljava/lang/String; d +MD net/minecraft/nbt/JsonToNBT$Any parse ()Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/network/NettyEncryptionTranslator func_150502_a (Lio/netty/buffer/ByteBuf;)[B a +MD net/minecraft/network/NettyEncryptionTranslator cipher (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/network/NettyEncryptionTranslator decipher (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; a +MD net/minecraft/network/NettyEncryptingDecoder decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V a +MD net/minecraft/network/NettyEncryptingDecoder decode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Ljava/util/List;)V decode +MD net/minecraft/network/NettyEncryptingEncoder encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/network/NettyEncryptingEncoder encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NettyCompressionDecoder setCompressionTreshold (I)V a +MD net/minecraft/network/NettyCompressionDecoder decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/network/NettyCompressionEncoder setCompressionTreshold (I)V a +MD net/minecraft/network/NettyCompressionEncoder encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/network/NettyCompressionEncoder encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NetworkManager processReceivedPackets ()V a +MD net/minecraft/network/NetworkManager setCompressionTreshold (I)V a +MD net/minecraft/network/NetworkManager access$000 (Lnet/minecraft/network/NetworkManager;)Lio/netty/channel/Channel; a +MD net/minecraft/network/NetworkManager setConnectionState (Lnet/minecraft/network/EnumConnectionState;)V a +MD net/minecraft/network/NetworkManager setNetHandler (Lnet/minecraft/network/INetHandler;)V a +MD net/minecraft/network/NetworkManager closeChannel (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/network/NetworkManager sendPacket (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/network/NetworkManager sendPacket (Lnet/minecraft/network/Packet;Lio/netty/util/concurrent/GenericFutureListener;[Lio/netty/util/concurrent/GenericFutureListener;)V a +MD net/minecraft/network/NetworkManager dispatchPacket (Lnet/minecraft/network/Packet;[Lio/netty/util/concurrent/GenericFutureListener;)V a +MD net/minecraft/network/NetworkManager channelRead0 (Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;)V a +MD net/minecraft/network/NetworkManager createNetworkManagerAndConnect (Ljava/net/InetAddress;IZ)Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/network/NetworkManager provideLocalClient (Ljava/net/SocketAddress;)Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/network/NetworkManager enableEncryption (Ljavax/crypto/SecretKey;)V a +MD net/minecraft/network/NetworkManager getRemoteAddress ()Ljava/net/SocketAddress; b +MD net/minecraft/network/NetworkManager isLocalChannel ()Z c +MD net/minecraft/network/NetworkManager getIsencrypted ()Z f +MD net/minecraft/network/NetworkManager isChannelOpen ()Z g +MD net/minecraft/network/NetworkManager hasNoChannel ()Z h +MD net/minecraft/network/NetworkManager getNetHandler ()Lnet/minecraft/network/INetHandler; i +MD net/minecraft/network/NetworkManager getExitMessage ()Lnet/minecraft/util/IChatComponent; j +MD net/minecraft/network/NetworkManager disableAutoRead ()V k +MD net/minecraft/network/NetworkManager checkDisconnected ()V l +MD net/minecraft/network/NetworkManager flushOutboundQueue ()V m +MD net/minecraft/network/NetworkManager channelActive (Lio/netty/channel/ChannelHandlerContext;)V channelActive +MD net/minecraft/network/NetworkManager channelInactive (Lio/netty/channel/ChannelHandlerContext;)V channelInactive +MD net/minecraft/network/NetworkManager channelRead0 (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead0 +MD net/minecraft/network/NetworkManager exceptionCaught (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V exceptionCaught +MD net/minecraft/network/NetworkManager$1 load ()Lio/netty/channel/nio/NioEventLoopGroup; a +MD net/minecraft/network/NetworkManager$2 load ()Lio/netty/channel/epoll/EpollEventLoopGroup; a +MD net/minecraft/network/NetworkManager$3 load ()Lio/netty/channel/local/LocalEventLoopGroup; a +MD net/minecraft/network/NetworkManager$4 run ()V run +MD net/minecraft/network/NetworkManager$5 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkManager$6 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener access$100 (Lnet/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener;)Lnet/minecraft/network/Packet; a +MD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener access$200 (Lnet/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener;)[Lio/netty/util/concurrent/GenericFutureListener; b +MD net/minecraft/network/EnumConnectionState getId ()I a +MD net/minecraft/network/EnumConnectionState getById (I)Lnet/minecraft/network/EnumConnectionState; a +MD net/minecraft/network/EnumConnectionState getFromPacket (Lnet/minecraft/network/Packet;)Lnet/minecraft/network/EnumConnectionState; a +MD net/minecraft/network/EnumConnectionState getPacket (Lnet/minecraft/network/EnumPacketDirection;I)Lnet/minecraft/network/Packet; a +MD net/minecraft/network/EnumConnectionState getPacketId (Lnet/minecraft/network/EnumPacketDirection;Lnet/minecraft/network/Packet;)Ljava/lang/Integer; a +MD net/minecraft/network/EnumConnectionState registerPacket (Lnet/minecraft/network/EnumPacketDirection;Ljava/lang/Class;)Lnet/minecraft/network/EnumConnectionState; a +MD net/minecraft/network/EnumConnectionState valueOf (Ljava/lang/String;)Lnet/minecraft/network/EnumConnectionState; valueOf +MD net/minecraft/network/EnumConnectionState values ()[Lnet/minecraft/network/EnumConnectionState; values +MD net/minecraft/network/PacketBuffer readByteArray ()[B a +MD net/minecraft/network/PacketBuffer getVarIntSize (I)I a +MD net/minecraft/network/PacketBuffer writeBlockPos (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/network/PacketBuffer writeNBTTagCompoundToBuffer (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/network/PacketBuffer writeChatComponent (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/network/PacketBuffer readEnumValue (Ljava/lang/Class;)Ljava/lang/Enum; a +MD net/minecraft/network/PacketBuffer writeEnumValue (Ljava/lang/Enum;)V a +MD net/minecraft/network/PacketBuffer writeString (Ljava/lang/String;)Lnet/minecraft/network/PacketBuffer; a +MD net/minecraft/network/PacketBuffer writeUuid (Ljava/util/UUID;)V a +MD net/minecraft/network/PacketBuffer writeItemStackToBuffer (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/network/PacketBuffer writeByteArray ([B)V a +MD net/minecraft/network/PacketBuffer writeVarIntToBuffer (I)V b +MD net/minecraft/network/PacketBuffer writeVarLong (J)V b +MD net/minecraft/network/PacketBuffer readBlockPos ()Lnet/minecraft/util/BlockPos; c +MD net/minecraft/network/PacketBuffer readStringFromBuffer (I)Ljava/lang/String; c +MD net/minecraft/network/PacketBuffer readChatComponent ()Lnet/minecraft/util/IChatComponent; d +MD net/minecraft/network/PacketBuffer readVarIntFromBuffer ()I e +MD net/minecraft/network/PacketBuffer readVarLong ()J f +MD net/minecraft/network/PacketBuffer readUuid ()Ljava/util/UUID; g +MD net/minecraft/network/PacketBuffer readNBTTagCompoundFromBuffer ()Lnet/minecraft/nbt/NBTTagCompound; h +MD net/minecraft/network/PacketBuffer readItemStackFromBuffer ()Lnet/minecraft/item/ItemStack; i +MD net/minecraft/network/PacketBuffer alloc ()Lio/netty/buffer/ByteBufAllocator; alloc +MD net/minecraft/network/PacketBuffer array ()[B array +MD net/minecraft/network/PacketBuffer arrayOffset ()I arrayOffset +MD net/minecraft/network/PacketBuffer bytesBefore (B)I bytesBefore +MD net/minecraft/network/PacketBuffer bytesBefore (IB)I bytesBefore +MD net/minecraft/network/PacketBuffer bytesBefore (IIB)I bytesBefore +MD net/minecraft/network/PacketBuffer capacity ()I capacity +MD net/minecraft/network/PacketBuffer capacity (I)Lio/netty/buffer/ByteBuf; capacity +MD net/minecraft/network/PacketBuffer clear ()Lio/netty/buffer/ByteBuf; clear +MD net/minecraft/network/PacketBuffer compareTo (Lio/netty/buffer/ByteBuf;)I compareTo +MD net/minecraft/network/PacketBuffer compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/network/PacketBuffer copy ()Lio/netty/buffer/ByteBuf; copy +MD net/minecraft/network/PacketBuffer copy (II)Lio/netty/buffer/ByteBuf; copy +MD net/minecraft/network/PacketBuffer discardReadBytes ()Lio/netty/buffer/ByteBuf; discardReadBytes +MD net/minecraft/network/PacketBuffer discardSomeReadBytes ()Lio/netty/buffer/ByteBuf; discardSomeReadBytes +MD net/minecraft/network/PacketBuffer duplicate ()Lio/netty/buffer/ByteBuf; duplicate +MD net/minecraft/network/PacketBuffer ensureWritable (I)Lio/netty/buffer/ByteBuf; ensureWritable +MD net/minecraft/network/PacketBuffer ensureWritable (IZ)I ensureWritable +MD net/minecraft/network/PacketBuffer equals (Ljava/lang/Object;)Z equals +MD net/minecraft/network/PacketBuffer forEachByte (IILio/netty/buffer/ByteBufProcessor;)I forEachByte +MD net/minecraft/network/PacketBuffer forEachByte (Lio/netty/buffer/ByteBufProcessor;)I forEachByte +MD net/minecraft/network/PacketBuffer forEachByteDesc (IILio/netty/buffer/ByteBufProcessor;)I forEachByteDesc +MD net/minecraft/network/PacketBuffer forEachByteDesc (Lio/netty/buffer/ByteBufProcessor;)I forEachByteDesc +MD net/minecraft/network/PacketBuffer getBoolean (I)Z getBoolean +MD net/minecraft/network/PacketBuffer getByte (I)B getByte +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/io/OutputStream;I)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/nio/channels/GatheringByteChannel;I)I getBytes +MD net/minecraft/network/PacketBuffer getBytes (I[B)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (I[BII)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getChar (I)C getChar +MD net/minecraft/network/PacketBuffer getDouble (I)D getDouble +MD net/minecraft/network/PacketBuffer getFloat (I)F getFloat +MD net/minecraft/network/PacketBuffer getInt (I)I getInt +MD net/minecraft/network/PacketBuffer getLong (I)J getLong +MD net/minecraft/network/PacketBuffer getMedium (I)I getMedium +MD net/minecraft/network/PacketBuffer getShort (I)S getShort +MD net/minecraft/network/PacketBuffer getUnsignedByte (I)S getUnsignedByte +MD net/minecraft/network/PacketBuffer getUnsignedInt (I)J getUnsignedInt +MD net/minecraft/network/PacketBuffer getUnsignedMedium (I)I getUnsignedMedium +MD net/minecraft/network/PacketBuffer getUnsignedShort (I)I getUnsignedShort +MD net/minecraft/network/PacketBuffer hasArray ()Z hasArray +MD net/minecraft/network/PacketBuffer hasMemoryAddress ()Z hasMemoryAddress +MD net/minecraft/network/PacketBuffer hashCode ()I hashCode +MD net/minecraft/network/PacketBuffer indexOf (IIB)I indexOf +MD net/minecraft/network/PacketBuffer internalNioBuffer (II)Ljava/nio/ByteBuffer; internalNioBuffer +MD net/minecraft/network/PacketBuffer isDirect ()Z isDirect +MD net/minecraft/network/PacketBuffer isReadable ()Z isReadable +MD net/minecraft/network/PacketBuffer isReadable (I)Z isReadable +MD net/minecraft/network/PacketBuffer isWritable ()Z isWritable +MD net/minecraft/network/PacketBuffer isWritable (I)Z isWritable +MD net/minecraft/network/PacketBuffer markReaderIndex ()Lio/netty/buffer/ByteBuf; markReaderIndex +MD net/minecraft/network/PacketBuffer markWriterIndex ()Lio/netty/buffer/ByteBuf; markWriterIndex +MD net/minecraft/network/PacketBuffer maxCapacity ()I maxCapacity +MD net/minecraft/network/PacketBuffer maxWritableBytes ()I maxWritableBytes +MD net/minecraft/network/PacketBuffer memoryAddress ()J memoryAddress +MD net/minecraft/network/PacketBuffer nioBuffer ()Ljava/nio/ByteBuffer; nioBuffer +MD net/minecraft/network/PacketBuffer nioBuffer (II)Ljava/nio/ByteBuffer; nioBuffer +MD net/minecraft/network/PacketBuffer nioBufferCount ()I nioBufferCount +MD net/minecraft/network/PacketBuffer nioBuffers ()[Ljava/nio/ByteBuffer; nioBuffers +MD net/minecraft/network/PacketBuffer nioBuffers (II)[Ljava/nio/ByteBuffer; nioBuffers +MD net/minecraft/network/PacketBuffer order ()Ljava/nio/ByteOrder; order +MD net/minecraft/network/PacketBuffer order (Ljava/nio/ByteOrder;)Lio/netty/buffer/ByteBuf; order +MD net/minecraft/network/PacketBuffer readBoolean ()Z readBoolean +MD net/minecraft/network/PacketBuffer readByte ()B readByte +MD net/minecraft/network/PacketBuffer readBytes (I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/io/OutputStream;I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/nio/channels/GatheringByteChannel;I)I readBytes +MD net/minecraft/network/PacketBuffer readBytes ([B)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes ([BII)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readChar ()C readChar +MD net/minecraft/network/PacketBuffer readDouble ()D readDouble +MD net/minecraft/network/PacketBuffer readFloat ()F readFloat +MD net/minecraft/network/PacketBuffer readInt ()I readInt +MD net/minecraft/network/PacketBuffer readLong ()J readLong +MD net/minecraft/network/PacketBuffer readMedium ()I readMedium +MD net/minecraft/network/PacketBuffer readShort ()S readShort +MD net/minecraft/network/PacketBuffer readSlice (I)Lio/netty/buffer/ByteBuf; readSlice +MD net/minecraft/network/PacketBuffer readUnsignedByte ()S readUnsignedByte +MD net/minecraft/network/PacketBuffer readUnsignedInt ()J readUnsignedInt +MD net/minecraft/network/PacketBuffer readUnsignedMedium ()I readUnsignedMedium +MD net/minecraft/network/PacketBuffer readUnsignedShort ()I readUnsignedShort +MD net/minecraft/network/PacketBuffer readableBytes ()I readableBytes +MD net/minecraft/network/PacketBuffer readerIndex ()I readerIndex +MD net/minecraft/network/PacketBuffer readerIndex (I)Lio/netty/buffer/ByteBuf; readerIndex +MD net/minecraft/network/PacketBuffer refCnt ()I refCnt +MD net/minecraft/network/PacketBuffer release ()Z release +MD net/minecraft/network/PacketBuffer release (I)Z release +MD net/minecraft/network/PacketBuffer resetReaderIndex ()Lio/netty/buffer/ByteBuf; resetReaderIndex +MD net/minecraft/network/PacketBuffer resetWriterIndex ()Lio/netty/buffer/ByteBuf; resetWriterIndex +MD net/minecraft/network/PacketBuffer retain ()Lio/netty/buffer/ByteBuf; retain +MD net/minecraft/network/PacketBuffer retain ()Lio/netty/util/ReferenceCounted; retain +MD net/minecraft/network/PacketBuffer retain (I)Lio/netty/buffer/ByteBuf; retain +MD net/minecraft/network/PacketBuffer retain (I)Lio/netty/util/ReferenceCounted; retain +MD net/minecraft/network/PacketBuffer setBoolean (IZ)Lio/netty/buffer/ByteBuf; setBoolean +MD net/minecraft/network/PacketBuffer setByte (II)Lio/netty/buffer/ByteBuf; setByte +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/io/InputStream;I)I setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/nio/channels/ScatteringByteChannel;I)I setBytes +MD net/minecraft/network/PacketBuffer setBytes (I[B)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (I[BII)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setChar (II)Lio/netty/buffer/ByteBuf; setChar +MD net/minecraft/network/PacketBuffer setDouble (ID)Lio/netty/buffer/ByteBuf; setDouble +MD net/minecraft/network/PacketBuffer setFloat (IF)Lio/netty/buffer/ByteBuf; setFloat +MD net/minecraft/network/PacketBuffer setIndex (II)Lio/netty/buffer/ByteBuf; setIndex +MD net/minecraft/network/PacketBuffer setInt (II)Lio/netty/buffer/ByteBuf; setInt +MD net/minecraft/network/PacketBuffer setLong (IJ)Lio/netty/buffer/ByteBuf; setLong +MD net/minecraft/network/PacketBuffer setMedium (II)Lio/netty/buffer/ByteBuf; setMedium +MD net/minecraft/network/PacketBuffer setShort (II)Lio/netty/buffer/ByteBuf; setShort +MD net/minecraft/network/PacketBuffer setZero (II)Lio/netty/buffer/ByteBuf; setZero +MD net/minecraft/network/PacketBuffer skipBytes (I)Lio/netty/buffer/ByteBuf; skipBytes +MD net/minecraft/network/PacketBuffer slice ()Lio/netty/buffer/ByteBuf; slice +MD net/minecraft/network/PacketBuffer slice (II)Lio/netty/buffer/ByteBuf; slice +MD net/minecraft/network/PacketBuffer toString ()Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer toString (IILjava/nio/charset/Charset;)Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer toString (Ljava/nio/charset/Charset;)Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer unwrap ()Lio/netty/buffer/ByteBuf; unwrap +MD net/minecraft/network/PacketBuffer writableBytes ()I writableBytes +MD net/minecraft/network/PacketBuffer writeBoolean (Z)Lio/netty/buffer/ByteBuf; writeBoolean +MD net/minecraft/network/PacketBuffer writeByte (I)Lio/netty/buffer/ByteBuf; writeByte +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/io/InputStream;I)I writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/nio/channels/ScatteringByteChannel;I)I writeBytes +MD net/minecraft/network/PacketBuffer writeBytes ([B)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes ([BII)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeChar (I)Lio/netty/buffer/ByteBuf; writeChar +MD net/minecraft/network/PacketBuffer writeDouble (D)Lio/netty/buffer/ByteBuf; writeDouble +MD net/minecraft/network/PacketBuffer writeFloat (F)Lio/netty/buffer/ByteBuf; writeFloat +MD net/minecraft/network/PacketBuffer writeInt (I)Lio/netty/buffer/ByteBuf; writeInt +MD net/minecraft/network/PacketBuffer writeLong (J)Lio/netty/buffer/ByteBuf; writeLong +MD net/minecraft/network/PacketBuffer writeMedium (I)Lio/netty/buffer/ByteBuf; writeMedium +MD net/minecraft/network/PacketBuffer writeShort (I)Lio/netty/buffer/ByteBuf; writeShort +MD net/minecraft/network/PacketBuffer writeZero (I)Lio/netty/buffer/ByteBuf; writeZero +MD net/minecraft/network/PacketBuffer writerIndex ()I writerIndex +MD net/minecraft/network/PacketBuffer writerIndex (I)Lio/netty/buffer/ByteBuf; writerIndex +MD net/minecraft/util/MessageDeserializer decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/util/MessageSerializer encode (Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/util/MessageSerializer encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/INetHandler onDisconnect (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/util/MessageDeserializer2 decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/util/MessageSerializer2 encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/util/MessageSerializer2 encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/util/ChatComponentStyle createDeepCopyIterator (Ljava/lang/Iterable;)Ljava/util/Iterator; a +MD net/minecraft/util/ChatComponentStyle equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ChatComponentStyle hashCode ()I hashCode +MD net/minecraft/util/ChatComponentStyle iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/ChatComponentStyle toString ()Ljava/lang/String; toString +MD net/minecraft/util/ChatComponentStyle$1 apply (Lnet/minecraft/util/IChatComponent;)Ljava/util/Iterator; a +MD net/minecraft/util/ChatComponentStyle$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/util/ChatComponentStyle$2 apply (Lnet/minecraft/util/IChatComponent;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/ChatComponentStyle$2 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/event/ClickEvent getAction ()Lnet/minecraft/event/ClickEvent$Action; a +MD net/minecraft/event/ClickEvent getValue ()Ljava/lang/String; b +MD net/minecraft/event/ClickEvent equals (Ljava/lang/Object;)Z equals +MD net/minecraft/event/ClickEvent hashCode ()I hashCode +MD net/minecraft/event/ClickEvent toString ()Ljava/lang/String; toString +MD net/minecraft/event/ClickEvent$Action shouldAllowInChat ()Z a +MD net/minecraft/event/ClickEvent$Action getValueByCanonicalName (Ljava/lang/String;)Lnet/minecraft/event/ClickEvent$Action; a +MD net/minecraft/event/ClickEvent$Action getCanonicalName ()Ljava/lang/String; b +MD net/minecraft/event/ClickEvent$Action valueOf (Ljava/lang/String;)Lnet/minecraft/event/ClickEvent$Action; valueOf +MD net/minecraft/event/ClickEvent$Action values ()[Lnet/minecraft/event/ClickEvent$Action; values +MD net/minecraft/util/IChatComponent getSiblings ()Ljava/util/List; a +MD net/minecraft/util/IChatComponent appendSibling (Lnet/minecraft/util/IChatComponent;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/IChatComponent setChatStyle (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/IChatComponent appendText (Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/IChatComponent getChatStyle ()Lnet/minecraft/util/ChatStyle; b +MD net/minecraft/util/IChatComponent getUnformattedText ()Ljava/lang/String; c +MD net/minecraft/util/IChatComponent getFormattedText ()Ljava/lang/String; d +MD net/minecraft/util/IChatComponent getUnformattedTextForChat ()Ljava/lang/String; e +MD net/minecraft/util/IChatComponent createCopy ()Lnet/minecraft/util/IChatComponent; f +MD net/minecraft/util/IChatComponent$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/IChatComponent$Serializer componentToJson (Lnet/minecraft/util/IChatComponent;)Ljava/lang/String; a +MD net/minecraft/util/IChatComponent$Serializer serialize (Lnet/minecraft/util/IChatComponent;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/util/IChatComponent$Serializer serializeChatStyle (Lnet/minecraft/util/ChatStyle;Lcom/google/gson/JsonObject;Lcom/google/gson/JsonSerializationContext;)V a +MD net/minecraft/util/IChatComponent$Serializer jsonToComponent (Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/IChatComponent$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/util/IChatComponent$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/ChatComponentProcessor processComponent (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/util/IChatComponent;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/event/HoverEvent getAction ()Lnet/minecraft/event/HoverEvent$Action; a +MD net/minecraft/event/HoverEvent getValue ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/event/HoverEvent equals (Ljava/lang/Object;)Z equals +MD net/minecraft/event/HoverEvent hashCode ()I hashCode +MD net/minecraft/event/HoverEvent toString ()Ljava/lang/String; toString +MD net/minecraft/event/HoverEvent$Action shouldAllowInChat ()Z a +MD net/minecraft/event/HoverEvent$Action getValueByCanonicalName (Ljava/lang/String;)Lnet/minecraft/event/HoverEvent$Action; a +MD net/minecraft/event/HoverEvent$Action getCanonicalName ()Ljava/lang/String; b +MD net/minecraft/event/HoverEvent$Action valueOf (Ljava/lang/String;)Lnet/minecraft/event/HoverEvent$Action; valueOf +MD net/minecraft/event/HoverEvent$Action values ()[Lnet/minecraft/event/HoverEvent$Action; values +MD net/minecraft/util/ChatComponentScore setValue (Ljava/lang/String;)V b +MD net/minecraft/util/ChatComponentScore getName ()Ljava/lang/String; g +MD net/minecraft/util/ChatComponentScore getObjective ()Ljava/lang/String; h +MD net/minecraft/util/ChatComponentScore createCopy ()Lnet/minecraft/util/ChatComponentScore; i +MD net/minecraft/util/ChatComponentSelector getSelector ()Ljava/lang/String; g +MD net/minecraft/util/ChatComponentSelector createCopy ()Lnet/minecraft/util/ChatComponentSelector; h +MD net/minecraft/util/ChatStyle getColor ()Lnet/minecraft/util/EnumChatFormatting; a +MD net/minecraft/util/ChatStyle setColor (Lnet/minecraft/util/EnumChatFormatting;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle setChatClickEvent (Lnet/minecraft/event/ClickEvent;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle setChatHoverEvent (Lnet/minecraft/event/HoverEvent;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle setParentStyle (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle access$502 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/util/EnumChatFormatting;)Lnet/minecraft/util/EnumChatFormatting; a +MD net/minecraft/util/ChatStyle access$702 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/event/ClickEvent;)Lnet/minecraft/event/ClickEvent; a +MD net/minecraft/util/ChatStyle access$802 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/event/HoverEvent;)Lnet/minecraft/event/HoverEvent; a +MD net/minecraft/util/ChatStyle access$002 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; a +MD net/minecraft/util/ChatStyle access$602 (Lnet/minecraft/util/ChatStyle;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/ChatStyle setBold (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle setInsertion (Ljava/lang/String;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle getBold ()Z b +MD net/minecraft/util/ChatStyle access$000 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; b +MD net/minecraft/util/ChatStyle access$102 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; b +MD net/minecraft/util/ChatStyle setItalic (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; b +MD net/minecraft/util/ChatStyle getItalic ()Z c +MD net/minecraft/util/ChatStyle access$100 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; c +MD net/minecraft/util/ChatStyle access$202 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; c +MD net/minecraft/util/ChatStyle setStrikethrough (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; c +MD net/minecraft/util/ChatStyle getStrikethrough ()Z d +MD net/minecraft/util/ChatStyle access$200 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; d +MD net/minecraft/util/ChatStyle access$302 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; d +MD net/minecraft/util/ChatStyle setUnderlined (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; d +MD net/minecraft/util/ChatStyle getUnderlined ()Z e +MD net/minecraft/util/ChatStyle access$300 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; e +MD net/minecraft/util/ChatStyle access$402 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; e +MD net/minecraft/util/ChatStyle setObfuscated (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; e +MD net/minecraft/util/ChatStyle getObfuscated ()Z f +MD net/minecraft/util/ChatStyle access$400 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; f +MD net/minecraft/util/ChatStyle isEmpty ()Z g +MD net/minecraft/util/ChatStyle access$500 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/EnumChatFormatting; g +MD net/minecraft/util/ChatStyle getChatClickEvent ()Lnet/minecraft/event/ClickEvent; h +MD net/minecraft/util/ChatStyle access$600 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/String; h +MD net/minecraft/util/ChatStyle getChatHoverEvent ()Lnet/minecraft/event/HoverEvent; i +MD net/minecraft/util/ChatStyle access$700 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/event/ClickEvent; i +MD net/minecraft/util/ChatStyle getInsertion ()Ljava/lang/String; j +MD net/minecraft/util/ChatStyle access$800 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/event/HoverEvent; j +MD net/minecraft/util/ChatStyle getFormattingCode ()Ljava/lang/String; k +MD net/minecraft/util/ChatStyle createShallowCopy ()Lnet/minecraft/util/ChatStyle; m +MD net/minecraft/util/ChatStyle createDeepCopy ()Lnet/minecraft/util/ChatStyle; n +MD net/minecraft/util/ChatStyle getParent ()Lnet/minecraft/util/ChatStyle; o +MD net/minecraft/util/ChatStyle equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ChatStyle hashCode ()I hashCode +MD net/minecraft/util/ChatStyle toString ()Ljava/lang/String; toString +MD net/minecraft/util/ChatStyle$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/util/ChatStyle; a +MD net/minecraft/util/ChatStyle$Serializer serialize (Lnet/minecraft/util/ChatStyle;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/util/ChatStyle$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/util/ChatStyle$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/ChatComponentText getChatComponentText_TextValue ()Ljava/lang/String; g +MD net/minecraft/util/ChatComponentText createCopy ()Lnet/minecraft/util/ChatComponentText; h +MD net/minecraft/util/ChatComponentTranslation getFormatArgumentAsComponent (I)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/ChatComponentTranslation initializeFromFormat (Ljava/lang/String;)V b +MD net/minecraft/util/ChatComponentTranslation ensureInitialized ()V g +MD net/minecraft/util/ChatComponentTranslation createCopy ()Lnet/minecraft/util/ChatComponentTranslation; h +MD net/minecraft/util/ChatComponentTranslation getKey ()Ljava/lang/String; i +MD net/minecraft/util/ChatComponentTranslation getFormatArgs ()[Ljava/lang/Object; j +MD net/minecraft/network/Packet readPacketData (Lnet/minecraft/network/PacketBuffer;)V a +MD net/minecraft/network/Packet processPacket (Lnet/minecraft/network/INetHandler;)V a +MD net/minecraft/network/Packet writePacketData (Lnet/minecraft/network/PacketBuffer;)V b +MD net/minecraft/network/EnumPacketDirection valueOf (Ljava/lang/String;)Lnet/minecraft/network/EnumPacketDirection; valueOf +MD net/minecraft/network/EnumPacketDirection values ()[Lnet/minecraft/network/EnumPacketDirection; values +MD net/minecraft/network/PacketThreadUtil checkThreadAndEnqueue (Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V a +MD net/minecraft/network/PacketThreadUtil$1 run ()V run +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getX ()D a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getY ()D b +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getZ ()D c +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getYaw ()F d +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getPitch ()F e +MD net/minecraft/network/play/server/S08PacketPlayerPosLook func_179834_f ()Ljava/util/Set; f +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180055_a ()I a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180053_a (I)Ljava/util/Set; a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180056_a (Ljava/util/Set;)I a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180054_b (I)Z b +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags; valueOf +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags values ()[Lnet/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags; values +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerPosLook (Lnet/minecraft/network/play/server/S08PacketPlayerPosLook;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnObject (Lnet/minecraft/network/play/server/S0EPacketSpawnObject;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnExperienceOrb (Lnet/minecraft/network/play/server/S11PacketSpawnExperienceOrb;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnGlobalEntity (Lnet/minecraft/network/play/server/S2CPacketSpawnGlobalEntity;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnMob (Lnet/minecraft/network/play/server/S0FPacketSpawnMob;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPainting (Lnet/minecraft/network/play/server/S10PacketSpawnPainting;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPlayer (Lnet/minecraft/network/play/server/S0CPacketSpawnPlayer;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleAnimation (Lnet/minecraft/network/play/server/S0BPacketAnimation;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleStatistics (Lnet/minecraft/network/play/server/S37PacketStatistics;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockBreakAnim (Lnet/minecraft/network/play/server/S25PacketBlockBreakAnim;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateTileEntity (Lnet/minecraft/network/play/server/S35PacketUpdateTileEntity;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockAction (Lnet/minecraft/network/play/server/S24PacketBlockAction;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockChange (Lnet/minecraft/network/play/server/S23PacketBlockChange;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleServerDifficulty (Lnet/minecraft/network/play/server/S41PacketServerDifficulty;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleTabComplete (Lnet/minecraft/network/play/server/S3APacketTabComplete;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleChat (Lnet/minecraft/network/play/server/S02PacketChat;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleMultiBlockChange (Lnet/minecraft/network/play/server/S22PacketMultiBlockChange;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleConfirmTransaction (Lnet/minecraft/network/play/server/S32PacketConfirmTransaction;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleCloseWindow (Lnet/minecraft/network/play/server/S2EPacketCloseWindow;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleOpenWindow (Lnet/minecraft/network/play/server/S2DPacketOpenWindow;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleWindowItems (Lnet/minecraft/network/play/server/S30PacketWindowItems;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleWindowProperty (Lnet/minecraft/network/play/server/S31PacketWindowProperty;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetSlot (Lnet/minecraft/network/play/server/S2FPacketSetSlot;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleCustomPayload (Lnet/minecraft/network/play/server/S3FPacketCustomPayload;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleDisconnect (Lnet/minecraft/network/play/server/S40PacketDisconnect;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityStatus (Lnet/minecraft/network/play/server/S19PacketEntityStatus;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityNBT (Lnet/minecraft/network/play/server/S49PacketUpdateEntityNBT;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleExplosion (Lnet/minecraft/network/play/server/S27PacketExplosion;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetCompressionLevel (Lnet/minecraft/network/play/server/S46PacketSetCompressionLevel;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleChangeGameState (Lnet/minecraft/network/play/server/S2BPacketChangeGameState;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleKeepAlive (Lnet/minecraft/network/play/server/S00PacketKeepAlive;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleChunkData (Lnet/minecraft/network/play/server/S21PacketChunkData;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleMapChunkBulk (Lnet/minecraft/network/play/server/S26PacketMapChunkBulk;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEffect (Lnet/minecraft/network/play/server/S28PacketEffect;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleParticles (Lnet/minecraft/network/play/server/S2APacketParticles;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSoundEffect (Lnet/minecraft/network/play/server/S29PacketSoundEffect;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleJoinGame (Lnet/minecraft/network/play/server/S01PacketJoinGame;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleMaps (Lnet/minecraft/network/play/server/S34PacketMaps;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityMovement (Lnet/minecraft/network/play/server/S14PacketEntity;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSignEditorOpen (Lnet/minecraft/network/play/server/S36PacketSignEditorOpen;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerAbilities (Lnet/minecraft/network/play/server/S39PacketPlayerAbilities;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleCombatEvent (Lnet/minecraft/network/play/server/S42PacketCombatEvent;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerListItem (Lnet/minecraft/network/play/server/S38PacketPlayerListItem;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleUseBed (Lnet/minecraft/network/play/server/S0APacketUseBed;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleDestroyEntities (Lnet/minecraft/network/play/server/S13PacketDestroyEntities;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleRemoveEntityEffect (Lnet/minecraft/network/play/server/S1EPacketRemoveEntityEffect;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleResourcePack (Lnet/minecraft/network/play/server/S48PacketResourcePackSend;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleRespawn (Lnet/minecraft/network/play/server/S07PacketRespawn;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityHeadLook (Lnet/minecraft/network/play/server/S19PacketEntityHeadLook;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleWorldBorder (Lnet/minecraft/network/play/server/S44PacketWorldBorder;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleCamera (Lnet/minecraft/network/play/server/S43PacketCamera;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleHeldItemChange (Lnet/minecraft/network/play/server/S09PacketHeldItemChange;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleDisplayScoreboard (Lnet/minecraft/network/play/server/S3DPacketDisplayScoreboard;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityMetadata (Lnet/minecraft/network/play/server/S1CPacketEntityMetadata;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityAttach (Lnet/minecraft/network/play/server/S1BPacketEntityAttach;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityVelocity (Lnet/minecraft/network/play/server/S12PacketEntityVelocity;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityEquipment (Lnet/minecraft/network/play/server/S04PacketEntityEquipment;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetExperience (Lnet/minecraft/network/play/server/S1FPacketSetExperience;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateHealth (Lnet/minecraft/network/play/server/S06PacketUpdateHealth;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleScoreboardObjective (Lnet/minecraft/network/play/server/S3BPacketScoreboardObjective;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleTeams (Lnet/minecraft/network/play/server/S3EPacketTeams;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateScore (Lnet/minecraft/network/play/server/S3CPacketUpdateScore;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPosition (Lnet/minecraft/network/play/server/S05PacketSpawnPosition;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleTimeUpdate (Lnet/minecraft/network/play/server/S03PacketTimeUpdate;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleTitle (Lnet/minecraft/network/play/server/S45PacketTitle;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateSign (Lnet/minecraft/network/play/server/S33PacketUpdateSign;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerListHeaderFooter (Lnet/minecraft/network/play/server/S47PacketPlayerListHeaderFooter;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleCollectItem (Lnet/minecraft/network/play/server/S0DPacketCollectItem;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityTeleport (Lnet/minecraft/network/play/server/S18PacketEntityTeleport;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityProperties (Lnet/minecraft/network/play/server/S20PacketEntityProperties;)V a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityEffect (Lnet/minecraft/network/play/server/S1DPacketEntityEffect;)V a +MD net/minecraft/network/play/server/S0EPacketSpawnObject getEntityID ()I a +MD net/minecraft/network/play/server/S0EPacketSpawnObject setX (I)V a +MD net/minecraft/network/play/server/S0EPacketSpawnObject processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S0EPacketSpawnObject getX ()I b +MD net/minecraft/network/play/server/S0EPacketSpawnObject setY (I)V b +MD net/minecraft/network/play/server/S0EPacketSpawnObject getY ()I c +MD net/minecraft/network/play/server/S0EPacketSpawnObject setZ (I)V c +MD net/minecraft/network/play/server/S0EPacketSpawnObject getZ ()I d +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedX (I)V d +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedX ()I e +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedY (I)V e +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedY ()I f +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedZ (I)V f +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedZ ()I g +MD net/minecraft/network/play/server/S0EPacketSpawnObject func_149002_g (I)V g +MD net/minecraft/network/play/server/S0EPacketSpawnObject getPitch ()I h +MD net/minecraft/network/play/server/S0EPacketSpawnObject getYaw ()I i +MD net/minecraft/network/play/server/S0EPacketSpawnObject getType ()I j +MD net/minecraft/network/play/server/S0EPacketSpawnObject func_149009_m ()I k +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getEntityID ()I a +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getX ()I b +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getY ()I c +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getZ ()I d +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getXPValue ()I e +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149052_c ()I a +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149051_d ()I b +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149050_e ()I c +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149049_f ()I d +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149053_g ()I e +MD net/minecraft/network/play/server/S0FPacketSpawnMob func_149027_c ()Ljava/util/List; a +MD net/minecraft/network/play/server/S0FPacketSpawnMob processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S0FPacketSpawnMob getEntityID ()I b +MD net/minecraft/network/play/server/S0FPacketSpawnMob getEntityType ()I c +MD net/minecraft/network/play/server/S0FPacketSpawnMob getX ()I d +MD net/minecraft/network/play/server/S0FPacketSpawnMob getY ()I e +MD net/minecraft/network/play/server/S0FPacketSpawnMob getZ ()I f +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityX ()I g +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityY ()I h +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityZ ()I i +MD net/minecraft/network/play/server/S0FPacketSpawnMob getYaw ()B j +MD net/minecraft/network/play/server/S0FPacketSpawnMob getPitch ()B k +MD net/minecraft/network/play/server/S0FPacketSpawnMob getHeadPitch ()B l +MD net/minecraft/network/play/server/S10PacketSpawnPainting getEntityID ()I a +MD net/minecraft/network/play/server/S10PacketSpawnPainting processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S10PacketSpawnPainting getPosition ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/network/play/server/S10PacketSpawnPainting getFacing ()Lnet/minecraft/util/EnumFacing; c +MD net/minecraft/network/play/server/S10PacketSpawnPainting getTitle ()Ljava/lang/String; d +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer func_148944_c ()Ljava/util/List; a +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getEntityID ()I b +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getPlayer ()Ljava/util/UUID; c +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getX ()I d +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getY ()I e +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getZ ()I f +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getYaw ()B g +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getPitch ()B h +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getCurrentItemID ()I i +MD net/minecraft/network/play/server/S0BPacketAnimation getEntityID ()I a +MD net/minecraft/network/play/server/S0BPacketAnimation processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S0BPacketAnimation getAnimationType ()I b +MD net/minecraft/network/play/server/S37PacketStatistics func_148974_c ()Ljava/util/Map; a +MD net/minecraft/network/play/server/S37PacketStatistics processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getBreakerId ()I a +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getPosition ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getProgress ()I c +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getTileEntityType ()I b +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getNbtCompound ()Lnet/minecraft/nbt/NBTTagCompound; c +MD net/minecraft/network/play/server/S24PacketBlockAction getBlockPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S24PacketBlockAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S24PacketBlockAction getData1 ()I b +MD net/minecraft/network/play/server/S24PacketBlockAction getData2 ()I c +MD net/minecraft/network/play/server/S24PacketBlockAction getBlockType ()Lnet/minecraft/block/Block; d +MD net/minecraft/network/play/server/S23PacketBlockChange getBlockState ()Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/network/play/server/S23PacketBlockChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S23PacketBlockChange getBlockPosition ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/network/play/server/S41PacketServerDifficulty isDifficultyLocked ()Z a +MD net/minecraft/network/play/server/S41PacketServerDifficulty processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S41PacketServerDifficulty getDifficulty ()Lnet/minecraft/world/EnumDifficulty; b +MD net/minecraft/network/play/server/S3APacketTabComplete func_149630_c ()[Ljava/lang/String; a +MD net/minecraft/network/play/server/S3APacketTabComplete processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S02PacketChat getChatComponent ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/network/play/server/S02PacketChat processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S02PacketChat isChat ()Z b +MD net/minecraft/network/play/server/S02PacketChat getType ()B c +MD net/minecraft/network/play/server/S22PacketMultiBlockChange getChangedBlocks ()[Lnet/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData; a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange access$000 (Lnet/minecraft/network/play/server/S22PacketMultiBlockChange;)Lnet/minecraft/world/ChunkCoordIntPair; a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData getPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData func_180089_b ()S b +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData getBlockState ()Lnet/minecraft/block/state/IBlockState; c +MD net/minecraft/network/play/server/S32PacketConfirmTransaction getWindowId ()I a +MD net/minecraft/network/play/server/S32PacketConfirmTransaction processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S32PacketConfirmTransaction getActionNumber ()S b +MD net/minecraft/network/play/server/S32PacketConfirmTransaction func_148888_e ()Z c +MD net/minecraft/network/play/server/S2EPacketCloseWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2DPacketOpenWindow getWindowId ()I a +MD net/minecraft/network/play/server/S2DPacketOpenWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2DPacketOpenWindow getGuiId ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S2DPacketOpenWindow getWindowTitle ()Lnet/minecraft/util/IChatComponent; c +MD net/minecraft/network/play/server/S2DPacketOpenWindow getSlotCount ()I d +MD net/minecraft/network/play/server/S2DPacketOpenWindow getEntityId ()I e +MD net/minecraft/network/play/server/S2DPacketOpenWindow hasSlots ()Z f +MD net/minecraft/network/play/server/S30PacketWindowItems func_148911_c ()I a +MD net/minecraft/network/play/server/S30PacketWindowItems processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S30PacketWindowItems getItemStacks ()[Lnet/minecraft/item/ItemStack; b +MD net/minecraft/network/play/server/S31PacketWindowProperty getWindowId ()I a +MD net/minecraft/network/play/server/S31PacketWindowProperty processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S31PacketWindowProperty getVarIndex ()I b +MD net/minecraft/network/play/server/S31PacketWindowProperty getVarValue ()I c +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149175_c ()I a +MD net/minecraft/network/play/server/S2FPacketSetSlot processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149173_d ()I b +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149174_e ()Lnet/minecraft/item/ItemStack; c +MD net/minecraft/network/play/server/S3FPacketCustomPayload getChannelName ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S3FPacketCustomPayload processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3FPacketCustomPayload getBufferData ()Lnet/minecraft/network/PacketBuffer; b +MD net/minecraft/network/play/server/S40PacketDisconnect getReason ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/network/play/server/S40PacketDisconnect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S19PacketEntityStatus getOpCode ()B a +MD net/minecraft/network/play/server/S19PacketEntityStatus getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/server/S19PacketEntityStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S27PacketExplosion func_149149_c ()F a +MD net/minecraft/network/play/server/S27PacketExplosion processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S27PacketExplosion func_149144_d ()F b +MD net/minecraft/network/play/server/S27PacketExplosion func_149147_e ()F c +MD net/minecraft/network/play/server/S27PacketExplosion getX ()D d +MD net/minecraft/network/play/server/S27PacketExplosion getY ()D e +MD net/minecraft/network/play/server/S27PacketExplosion getZ ()D f +MD net/minecraft/network/play/server/S27PacketExplosion getStrength ()F g +MD net/minecraft/network/play/server/S27PacketExplosion getAffectedBlockPositions ()Ljava/util/List; h +MD net/minecraft/network/play/server/S46PacketSetCompressionLevel getThreshold ()I a +MD net/minecraft/network/play/server/S46PacketSetCompressionLevel processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2BPacketChangeGameState getGameState ()I a +MD net/minecraft/network/play/server/S2BPacketChangeGameState processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2BPacketChangeGameState func_149137_d ()F b +MD net/minecraft/network/play/server/S00PacketKeepAlive func_149134_c ()I a +MD net/minecraft/network/play/server/S00PacketKeepAlive processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedDataBytes ()[B a +MD net/minecraft/network/play/server/S21PacketChunkData func_180737_a (IZZ)I a +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedData (Lnet/minecraft/world/chunk/Chunk;ZZI)Lnet/minecraft/network/play/server/S21PacketChunkData$Extracted; a +MD net/minecraft/network/play/server/S21PacketChunkData processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S21PacketChunkData func_179757_a ([B[BI)I a +MD net/minecraft/network/play/server/S21PacketChunkData getChunkX ()I b +MD net/minecraft/network/play/server/S21PacketChunkData getChunkZ ()I c +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedSize ()I d +MD net/minecraft/network/play/server/S21PacketChunkData func_149274_i ()Z e +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkCount ()I a +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkX (I)I a +MD net/minecraft/network/play/server/S26PacketMapChunkBulk processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkZ (I)I b +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkBytes (I)[B c +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkSize (I)I d +MD net/minecraft/network/play/server/S28PacketEffect isSoundServerwide ()Z a +MD net/minecraft/network/play/server/S28PacketEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S28PacketEffect getSoundType ()I b +MD net/minecraft/network/play/server/S28PacketEffect getSoundData ()I c +MD net/minecraft/network/play/server/S28PacketEffect getSoundPos ()Lnet/minecraft/util/BlockPos; d +MD net/minecraft/network/play/server/S2APacketParticles getParticleType ()Lnet/minecraft/util/EnumParticleTypes; a +MD net/minecraft/network/play/server/S2APacketParticles processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S2APacketParticles isLongDistance ()Z b +MD net/minecraft/network/play/server/S2APacketParticles getXCoordinate ()D c +MD net/minecraft/network/play/server/S2APacketParticles getYCoordinate ()D d +MD net/minecraft/network/play/server/S2APacketParticles getZCoordinate ()D e +MD net/minecraft/network/play/server/S2APacketParticles getXOffset ()F f +MD net/minecraft/network/play/server/S2APacketParticles getYOffset ()F g +MD net/minecraft/network/play/server/S2APacketParticles getZOffset ()F h +MD net/minecraft/network/play/server/S2APacketParticles getParticleSpeed ()F i +MD net/minecraft/network/play/server/S2APacketParticles getParticleCount ()I j +MD net/minecraft/network/play/server/S2APacketParticles getParticleArgs ()[I k +MD net/minecraft/network/play/server/S29PacketSoundEffect getSoundName ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S29PacketSoundEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S29PacketSoundEffect getX ()D b +MD net/minecraft/network/play/server/S29PacketSoundEffect getY ()D c +MD net/minecraft/network/play/server/S29PacketSoundEffect getZ ()D d +MD net/minecraft/network/play/server/S29PacketSoundEffect getVolume ()F e +MD net/minecraft/network/play/server/S29PacketSoundEffect getPitch ()F f +MD net/minecraft/network/play/server/S01PacketJoinGame getEntityId ()I a +MD net/minecraft/network/play/server/S01PacketJoinGame processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S01PacketJoinGame isHardcoreMode ()Z b +MD net/minecraft/network/play/server/S01PacketJoinGame getGameType ()Lnet/minecraft/world/WorldSettings$GameType; c +MD net/minecraft/network/play/server/S01PacketJoinGame getDimension ()I d +MD net/minecraft/network/play/server/S01PacketJoinGame getDifficulty ()Lnet/minecraft/world/EnumDifficulty; e +MD net/minecraft/network/play/server/S01PacketJoinGame getMaxPlayers ()I f +MD net/minecraft/network/play/server/S01PacketJoinGame getWorldType ()Lnet/minecraft/world/WorldType; g +MD net/minecraft/network/play/server/S01PacketJoinGame isReducedDebugInfo ()Z h +MD net/minecraft/network/play/server/S34PacketMaps getMapId ()I a +MD net/minecraft/network/play/server/S34PacketMaps setMapdataTo (Lnet/minecraft/world/storage/MapData;)V a +MD net/minecraft/network/play/server/S34PacketMaps processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S14PacketEntity func_149062_c ()B a +MD net/minecraft/network/play/server/S14PacketEntity getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/server/S14PacketEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S14PacketEntity func_149061_d ()B b +MD net/minecraft/network/play/server/S14PacketEntity func_149064_e ()B c +MD net/minecraft/network/play/server/S14PacketEntity func_149066_f ()B d +MD net/minecraft/network/play/server/S14PacketEntity func_149063_g ()B e +MD net/minecraft/network/play/server/S14PacketEntity func_149060_h ()Z f +MD net/minecraft/network/play/server/S14PacketEntity getOnGround ()Z g +MD net/minecraft/network/play/server/S14PacketEntity toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S36PacketSignEditorOpen getSignPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S36PacketSignEditorOpen processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isInvulnerable ()Z a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setFlySpeed (F)V a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setInvulnerable (Z)V a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isFlying ()Z b +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setWalkSpeed (F)V b +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setFlying (Z)V b +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isAllowFlying ()Z c +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setAllowFlying (Z)V c +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isCreativeMode ()Z d +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setCreativeMode (Z)V d +MD net/minecraft/network/play/server/S39PacketPlayerAbilities getFlySpeed ()F e +MD net/minecraft/network/play/server/S39PacketPlayerAbilities getWalkSpeed ()F f +MD net/minecraft/network/play/server/S42PacketCombatEvent processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S42PacketCombatEvent$Event valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S42PacketCombatEvent$Event; valueOf +MD net/minecraft/network/play/server/S42PacketCombatEvent$Event values ()[Lnet/minecraft/network/play/server/S42PacketCombatEvent$Event; values +MD net/minecraft/network/play/server/S38PacketPlayerListItem getEntries ()Ljava/util/List; a +MD net/minecraft/network/play/server/S38PacketPlayerListItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S38PacketPlayerListItem getAction ()Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; b +MD net/minecraft/network/play/server/S38PacketPlayerListItem toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S38PacketPlayerListItem$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; valueOf +MD net/minecraft/network/play/server/S38PacketPlayerListItem$Action values ()[Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; values +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getProfile ()Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getPing ()I b +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getGameMode ()Lnet/minecraft/world/WorldSettings$GameType; c +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getDisplayName ()Lnet/minecraft/util/IChatComponent; d +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S0APacketUseBed getBedPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S0APacketUseBed getPlayer (Lnet/minecraft/world/World;)Lnet/minecraft/entity/player/EntityPlayer; a +MD net/minecraft/network/play/server/S0APacketUseBed processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S13PacketDestroyEntities getEntityIDs ()[I a +MD net/minecraft/network/play/server/S13PacketDestroyEntities processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect getEntityId ()I a +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect getEffectId ()I b +MD net/minecraft/network/play/server/S48PacketResourcePackSend getURL ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S48PacketResourcePackSend processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S48PacketResourcePackSend getHash ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S07PacketRespawn getDimensionID ()I a +MD net/minecraft/network/play/server/S07PacketRespawn processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S07PacketRespawn getDifficulty ()Lnet/minecraft/world/EnumDifficulty; b +MD net/minecraft/network/play/server/S07PacketRespawn getGameType ()Lnet/minecraft/world/WorldSettings$GameType; c +MD net/minecraft/network/play/server/S07PacketRespawn getWorldType ()Lnet/minecraft/world/WorldType; d +MD net/minecraft/network/play/server/S19PacketEntityHeadLook getYaw ()B a +MD net/minecraft/network/play/server/S19PacketEntityHeadLook getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/server/S19PacketEntityHeadLook processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S44PacketWorldBorder func_179788_a (Lnet/minecraft/world/border/WorldBorder;)V a +MD net/minecraft/network/play/server/S44PacketWorldBorder processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S44PacketWorldBorder$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S44PacketWorldBorder$Action; valueOf +MD net/minecraft/network/play/server/S44PacketWorldBorder$Action values ()[Lnet/minecraft/network/play/server/S44PacketWorldBorder$Action; values +MD net/minecraft/network/play/server/S43PacketCamera getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/server/S43PacketCamera processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S09PacketHeldItemChange getHeldItemHotbarIndex ()I a +MD net/minecraft/network/play/server/S09PacketHeldItemChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard func_149371_c ()I a +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard func_149370_d ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S1CPacketEntityMetadata func_149376_c ()Ljava/util/List; a +MD net/minecraft/network/play/server/S1CPacketEntityMetadata processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1CPacketEntityMetadata getEntityId ()I b +MD net/minecraft/network/play/server/S1BPacketEntityAttach getLeash ()I a +MD net/minecraft/network/play/server/S1BPacketEntityAttach processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1BPacketEntityAttach getEntityId ()I b +MD net/minecraft/network/play/server/S1BPacketEntityAttach getVehicleEntityId ()I c +MD net/minecraft/network/play/server/S12PacketEntityVelocity getEntityID ()I a +MD net/minecraft/network/play/server/S12PacketEntityVelocity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionX ()I b +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionY ()I c +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionZ ()I d +MD net/minecraft/network/play/server/S04PacketEntityEquipment getItemStack ()Lnet/minecraft/item/ItemStack; a +MD net/minecraft/network/play/server/S04PacketEntityEquipment processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S04PacketEntityEquipment getEntityID ()I b +MD net/minecraft/network/play/server/S04PacketEntityEquipment getEquipmentSlot ()I c +MD net/minecraft/network/play/server/S1FPacketSetExperience func_149397_c ()F a +MD net/minecraft/network/play/server/S1FPacketSetExperience processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1FPacketSetExperience getTotalExperience ()I b +MD net/minecraft/network/play/server/S1FPacketSetExperience getLevel ()I c +MD net/minecraft/network/play/server/S06PacketUpdateHealth getHealth ()F a +MD net/minecraft/network/play/server/S06PacketUpdateHealth processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S06PacketUpdateHealth getFoodLevel ()I b +MD net/minecraft/network/play/server/S06PacketUpdateHealth getSaturationLevel ()F c +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149339_c ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149337_d ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149338_e ()I c +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_179817_d ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; d +MD net/minecraft/network/play/server/S3EPacketTeams getName ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S3EPacketTeams processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3EPacketTeams getDisplayName ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S3EPacketTeams getPrefix ()Ljava/lang/String; c +MD net/minecraft/network/play/server/S3EPacketTeams getSuffix ()Ljava/lang/String; d +MD net/minecraft/network/play/server/S3EPacketTeams getPlayers ()Ljava/util/Collection; e +MD net/minecraft/network/play/server/S3EPacketTeams getAction ()I f +MD net/minecraft/network/play/server/S3EPacketTeams getFriendlyFlags ()I g +MD net/minecraft/network/play/server/S3EPacketTeams getColor ()I h +MD net/minecraft/network/play/server/S3EPacketTeams getNameTagVisibility ()Ljava/lang/String; i +MD net/minecraft/network/play/server/S3CPacketUpdateScore getPlayerName ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S3CPacketUpdateScore processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S3CPacketUpdateScore getObjectiveName ()Ljava/lang/String; b +MD net/minecraft/network/play/server/S3CPacketUpdateScore getScoreValue ()I c +MD net/minecraft/network/play/server/S3CPacketUpdateScore getScoreAction ()Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; d +MD net/minecraft/network/play/server/S3CPacketUpdateScore$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; valueOf +MD net/minecraft/network/play/server/S3CPacketUpdateScore$Action values ()[Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; values +MD net/minecraft/network/play/server/S05PacketSpawnPosition getSpawnPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S05PacketSpawnPosition processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S03PacketTimeUpdate getTotalWorldTime ()J a +MD net/minecraft/network/play/server/S03PacketTimeUpdate processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S03PacketTimeUpdate getWorldTime ()J b +MD net/minecraft/network/play/server/S45PacketTitle getType ()Lnet/minecraft/network/play/server/S45PacketTitle$Type; a +MD net/minecraft/network/play/server/S45PacketTitle processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S45PacketTitle getMessage ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/network/play/server/S45PacketTitle getFadeInTime ()I c +MD net/minecraft/network/play/server/S45PacketTitle getDisplayTime ()I d +MD net/minecraft/network/play/server/S45PacketTitle getFadeOutTime ()I e +MD net/minecraft/network/play/server/S45PacketTitle$Type getNames ()[Ljava/lang/String; a +MD net/minecraft/network/play/server/S45PacketTitle$Type byName (Ljava/lang/String;)Lnet/minecraft/network/play/server/S45PacketTitle$Type; a +MD net/minecraft/network/play/server/S45PacketTitle$Type valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S45PacketTitle$Type; valueOf +MD net/minecraft/network/play/server/S45PacketTitle$Type values ()[Lnet/minecraft/network/play/server/S45PacketTitle$Type; values +MD net/minecraft/network/play/server/S33PacketUpdateSign getPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/server/S33PacketUpdateSign processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S33PacketUpdateSign getLines ()[Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter getHeader ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter getFooter ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/network/play/server/S0DPacketCollectItem getCollectedItemEntityID ()I a +MD net/minecraft/network/play/server/S0DPacketCollectItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S0DPacketCollectItem getEntityID ()I b +MD net/minecraft/network/play/server/S18PacketEntityTeleport getEntityId ()I a +MD net/minecraft/network/play/server/S18PacketEntityTeleport processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S18PacketEntityTeleport getX ()I b +MD net/minecraft/network/play/server/S18PacketEntityTeleport getY ()I c +MD net/minecraft/network/play/server/S18PacketEntityTeleport getZ ()I d +MD net/minecraft/network/play/server/S18PacketEntityTeleport getYaw ()B e +MD net/minecraft/network/play/server/S18PacketEntityTeleport getPitch ()B f +MD net/minecraft/network/play/server/S18PacketEntityTeleport getOnGround ()Z g +MD net/minecraft/network/play/server/S20PacketEntityProperties getEntityId ()I a +MD net/minecraft/network/play/server/S20PacketEntityProperties processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S20PacketEntityProperties func_149441_d ()Ljava/util/List; b +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151409_a ()Ljava/lang/String; a +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151410_b ()D b +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151408_c ()Ljava/util/Collection; c +MD net/minecraft/network/play/server/S1DPacketEntityEffect func_149429_c ()Z a +MD net/minecraft/network/play/server/S1DPacketEntityEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V a +MD net/minecraft/network/play/server/S1DPacketEntityEffect getEntityId ()I b +MD net/minecraft/network/play/server/S1DPacketEntityEffect getEffectId ()B c +MD net/minecraft/network/play/server/S1DPacketEntityEffect getAmplifier ()B d +MD net/minecraft/network/play/server/S1DPacketEntityEffect getDuration ()I e +MD net/minecraft/network/play/server/S1DPacketEntityEffect func_179707_f ()Z f +MD net/minecraft/network/play/INetHandlerPlayServer processTabComplete (Lnet/minecraft/network/play/client/C14PacketTabComplete;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processChatMessage (Lnet/minecraft/network/play/client/C01PacketChatMessage;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processClientStatus (Lnet/minecraft/network/play/client/C16PacketClientStatus;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processClientSettings (Lnet/minecraft/network/play/client/C15PacketClientSettings;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processConfirmTransaction (Lnet/minecraft/network/play/client/C0FPacketConfirmTransaction;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processEnchantItem (Lnet/minecraft/network/play/client/C11PacketEnchantItem;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processClickWindow (Lnet/minecraft/network/play/client/C0EPacketClickWindow;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processCloseWindow (Lnet/minecraft/network/play/client/C0DPacketCloseWindow;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processVanilla250Packet (Lnet/minecraft/network/play/client/C17PacketCustomPayload;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processUseEntity (Lnet/minecraft/network/play/client/C02PacketUseEntity;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processKeepAlive (Lnet/minecraft/network/play/client/C00PacketKeepAlive;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayer (Lnet/minecraft/network/play/client/C03PacketPlayer;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerAbilities (Lnet/minecraft/network/play/client/C13PacketPlayerAbilities;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerDigging (Lnet/minecraft/network/play/client/C07PacketPlayerDigging;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processEntityAction (Lnet/minecraft/network/play/client/C0BPacketEntityAction;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processInput (Lnet/minecraft/network/play/client/C0CPacketInput;)V a +MD net/minecraft/network/play/INetHandlerPlayServer handleResourcePackStatus (Lnet/minecraft/network/play/client/C19PacketResourcePackStatus;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processHeldItemChange (Lnet/minecraft/network/play/client/C09PacketHeldItemChange;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processCreativeInventoryAction (Lnet/minecraft/network/play/client/C10PacketCreativeInventoryAction;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processUpdateSign (Lnet/minecraft/network/play/client/C12PacketUpdateSign;)V a +MD net/minecraft/network/play/INetHandlerPlayServer handleAnimation (Lnet/minecraft/network/play/client/C0APacketAnimation;)V a +MD net/minecraft/network/play/INetHandlerPlayServer handleSpectate (Lnet/minecraft/network/play/client/C18PacketSpectate;)V a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerBlockPlacement (Lnet/minecraft/network/play/client/C08PacketPlayerBlockPlacement;)V a +MD net/minecraft/network/play/client/C14PacketTabComplete getMessage ()Ljava/lang/String; a +MD net/minecraft/network/play/client/C14PacketTabComplete processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C14PacketTabComplete getTargetBlock ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/network/play/client/C01PacketChatMessage getMessage ()Ljava/lang/String; a +MD net/minecraft/network/play/client/C01PacketChatMessage processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C16PacketClientStatus getStatus ()Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; a +MD net/minecraft/network/play/client/C16PacketClientStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C16PacketClientStatus$EnumState valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; valueOf +MD net/minecraft/network/play/client/C16PacketClientStatus$EnumState values ()[Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; values +MD net/minecraft/network/play/client/C15PacketClientSettings getLang ()Ljava/lang/String; a +MD net/minecraft/network/play/client/C15PacketClientSettings processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C15PacketClientSettings getChatVisibility ()Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; c +MD net/minecraft/network/play/client/C15PacketClientSettings isColorsEnabled ()Z d +MD net/minecraft/network/play/client/C15PacketClientSettings getModelPartFlags ()I e +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction getWindowId ()I a +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction getUid ()S b +MD net/minecraft/network/play/client/C11PacketEnchantItem getWindowId ()I a +MD net/minecraft/network/play/client/C11PacketEnchantItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C11PacketEnchantItem getButton ()I b +MD net/minecraft/network/play/client/C0EPacketClickWindow getWindowId ()I a +MD net/minecraft/network/play/client/C0EPacketClickWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C0EPacketClickWindow getSlotId ()I b +MD net/minecraft/network/play/client/C0EPacketClickWindow getUsedButton ()I c +MD net/minecraft/network/play/client/C0EPacketClickWindow getActionNumber ()S d +MD net/minecraft/network/play/client/C0EPacketClickWindow getClickedItem ()Lnet/minecraft/item/ItemStack; e +MD net/minecraft/network/play/client/C0EPacketClickWindow getMode ()I f +MD net/minecraft/network/play/client/C0DPacketCloseWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C17PacketCustomPayload getChannelName ()Ljava/lang/String; a +MD net/minecraft/network/play/client/C17PacketCustomPayload processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C17PacketCustomPayload getBufferData ()Lnet/minecraft/network/PacketBuffer; b +MD net/minecraft/network/play/client/C02PacketUseEntity getAction ()Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; a +MD net/minecraft/network/play/client/C02PacketUseEntity getEntityFromWorld (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/client/C02PacketUseEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C02PacketUseEntity getHitVec ()Lnet/minecraft/util/Vec3; b +MD net/minecraft/network/play/client/C02PacketUseEntity$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; valueOf +MD net/minecraft/network/play/client/C02PacketUseEntity$Action values ()[Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; values +MD net/minecraft/network/play/client/C00PacketKeepAlive getKey ()I a +MD net/minecraft/network/play/client/C00PacketKeepAlive processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C03PacketPlayer getPositionX ()D a +MD net/minecraft/network/play/client/C03PacketPlayer processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C03PacketPlayer setMoving (Z)V a +MD net/minecraft/network/play/client/C03PacketPlayer getPositionY ()D b +MD net/minecraft/network/play/client/C03PacketPlayer getPositionZ ()D c +MD net/minecraft/network/play/client/C03PacketPlayer getYaw ()F d +MD net/minecraft/network/play/client/C03PacketPlayer getPitch ()F e +MD net/minecraft/network/play/client/C03PacketPlayer isOnGround ()Z f +MD net/minecraft/network/play/client/C03PacketPlayer isMoving ()Z g +MD net/minecraft/network/play/client/C03PacketPlayer getRotating ()Z h +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isInvulnerable ()Z a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setFlySpeed (F)V a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setInvulnerable (Z)V a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isFlying ()Z b +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setWalkSpeed (F)V b +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setFlying (Z)V b +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isAllowFlying ()Z c +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setAllowFlying (Z)V c +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isCreativeMode ()Z d +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setCreativeMode (Z)V d +MD net/minecraft/network/play/client/C07PacketPlayerDigging getPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/client/C07PacketPlayerDigging processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C07PacketPlayerDigging getFacing ()Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/network/play/client/C07PacketPlayerDigging getStatus ()Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; c +MD net/minecraft/network/play/client/C07PacketPlayerDigging$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; valueOf +MD net/minecraft/network/play/client/C07PacketPlayerDigging$Action values ()[Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; values +MD net/minecraft/network/play/client/C0BPacketEntityAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C0BPacketEntityAction getAction ()Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; b +MD net/minecraft/network/play/client/C0BPacketEntityAction getAuxData ()I c +MD net/minecraft/network/play/client/C0BPacketEntityAction$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; valueOf +MD net/minecraft/network/play/client/C0BPacketEntityAction$Action values ()[Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; values +MD net/minecraft/network/play/client/C0CPacketInput getStrafeSpeed ()F a +MD net/minecraft/network/play/client/C0CPacketInput processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C0CPacketInput getForwardSpeed ()F b +MD net/minecraft/network/play/client/C0CPacketInput isJumping ()Z c +MD net/minecraft/network/play/client/C0CPacketInput isSneaking ()Z d +MD net/minecraft/network/play/client/C19PacketResourcePackStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C19PacketResourcePackStatus$Action; valueOf +MD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action values ()[Lnet/minecraft/network/play/client/C19PacketResourcePackStatus$Action; values +MD net/minecraft/network/play/client/C09PacketHeldItemChange getSlotId ()I a +MD net/minecraft/network/play/client/C09PacketHeldItemChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction getSlotId ()I a +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction getStack ()Lnet/minecraft/item/ItemStack; b +MD net/minecraft/network/play/client/C12PacketUpdateSign getPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/client/C12PacketUpdateSign processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C12PacketUpdateSign getLines ()[Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/network/play/client/C0APacketAnimation processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C18PacketSpectate processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C18PacketSpectate getEntity (Lnet/minecraft/world/WorldServer;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockDirection ()I b +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getStack ()Lnet/minecraft/item/ItemStack; c +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetX ()F d +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetY ()F e +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetZ ()F f +MD net/minecraft/network/handshake/client/C00Handshake getRequestedState ()Lnet/minecraft/network/EnumConnectionState; a +MD net/minecraft/network/handshake/client/C00Handshake processPacket (Lnet/minecraft/network/handshake/INetHandlerHandshakeServer;)V a +MD net/minecraft/network/handshake/client/C00Handshake getProtocolVersion ()I b +MD net/minecraft/network/handshake/INetHandlerHandshakeServer processHandshake (Lnet/minecraft/network/handshake/client/C00Handshake;)V a +MD net/minecraft/network/login/INetHandlerLoginClient handleLoginSuccess (Lnet/minecraft/network/login/server/S02PacketLoginSuccess;)V a +MD net/minecraft/network/login/INetHandlerLoginClient handleEncryptionRequest (Lnet/minecraft/network/login/server/S01PacketEncryptionRequest;)V a +MD net/minecraft/network/login/INetHandlerLoginClient handleEnableCompression (Lnet/minecraft/network/login/server/S03PacketEnableCompression;)V a +MD net/minecraft/network/login/INetHandlerLoginClient handleDisconnect (Lnet/minecraft/network/login/server/S00PacketDisconnect;)V a +MD net/minecraft/network/login/server/S02PacketLoginSuccess getProfile ()Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/network/login/server/S02PacketLoginSuccess processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V a +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getServerId ()Ljava/lang/String; a +MD net/minecraft/network/login/server/S01PacketEncryptionRequest processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V a +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getPublicKey ()Ljava/security/PublicKey; b +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getVerifyToken ()[B c +MD net/minecraft/network/login/server/S03PacketEnableCompression getCompressionTreshold ()I a +MD net/minecraft/network/login/server/S03PacketEnableCompression processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V a +MD net/minecraft/network/login/server/S00PacketDisconnect func_149603_c ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/network/login/server/S00PacketDisconnect processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V a +MD net/minecraft/network/login/INetHandlerLoginServer processLoginStart (Lnet/minecraft/network/login/client/C00PacketLoginStart;)V a +MD net/minecraft/network/login/INetHandlerLoginServer processEncryptionResponse (Lnet/minecraft/network/login/client/C01PacketEncryptionResponse;)V a +MD net/minecraft/network/login/client/C00PacketLoginStart getProfile ()Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/network/login/client/C00PacketLoginStart processPacket (Lnet/minecraft/network/login/INetHandlerLoginServer;)V a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse getSecretKey (Ljava/security/PrivateKey;)Ljavax/crypto/SecretKey; a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse processPacket (Lnet/minecraft/network/login/INetHandlerLoginServer;)V a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse getVerifyToken (Ljava/security/PrivateKey;)[B b +MD net/minecraft/network/status/INetHandlerStatusClient handlePong (Lnet/minecraft/network/status/server/S01PacketPong;)V a +MD net/minecraft/network/status/INetHandlerStatusClient handleServerInfo (Lnet/minecraft/network/status/server/S00PacketServerInfo;)V a +MD net/minecraft/network/status/server/S01PacketPong processPacket (Lnet/minecraft/network/status/INetHandlerStatusClient;)V a +MD net/minecraft/network/status/server/S00PacketServerInfo getResponse ()Lnet/minecraft/network/ServerStatusResponse; a +MD net/minecraft/network/status/server/S00PacketServerInfo processPacket (Lnet/minecraft/network/status/INetHandlerStatusClient;)V a +MD net/minecraft/network/ServerStatusResponse getServerDescription ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/network/ServerStatusResponse setServerDescription (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/network/ServerStatusResponse setFavicon (Ljava/lang/String;)V a +MD net/minecraft/network/ServerStatusResponse setPlayerCountData (Lnet/minecraft/network/ServerStatusResponse$PlayerCountData;)V a +MD net/minecraft/network/ServerStatusResponse setProtocolVersionInfo (Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier;)V a +MD net/minecraft/network/ServerStatusResponse getPlayerCountData ()Lnet/minecraft/network/ServerStatusResponse$PlayerCountData; b +MD net/minecraft/network/ServerStatusResponse getProtocolVersionInfo ()Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier; c +MD net/minecraft/network/ServerStatusResponse getFavicon ()Ljava/lang/String; d +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getMaxPlayers ()I a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData setPlayers ([Lcom/mojang/authlib/GameProfile;)V a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getOnlinePlayerCount ()I b +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getPlayers ()[Lcom/mojang/authlib/GameProfile; c +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse$PlayerCountData; a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse$PlayerCountData;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse; a +MD net/minecraft/network/ServerStatusResponse$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/network/ServerStatusResponse$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier getName ()Ljava/lang/String; a +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier getProtocol ()I b +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier; a +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/status/INetHandlerStatusServer processPing (Lnet/minecraft/network/status/client/C01PacketPing;)V a +MD net/minecraft/network/status/INetHandlerStatusServer processServerQuery (Lnet/minecraft/network/status/client/C00PacketServerQuery;)V a +MD net/minecraft/network/status/client/C01PacketPing getClientTime ()J a +MD net/minecraft/network/status/client/C01PacketPing processPacket (Lnet/minecraft/network/status/INetHandlerStatusServer;)V a +MD net/minecraft/network/status/client/C00PacketServerQuery processPacket (Lnet/minecraft/network/status/INetHandlerStatusServer;)V a +MD net/minecraft/util/ResourceLocation getResourcePath ()Ljava/lang/String; a +MD net/minecraft/util/ResourceLocation splitObjectName (Ljava/lang/String;)[Ljava/lang/String; a +MD net/minecraft/util/ResourceLocation getResourceDomain ()Ljava/lang/String; b +MD net/minecraft/util/ResourceLocation equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ResourceLocation hashCode ()I hashCode +MD net/minecraft/util/ResourceLocation toString ()Ljava/lang/String; toString +MD net/minecraft/dispenser/BehaviorProjectileDispense func_82498_a ()F a +MD net/minecraft/dispenser/BehaviorProjectileDispense getProjectileEntity (Lnet/minecraft/world/World;Lnet/minecraft/dispenser/IPosition;)Lnet/minecraft/entity/IProjectile; a +MD net/minecraft/dispenser/BehaviorProjectileDispense func_82500_b ()F b +MD net/minecraft/init/Bootstrap isRegistered ()Z a +MD net/minecraft/init/Bootstrap printToSYSOUT (Ljava/lang/String;)V a +MD net/minecraft/init/Bootstrap registerDispenserBehaviors ()V b +MD net/minecraft/init/Bootstrap register ()V c +MD net/minecraft/init/Bootstrap redirectOutputToLog ()V d +MD net/minecraft/client/util/JsonException func_151379_a (Ljava/lang/Exception;)Lnet/minecraft/client/util/JsonException; a +MD net/minecraft/client/util/JsonException func_151380_a (Ljava/lang/String;)V a +MD net/minecraft/client/util/JsonException func_151381_b (Ljava/lang/String;)V b +MD net/minecraft/client/util/JsonException getMessage ()Ljava/lang/String; getMessage +MD net/minecraft/client/util/JsonException$Entry func_151373_a (Ljava/lang/String;)V a +MD net/minecraft/client/util/JsonException$Entry access$100 (Lnet/minecraft/client/util/JsonException$Entry;Ljava/lang/String;)V a +MD net/minecraft/client/util/JsonException$Entry func_151372_b ()Ljava/lang/String; b +MD net/minecraft/client/util/JsonException$Entry access$202 (Lnet/minecraft/client/util/JsonException$Entry;Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/client/util/JsonException$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/server/ServerEula hasAcceptedEULA ()Z a +MD net/minecraft/server/ServerEula loadEULAFile (Ljava/io/File;)Z a +MD net/minecraft/server/ServerEula createEULAFile ()V b +MD net/minecraft/util/LoggingPrintStream logString (Ljava/lang/String;)V a +MD net/minecraft/util/LoggingPrintStream println (Ljava/lang/Object;)V println +MD net/minecraft/util/LoggingPrintStream println (Ljava/lang/String;)V println +MD net/minecraft/network/ThreadQuickExitException fillInStackTrace ()Ljava/lang/Throwable; fillInStackTrace +MD net/minecraft/network/rcon/IServer getHostname ()Ljava/lang/String; E +MD net/minecraft/network/rcon/IServer getPort ()I F +MD net/minecraft/network/rcon/IServer getMotd ()Ljava/lang/String; G +MD net/minecraft/network/rcon/IServer getMinecraftVersion ()Ljava/lang/String; H +MD net/minecraft/network/rcon/IServer getCurrentPlayerCount ()I I +MD net/minecraft/network/rcon/IServer getMaxPlayers ()I J +MD net/minecraft/network/rcon/IServer getAllUsernames ()[Ljava/lang/String; K +MD net/minecraft/network/rcon/IServer isDebuggingEnabled ()Z M +MD net/minecraft/network/rcon/IServer getFolderName ()Ljava/lang/String; U +MD net/minecraft/network/rcon/IServer saveProperties ()V a +MD net/minecraft/network/rcon/IServer getIntProperty (Ljava/lang/String;I)I a +MD net/minecraft/network/rcon/IServer setProperty (Ljava/lang/String;Ljava/lang/Object;)V a +MD net/minecraft/network/rcon/IServer getStringProperty (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/network/rcon/IServer handleRConCommand (Ljava/lang/String;)Ljava/lang/String; a_ +MD net/minecraft/network/rcon/IServer getSettingsFilename ()Ljava/lang/String; b +MD net/minecraft/network/rcon/IServer getPlugins ()Ljava/lang/String; d_ +MD net/minecraft/network/rcon/IServer logInfo (Ljava/lang/String;)V e +MD net/minecraft/network/rcon/IServer logWarning (Ljava/lang/String;)V f +MD net/minecraft/network/rcon/IServer logSevere (Ljava/lang/String;)V g +MD net/minecraft/network/rcon/IServer logDebug (Ljava/lang/String;)V h +MD net/minecraft/scoreboard/ServerScoreboard func_96547_a (Lnet/minecraft/scoreboard/ScoreboardSaveData;)V a +MD net/minecraft/scoreboard/ServerScoreboard markSaveDataDirty ()V b +MD net/minecraft/scoreboard/ServerScoreboard func_96550_d (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/List; d +MD net/minecraft/scoreboard/ServerScoreboard func_96549_e (Lnet/minecraft/scoreboard/ScoreObjective;)V e +MD net/minecraft/scoreboard/ServerScoreboard func_96548_f (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/List; f +MD net/minecraft/scoreboard/ServerScoreboard sendDisplaySlotRemovalPackets (Lnet/minecraft/scoreboard/ScoreObjective;)V g +MD net/minecraft/scoreboard/ServerScoreboard func_96552_h (Lnet/minecraft/scoreboard/ScoreObjective;)I h +MD net/minecraft/server/dedicated/PropertyManager generateNewProperties ()V a +MD net/minecraft/server/dedicated/PropertyManager getIntProperty (Ljava/lang/String;I)I a +MD net/minecraft/server/dedicated/PropertyManager getLongProperty (Ljava/lang/String;J)J a +MD net/minecraft/server/dedicated/PropertyManager setProperty (Ljava/lang/String;Ljava/lang/Object;)V a +MD net/minecraft/server/dedicated/PropertyManager getStringProperty (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/server/dedicated/PropertyManager getBooleanProperty (Ljava/lang/String;Z)Z a +MD net/minecraft/server/dedicated/PropertyManager saveProperties ()V b +MD net/minecraft/server/dedicated/PropertyManager getPropertiesFile ()Ljava/io/File; c +MD net/minecraft/util/ITickable update ()V c +MD net/minecraft/server/dedicated/DedicatedPlayerList loadOpsList ()V A +MD net/minecraft/server/dedicated/DedicatedPlayerList saveOpsList ()V B +MD net/minecraft/server/dedicated/DedicatedPlayerList readWhiteList ()V C +MD net/minecraft/server/dedicated/DedicatedPlayerList saveWhiteList ()V D +MD net/minecraft/server/dedicated/DedicatedPlayerList getServerInstance ()Lnet/minecraft/server/dedicated/DedicatedServer; b +MD net/minecraft/server/dedicated/DedicatedPlayerList saveIpBanList ()V w +MD net/minecraft/server/dedicated/DedicatedPlayerList saveUserBanList ()V x +MD net/minecraft/server/dedicated/DedicatedPlayerList loadIpBanList ()V y +MD net/minecraft/server/dedicated/DedicatedPlayerList loadUserBansList ()V z +MD net/minecraft/server/dedicated/DedicatedServer addPendingCommand (Ljava/lang/String;Lnet/minecraft/command/ICommandSender;)V a +MD net/minecraft/server/dedicated/DedicatedServer getBooleanProperty (Ljava/lang/String;Z)Z a +MD net/minecraft/server/dedicated/DedicatedServer executePendingCommands ()V aO +MD net/minecraft/server/dedicated/DedicatedServer getConfigurationManager ()Lnet/minecraft/server/dedicated/DedicatedPlayerList; aP +MD net/minecraft/server/dedicated/DedicatedServer setGuiEnabled ()V aQ +MD net/minecraft/server/dedicated/DedicatedServer convertFiles ()Z aR +MD net/minecraft/server/dedicated/DedicatedServer getMaxTickTime ()J aS +MD net/minecraft/server/dedicated/DedicatedServer access$000 ()Lorg/apache/logging/log4j/Logger; aT +MD net/minecraft/server/dedicated/DedicatedServer sleepFiveSeconds ()V aU +MD net/minecraft/server/dedicated/DedicatedServer$1 run ()V run +MD net/minecraft/server/dedicated/DedicatedServer$2 run ()V run +MD net/minecraft/server/dedicated/DedicatedServer$3 call ()Ljava/lang/String; a +MD net/minecraft/server/dedicated/DedicatedServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/dedicated/DedicatedServer$4 call ()Ljava/lang/String; a +MD net/minecraft/server/dedicated/DedicatedServer$4 call ()Ljava/lang/Object; call +MD net/minecraft/server/dedicated/ServerHangWatchdog scheduleHalt ()V a +MD net/minecraft/server/dedicated/ServerHangWatchdog run ()V run +MD net/minecraft/server/dedicated/ServerHangWatchdog$1 run ()V run +MD net/minecraft/server/gui/MinecraftServerGui getStatsComponent ()Ljavax/swing/JComponent; a +MD net/minecraft/server/gui/MinecraftServerGui func_164247_a (Ljavax/swing/JTextArea;Ljavax/swing/JScrollPane;Ljava/lang/String;)V a +MD net/minecraft/server/gui/MinecraftServerGui createServerGui (Lnet/minecraft/server/dedicated/DedicatedServer;)V a +MD net/minecraft/server/gui/MinecraftServerGui access$000 (Lnet/minecraft/server/gui/MinecraftServerGui;)Lnet/minecraft/server/dedicated/DedicatedServer; a +MD net/minecraft/server/gui/MinecraftServerGui getPlayerListComponent ()Ljavax/swing/JComponent; b +MD net/minecraft/server/gui/MinecraftServerGui getLogComponent ()Ljavax/swing/JComponent; c +MD net/minecraft/server/gui/MinecraftServerGui$1 windowClosing (Ljava/awt/event/WindowEvent;)V windowClosing +MD net/minecraft/server/gui/MinecraftServerGui$2 actionPerformed (Ljava/awt/event/ActionEvent;)V actionPerformed +MD net/minecraft/server/gui/MinecraftServerGui$3 focusGained (Ljava/awt/event/FocusEvent;)V focusGained +MD net/minecraft/server/gui/MinecraftServerGui$4 run ()V run +MD net/minecraft/server/gui/MinecraftServerGui$5 run ()V run +MD net/minecraft/server/gui/StatsComponent func_120034_a ()V a +MD net/minecraft/server/gui/StatsComponent access$000 (Lnet/minecraft/server/gui/StatsComponent;)V a +MD net/minecraft/server/gui/StatsComponent func_120035_a ([J)D a +MD net/minecraft/server/gui/StatsComponent paint (Ljava/awt/Graphics;)V paint +MD net/minecraft/server/gui/StatsComponent$1 actionPerformed (Ljava/awt/event/ActionEvent;)V actionPerformed +MD net/minecraft/client/renderer/DestroyBlockProgress setPartialBlockDamage (I)V a +MD net/minecraft/client/renderer/DestroyBlockProgress getPosition ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/client/renderer/DestroyBlockProgress setCloudUpdateTick (I)V b +MD net/minecraft/client/renderer/DestroyBlockProgress getPartialBlockDamage ()I c +MD net/minecraft/client/renderer/DestroyBlockProgress getCreationCloudUpdateTick ()I d +MD net/minecraft/world/demo/DemoWorldManager sendDemoReminder ()V f +MD net/minecraft/entity/EntityTracker updateTrackedEntities ()V a +MD net/minecraft/entity/EntityTracker func_180245_a (Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/entity/EntityTracker func_85172_a (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/chunk/Chunk;)V a +MD net/minecraft/entity/EntityTracker trackEntity (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/entity/EntityTracker trackEntity (Lnet/minecraft/entity/Entity;II)V a +MD net/minecraft/entity/EntityTracker addEntityToTracker (Lnet/minecraft/entity/Entity;IIZ)V a +MD net/minecraft/entity/EntityTracker sendToAllTrackingEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/network/Packet;)V a +MD net/minecraft/entity/EntityTracker removePlayerFromTrackers (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/entity/EntityTracker untrackEntity (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/entity/EntityTracker func_151248_b (Lnet/minecraft/entity/Entity;Lnet/minecraft/network/Packet;)V b +MD net/minecraft/entity/EntityTracker$1 call ()Ljava/lang/String; a +MD net/minecraft/entity/EntityTracker$1 call ()Ljava/lang/Object; call +MD net/minecraft/server/management/PlayerManager getWorldServer ()Lnet/minecraft/world/WorldServer; a +MD net/minecraft/server/management/PlayerManager setPlayerViewRadius (I)V a +MD net/minecraft/server/management/PlayerManager hasPlayerInstance (II)Z a +MD net/minecraft/server/management/PlayerManager overlaps (IIIII)Z a +MD net/minecraft/server/management/PlayerManager getPlayerInstance (IIZ)Lnet/minecraft/server/management/PlayerManager$PlayerInstance; a +MD net/minecraft/server/management/PlayerManager markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/server/management/PlayerManager access$100 (Lnet/minecraft/server/management/PlayerManager;)Lnet/minecraft/world/WorldServer; a +MD net/minecraft/server/management/PlayerManager addPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/server/management/PlayerManager isPlayerWatchingChunk (Lnet/minecraft/entity/player/EntityPlayerMP;II)Z a +MD net/minecraft/server/management/PlayerManager updatePlayerInstances ()V b +MD net/minecraft/server/management/PlayerManager getFurthestViewableBlock (I)I b +MD net/minecraft/server/management/PlayerManager access$200 (Lnet/minecraft/server/management/PlayerManager;)Lnet/minecraft/util/LongHashMap; b +MD net/minecraft/server/management/PlayerManager filterChunkLoadQueue (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/server/management/PlayerManager access$000 ()Lorg/apache/logging/log4j/Logger; c +MD net/minecraft/server/management/PlayerManager access$300 (Lnet/minecraft/server/management/PlayerManager;)Ljava/util/List; c +MD net/minecraft/server/management/PlayerManager removePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V c +MD net/minecraft/server/management/PlayerManager access$400 (Lnet/minecraft/server/management/PlayerManager;)Ljava/util/List; d +MD net/minecraft/server/management/PlayerManager updateMountedMovingPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V d +MD net/minecraft/server/management/PlayerManager$PlayerInstance processChunk ()V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance flagChunkForUpdate (III)V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance sendTileToAllPlayersWatchingChunk (Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance increaseInhabitedTime (Lnet/minecraft/world/chunk/Chunk;)V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance sendToAllPlayersWatchingChunk (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance access$500 (Lnet/minecraft/server/management/PlayerManager$PlayerInstance;)Lnet/minecraft/world/ChunkCoordIntPair; a +MD net/minecraft/server/management/PlayerManager$PlayerInstance addPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/server/management/PlayerManager$PlayerInstance onUpdate ()V b +MD net/minecraft/server/management/PlayerManager$PlayerInstance access$600 (Lnet/minecraft/server/management/PlayerManager$PlayerInstance;)Ljava/util/List; b +MD net/minecraft/server/management/PlayerManager$PlayerInstance removePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/world/gen/ChunkProviderServer func_152380_a ()Ljava/util/List; a +MD net/minecraft/world/gen/ChunkProviderServer saveChunkExtraData (Lnet/minecraft/world/chunk/Chunk;)V a +MD net/minecraft/world/gen/ChunkProviderServer unloadAllChunks ()V b +MD net/minecraft/world/gen/ChunkProviderServer dropChunk (II)V b +MD net/minecraft/world/gen/ChunkProviderServer saveChunkData (Lnet/minecraft/world/chunk/Chunk;)V b +MD net/minecraft/world/gen/ChunkProviderServer loadChunk (II)Lnet/minecraft/world/chunk/Chunk; c +MD net/minecraft/world/gen/ChunkProviderServer loadChunkFromFile (II)Lnet/minecraft/world/chunk/Chunk; e +MD net/minecraft/world/WorldServer saveLevel ()V a +MD net/minecraft/world/WorldServer getTileEntitiesIn (IIIIII)Ljava/util/List; a +MD net/minecraft/world/WorldServer fireBlockEvent (Lnet/minecraft/block/BlockEventData;)Z a +MD net/minecraft/world/WorldServer adjustPosToNearbyEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/WorldServer spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDIDDDD[I)V a +MD net/minecraft/world/WorldServer spawnParticle (Lnet/minecraft/util/EnumParticleTypes;ZDDDIDDDD[I)V a +MD net/minecraft/world/WorldServer getEntityFromUuid (Ljava/util/UUID;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/world/WorldServer canCreatureTypeSpawnHere (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/WorldServer getSpawnListEntryForTypeAt (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry; a +MD net/minecraft/world/WorldServer saveAllChunks (ZLnet/minecraft/util/IProgressUpdate;)V a +MD net/minecraft/world/WorldServer resetRainAndThunder ()V ag +MD net/minecraft/world/WorldServer canSpawnNPCs ()Z ah +MD net/minecraft/world/WorldServer canSpawnAnimals ()Z ai +MD net/minecraft/world/WorldServer setDebugWorldSettings ()V aj +MD net/minecraft/world/WorldServer sendQueuedBlockEvents ()V ak +MD net/minecraft/world/WorldServer createSpawnPosition (Lnet/minecraft/world/WorldSettings;)V b +MD net/minecraft/world/WorldServer wakeAllPlayers ()V e +MD net/minecraft/world/WorldServer areAllPlayersAsleep ()Z f +MD net/minecraft/world/WorldServer resetUpdateEntityTick ()V j +MD net/minecraft/world/WorldServer createBonusChest ()V l +MD net/minecraft/world/WorldServer getSpawnCoordinate ()Lnet/minecraft/util/BlockPos; m +MD net/minecraft/world/WorldServer saveChunkData ()V n +MD net/minecraft/world/WorldServer flush ()V o +MD net/minecraft/world/WorldServer getMinecraftServer ()Lnet/minecraft/server/MinecraftServer; r +MD net/minecraft/world/WorldServer getEntityTracker ()Lnet/minecraft/entity/EntityTracker; s +MD net/minecraft/world/WorldServer getPlayerManager ()Lnet/minecraft/server/management/PlayerManager; t +MD net/minecraft/world/WorldServer getDefaultTeleporter ()Lnet/minecraft/world/Teleporter; u +MD net/minecraft/world/WorldServer$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/world/WorldServer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/player/EntityPlayerMP getStatFile ()Lnet/minecraft/stats/StatisticsFile; A +MD net/minecraft/entity/player/EntityPlayerMP getSpectatingEntity ()Lnet/minecraft/entity/Entity; C +MD net/minecraft/entity/player/EntityPlayerMP getLastActiveTime ()J D +MD net/minecraft/entity/player/EntityPlayerMP getTabListDisplayName ()Lnet/minecraft/util/IChatComponent; E +MD net/minecraft/entity/player/EntityPlayerMP handleFalling (DZ)V a +MD net/minecraft/entity/player/EntityPlayerMP setEntityActionState (FFZZ)V a +MD net/minecraft/entity/player/EntityPlayerMP sendTileEntityUpdate (Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/entity/player/EntityPlayerMP handleClientSettings (Lnet/minecraft/network/play/client/C15PacketClientSettings;)V a +MD net/minecraft/entity/player/EntityPlayerMP loadResourcePack (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/entity/player/EntityPlayerMP sendContainerToPlayer (Lnet/minecraft/inventory/Container;)V a +MD net/minecraft/entity/player/EntityPlayerMP canPlayersAttack ()Z cr +MD net/minecraft/entity/player/EntityPlayerMP getNextWindowId ()V cs +MD net/minecraft/entity/player/EntityPlayerMP removeEntity (Lnet/minecraft/entity/Entity;)V d +MD net/minecraft/entity/player/EntityPlayerMP setSpectatingEntity (Lnet/minecraft/entity/Entity;)V e +MD net/minecraft/entity/player/EntityPlayerMP addSelfToInternalCraftingInventory ()V g_ +MD net/minecraft/entity/player/EntityPlayerMP updateBiomesExplored ()V i_ +MD net/minecraft/entity/player/EntityPlayerMP onUpdateEntity ()V l +MD net/minecraft/entity/player/EntityPlayerMP updateHeldItem ()V o +MD net/minecraft/entity/player/EntityPlayerMP closeContainer ()V p +MD net/minecraft/entity/player/EntityPlayerMP mountEntityAndWakeUp ()V q +MD net/minecraft/entity/player/EntityPlayerMP setPlayerHealthUpdated ()V r +MD net/minecraft/entity/player/EntityPlayerMP getServerForPlayer ()Lnet/minecraft/world/WorldServer; u +MD net/minecraft/entity/player/EntityPlayerMP getPlayerIP ()Ljava/lang/String; w +MD net/minecraft/entity/player/EntityPlayerMP getChatVisibility ()Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; y +MD net/minecraft/entity/player/EntityPlayerMP markPlayerActive ()V z +MD net/minecraft/server/management/ItemInWorldManager updateBlockRemoving ()V a +MD net/minecraft/server/management/ItemInWorldManager setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/server/management/ItemInWorldManager blockRemoving (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/server/management/ItemInWorldManager onBlockClicked (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/server/management/ItemInWorldManager setWorld (Lnet/minecraft/world/WorldServer;)V a +MD net/minecraft/server/management/ItemInWorldManager tryUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/server/management/ItemInWorldManager activateBlockOrUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z a +MD net/minecraft/server/management/ItemInWorldManager getGameType ()Lnet/minecraft/world/WorldSettings$GameType; b +MD net/minecraft/server/management/ItemInWorldManager initializeGameType (Lnet/minecraft/world/WorldSettings$GameType;)V b +MD net/minecraft/server/management/ItemInWorldManager tryHarvestBlock (Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/server/management/ItemInWorldManager survivalOrAdventure ()Z c +MD net/minecraft/server/management/ItemInWorldManager removeBlock (Lnet/minecraft/util/BlockPos;)Z c +MD net/minecraft/server/management/ItemInWorldManager isCreative ()Z d +MD net/minecraft/server/management/ItemInWorldManager cancelDestroyingBlock ()V e +MD net/minecraft/entity/EntityTrackerEntry sendDestroyEntityPacketToTrackedPlayers ()V a +MD net/minecraft/entity/EntityTrackerEntry sendPacketToTrackedPlayers (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/entity/EntityTrackerEntry updatePlayerList (Ljava/util/List;)V a +MD net/minecraft/entity/EntityTrackerEntry removeFromTrackedPlayers (Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/entity/EntityTrackerEntry sendMetadataToAllAssociatedPlayers ()V b +MD net/minecraft/entity/EntityTrackerEntry func_151261_b (Lnet/minecraft/network/Packet;)V b +MD net/minecraft/entity/EntityTrackerEntry updatePlayerEntities (Ljava/util/List;)V b +MD net/minecraft/entity/EntityTrackerEntry updatePlayerEntity (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/entity/EntityTrackerEntry createSpawnPacket ()Lnet/minecraft/network/Packet; c +MD net/minecraft/entity/EntityTrackerEntry func_180233_c (Lnet/minecraft/entity/player/EntityPlayerMP;)Z c +MD net/minecraft/entity/EntityTrackerEntry removeTrackedPlayerSymmetric (Lnet/minecraft/entity/player/EntityPlayerMP;)V d +MD net/minecraft/entity/EntityTrackerEntry isPlayerWatchingThisChunk (Lnet/minecraft/entity/player/EntityPlayerMP;)Z e +MD net/minecraft/entity/EntityTrackerEntry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/EntityTrackerEntry hashCode ()I hashCode +MD net/minecraft/network/PingResponseHandler writeAndFlush (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/network/PingResponseHandler getStringBuffer (Ljava/lang/String;)Lio/netty/buffer/ByteBuf; a +MD net/minecraft/network/PingResponseHandler channelRead (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead +MD net/minecraft/network/NetworkSystem addLocalEndpoint ()Ljava/net/SocketAddress; a +MD net/minecraft/network/NetworkSystem addLanEndpoint (Ljava/net/InetAddress;I)V a +MD net/minecraft/network/NetworkSystem access$000 (Lnet/minecraft/network/NetworkSystem;)Ljava/util/List; a +MD net/minecraft/network/NetworkSystem terminateEndpoints ()V b +MD net/minecraft/network/NetworkSystem access$100 (Lnet/minecraft/network/NetworkSystem;)Lnet/minecraft/server/MinecraftServer; b +MD net/minecraft/network/NetworkSystem networkTick ()V c +MD net/minecraft/network/NetworkSystem getServer ()Lnet/minecraft/server/MinecraftServer; d +MD net/minecraft/network/NetworkSystem$1 load ()Lio/netty/channel/nio/NioEventLoopGroup; a +MD net/minecraft/network/NetworkSystem$2 load ()Lio/netty/channel/epoll/EpollEventLoopGroup; a +MD net/minecraft/network/NetworkSystem$3 load ()Lio/netty/channel/local/LocalEventLoopGroup; a +MD net/minecraft/network/NetworkSystem$4 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkSystem$5 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkSystem$6 call ()Ljava/lang/String; a +MD net/minecraft/network/NetworkSystem$6 call ()Ljava/lang/Object; call +MD net/minecraft/network/NetworkSystem$7 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/network/NetHandlerPlayServer getNetworkManager ()Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/network/NetHandlerPlayServer setPlayerLocation (DDDFF)V a +MD net/minecraft/network/NetHandlerPlayServer setPlayerLocation (DDDFFLjava/util/Set;)V a +MD net/minecraft/network/NetHandlerPlayServer sendPacket (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/network/NetHandlerPlayServer func_183006_b (Lnet/minecraft/network/play/client/C03PacketPlayer;)Z b +MD net/minecraft/network/NetHandlerPlayServer kickPlayerFromServer (Ljava/lang/String;)V c +MD net/minecraft/network/NetHandlerPlayServer currentTimeMillis ()J d +MD net/minecraft/network/NetHandlerPlayServer handleSlashCommand (Ljava/lang/String;)V d +MD net/minecraft/network/NetHandlerPlayServer$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/network/NetHandlerPlayServer$2 run ()V run +MD net/minecraft/network/NetHandlerPlayServer$3 call ()Ljava/lang/String; a +MD net/minecraft/network/NetHandlerPlayServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/network/NetHandlerLoginServer getOfflineProfile (Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/network/NetHandlerLoginServer closeConnection (Ljava/lang/String;)V a +MD net/minecraft/server/network/NetHandlerLoginServer access$000 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Lnet/minecraft/server/MinecraftServer; a +MD net/minecraft/server/network/NetHandlerLoginServer access$102 (Lnet/minecraft/server/network/NetHandlerLoginServer;Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/network/NetHandlerLoginServer access$502 (Lnet/minecraft/server/network/NetHandlerLoginServer;Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState;)Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; a +MD net/minecraft/server/network/NetHandlerLoginServer tryAcceptPlayer ()V b +MD net/minecraft/server/network/NetHandlerLoginServer access$100 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/server/network/NetHandlerLoginServer access$200 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Ljava/lang/String; c +MD net/minecraft/server/network/NetHandlerLoginServer getConnectionInfo ()Ljava/lang/String; d +MD net/minecraft/server/network/NetHandlerLoginServer access$300 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Ljavax/crypto/SecretKey; d +MD net/minecraft/server/network/NetHandlerLoginServer access$400 ()Lorg/apache/logging/log4j/Logger; e +MD net/minecraft/server/network/NetHandlerLoginServer$1 operationComplete (Lio/netty/channel/ChannelFuture;)V a +MD net/minecraft/server/network/NetHandlerLoginServer$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/server/network/NetHandlerLoginServer$2 run ()V run +MD net/minecraft/server/network/NetHandlerLoginServer$LoginState valueOf (Ljava/lang/String;)Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; valueOf +MD net/minecraft/server/network/NetHandlerLoginServer$LoginState values ()[Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; values +MD net/minecraft/server/management/BanEntry getBanEndDate ()Ljava/util/Date; c +MD net/minecraft/server/management/BanEntry getBanReason ()Ljava/lang/String; d +MD net/minecraft/server/management/PlayerProfileCache getUsernames ()[Ljava/lang/String; a +MD net/minecraft/server/management/PlayerProfileCache getEntriesWithLimit (I)Ljava/util/List; a +MD net/minecraft/server/management/PlayerProfileCache addEntry (Lcom/mojang/authlib/GameProfile;)V a +MD net/minecraft/server/management/PlayerProfileCache addEntry (Lcom/mojang/authlib/GameProfile;Ljava/util/Date;)V a +MD net/minecraft/server/management/PlayerProfileCache getGameProfileForUsername (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/PlayerProfileCache getProfileByUUID (Ljava/util/UUID;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/PlayerProfileCache getGameProfile (Lnet/minecraft/server/MinecraftServer;Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/PlayerProfileCache load ()V b +MD net/minecraft/server/management/PlayerProfileCache getByUUID (Ljava/util/UUID;)Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry; b +MD net/minecraft/server/management/PlayerProfileCache save ()V c +MD net/minecraft/server/management/PlayerProfileCache$1 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PlayerProfileCache$1 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PlayerProfileCache$2 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/server/management/PlayerProfileCache$2 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/server/management/PlayerProfileCache$2 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry getGameProfile ()Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry access$200 (Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry;)Ljava/util/Date; a +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry getExpirationDate ()Ljava/util/Date; b +MD net/minecraft/server/management/PlayerProfileCache$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry; a +MD net/minecraft/server/management/PlayerProfileCache$Serializer serialize (Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/server/management/PlayerProfileCache$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/server/management/PlayerProfileCache$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/BanList isBanned (Ljava/net/SocketAddress;)Z a +MD net/minecraft/server/management/BanList getBanEntry (Ljava/net/SocketAddress;)Lnet/minecraft/server/management/IPBanEntry; b +MD net/minecraft/server/management/BanList addressToString (Ljava/net/SocketAddress;)Ljava/lang/String; c +MD net/minecraft/server/management/IPBanEntry getIPFromJson (Lcom/google/gson/JsonObject;)Ljava/lang/String; b +MD net/minecraft/server/management/PreYggdrasilConverter access$000 ()Lorg/apache/logging/log4j/Logger; a +MD net/minecraft/server/management/PreYggdrasilConverter access$400 (Ljava/io/File;)V a +MD net/minecraft/server/management/PreYggdrasilConverter readFile (Ljava/io/File;Ljava/util/Map;)Ljava/util/List; a +MD net/minecraft/server/management/PreYggdrasilConverter getStringUUIDFromName (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/server/management/PreYggdrasilConverter access$200 (Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; a +MD net/minecraft/server/management/PreYggdrasilConverter tryConvert (Lnet/minecraft/server/dedicated/PropertyManager;)Z a +MD net/minecraft/server/management/PreYggdrasilConverter convertSaveFiles (Lnet/minecraft/server/dedicated/DedicatedServer;Lnet/minecraft/server/dedicated/PropertyManager;)Z a +MD net/minecraft/server/management/PreYggdrasilConverter convertUserBanlist (Lnet/minecraft/server/MinecraftServer;)Z a +MD net/minecraft/server/management/PreYggdrasilConverter lookupNames (Lnet/minecraft/server/MinecraftServer;Ljava/util/Collection;Lcom/mojang/authlib/ProfileLookupCallback;)V a +MD net/minecraft/server/management/PreYggdrasilConverter mkdir (Ljava/io/File;)V b +MD net/minecraft/server/management/PreYggdrasilConverter parseDate (Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; b +MD net/minecraft/server/management/PreYggdrasilConverter hasUnconvertableFiles (Lnet/minecraft/server/dedicated/PropertyManager;)Z b +MD net/minecraft/server/management/PreYggdrasilConverter convertIpBanlist (Lnet/minecraft/server/MinecraftServer;)Z b +MD net/minecraft/server/management/PreYggdrasilConverter backupConverted (Ljava/io/File;)V c +MD net/minecraft/server/management/PreYggdrasilConverter hasUnconvertablePlayerFiles (Lnet/minecraft/server/dedicated/PropertyManager;)Z c +MD net/minecraft/server/management/PreYggdrasilConverter convertOplist (Lnet/minecraft/server/MinecraftServer;)Z c +MD net/minecraft/server/management/PreYggdrasilConverter getPlayersDirectory (Lnet/minecraft/server/dedicated/PropertyManager;)Ljava/io/File; d +MD net/minecraft/server/management/PreYggdrasilConverter convertWhitelist (Lnet/minecraft/server/MinecraftServer;)Z d +MD net/minecraft/server/management/PreYggdrasilConverter$1 apply (Ljava/lang/String;)Z a +MD net/minecraft/server/management/PreYggdrasilConverter$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/server/management/PreYggdrasilConverter$2 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$2 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$3 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$3 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$4 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$4 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$5 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$5 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$6 func_152744_a (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; a +MD net/minecraft/server/management/PreYggdrasilConverter$6 func_152743_a (Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/server/management/PreYggdrasilConverter$6 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$6 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/ServerConfigurationManager loadWhiteList ()V a +MD net/minecraft/server/management/ServerConfigurationManager sendToAllNear (DDDDILnet/minecraft/network/Packet;)V a +MD net/minecraft/server/management/ServerConfigurationManager setViewDistance (I)V a +MD net/minecraft/server/management/ServerConfigurationManager setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/server/management/ServerConfigurationManager addOp (Lcom/mojang/authlib/GameProfile;)V a +MD net/minecraft/server/management/ServerConfigurationManager initializeConnectionToPlayer (Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/server/management/ServerConfigurationManager sendChatMsg (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/server/management/ServerConfigurationManager sendChatMsgImpl (Lnet/minecraft/util/IChatComponent;Z)V a +MD net/minecraft/server/management/ServerConfigurationManager sendPacketToAllPlayers (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/server/management/ServerConfigurationManager sendPacketToAllPlayersInDimension (Lnet/minecraft/network/Packet;I)V a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerByUsername (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; a +MD net/minecraft/server/management/ServerConfigurationManager allowUserToConnect (Ljava/net/SocketAddress;Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerByUUID (Ljava/util/UUID;)Lnet/minecraft/entity/player/EntityPlayerMP; a +MD net/minecraft/server/management/ServerConfigurationManager sendScoreboard (Lnet/minecraft/scoreboard/ServerScoreboard;Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/server/management/ServerConfigurationManager readPlayerDataFromFile (Lnet/minecraft/entity/player/EntityPlayerMP;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/server/management/ServerConfigurationManager transferPlayerToDimension (Lnet/minecraft/entity/player/EntityPlayerMP;I)V a +MD net/minecraft/server/management/ServerConfigurationManager recreatePlayerEntity (Lnet/minecraft/entity/player/EntityPlayerMP;IZ)Lnet/minecraft/entity/player/EntityPlayerMP; a +MD net/minecraft/server/management/ServerConfigurationManager preparePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/WorldServer;)V a +MD net/minecraft/server/management/ServerConfigurationManager setPlayerGameTypeBasedOnOther (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/World;)V a +MD net/minecraft/server/management/ServerConfigurationManager transferEntityToWorld (Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;)V a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerStatsFile (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/stats/StatisticsFile; a +MD net/minecraft/server/management/ServerConfigurationManager sendToAllNearExcept (Lnet/minecraft/entity/player/EntityPlayer;DDDDILnet/minecraft/network/Packet;)V a +MD net/minecraft/server/management/ServerConfigurationManager sendMessageToAllTeamMembers (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/server/management/ServerConfigurationManager setWhiteListEnabled (Z)V a +MD net/minecraft/server/management/ServerConfigurationManager setPlayerManager ([Lnet/minecraft/world/WorldServer;)V a +MD net/minecraft/server/management/ServerConfigurationManager removeOp (Lcom/mojang/authlib/GameProfile;)V b +MD net/minecraft/server/management/ServerConfigurationManager getPlayersMatchingAddress (Ljava/lang/String;)Ljava/util/List; b +MD net/minecraft/server/management/ServerConfigurationManager writePlayerData (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/server/management/ServerConfigurationManager updateTimeAndWeatherForPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/WorldServer;)V b +MD net/minecraft/server/management/ServerConfigurationManager sendMessageToTeamOrEvryPlayer (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/IChatComponent;)V b +MD net/minecraft/server/management/ServerConfigurationManager func_181058_b (Z)Ljava/lang/String; b +MD net/minecraft/server/management/ServerConfigurationManager getServerInstance ()Lnet/minecraft/server/MinecraftServer; c +MD net/minecraft/server/management/ServerConfigurationManager removePlayerFromWhitelist (Lcom/mojang/authlib/GameProfile;)V c +MD net/minecraft/server/management/ServerConfigurationManager playerLoggedIn (Lnet/minecraft/entity/player/EntityPlayerMP;)V c +MD net/minecraft/server/management/ServerConfigurationManager setCommandsAllowedForAll (Z)V c +MD net/minecraft/server/management/ServerConfigurationManager getEntityViewDistance ()I d +MD net/minecraft/server/management/ServerConfigurationManager addWhitelistedPlayer (Lcom/mojang/authlib/GameProfile;)V d +MD net/minecraft/server/management/ServerConfigurationManager serverUpdateMountedMovingPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V d +MD net/minecraft/server/management/ServerConfigurationManager onTick ()V e +MD net/minecraft/server/management/ServerConfigurationManager canJoin (Lcom/mojang/authlib/GameProfile;)Z e +MD net/minecraft/server/management/ServerConfigurationManager playerLoggedOut (Lnet/minecraft/entity/player/EntityPlayerMP;)V e +MD net/minecraft/server/management/ServerConfigurationManager getAllUsernames ()[Ljava/lang/String; f +MD net/minecraft/server/management/ServerConfigurationManager bypassesPlayerLimit (Lcom/mojang/authlib/GameProfile;)Z f +MD net/minecraft/server/management/ServerConfigurationManager syncPlayerInventory (Lnet/minecraft/entity/player/EntityPlayerMP;)V f +MD net/minecraft/server/management/ServerConfigurationManager getAllProfiles ()[Lcom/mojang/authlib/GameProfile; g +MD net/minecraft/server/management/ServerConfigurationManager createPlayerForUser (Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/entity/player/EntityPlayerMP; g +MD net/minecraft/server/management/ServerConfigurationManager getBannedPlayers ()Lnet/minecraft/server/management/UserListBans; h +MD net/minecraft/server/management/ServerConfigurationManager canSendCommands (Lcom/mojang/authlib/GameProfile;)Z h +MD net/minecraft/server/management/ServerConfigurationManager getBannedIPs ()Lnet/minecraft/server/management/BanList; i +MD net/minecraft/server/management/ServerConfigurationManager saveAllPlayerData ()V j +MD net/minecraft/server/management/ServerConfigurationManager getWhitelistedPlayers ()Lnet/minecraft/server/management/UserListWhitelist; k +MD net/minecraft/server/management/ServerConfigurationManager getWhitelistedPlayerNames ()[Ljava/lang/String; l +MD net/minecraft/server/management/ServerConfigurationManager getOppedPlayers ()Lnet/minecraft/server/management/UserListOps; m +MD net/minecraft/server/management/ServerConfigurationManager getOppedPlayerNames ()[Ljava/lang/String; n +MD net/minecraft/server/management/ServerConfigurationManager getCurrentPlayerCount ()I o +MD net/minecraft/server/management/ServerConfigurationManager getMaxPlayers ()I p +MD net/minecraft/server/management/ServerConfigurationManager getAvailablePlayerDat ()[Ljava/lang/String; q +MD net/minecraft/server/management/ServerConfigurationManager isWhiteListEnabled ()Z r +MD net/minecraft/server/management/ServerConfigurationManager getViewDistance ()I s +MD net/minecraft/server/management/ServerConfigurationManager getHostPlayerData ()Lnet/minecraft/nbt/NBTTagCompound; t +MD net/minecraft/server/management/ServerConfigurationManager removeAllPlayers ()V u +MD net/minecraft/server/management/ServerConfigurationManager getPlayerList ()Ljava/util/List; v +MD net/minecraft/server/management/UserListOps getGameProfileFromName (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/UserListOps bypassesPlayerLimit (Lcom/mojang/authlib/GameProfile;)Z b +MD net/minecraft/server/management/UserListOps getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; c +MD net/minecraft/server/management/UserListOpsEntry getPermissionLevel ()I a +MD net/minecraft/server/management/UserListOpsEntry bypassesPlayerLimit ()Z b +MD net/minecraft/server/management/UserListOpsEntry constructProfile (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/server/management/UserListEntry onSerialization (Lcom/google/gson/JsonObject;)V a +MD net/minecraft/server/management/UserListEntry hasBanExpired ()Z e +MD net/minecraft/server/management/UserListEntry getValue ()Ljava/lang/Object; f +MD net/minecraft/server/management/UserList getKeys ()[Ljava/lang/String; a +MD net/minecraft/server/management/UserList createEntry (Lcom/google/gson/JsonObject;)Lnet/minecraft/server/management/UserListEntry; a +MD net/minecraft/server/management/UserList getObjectKey (Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/server/management/UserList addEntry (Lnet/minecraft/server/management/UserListEntry;)V a +MD net/minecraft/server/management/UserList setLanServer (Z)V a +MD net/minecraft/server/management/UserList isLanServer ()Z b +MD net/minecraft/server/management/UserList getEntry (Ljava/lang/Object;)Lnet/minecraft/server/management/UserListEntry; b +MD net/minecraft/server/management/UserList getSaveFile ()Ljava/io/File; c +MD net/minecraft/server/management/UserList removeEntry (Ljava/lang/Object;)V c +MD net/minecraft/server/management/UserList isEmpty ()Z d +MD net/minecraft/server/management/UserList hasEntry (Ljava/lang/Object;)Z d +MD net/minecraft/server/management/UserList getValues ()Ljava/util/Map; e +MD net/minecraft/server/management/UserList writeChanges ()V f +MD net/minecraft/server/management/UserList readSavedFile ()V g +MD net/minecraft/server/management/UserList removeExpired ()V h +MD net/minecraft/server/management/UserList$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/server/management/UserList$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/server/management/UserList$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/server/management/UserList$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/server/management/UserListEntry; a +MD net/minecraft/server/management/UserList$Serializer serialize (Lnet/minecraft/server/management/UserListEntry;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/server/management/UserList$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/server/management/UserList$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/UserListBans isBanned (Lcom/mojang/authlib/GameProfile;)Z a +MD net/minecraft/server/management/UserListBans isUsernameBanned (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/UserListBans getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; b +MD net/minecraft/server/management/UserListBansEntry toGameProfile (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/server/management/UserListWhitelist isWhitelisted (Lcom/mojang/authlib/GameProfile;)Z a +MD net/minecraft/server/management/UserListWhitelist getBannedProfile (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/server/management/UserListWhitelist getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; b +MD net/minecraft/server/management/UserListWhitelistEntry gameProfileFromJsonObject (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/network/rcon/RConOutputStream toByteArray ()[B a +MD net/minecraft/network/rcon/RConOutputStream writeInt (I)V a +MD net/minecraft/network/rcon/RConOutputStream writeString (Ljava/lang/String;)V a +MD net/minecraft/network/rcon/RConOutputStream writeShort (S)V a +MD net/minecraft/network/rcon/RConOutputStream writeByteArray ([B)V a +MD net/minecraft/network/rcon/RConOutputStream reset ()V b +MD net/minecraft/network/rcon/RConUtils getByteAsHexString (B)Ljava/lang/String; a +MD net/minecraft/network/rcon/RConUtils getBytesAsString ([BII)Ljava/lang/String; a +MD net/minecraft/network/rcon/RConUtils getRemainingBytesAsLEInt ([BI)I b +MD net/minecraft/network/rcon/RConUtils getBytesAsLEInt ([BII)I b +MD net/minecraft/network/rcon/RConUtils getBytesAsBEint ([BII)I c +MD net/minecraft/network/rcon/RConConsoleSource getInstance ()Lnet/minecraft/network/rcon/RConConsoleSource; h +MD net/minecraft/network/rcon/RConConsoleSource resetLog ()V i +MD net/minecraft/network/rcon/RConConsoleSource getLogContents ()Ljava/lang/String; j +MD net/minecraft/network/rcon/RConThreadBase startThread ()V a +MD net/minecraft/network/rcon/RConThreadBase logDebug (Ljava/lang/String;)V a +MD net/minecraft/network/rcon/RConThreadBase registerSocket (Ljava/net/DatagramSocket;)V a +MD net/minecraft/network/rcon/RConThreadBase closeSocket (Ljava/net/DatagramSocket;Z)Z a +MD net/minecraft/network/rcon/RConThreadBase closeServerSocket_do (Ljava/net/ServerSocket;Z)Z a +MD net/minecraft/network/rcon/RConThreadBase closeAllSockets_do (Z)V a +MD net/minecraft/network/rcon/RConThreadBase logInfo (Ljava/lang/String;)V b +MD net/minecraft/network/rcon/RConThreadBase closeServerSocket (Ljava/net/ServerSocket;)Z b +MD net/minecraft/network/rcon/RConThreadBase isRunning ()Z c +MD net/minecraft/network/rcon/RConThreadBase logWarning (Ljava/lang/String;)V c +MD net/minecraft/network/rcon/RConThreadBase getNumberOfPlayers ()I d +MD net/minecraft/network/rcon/RConThreadBase logSevere (Ljava/lang/String;)V d +MD net/minecraft/network/rcon/RConThreadBase closeAllSockets ()V e +MD net/minecraft/network/rcon/RConThreadQuery stopWithException (Ljava/lang/Exception;)V a +MD net/minecraft/network/rcon/RConThreadQuery parseIncomingPacket (Ljava/net/DatagramPacket;)Z a +MD net/minecraft/network/rcon/RConThreadQuery getRequestID (Ljava/net/SocketAddress;)[B a +MD net/minecraft/network/rcon/RConThreadQuery sendResponsePacket ([BLjava/net/DatagramPacket;)V a +MD net/minecraft/network/rcon/RConThreadQuery createQueryResponse (Ljava/net/DatagramPacket;)[B b +MD net/minecraft/network/rcon/RConThreadQuery verifyClientAuth (Ljava/net/DatagramPacket;)Ljava/lang/Boolean; c +MD net/minecraft/network/rcon/RConThreadQuery sendAuthChallenge (Ljava/net/DatagramPacket;)V d +MD net/minecraft/network/rcon/RConThreadQuery cleanQueryClientsMap ()V f +MD net/minecraft/network/rcon/RConThreadQuery initQuerySystem ()Z g +MD net/minecraft/network/rcon/RConThreadQuery run ()V run +MD net/minecraft/network/rcon/RConThreadQuery$Auth getRandomChallenge ()I a +MD net/minecraft/network/rcon/RConThreadQuery$Auth hasExpired (J)Ljava/lang/Boolean; a +MD net/minecraft/network/rcon/RConThreadQuery$Auth getChallengeValue ()[B b +MD net/minecraft/network/rcon/RConThreadQuery$Auth getRequestId ()[B c +MD net/minecraft/network/rcon/RConThreadClient sendResponse (IILjava/lang/String;)V a +MD net/minecraft/network/rcon/RConThreadClient sendMultipacketResponse (ILjava/lang/String;)V a +MD net/minecraft/network/rcon/RConThreadClient sendLoginFailedResponse ()V f +MD net/minecraft/network/rcon/RConThreadClient closeSocket ()V g +MD net/minecraft/network/rcon/RConThreadClient run ()V run +MD net/minecraft/network/rcon/RConThreadMain initClientThreadList ()V f +MD net/minecraft/network/rcon/RConThreadMain cleanClientThreadsMap ()V g +MD net/minecraft/network/rcon/RConThreadMain run ()V run +MD net/minecraft/stats/Achievement initIndependentStat ()Lnet/minecraft/stats/Achievement; a +MD net/minecraft/stats/Achievement func_150953_b (Ljava/lang/Class;)Lnet/minecraft/stats/Achievement; a +MD net/minecraft/stats/Achievement setStatStringFormatter (Lnet/minecraft/stats/IStatStringFormat;)Lnet/minecraft/stats/Achievement; a +MD net/minecraft/stats/Achievement setSpecial ()Lnet/minecraft/stats/Achievement; b +MD net/minecraft/stats/Achievement registerStat ()Lnet/minecraft/stats/Achievement; c +MD net/minecraft/stats/Achievement getDescription ()Ljava/lang/String; f +MD net/minecraft/stats/Achievement getSpecial ()Z g +MD net/minecraft/stats/AchievementList init ()V a +MD net/minecraft/stats/IStatStringFormat formatString (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/stats/StatCrafting func_150959_a ()Lnet/minecraft/item/Item; a +MD net/minecraft/stats/StatisticsFile readStatFile ()V a +MD net/minecraft/stats/StatisticsFile parseJson (Ljava/lang/String;)Ljava/util/Map; a +MD net/minecraft/stats/StatisticsFile dumpJson (Ljava/util/Map;)Ljava/lang/String; a +MD net/minecraft/stats/StatisticsFile func_150876_a (Lnet/minecraft/entity/player/EntityPlayerMP;)V a +MD net/minecraft/stats/StatisticsFile saveStatFile ()V b +MD net/minecraft/stats/StatisticsFile sendAchievements (Lnet/minecraft/entity/player/EntityPlayerMP;)V b +MD net/minecraft/stats/StatisticsFile func_150878_c ()Ljava/util/Set; c +MD net/minecraft/stats/StatisticsFile func_150877_d ()V d +MD net/minecraft/stats/StatisticsFile func_150879_e ()Z e +MD net/minecraft/stats/StatBase format (I)Ljava/lang/String; a +MD net/minecraft/stats/StatBase func_150953_b (Ljava/lang/Class;)Lnet/minecraft/stats/StatBase; b +MD net/minecraft/stats/StatBase isAchievement ()Z d +MD net/minecraft/stats/StatBase getStatName ()Lnet/minecraft/util/IChatComponent; e +MD net/minecraft/stats/StatBase registerStat ()Lnet/minecraft/stats/StatBase; h +MD net/minecraft/stats/StatBase initIndependentStat ()Lnet/minecraft/stats/StatBase; i +MD net/minecraft/stats/StatBase createChatComponent ()Lnet/minecraft/util/IChatComponent; j +MD net/minecraft/stats/StatBase getCriteria ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria; k +MD net/minecraft/stats/StatBase func_150954_l ()Ljava/lang/Class; l +MD net/minecraft/stats/StatBase access$000 ()Ljava/text/NumberFormat; m +MD net/minecraft/stats/StatBase access$100 ()Ljava/text/DecimalFormat; n +MD net/minecraft/stats/StatBase equals (Ljava/lang/Object;)Z equals +MD net/minecraft/stats/StatBase hashCode ()I hashCode +MD net/minecraft/stats/StatBase toString ()Ljava/lang/String; toString +MD net/minecraft/stats/IStatType format (I)Ljava/lang/String; a +MD net/minecraft/util/TupleIntJsonSerializable getIntegerValue ()I a +MD net/minecraft/util/TupleIntJsonSerializable setIntegerValue (I)V a +MD net/minecraft/util/TupleIntJsonSerializable setJsonSerializableValue (Lnet/minecraft/util/IJsonSerializable;)V a +MD net/minecraft/util/TupleIntJsonSerializable getJsonSerializableValue ()Lnet/minecraft/util/IJsonSerializable; b +MD net/minecraft/util/IJsonSerializable getSerializableElement ()Lcom/google/gson/JsonElement; a +MD net/minecraft/util/IJsonSerializable fromJson (Lcom/google/gson/JsonElement;)V a +MD net/minecraft/stats/StatList init ()V a +MD net/minecraft/stats/StatList getOneShotStat (Ljava/lang/String;)Lnet/minecraft/stats/StatBase; a +MD net/minecraft/stats/StatList getStatKillEntity (Lnet/minecraft/entity/EntityList$EntityEggInfo;)Lnet/minecraft/stats/StatBase; a +MD net/minecraft/stats/StatList func_180204_a (Lnet/minecraft/item/Item;)Ljava/lang/String; a +MD net/minecraft/stats/StatList replaceAllSimilarBlocks ([Lnet/minecraft/stats/StatBase;)V a +MD net/minecraft/stats/StatList mergeStatBases ([Lnet/minecraft/stats/StatBase;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)V a +MD net/minecraft/stats/StatList initCraftableStats ()V b +MD net/minecraft/stats/StatList getStatEntityKilledBy (Lnet/minecraft/entity/EntityList$EntityEggInfo;)Lnet/minecraft/stats/StatBase; b +MD net/minecraft/stats/StatList initMiningStats ()V c +MD net/minecraft/stats/StatList initStats ()V d +MD net/minecraft/stats/StatList initItemDepleteStats ()V e +MD net/minecraft/stats/StatFileWriter hasAchievementUnlocked (Lnet/minecraft/stats/Achievement;)Z a +MD net/minecraft/stats/StatFileWriter readStat (Lnet/minecraft/stats/StatBase;)I a +MD net/minecraft/stats/StatFileWriter func_150872_a (Lnet/minecraft/stats/StatBase;Lnet/minecraft/util/IJsonSerializable;)Lnet/minecraft/util/IJsonSerializable; a +MD net/minecraft/stats/StatFileWriter unlockAchievement (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/stats/StatBase;I)V a +MD net/minecraft/stats/StatFileWriter canUnlockAchievement (Lnet/minecraft/stats/Achievement;)Z b +MD net/minecraft/stats/StatFileWriter func_150870_b (Lnet/minecraft/stats/StatBase;)Lnet/minecraft/util/IJsonSerializable; b +MD net/minecraft/stats/StatFileWriter increaseStat (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/stats/StatBase;I)V b +MD net/minecraft/stats/StatFileWriter func_150874_c (Lnet/minecraft/stats/Achievement;)I c +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/lang/Object; delegate +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/util/Collection; delegate +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/util/Set; delegate +MD net/minecraft/util/ClassInheritanceMultiMap createLookup (Ljava/lang/Class;)V a +MD net/minecraft/util/ClassInheritanceMultiMap addForClass (Ljava/lang/Object;Ljava/lang/Class;)V a +MD net/minecraft/util/ClassInheritanceMultiMap access$000 (Lnet/minecraft/util/ClassInheritanceMultiMap;)Ljava/util/Map; a +MD net/minecraft/util/ClassInheritanceMultiMap initializeClassLookup (Ljava/lang/Class;)Ljava/lang/Class; b +MD net/minecraft/util/ClassInheritanceMultiMap getByClass (Ljava/lang/Class;)Ljava/lang/Iterable; c +MD net/minecraft/util/ClassInheritanceMultiMap add (Ljava/lang/Object;)Z add +MD net/minecraft/util/ClassInheritanceMultiMap contains (Ljava/lang/Object;)Z contains +MD net/minecraft/util/ClassInheritanceMultiMap iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/ClassInheritanceMultiMap remove (Ljava/lang/Object;)Z remove +MD net/minecraft/util/ClassInheritanceMultiMap size ()I size +MD net/minecraft/util/ClassInheritanceMultiMap$1 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/CryptManager createNewSharedKey ()Ljavax/crypto/SecretKey; a +MD net/minecraft/util/CryptManager createTheCipherInstance (ILjava/lang/String;Ljava/security/Key;)Ljavax/crypto/Cipher; a +MD net/minecraft/util/CryptManager createNetCipherInstance (ILjava/security/Key;)Ljavax/crypto/Cipher; a +MD net/minecraft/util/CryptManager cipherOperation (ILjava/security/Key;[B)[B a +MD net/minecraft/util/CryptManager getServerIdHash (Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B a +MD net/minecraft/util/CryptManager digestOperation (Ljava/lang/String;[[B)[B a +MD net/minecraft/util/CryptManager encryptData (Ljava/security/Key;[B)[B a +MD net/minecraft/util/CryptManager decryptSharedKey (Ljava/security/PrivateKey;[B)Ljavax/crypto/SecretKey; a +MD net/minecraft/util/CryptManager decodePublicKey ([B)Ljava/security/PublicKey; a +MD net/minecraft/util/CryptManager generateKeyPair ()Ljava/security/KeyPair; b +MD net/minecraft/util/CryptManager decryptData (Ljava/security/Key;[B)[B b +MD net/minecraft/util/FrameTimer getLastIndex ()I a +MD net/minecraft/util/FrameTimer addFrame (J)V a +MD net/minecraft/util/FrameTimer getLagometerValue (JI)I a +MD net/minecraft/util/FrameTimer getIndex ()I b +MD net/minecraft/util/FrameTimer parseIndex (I)I b +MD net/minecraft/util/FrameTimer getFrames ()[J c +MD net/minecraft/util/JsonUtils isString (Lcom/google/gson/JsonElement;)Z a +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/JsonUtils isString (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z a +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonObject;Ljava/lang/String;F)F a +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonObject;Ljava/lang/String;I)I a +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; a +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonObject;)Lcom/google/gson/JsonObject; a +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z a +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonElement;Ljava/lang/String;)Z b +MD net/minecraft/util/JsonUtils isBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z c +MD net/minecraft/util/JsonUtils toString (Lcom/google/gson/JsonElement;)Ljava/lang/String; d +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonElement;Ljava/lang/String;)F d +MD net/minecraft/util/JsonUtils isJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z d +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonElement;Ljava/lang/String;)I f +MD net/minecraft/util/JsonUtils isJsonPrimitive (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z f +MD net/minecraft/util/JsonUtils hasField (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z g +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/lang/String; h +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z i +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonObject;Ljava/lang/String;)F k +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonObject; l +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonArray; m +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonObject;Ljava/lang/String;)I m +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; s +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonArray; t +MD net/minecraft/util/HttpUtil getSuitableLanPort ()I a +MD net/minecraft/util/HttpUtil downloadResourcePack (Ljava/io/File;Ljava/lang/String;Ljava/util/Map;ILnet/minecraft/util/IProgressUpdate;Ljava/net/Proxy;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/util/HttpUtil get (Ljava/net/URL;)Ljava/lang/String; a +MD net/minecraft/util/HttpUtil post (Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String; a +MD net/minecraft/util/HttpUtil postMap (Ljava/net/URL;Ljava/util/Map;Z)Ljava/lang/String; a +MD net/minecraft/util/HttpUtil buildPostString (Ljava/util/Map;)Ljava/lang/String; a +MD net/minecraft/util/HttpUtil access$000 ()Lorg/apache/logging/log4j/Logger; b +MD net/minecraft/util/HttpUtil$1 run ()V run +MD net/minecraft/server/management/LowerStringMap put (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; a +MD net/minecraft/server/management/LowerStringMap clear ()V clear +MD net/minecraft/server/management/LowerStringMap containsKey (Ljava/lang/Object;)Z containsKey +MD net/minecraft/server/management/LowerStringMap containsValue (Ljava/lang/Object;)Z containsValue +MD net/minecraft/server/management/LowerStringMap entrySet ()Ljava/util/Set; entrySet +MD net/minecraft/server/management/LowerStringMap get (Ljava/lang/Object;)Ljava/lang/Object; get +MD net/minecraft/server/management/LowerStringMap isEmpty ()Z isEmpty +MD net/minecraft/server/management/LowerStringMap keySet ()Ljava/util/Set; keySet +MD net/minecraft/server/management/LowerStringMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; put +MD net/minecraft/server/management/LowerStringMap putAll (Ljava/util/Map;)V putAll +MD net/minecraft/server/management/LowerStringMap remove (Ljava/lang/Object;)Ljava/lang/Object; remove +MD net/minecraft/server/management/LowerStringMap size ()I size +MD net/minecraft/server/management/LowerStringMap values ()Ljava/util/Collection; values +MD net/minecraft/util/IntegerCache getInteger (I)Ljava/lang/Integer; a +MD net/minecraft/util/IntHashMap lookup (I)Ljava/lang/Object; a +MD net/minecraft/util/IntHashMap getSlotIndex (II)I a +MD net/minecraft/util/IntHashMap insert (IILjava/lang/Object;I)V a +MD net/minecraft/util/IntHashMap addKey (ILjava/lang/Object;)V a +MD net/minecraft/util/IntHashMap copyTo ([Lnet/minecraft/util/IntHashMap$Entry;)V a +MD net/minecraft/util/IntHashMap containsItem (I)Z b +MD net/minecraft/util/IntHashMap clearMap ()V c +MD net/minecraft/util/IntHashMap lookupEntry (I)Lnet/minecraft/util/IntHashMap$Entry; c +MD net/minecraft/util/IntHashMap removeObject (I)Ljava/lang/Object; d +MD net/minecraft/util/IntHashMap removeEntry (I)Lnet/minecraft/util/IntHashMap$Entry; e +MD net/minecraft/util/IntHashMap access$000 (I)I f +MD net/minecraft/util/IntHashMap computeHash (I)I g +MD net/minecraft/util/IntHashMap grow (I)V h +MD net/minecraft/util/IntHashMap$Entry getHash ()I a +MD net/minecraft/util/IntHashMap$Entry getValue ()Ljava/lang/Object; b +MD net/minecraft/util/IntHashMap$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/IntHashMap$Entry hashCode ()I hashCode +MD net/minecraft/util/IntHashMap$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/util/LazyLoadBase load ()Ljava/lang/Object; b +MD net/minecraft/util/LazyLoadBase getValue ()Ljava/lang/Object; c +MD net/minecraft/util/ThreadSafeBoundList func_152757_a (Ljava/lang/Object;)Ljava/lang/Object; a +MD net/minecraft/util/ThreadSafeBoundList func_152758_b ()I b +MD net/minecraft/util/ThreadSafeBoundList func_152756_c ()[Ljava/lang/Object; c +MD net/minecraft/util/LongHashMap getNumHashElements ()I a +MD net/minecraft/util/LongHashMap hash (I)I a +MD net/minecraft/util/LongHashMap getHashIndex (II)I a +MD net/minecraft/util/LongHashMap createKey (IJLjava/lang/Object;I)V a +MD net/minecraft/util/LongHashMap getValueByKey (J)Ljava/lang/Object; a +MD net/minecraft/util/LongHashMap add (JLjava/lang/Object;)V a +MD net/minecraft/util/LongHashMap copyHashTableTo ([Lnet/minecraft/util/LongHashMap$Entry;)V a +MD net/minecraft/util/LongHashMap resizeTable (I)V b +MD net/minecraft/util/LongHashMap containsItem (J)Z b +MD net/minecraft/util/LongHashMap getEntry (J)Lnet/minecraft/util/LongHashMap$Entry; c +MD net/minecraft/util/LongHashMap remove (J)Ljava/lang/Object; d +MD net/minecraft/util/LongHashMap removeKey (J)Lnet/minecraft/util/LongHashMap$Entry; e +MD net/minecraft/util/LongHashMap access$000 (J)I f +MD net/minecraft/util/LongHashMap getHashedKey (J)I g +MD net/minecraft/util/LongHashMap$Entry getKey ()J a +MD net/minecraft/util/LongHashMap$Entry getValue ()Ljava/lang/Object; b +MD net/minecraft/util/LongHashMap$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/LongHashMap$Entry hashCode ()I hashCode +MD net/minecraft/util/LongHashMap$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumTypeAdapterFactory func_151232_a (Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/util/EnumTypeAdapterFactory access$000 (Lnet/minecraft/util/EnumTypeAdapterFactory;Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/util/EnumTypeAdapterFactory create (Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter; create +MD net/minecraft/util/EnumTypeAdapterFactory$1 read (Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object; read +MD net/minecraft/util/EnumTypeAdapterFactory$1 write (Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V write +MD net/minecraft/util/MathHelper sqrt_double (D)F a +MD net/minecraft/util/MathHelper abs_max (DD)D a +MD net/minecraft/util/MathHelper clamp_double (DDD)D a +MD net/minecraft/util/MathHelper sin (F)F a +MD net/minecraft/util/MathHelper epsilonEquals (FF)Z a +MD net/minecraft/util/MathHelper clamp_float (FFF)F a +MD net/minecraft/util/MathHelper abs_int (I)I a +MD net/minecraft/util/MathHelper bucketInt (II)I a +MD net/minecraft/util/MathHelper clamp_int (III)I a +MD net/minecraft/util/MathHelper getPositionRandom (Lnet/minecraft/util/Vec3i;)J a +MD net/minecraft/util/MathHelper parseDoubleWithDefault (Ljava/lang/String;D)D a +MD net/minecraft/util/MathHelper parseDoubleWithDefaultAndMax (Ljava/lang/String;DD)D a +MD net/minecraft/util/MathHelper parseIntWithDefault (Ljava/lang/String;I)I a +MD net/minecraft/util/MathHelper parseIntWithDefaultAndMax (Ljava/lang/String;II)I a +MD net/minecraft/util/MathHelper getRandomUuid (Ljava/util/Random;)Ljava/util/UUID; a +MD net/minecraft/util/MathHelper getRandomDoubleInRange (Ljava/util/Random;DD)D a +MD net/minecraft/util/MathHelper randomFloatClamp (Ljava/util/Random;FF)F a +MD net/minecraft/util/MathHelper getRandomIntegerInRange (Ljava/util/Random;II)I a +MD net/minecraft/util/MathHelper average ([J)D a +MD net/minecraft/util/MathHelper truncateDoubleToInt (D)I b +MD net/minecraft/util/MathHelper atan2 (DD)D b +MD net/minecraft/util/MathHelper denormalizeClamp (DDD)D b +MD net/minecraft/util/MathHelper cos (F)F b +MD net/minecraft/util/MathHelper func_180183_b (FFF)I b +MD net/minecraft/util/MathHelper roundUpToPowerOfTwo (I)I b +MD net/minecraft/util/MathHelper normalizeAngle (II)I b +MD net/minecraft/util/MathHelper func_180181_b (III)I b +MD net/minecraft/util/MathHelper floor_double (D)I c +MD net/minecraft/util/MathHelper func_181160_c (DDD)D c +MD net/minecraft/util/MathHelper sqrt_float (F)F c +MD net/minecraft/util/MathHelper hsvToRGB (FFF)I c +MD net/minecraft/util/MathHelper calculateLogBaseTwo (I)I c +MD net/minecraft/util/MathHelper roundUp (II)I c +MD net/minecraft/util/MathHelper getCoordinateRandom (III)J c +MD net/minecraft/util/MathHelper floor_double_long (D)J d +MD net/minecraft/util/MathHelper floor_float (F)I d +MD net/minecraft/util/MathHelper isPowerOfTwo (I)Z d +MD net/minecraft/util/MathHelper func_180188_d (II)I d +MD net/minecraft/util/MathHelper func_154353_e (D)I e +MD net/minecraft/util/MathHelper abs (F)F e +MD net/minecraft/util/MathHelper calculateLogBaseTwoDeBruijn (I)I e +MD net/minecraft/util/MathHelper ceiling_double_int (D)I f +MD net/minecraft/util/MathHelper ceiling_float_int (F)I f +MD net/minecraft/util/MathHelper wrapAngleTo180_double (D)D g +MD net/minecraft/util/MathHelper wrapAngleTo180_float (F)F g +MD net/minecraft/util/MathHelper func_181162_h (D)D h +MD net/minecraft/util/MathHelper func_181161_i (D)D i +MD net/minecraft/profiler/Profiler clearProfiling ()V a +MD net/minecraft/profiler/Profiler startSection (Ljava/lang/String;)V a +MD net/minecraft/profiler/Profiler endSection ()V b +MD net/minecraft/profiler/Profiler getProfilingData (Ljava/lang/String;)Ljava/util/List; b +MD net/minecraft/profiler/Profiler getNameOfLastSection ()Ljava/lang/String; c +MD net/minecraft/profiler/Profiler endStartSection (Ljava/lang/String;)V c +MD net/minecraft/profiler/Profiler$Result getColor ()I a +MD net/minecraft/profiler/Profiler$Result compareTo (Lnet/minecraft/profiler/Profiler$Result;)I a +MD net/minecraft/profiler/Profiler$Result compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/util/IProgressUpdate setDoneWorking ()V a +MD net/minecraft/util/IProgressUpdate setLoadingProgress (I)V a +MD net/minecraft/util/IProgressUpdate displaySavingString (Ljava/lang/String;)V a +MD net/minecraft/util/IProgressUpdate resetProgressAndMessage (Ljava/lang/String;)V b +MD net/minecraft/util/IProgressUpdate displayLoadingString (Ljava/lang/String;)V c +MD net/minecraft/util/MouseFilter reset ()V a +MD net/minecraft/util/MouseFilter smooth (FF)F a +MD net/minecraft/util/IStringSerializable getName ()Ljava/lang/String; l +MD net/minecraft/util/StringUtils ticksToElapsedTime (I)Ljava/lang/String; a +MD net/minecraft/util/StringUtils stripControlCodes (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/util/StringUtils isNullOrEmpty (Ljava/lang/String;)Z b +MD net/minecraft/util/Tuple getFirst ()Ljava/lang/Object; a +MD net/minecraft/util/Tuple getSecond ()Ljava/lang/Object; b +MD net/minecraft/util/WeightedRandom getTotalWeight (Ljava/util/Collection;)I a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Collection;I)Lnet/minecraft/util/WeightedRandom$Item; a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Random;Ljava/util/Collection;)Lnet/minecraft/util/WeightedRandom$Item; a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Random;Ljava/util/Collection;I)Lnet/minecraft/util/WeightedRandom$Item; a +MD net/minecraft/util/WeightedRandomChestContent func_177629_a (Ljava/util/List;[Lnet/minecraft/util/WeightedRandomChestContent;)Ljava/util/List; a +MD net/minecraft/util/WeightedRandomChestContent generateDispenserContents (Ljava/util/Random;Ljava/util/List;Lnet/minecraft/tileentity/TileEntityDispenser;I)V a +MD net/minecraft/util/WeightedRandomChestContent generateChestContents (Ljava/util/Random;Ljava/util/List;Lnet/minecraft/inventory/IInventory;I)V a +MD net/minecraft/util/IThreadListener addScheduledTask (Ljava/lang/Runnable;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/util/IThreadListener isCallingFromMinecraftThread ()Z aJ +MD net/minecraft/inventory/InventoryLargeChest isPartOfLargeChest (Lnet/minecraft/inventory/IInventory;)Z a +MD net/minecraft/inventory/IInventory getStackInSlot (I)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/inventory/IInventory decrStackSize (II)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/inventory/IInventory setInventorySlotContents (ILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/IInventory isUseableByPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/inventory/IInventory getField (I)I a_ +MD net/minecraft/inventory/IInventory removeStackFromSlot (I)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/inventory/IInventory setField (II)V b +MD net/minecraft/inventory/IInventory isItemValidForSlot (ILnet/minecraft/item/ItemStack;)Z b +MD net/minecraft/inventory/IInventory openInventory (Lnet/minecraft/entity/player/EntityPlayer;)V b +MD net/minecraft/inventory/IInventory closeInventory (Lnet/minecraft/entity/player/EntityPlayer;)V c +MD net/minecraft/inventory/IInventory getFieldCount ()I g +MD net/minecraft/inventory/IInventory clear ()V l +MD net/minecraft/inventory/IInventory getSizeInventory ()I o_ +MD net/minecraft/inventory/IInventory markDirty ()V p_ +MD net/minecraft/inventory/IInventory getInventoryStackLimit ()I q_ +MD net/minecraft/inventory/IInvBasic onInventoryChanged (Lnet/minecraft/inventory/InventoryBasic;)V a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;DDDLnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/inventory/InventoryHelper spawnItemStack (Lnet/minecraft/world/World;DDDLnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/world/EnumDifficulty getDifficultyId ()I a +MD net/minecraft/world/EnumDifficulty getDifficultyEnum (I)Lnet/minecraft/world/EnumDifficulty; a +MD net/minecraft/world/EnumDifficulty getDifficultyResourceKey ()Ljava/lang/String; b +MD net/minecraft/world/EnumDifficulty valueOf (Ljava/lang/String;)Lnet/minecraft/world/EnumDifficulty; valueOf +MD net/minecraft/world/EnumDifficulty values ()[Lnet/minecraft/world/EnumDifficulty; values +MD net/minecraft/world/DifficultyInstance calculateAdditionalDifficulty (Lnet/minecraft/world/EnumDifficulty;JJF)F a +MD net/minecraft/world/DifficultyInstance getAdditionalDifficulty ()F b +MD net/minecraft/world/DifficultyInstance getClampedAdditionalDifficulty ()F c +MD net/minecraft/world/IInteractionObject createContainer (Lnet/minecraft/entity/player/InventoryPlayer;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/inventory/Container; a +MD net/minecraft/world/IInteractionObject getGuiID ()Ljava/lang/String; k +MD net/minecraft/world/LockCode isEmpty ()Z a +MD net/minecraft/world/LockCode toNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/LockCode getLock ()Ljava/lang/String; b +MD net/minecraft/world/LockCode fromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/LockCode; b +MD net/minecraft/world/ILockableContainer setLockCode (Lnet/minecraft/world/LockCode;)V a +MD net/minecraft/world/ILockableContainer getLockCode ()Lnet/minecraft/world/LockCode; i +MD net/minecraft/world/ILockableContainer isLocked ()Z r_ +MD net/minecraft/world/IWorldNameable getName ()Ljava/lang/String; e_ +MD net/minecraft/world/IWorldNameable getDisplayName ()Lnet/minecraft/util/IChatComponent; f_ +MD net/minecraft/world/IWorldNameable hasCustomName ()Z l_ +MD net/minecraft/inventory/InventoryBasic setCustomName (Ljava/lang/String;)V a +MD net/minecraft/inventory/InventoryBasic addInventoryChangeListener (Lnet/minecraft/inventory/IInvBasic;)V a +MD net/minecraft/inventory/InventoryBasic func_174894_a (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/inventory/InventoryBasic removeInventoryChangeListener (Lnet/minecraft/inventory/IInvBasic;)V b +MD net/minecraft/profiler/PlayerUsageSnooper startSnooper ()V a +MD net/minecraft/profiler/PlayerUsageSnooper addClientStat (Ljava/lang/String;Ljava/lang/Object;)V a +MD net/minecraft/profiler/PlayerUsageSnooper access$000 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Lnet/minecraft/profiler/IPlayerUsage; a +MD net/minecraft/profiler/PlayerUsageSnooper addMemoryStatsToSnooper ()V b +MD net/minecraft/profiler/PlayerUsageSnooper addStatToSnooper (Ljava/lang/String;Ljava/lang/Object;)V b +MD net/minecraft/profiler/PlayerUsageSnooper access$100 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/lang/Object; b +MD net/minecraft/profiler/PlayerUsageSnooper getCurrentStats ()Ljava/util/Map; c +MD net/minecraft/profiler/PlayerUsageSnooper access$200 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/util/Map; c +MD net/minecraft/profiler/PlayerUsageSnooper isSnooperRunning ()Z d +MD net/minecraft/profiler/PlayerUsageSnooper access$300 (Lnet/minecraft/profiler/PlayerUsageSnooper;)I d +MD net/minecraft/profiler/PlayerUsageSnooper stopSnooper ()V e +MD net/minecraft/profiler/PlayerUsageSnooper access$400 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/util/Map; e +MD net/minecraft/profiler/PlayerUsageSnooper getUniqueID ()Ljava/lang/String; f +MD net/minecraft/profiler/PlayerUsageSnooper access$308 (Lnet/minecraft/profiler/PlayerUsageSnooper;)I f +MD net/minecraft/profiler/PlayerUsageSnooper getMinecraftStartTimeMillis ()J g +MD net/minecraft/profiler/PlayerUsageSnooper access$500 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/lang/String; g +MD net/minecraft/profiler/PlayerUsageSnooper addOSData ()V h +MD net/minecraft/profiler/PlayerUsageSnooper access$600 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/net/URL; h +MD net/minecraft/profiler/PlayerUsageSnooper addJvmArgsToSnooper ()V i +MD net/minecraft/profiler/PlayerUsageSnooper$1 run ()V run +MD net/minecraft/profiler/IPlayerUsage addServerStatsToSnooper (Lnet/minecraft/profiler/PlayerUsageSnooper;)V a +MD net/minecraft/profiler/IPlayerUsage isSnooperEnabled ()Z ad +MD net/minecraft/profiler/IPlayerUsage addServerTypeToSnooper (Lnet/minecraft/profiler/PlayerUsageSnooper;)V b +MD net/minecraft/inventory/ISidedInventory canInsertItem (ILnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/inventory/ISidedInventory getSlotsForFace (Lnet/minecraft/util/EnumFacing;)[I a +MD net/minecraft/inventory/ISidedInventory canExtractItem (ILnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/util/CombatEntry getDamageSrc ()Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/CombatEntry func_94563_c ()F c +MD net/minecraft/util/CombatEntry isLivingDamageSrc ()Z f +MD net/minecraft/util/CombatEntry func_94562_g ()Ljava/lang/String; g +MD net/minecraft/util/CombatEntry getDamageSrcDisplayName ()Lnet/minecraft/util/IChatComponent; h +MD net/minecraft/util/CombatEntry getDamageAmount ()F i +MD net/minecraft/util/CombatTracker func_94545_a ()V a +MD net/minecraft/util/CombatTracker func_94548_b (Lnet/minecraft/util/CombatEntry;)Ljava/lang/String; a +MD net/minecraft/util/CombatTracker trackDamage (Lnet/minecraft/util/DamageSource;FF)V a +MD net/minecraft/util/CombatTracker getDeathMessage ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/util/CombatTracker func_94550_c ()Lnet/minecraft/entity/EntityLivingBase; c +MD net/minecraft/util/CombatTracker func_180134_f ()I f +MD net/minecraft/util/CombatTracker reset ()V g +MD net/minecraft/util/CombatTracker getFighter ()Lnet/minecraft/entity/EntityLivingBase; h +MD net/minecraft/util/CombatTracker func_94544_f ()Lnet/minecraft/util/CombatEntry; i +MD net/minecraft/util/CombatTracker func_94542_g ()V j +MD net/minecraft/util/DamageSource isProjectile ()Z a +MD net/minecraft/util/DamageSource setExplosionSource (Lnet/minecraft/world/Explosion;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causeThornsDamage (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causeThrownDamage (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causeMobDamage (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causePlayerDamage (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causeArrowDamage (Lnet/minecraft/entity/projectile/EntityArrow;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource causeFireballDamage (Lnet/minecraft/entity/projectile/EntityFireball;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; a +MD net/minecraft/util/DamageSource setProjectile ()Lnet/minecraft/util/DamageSource; b +MD net/minecraft/util/DamageSource causeIndirectMagicDamage (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; b +MD net/minecraft/util/DamageSource getDeathMessage (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/util/DamageSource isExplosion ()Z c +MD net/minecraft/util/DamageSource setExplosion ()Lnet/minecraft/util/DamageSource; d +MD net/minecraft/util/DamageSource isUnblockable ()Z e +MD net/minecraft/util/DamageSource getHungerDamage ()F f +MD net/minecraft/util/DamageSource canHarmInCreative ()Z g +MD net/minecraft/util/DamageSource isDamageAbsolute ()Z h +MD net/minecraft/util/DamageSource getSourceOfDamage ()Lnet/minecraft/entity/Entity; i +MD net/minecraft/util/DamageSource getEntity ()Lnet/minecraft/entity/Entity; j +MD net/minecraft/util/DamageSource setDamageBypassesArmor ()Lnet/minecraft/util/DamageSource; k +MD net/minecraft/util/DamageSource setDamageAllowedInCreativeMode ()Lnet/minecraft/util/DamageSource; l +MD net/minecraft/util/DamageSource setDamageIsAbsolute ()Lnet/minecraft/util/DamageSource; m +MD net/minecraft/util/DamageSource setFireDamage ()Lnet/minecraft/util/DamageSource; n +MD net/minecraft/util/DamageSource isFireDamage ()Z o +MD net/minecraft/util/DamageSource getDamageType ()Ljava/lang/String; p +MD net/minecraft/util/DamageSource setDifficultyScaled ()Lnet/minecraft/util/DamageSource; q +MD net/minecraft/util/DamageSource isDifficultyScaled ()Z r +MD net/minecraft/util/DamageSource isMagicDamage ()Z s +MD net/minecraft/util/DamageSource setMagicDamage ()Lnet/minecraft/util/DamageSource; t +MD net/minecraft/util/DamageSource isCreativePlayer ()Z u +MD net/minecraft/util/EntityDamageSource setIsThornsDamage ()Lnet/minecraft/util/EntityDamageSource; v +MD net/minecraft/util/EntityDamageSource getIsThornsDamage ()Z w +MD net/minecraft/potion/Potion getName ()Ljava/lang/String; a +MD net/minecraft/potion/Potion setEffectiveness (D)Lnet/minecraft/potion/Potion; a +MD net/minecraft/potion/Potion isReady (II)Z a +MD net/minecraft/potion/Potion getAttributeModifierAmount (ILnet/minecraft/entity/ai/attributes/AttributeModifier;)D a +MD net/minecraft/potion/Potion getDurationString (Lnet/minecraft/potion/PotionEffect;)Ljava/lang/String; a +MD net/minecraft/potion/Potion affectEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/EntityLivingBase;ID)V a +MD net/minecraft/potion/Potion performEffect (Lnet/minecraft/entity/EntityLivingBase;I)V a +MD net/minecraft/potion/Potion removeAttributesModifiersFromEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;I)V a +MD net/minecraft/potion/Potion registerPotionAttributeModifier (Lnet/minecraft/entity/ai/attributes/IAttribute;Ljava/lang/String;DI)Lnet/minecraft/potion/Potion; a +MD net/minecraft/potion/Potion isInstant ()Z b +MD net/minecraft/potion/Potion setIconIndex (II)Lnet/minecraft/potion/Potion; b +MD net/minecraft/potion/Potion getPotionFromResourceLocation (Ljava/lang/String;)Lnet/minecraft/potion/Potion; b +MD net/minecraft/potion/Potion applyAttributesModifiersToEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;I)V b +MD net/minecraft/potion/Potion getPotionLocations ()Ljava/util/Set; c +MD net/minecraft/potion/Potion setPotionName (Ljava/lang/String;)Lnet/minecraft/potion/Potion; c +MD net/minecraft/potion/Potion getId ()I d +MD net/minecraft/potion/Potion hasStatusIcon ()Z e +MD net/minecraft/potion/Potion getStatusIconIndex ()I f +MD net/minecraft/potion/Potion isBadEffect ()Z g +MD net/minecraft/potion/Potion getEffectiveness ()D h +MD net/minecraft/potion/Potion isUsable ()Z j +MD net/minecraft/potion/Potion getLiquidColor ()I k +MD net/minecraft/potion/Potion getAttributeModifierMap ()Ljava/util/Map; l +MD net/minecraft/potion/PotionEffect getPotionID ()I a +MD net/minecraft/potion/PotionEffect writeCustomPotionEffectToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/potion/PotionEffect combine (Lnet/minecraft/potion/PotionEffect;)V a +MD net/minecraft/potion/PotionEffect onUpdate (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/potion/PotionEffect setSplashPotion (Z)V a +MD net/minecraft/potion/PotionEffect getDuration ()I b +MD net/minecraft/potion/PotionEffect readCustomPotionEffectFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/potion/PotionEffect; b +MD net/minecraft/potion/PotionEffect performEffect (Lnet/minecraft/entity/EntityLivingBase;)V b +MD net/minecraft/potion/PotionEffect setPotionDurationMax (Z)V b +MD net/minecraft/potion/PotionEffect getAmplifier ()I c +MD net/minecraft/potion/PotionEffect getIsAmbient ()Z e +MD net/minecraft/potion/PotionEffect getIsShowParticles ()Z f +MD net/minecraft/potion/PotionEffect getEffectName ()Ljava/lang/String; g +MD net/minecraft/potion/PotionEffect getIsPotionDurationMax ()Z h +MD net/minecraft/potion/PotionEffect deincrementDuration ()I i +MD net/minecraft/potion/PotionEffect equals (Ljava/lang/Object;)Z equals +MD net/minecraft/potion/PotionEffect hashCode ()I hashCode +MD net/minecraft/potion/PotionEffect toString ()Ljava/lang/String; toString +MD net/minecraft/entity/EntityAgeable setScale (F)V a +MD net/minecraft/entity/EntityAgeable addGrowth (I)V a +MD net/minecraft/entity/EntityAgeable func_175501_a (IZ)V a +MD net/minecraft/entity/EntityAgeable createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/EntityAgeable; a +MD net/minecraft/entity/EntityAgeable setScaleForAge (Z)V a +MD net/minecraft/entity/EntityAgeable setGrowingAge (I)V b +MD net/minecraft/entity/EntityAgeable getGrowingAge ()I l +MD net/minecraft/entity/EntityAgeable onGrowingAdult ()V n +MD net/minecraft/entity/Entity getEntityId ()I F +MD net/minecraft/entity/Entity onKillCommand ()V G +MD net/minecraft/entity/Entity getDataWatcher ()Lnet/minecraft/entity/DataWatcher; H +MD net/minecraft/entity/Entity preparePlayerToSpawn ()V I +MD net/minecraft/entity/Entity setDead ()V J +MD net/minecraft/entity/Entity onEntityUpdate ()V K +MD net/minecraft/entity/Entity getMaxInPortalTime ()I L +MD net/minecraft/entity/Entity setOnFireFromLava ()V M +MD net/minecraft/entity/Entity extinguish ()V N +MD net/minecraft/entity/Entity kill ()V O +MD net/minecraft/entity/Entity getSwimSound ()Ljava/lang/String; P +MD net/minecraft/entity/Entity doBlockCollisions ()V Q +MD net/minecraft/entity/Entity isSilent ()Z R +MD net/minecraft/entity/Entity getCollisionBoundingBox ()Lnet/minecraft/util/AxisAlignedBB; S +MD net/minecraft/entity/Entity isImmuneToFire ()Z T +MD net/minecraft/entity/Entity isWet ()Z U +MD net/minecraft/entity/Entity isInWater ()Z V +MD net/minecraft/entity/Entity handleWaterMovement ()Z W +MD net/minecraft/entity/Entity resetHeight ()V X +MD net/minecraft/entity/Entity spawnRunningParticles ()V Y +MD net/minecraft/entity/Entity createRunningParticles ()V Z +MD net/minecraft/entity/Entity handleStatusUpdate (B)V a +MD net/minecraft/entity/Entity isInRangeToRenderDist (D)Z a +MD net/minecraft/entity/Entity setPositionAndUpdate (DDD)V a +MD net/minecraft/entity/Entity setPositionAndRotation (DDDFF)V a +MD net/minecraft/entity/Entity setPositionAndRotation2 (DDDFFIZ)V a +MD net/minecraft/entity/Entity rayTrace (DF)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/entity/Entity updateFallState (DZLnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/entity/Entity setSize (FF)V a +MD net/minecraft/entity/Entity moveFlying (FFF)V a +MD net/minecraft/entity/Entity getExplosionResistance (Lnet/minecraft/world/Explosion;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)F a +MD net/minecraft/entity/Entity verifyExplosion (Lnet/minecraft/world/Explosion;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;F)Z a +MD net/minecraft/entity/Entity setWorld (Lnet/minecraft/world/World;)V a +MD net/minecraft/entity/Entity isInsideOfMaterial (Lnet/minecraft/block/material/Material;)Z a +MD net/minecraft/entity/Entity setEntityBoundingBox (Lnet/minecraft/util/AxisAlignedBB;)V a +MD net/minecraft/entity/Entity addEntityCrashInfo (Lnet/minecraft/crash/CrashReportCategory;)V a +MD net/minecraft/entity/Entity moveToBlockPosAndAngles (Lnet/minecraft/util/BlockPos;FF)V a +MD net/minecraft/entity/Entity playStepSound (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V a +MD net/minecraft/entity/Entity readEntityFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/entity/Entity setCustomNameTag (Ljava/lang/String;)V a +MD net/minecraft/entity/Entity playSound (Ljava/lang/String;FF)V a +MD net/minecraft/entity/Entity isSpectatedByPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)Z a +MD net/minecraft/entity/Entity attackEntityFrom (Lnet/minecraft/util/DamageSource;F)Z a +MD net/minecraft/entity/Entity mountEntity (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/entity/Entity onKillEntity (Lnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/entity/Entity applyEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/entity/Entity onStruckByLightning (Lnet/minecraft/entity/effect/EntityLightningBolt;)V a +MD net/minecraft/entity/Entity interactAt (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/Vec3;)Z a +MD net/minecraft/entity/Entity dropItem (Lnet/minecraft/item/Item;I)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/Entity dropItemWithOffset (Lnet/minecraft/item/Item;IF)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/Entity entityDropItem (Lnet/minecraft/item/ItemStack;F)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/Entity newDoubleNBTList ([D)Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/entity/Entity newFloatNBTList ([F)Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/entity/Entity setInWeb ()V aA +MD net/minecraft/entity/Entity getParts ()[Lnet/minecraft/entity/Entity; aB +MD net/minecraft/entity/Entity getRotationYawHead ()F aC +MD net/minecraft/entity/Entity canAttackWithItem ()Z aD +MD net/minecraft/entity/Entity getMaxFallHeight ()I aE +MD net/minecraft/entity/Entity func_181014_aG ()Lnet/minecraft/util/Vec3; aG +MD net/minecraft/entity/Entity getTeleportDirection ()Lnet/minecraft/util/EnumFacing; aH +MD net/minecraft/entity/Entity doesEntityNotTriggerPressurePlate ()Z aI +MD net/minecraft/entity/Entity canRenderOnFire ()Z aJ +MD net/minecraft/entity/Entity getUniqueID ()Ljava/util/UUID; aK +MD net/minecraft/entity/Entity isPushedByWater ()Z aL +MD net/minecraft/entity/Entity getCustomNameTag ()Ljava/lang/String; aM +MD net/minecraft/entity/Entity getAlwaysRenderNameTag ()Z aN +MD net/minecraft/entity/Entity getAlwaysRenderNameTagForRender ()Z aO +MD net/minecraft/entity/Entity getHorizontalFacing ()Lnet/minecraft/util/EnumFacing; aP +MD net/minecraft/entity/Entity getHoverEvent ()Lnet/minecraft/event/HoverEvent; aQ +MD net/minecraft/entity/Entity getEntityBoundingBox ()Lnet/minecraft/util/AxisAlignedBB; aR +MD net/minecraft/entity/Entity getEyeHeight ()F aS +MD net/minecraft/entity/Entity isOutsideBorder ()Z aT +MD net/minecraft/entity/Entity getCommandStats ()Lnet/minecraft/command/CommandResultStats; aU +MD net/minecraft/entity/Entity getNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; aV +MD net/minecraft/entity/Entity isImmuneToExplosions ()Z aW +MD net/minecraft/entity/Entity getSplashSound ()Ljava/lang/String; aa +MD net/minecraft/entity/Entity isInLava ()Z ab +MD net/minecraft/entity/Entity setBeenAttacked ()V ac +MD net/minecraft/entity/Entity canBeCollidedWith ()Z ad +MD net/minecraft/entity/Entity canBePushed ()Z ae +MD net/minecraft/entity/Entity shouldSetPosAfterLoading ()Z af +MD net/minecraft/entity/Entity getEntityString ()Ljava/lang/String; ag +MD net/minecraft/entity/Entity onChunkLoad ()V ah +MD net/minecraft/entity/Entity isEntityAlive ()Z ai +MD net/minecraft/entity/Entity isEntityInsideOpaqueBlock ()Z aj +MD net/minecraft/entity/Entity updateRidden ()V ak +MD net/minecraft/entity/Entity updateRiderPosition ()V al +MD net/minecraft/entity/Entity getYOffset ()D am +MD net/minecraft/entity/Entity getMountedYOffset ()D an +MD net/minecraft/entity/Entity getCollisionBorderSize ()F ao +MD net/minecraft/entity/Entity getLookVec ()Lnet/minecraft/util/Vec3; ap +MD net/minecraft/entity/Entity getPortalCooldown ()I aq +MD net/minecraft/entity/Entity performHurtAnimation ()V ar +MD net/minecraft/entity/Entity getInventory ()[Lnet/minecraft/item/ItemStack; as +MD net/minecraft/entity/Entity isBurning ()Z at +MD net/minecraft/entity/Entity isRiding ()Z au +MD net/minecraft/entity/Entity isSneaking ()Z av +MD net/minecraft/entity/Entity isSprinting ()Z aw +MD net/minecraft/entity/Entity isInvisible ()Z ax +MD net/minecraft/entity/Entity isEating ()Z ay +MD net/minecraft/entity/Entity getAir ()I az +MD net/minecraft/entity/Entity setPosition (DDD)V b +MD net/minecraft/entity/Entity setLocationAndAngles (DDDFF)V b +MD net/minecraft/entity/Entity getBrightnessForRender (F)I b +MD net/minecraft/entity/Entity setRotation (FF)V b +MD net/minecraft/entity/Entity setFlag (IZ)V b +MD net/minecraft/entity/Entity isLiquidPresentInAABB (Lnet/minecraft/util/AxisAlignedBB;)Z b +MD net/minecraft/entity/Entity getDistanceSq (Lnet/minecraft/util/BlockPos;)D b +MD net/minecraft/entity/Entity writeEntityToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/entity/Entity isEntityInvulnerable (Lnet/minecraft/util/DamageSource;)Z b +MD net/minecraft/entity/Entity addToPlayerScore (Lnet/minecraft/entity/Entity;I)V b +MD net/minecraft/entity/Entity setSilent (Z)V b +MD net/minecraft/entity/Entity isOffsetPositionInLiquid (DDD)Z c +MD net/minecraft/entity/Entity getBrightness (F)F c +MD net/minecraft/entity/Entity setAngles (FF)V c +MD net/minecraft/entity/Entity travelToDimension (I)V c +MD net/minecraft/entity/Entity setCurrentItemOrArmor (ILnet/minecraft/item/ItemStack;)V c +MD net/minecraft/entity/Entity getDistanceSqToCenter (Lnet/minecraft/util/BlockPos;)D c +MD net/minecraft/entity/Entity writeMountToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Z c +MD net/minecraft/entity/Entity setSneaking (Z)V c +MD net/minecraft/entity/Entity moveEntity (DDD)V d +MD net/minecraft/entity/Entity getLook (F)Lnet/minecraft/util/Vec3; d +MD net/minecraft/entity/Entity setEntityId (I)V d +MD net/minecraft/entity/Entity replaceItemInInventory (ILnet/minecraft/item/ItemStack;)Z d +MD net/minecraft/entity/Entity setPortal (Lnet/minecraft/util/BlockPos;)V d +MD net/minecraft/entity/Entity writeToNBTOptional (Lnet/minecraft/nbt/NBTTagCompound;)Z d +MD net/minecraft/entity/Entity onCollideWithPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V d +MD net/minecraft/entity/Entity setSprinting (Z)V d +MD net/minecraft/entity/Entity getDistanceSq (DDD)D e +MD net/minecraft/entity/Entity getPositionEyes (F)Lnet/minecraft/util/Vec3; e +MD net/minecraft/entity/Entity fall (FF)V e +MD net/minecraft/entity/Entity setFire (I)V e +MD net/minecraft/entity/Entity writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V e +MD net/minecraft/entity/Entity interactFirst (Lnet/minecraft/entity/player/EntityPlayer;)Z e +MD net/minecraft/entity/Entity setInvisible (Z)V e +MD net/minecraft/entity/Entity getDistance (DDD)D f +MD net/minecraft/entity/Entity setRotationYawHead (F)V f +MD net/minecraft/entity/Entity getVectorForRotation (FF)Lnet/minecraft/util/Vec3; f +MD net/minecraft/entity/Entity dealFireDamage (I)V f +MD net/minecraft/entity/Entity readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V f +MD net/minecraft/entity/Entity isInvisibleToPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z f +MD net/minecraft/entity/Entity setEating (Z)V f +MD net/minecraft/entity/Entity addVelocity (DDD)V g +MD net/minecraft/entity/Entity setRenderYawOffset (F)V g +MD net/minecraft/entity/Entity getFlag (I)Z g +MD net/minecraft/entity/Entity clientUpdateEntityNBT (Lnet/minecraft/nbt/NBTTagCompound;)V g +MD net/minecraft/entity/Entity getDistanceToEntity (Lnet/minecraft/entity/Entity;)F g +MD net/minecraft/entity/Entity setAlwaysRenderNameTag (Z)V g +MD net/minecraft/entity/Entity entityInit ()V h +MD net/minecraft/entity/Entity isInRangeToRender3d (DDD)Z h +MD net/minecraft/entity/Entity setAir (I)V h +MD net/minecraft/entity/Entity getDistanceSqToEntity (Lnet/minecraft/entity/Entity;)D h +MD net/minecraft/entity/Entity setOutsideBorder (Z)V h +MD net/minecraft/entity/Entity setVelocity (DDD)V i +MD net/minecraft/entity/Entity onDataWatcherUpdate (I)V i +MD net/minecraft/entity/Entity applyEntityCollision (Lnet/minecraft/entity/Entity;)V i +MD net/minecraft/entity/Entity pushOutOfBlocks (DDD)Z j +MD net/minecraft/entity/Entity getCollisionBox (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/AxisAlignedBB; j +MD net/minecraft/entity/Entity isEntityEqual (Lnet/minecraft/entity/Entity;)Z k +MD net/minecraft/entity/Entity hitByEntity (Lnet/minecraft/entity/Entity;)Z l +MD net/minecraft/entity/Entity hasCustomName ()Z l_ +MD net/minecraft/entity/Entity resetPositionToBB ()V m +MD net/minecraft/entity/Entity copyLocationAndAnglesFrom (Lnet/minecraft/entity/Entity;)V m +MD net/minecraft/entity/Entity copyDataFromOld (Lnet/minecraft/entity/Entity;)V n +MD net/minecraft/entity/Entity setCommandStats (Lnet/minecraft/entity/Entity;)V o +MD net/minecraft/entity/Entity canTriggerWalking ()Z s_ +MD net/minecraft/entity/Entity onUpdate ()V t_ +MD net/minecraft/entity/Entity equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/Entity hashCode ()I hashCode +MD net/minecraft/entity/Entity toString ()Ljava/lang/String; toString +MD net/minecraft/entity/Entity$1 call ()Ljava/lang/String; a +MD net/minecraft/entity/Entity$1 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$2 call ()Ljava/lang/String; a +MD net/minecraft/entity/Entity$2 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$3 call ()Ljava/lang/String; a +MD net/minecraft/entity/Entity$3 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$4 call ()Ljava/lang/String; a +MD net/minecraft/entity/Entity$4 call ()Ljava/lang/Object; call +MD net/minecraft/entity/EntityList func_151514_a ()V a +MD net/minecraft/entity/EntityList getClassFromID (I)Ljava/lang/Class; a +MD net/minecraft/entity/EntityList createEntityByID (ILnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/entity/EntityList createEntityFromNBT (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/entity/EntityList addMapping (Ljava/lang/Class;Ljava/lang/String;I)V a +MD net/minecraft/entity/EntityList addMapping (Ljava/lang/Class;Ljava/lang/String;III)V a +MD net/minecraft/entity/EntityList getIDFromString (Ljava/lang/String;)I a +MD net/minecraft/entity/EntityList createEntityByName (Ljava/lang/String;Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/entity/EntityList getEntityID (Lnet/minecraft/entity/Entity;)I a +MD net/minecraft/entity/EntityList isStringEntityName (Lnet/minecraft/entity/Entity;Ljava/lang/String;)Z a +MD net/minecraft/entity/EntityList getEntityNameList ()Ljava/util/List; b +MD net/minecraft/entity/EntityList getStringFromID (I)Ljava/lang/String; b +MD net/minecraft/entity/EntityList isStringValidEntityName (Ljava/lang/String;)Z b +MD net/minecraft/entity/EntityList getEntityString (Lnet/minecraft/entity/Entity;)Ljava/lang/String; b +MD net/minecraft/util/EntitySelectors$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/util/EntitySelectors$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$2 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/util/EntitySelectors$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$3 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/util/EntitySelectors$3 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$4 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/util/EntitySelectors$4 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$ArmoredMob apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/util/EntitySelectors$ArmoredMob apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/item/EntityXPOrb getXPSplit (I)I a +MD net/minecraft/entity/item/EntityXPOrb getXpValue ()I j +MD net/minecraft/entity/item/EntityXPOrb getTextureByXP ()I l +MD net/minecraft/entity/EntityLivingBase updatePotionMetadata ()V B +MD net/minecraft/entity/EntityLivingBase isOnTeam (Lnet/minecraft/scoreboard/Team;)Z a +MD net/minecraft/entity/EntityLivingBase onDeath (Lnet/minecraft/util/DamageSource;)V a +MD net/minecraft/entity/EntityLivingBase isPotionActive (Lnet/minecraft/potion/Potion;)Z a +MD net/minecraft/entity/EntityLivingBase onNewPotionEffect (Lnet/minecraft/potion/PotionEffect;)V a +MD net/minecraft/entity/EntityLivingBase onChangedPotionEffect (Lnet/minecraft/potion/PotionEffect;Z)V a +MD net/minecraft/entity/EntityLivingBase knockBack (Lnet/minecraft/entity/Entity;FDD)V a +MD net/minecraft/entity/EntityLivingBase onItemPickup (Lnet/minecraft/entity/Entity;I)V a +MD net/minecraft/entity/EntityLivingBase getEntityAttribute (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; a +MD net/minecraft/entity/EntityLivingBase dropEquipment (ZI)V a +MD net/minecraft/entity/EntityLivingBase applyEntityAttributes ()V aX +MD net/minecraft/entity/EntityLivingBase canBreatheUnderwater ()Z aY +MD net/minecraft/entity/EntityLivingBase onDeathUpdate ()V aZ +MD net/minecraft/entity/EntityLivingBase applyArmorCalculations (Lnet/minecraft/util/DamageSource;F)F b +MD net/minecraft/entity/EntityLivingBase getActivePotionEffect (Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect; b +MD net/minecraft/entity/EntityLivingBase onFinishedPotionEffect (Lnet/minecraft/potion/PotionEffect;)V b +MD net/minecraft/entity/EntityLivingBase setRevengeTarget (Lnet/minecraft/entity/EntityLivingBase;)V b +MD net/minecraft/entity/EntityLivingBase getExperiencePoints (Lnet/minecraft/entity/player/EntityPlayer;)I b +MD net/minecraft/entity/EntityLivingBase renderBrokenItemStack (Lnet/minecraft/item/ItemStack;)V b +MD net/minecraft/entity/EntityLivingBase dropFewItems (ZI)V b +MD net/minecraft/entity/EntityLivingBase getHeldItem ()Lnet/minecraft/item/ItemStack; bA +MD net/minecraft/entity/EntityLivingBase getSoundVolume ()F bB +MD net/minecraft/entity/EntityLivingBase getSoundPitch ()F bC +MD net/minecraft/entity/EntityLivingBase isMovementBlocked ()Z bD +MD net/minecraft/entity/EntityLivingBase getJumpUpwardsMotion ()F bE +MD net/minecraft/entity/EntityLivingBase jump ()V bF +MD net/minecraft/entity/EntityLivingBase updateAITick ()V bG +MD net/minecraft/entity/EntityLivingBase handleJumpLava ()V bH +MD net/minecraft/entity/EntityLivingBase getAIMoveSpeed ()F bI +MD net/minecraft/entity/EntityLivingBase isPlayerSleeping ()Z bJ +MD net/minecraft/entity/EntityLivingBase updateEntityActionState ()V bK +MD net/minecraft/entity/EntityLivingBase collideWithNearbyEntities ()V bL +MD net/minecraft/entity/EntityLivingBase isServerWorld ()Z bM +MD net/minecraft/entity/EntityLivingBase getAbsorptionAmount ()F bN +MD net/minecraft/entity/EntityLivingBase getTeam ()Lnet/minecraft/scoreboard/Team; bO +MD net/minecraft/entity/EntityLivingBase markPotionsDirty ()V bP +MD net/minecraft/entity/EntityLivingBase canDropLoot ()Z ba +MD net/minecraft/entity/EntityLivingBase isPlayer ()Z bb +MD net/minecraft/entity/EntityLivingBase getRNG ()Ljava/util/Random; bc +MD net/minecraft/entity/EntityLivingBase getAITarget ()Lnet/minecraft/entity/EntityLivingBase; bd +MD net/minecraft/entity/EntityLivingBase getRevengeTimer ()I be +MD net/minecraft/entity/EntityLivingBase getLastAttacker ()Lnet/minecraft/entity/EntityLivingBase; bf +MD net/minecraft/entity/EntityLivingBase getLastAttackerTime ()I bg +MD net/minecraft/entity/EntityLivingBase getAge ()I bh +MD net/minecraft/entity/EntityLivingBase updatePotionEffects ()V bi +MD net/minecraft/entity/EntityLivingBase resetPotionEffectMetadata ()V bj +MD net/minecraft/entity/EntityLivingBase clearActivePotions ()V bk +MD net/minecraft/entity/EntityLivingBase getActivePotionEffects ()Ljava/util/Collection; bl +MD net/minecraft/entity/EntityLivingBase isEntityUndead ()Z bm +MD net/minecraft/entity/EntityLivingBase getHealth ()F bn +MD net/minecraft/entity/EntityLivingBase getHurtSound ()Ljava/lang/String; bo +MD net/minecraft/entity/EntityLivingBase getDeathSound ()Ljava/lang/String; bp +MD net/minecraft/entity/EntityLivingBase addRandomDrop ()V bq +MD net/minecraft/entity/EntityLivingBase getTotalArmorValue ()I br +MD net/minecraft/entity/EntityLivingBase getCombatTracker ()Lnet/minecraft/util/CombatTracker; bs +MD net/minecraft/entity/EntityLivingBase getAttackingEntity ()Lnet/minecraft/entity/EntityLivingBase; bt +MD net/minecraft/entity/EntityLivingBase getMaxHealth ()F bu +MD net/minecraft/entity/EntityLivingBase getArrowCountInEntity ()I bv +MD net/minecraft/entity/EntityLivingBase swingItem ()V bw +MD net/minecraft/entity/EntityLivingBase updateArmSwingProgress ()V bx +MD net/minecraft/entity/EntityLivingBase getAttributeMap ()Lnet/minecraft/entity/ai/attributes/BaseAttributeMap; by +MD net/minecraft/entity/EntityLivingBase getCreatureAttribute ()Lnet/minecraft/entity/EnumCreatureAttribute; bz +MD net/minecraft/entity/EntityLivingBase applyPotionDamageCalculations (Lnet/minecraft/util/DamageSource;F)F c +MD net/minecraft/entity/EntityLivingBase addPotionEffect (Lnet/minecraft/potion/PotionEffect;)V c +MD net/minecraft/entity/EntityLivingBase isOnSameTeam (Lnet/minecraft/entity/EntityLivingBase;)Z c +MD net/minecraft/entity/EntityLivingBase damageEntity (Lnet/minecraft/util/DamageSource;F)V d +MD net/minecraft/entity/EntityLivingBase isPotionApplicable (Lnet/minecraft/potion/PotionEffect;)Z d +MD net/minecraft/entity/EntityLivingBase moveEntityWithHeading (FF)V g +MD net/minecraft/entity/EntityLivingBase heal (F)V h +MD net/minecraft/entity/EntityLivingBase updateDistance (FF)F h +MD net/minecraft/entity/EntityLivingBase sendEnterCombat ()V h_ +MD net/minecraft/entity/EntityLivingBase setHealth (F)V i +MD net/minecraft/entity/EntityLivingBase setJumping (Z)V i +MD net/minecraft/entity/EntityLivingBase sendEndCombat ()V j +MD net/minecraft/entity/EntityLivingBase damageArmor (F)V j +MD net/minecraft/entity/EntityLivingBase decreaseAirSupply (I)I j +MD net/minecraft/entity/EntityLivingBase isChild ()Z j_ +MD net/minecraft/entity/EntityLivingBase setAIMoveSpeed (F)V k +MD net/minecraft/entity/EntityLivingBase isPotionActive (I)Z k +MD net/minecraft/entity/EntityLivingBase isOnLadder ()Z k_ +MD net/minecraft/entity/EntityLivingBase getSwingProgress (F)F l +MD net/minecraft/entity/EntityLivingBase removePotionEffectClient (I)V l +MD net/minecraft/entity/EntityLivingBase onLivingUpdate ()V m +MD net/minecraft/entity/EntityLivingBase setAbsorptionAmount (F)V m +MD net/minecraft/entity/EntityLivingBase removePotionEffect (I)V m +MD net/minecraft/entity/EntityLivingBase getArmSwingAnimationEnd ()I n +MD net/minecraft/entity/EntityLivingBase getFallSoundString (I)Ljava/lang/String; n +MD net/minecraft/entity/EntityLivingBase setArrowCountInEntity (I)V o +MD net/minecraft/entity/EntityLivingBase getEquipmentInSlot (I)Lnet/minecraft/item/ItemStack; p +MD net/minecraft/entity/EntityLivingBase setLastAttacker (Lnet/minecraft/entity/Entity;)V p +MD net/minecraft/entity/EntityLivingBase getCurrentArmor (I)Lnet/minecraft/item/ItemStack; q +MD net/minecraft/entity/EntityLivingBase dismountEntity (Lnet/minecraft/entity/Entity;)V q +MD net/minecraft/entity/EntityLivingBase attackEntityAsMob (Lnet/minecraft/entity/Entity;)Z r +MD net/minecraft/entity/EntityLivingBase collideWithEntity (Lnet/minecraft/entity/Entity;)V s +MD net/minecraft/entity/EntityLivingBase canEntityBeSeen (Lnet/minecraft/entity/Entity;)Z t +MD net/minecraft/entity/EntityLivingBase$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/EntityLivingBase$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/EntityLiving getDropItem ()Lnet/minecraft/item/Item; A +MD net/minecraft/entity/EntityLiving canDespawn ()Z C +MD net/minecraft/entity/EntityLiving despawnEntity ()V D +MD net/minecraft/entity/EntityLiving updateAITasks ()V E +MD net/minecraft/entity/EntityLiving setEquipmentDropChance (IF)V a +MD net/minecraft/entity/EntityLiving getArmorItemForSlot (II)Lnet/minecraft/item/Item; a +MD net/minecraft/entity/EntityLiving canAttackClass (Ljava/lang/Class;)Z a +MD net/minecraft/entity/EntityLiving setEquipmentBasedOnDifficulty (Lnet/minecraft/world/DifficultyInstance;)V a +MD net/minecraft/entity/EntityLiving onInitialSpawn (Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/entity/IEntityLivingData;)Lnet/minecraft/entity/IEntityLivingData; a +MD net/minecraft/entity/EntityLiving faceEntity (Lnet/minecraft/entity/Entity;FF)V a +MD net/minecraft/entity/EntityLiving setLeashedToEntity (Lnet/minecraft/entity/Entity;Z)V a +MD net/minecraft/entity/EntityLiving updateEquipmentIfNeeded (Lnet/minecraft/entity/item/EntityItem;)V a +MD net/minecraft/entity/EntityLiving interact (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/entity/EntityLiving func_175448_a (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/entity/EntityLiving clearLeashed (ZZ)V a +MD net/minecraft/entity/EntityLiving updateRotation (FFF)F b +MD net/minecraft/entity/EntityLiving getNewNavigator (Lnet/minecraft/world/World;)Lnet/minecraft/pathfinding/PathNavigate; b +MD net/minecraft/entity/EntityLiving setEnchantmentBasedOnDifficulty (Lnet/minecraft/world/DifficultyInstance;)V b +MD net/minecraft/entity/EntityLiving getVerticalFaceSpeed ()I bQ +MD net/minecraft/entity/EntityLiving getCanSpawnHere ()Z bR +MD net/minecraft/entity/EntityLiving isNotColliding ()Z bS +MD net/minecraft/entity/EntityLiving getRenderSizeModifier ()F bT +MD net/minecraft/entity/EntityLiving getMaxSpawnedInChunk ()I bV +MD net/minecraft/entity/EntityLiving canBeSteered ()Z bW +MD net/minecraft/entity/EntityLiving enablePersistence ()V bX +MD net/minecraft/entity/EntityLiving canPickUpLoot ()Z bY +MD net/minecraft/entity/EntityLiving isNoDespawnRequired ()Z bZ +MD net/minecraft/entity/EntityLiving getArmorPosition (Lnet/minecraft/item/ItemStack;)I c +MD net/minecraft/entity/EntityLiving updateLeashedState ()V ca +MD net/minecraft/entity/EntityLiving allowLeashing ()Z cb +MD net/minecraft/entity/EntityLiving getLeashed ()Z cc +MD net/minecraft/entity/EntityLiving getLeashedToEntity ()Lnet/minecraft/entity/Entity; cd +MD net/minecraft/entity/EntityLiving isAIDisabled ()Z ce +MD net/minecraft/entity/EntityLiving setAttackTarget (Lnet/minecraft/entity/EntityLivingBase;)V d +MD net/minecraft/entity/EntityLiving setCanPickUpLoot (Z)V j +MD net/minecraft/entity/EntityLiving setNoAI (Z)V k +MD net/minecraft/entity/EntityLiving recreateLeash ()V n +MD net/minecraft/entity/EntityLiving setMoveForward (F)V n +MD net/minecraft/entity/EntityLiving getLookHelper ()Lnet/minecraft/entity/ai/EntityLookHelper; p +MD net/minecraft/entity/EntityLiving getMoveHelper ()Lnet/minecraft/entity/ai/EntityMoveHelper; q +MD net/minecraft/entity/EntityLiving getJumpHelper ()Lnet/minecraft/entity/ai/EntityJumpHelper; r +MD net/minecraft/entity/EntityLiving getNavigator ()Lnet/minecraft/pathfinding/PathNavigate; s +MD net/minecraft/entity/EntityLiving getEntitySenses ()Lnet/minecraft/entity/ai/EntitySenses; t +MD net/minecraft/entity/EntityLiving getAttackTarget ()Lnet/minecraft/entity/EntityLivingBase; u +MD net/minecraft/entity/EntityLiving eatGrassBonus ()V v +MD net/minecraft/entity/EntityLiving getTalkInterval ()I w +MD net/minecraft/entity/EntityLiving playLivingSound ()V x +MD net/minecraft/entity/EntityLiving spawnExplosionParticle ()V y +MD net/minecraft/entity/EntityLiving getLivingSound ()Ljava/lang/String; z +MD net/minecraft/entity/EntityLiving$SpawnPlacementType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; valueOf +MD net/minecraft/entity/EntityLiving$SpawnPlacementType values ()[Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; values +MD net/minecraft/entity/EnumCreatureType getCreatureClass ()Ljava/lang/Class; a +MD net/minecraft/entity/EnumCreatureType getMaxNumberOfCreature ()I b +MD net/minecraft/entity/EnumCreatureType getPeacefulCreature ()Z d +MD net/minecraft/entity/EnumCreatureType getAnimal ()Z e +MD net/minecraft/entity/EnumCreatureType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EnumCreatureType; valueOf +MD net/minecraft/entity/EnumCreatureType values ()[Lnet/minecraft/entity/EnumCreatureType; values +MD net/minecraft/entity/EntitySpawnPlacementRegistry getPlacementForEntity (Ljava/lang/Class;)Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; a +MD net/minecraft/entity/EnumCreatureAttribute valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EnumCreatureAttribute; valueOf +MD net/minecraft/entity/EnumCreatureAttribute values ()[Lnet/minecraft/entity/EnumCreatureAttribute; values +MD net/minecraft/entity/IEntityOwnable getOwnerId ()Ljava/lang/String; b +MD net/minecraft/entity/IEntityOwnable getOwner ()Lnet/minecraft/entity/Entity; m_ +MD net/minecraft/entity/EntityCreature getBlockPathWeight (Lnet/minecraft/util/BlockPos;)F a +MD net/minecraft/entity/EntityCreature setHomePosAndDistance (Lnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/entity/EntityCreature hasPath ()Z cf +MD net/minecraft/entity/EntityCreature isWithinHomeDistanceCurrentPosition ()Z cg +MD net/minecraft/entity/EntityCreature getHomePosition ()Lnet/minecraft/util/BlockPos; ch +MD net/minecraft/entity/EntityCreature getMaximumHomeDistance ()F ci +MD net/minecraft/entity/EntityCreature detachHome ()V cj +MD net/minecraft/entity/EntityCreature hasHome ()Z ck +MD net/minecraft/entity/EntityCreature isWithinHomeDistanceFromPosition (Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/entity/EntityCreature func_142017_o (F)V o +MD net/minecraft/entity/DataWatcher hasObjectChanged ()Z a +MD net/minecraft/entity/DataWatcher getWatchableObjectByte (I)B a +MD net/minecraft/entity/DataWatcher addObjectByDataType (II)V a +MD net/minecraft/entity/DataWatcher addObject (ILjava/lang/Object;)V a +MD net/minecraft/entity/DataWatcher writeTo (Lnet/minecraft/network/PacketBuffer;)V a +MD net/minecraft/entity/DataWatcher writeWatchableObjectToPacketBuffer (Lnet/minecraft/network/PacketBuffer;Lnet/minecraft/entity/DataWatcher$WatchableObject;)V a +MD net/minecraft/entity/DataWatcher updateWatchedObjectsFromList (Ljava/util/List;)V a +MD net/minecraft/entity/DataWatcher writeWatchedListToPacketBuffer (Ljava/util/List;Lnet/minecraft/network/PacketBuffer;)V a +MD net/minecraft/entity/DataWatcher getChanged ()Ljava/util/List; b +MD net/minecraft/entity/DataWatcher getWatchableObjectShort (I)S b +MD net/minecraft/entity/DataWatcher updateObject (ILjava/lang/Object;)V b +MD net/minecraft/entity/DataWatcher readWatchedListFromPacketBuffer (Lnet/minecraft/network/PacketBuffer;)Ljava/util/List; b +MD net/minecraft/entity/DataWatcher getAllWatched ()Ljava/util/List; c +MD net/minecraft/entity/DataWatcher getWatchableObjectInt (I)I c +MD net/minecraft/entity/DataWatcher getIsBlank ()Z d +MD net/minecraft/entity/DataWatcher getWatchableObjectFloat (I)F d +MD net/minecraft/entity/DataWatcher func_111144_e ()V e +MD net/minecraft/entity/DataWatcher getWatchableObjectString (I)Ljava/lang/String; e +MD net/minecraft/entity/DataWatcher getWatchableObjectItemStack (I)Lnet/minecraft/item/ItemStack; f +MD net/minecraft/entity/DataWatcher getWatchableObjectRotations (I)Lnet/minecraft/util/Rotations; h +MD net/minecraft/entity/DataWatcher setObjectWatched (I)V i +MD net/minecraft/entity/DataWatcher getWatchedObject (I)Lnet/minecraft/entity/DataWatcher$WatchableObject; j +MD net/minecraft/entity/DataWatcher$WatchableObject getDataValueId ()I a +MD net/minecraft/entity/DataWatcher$WatchableObject setObject (Ljava/lang/Object;)V a +MD net/minecraft/entity/DataWatcher$WatchableObject access$002 (Lnet/minecraft/entity/DataWatcher$WatchableObject;Z)Z a +MD net/minecraft/entity/DataWatcher$WatchableObject setWatched (Z)V a +MD net/minecraft/entity/DataWatcher$WatchableObject getObject ()Ljava/lang/Object; b +MD net/minecraft/entity/DataWatcher$WatchableObject getObjectType ()I c +MD net/minecraft/entity/DataWatcher$WatchableObject isWatched ()Z d +MD net/minecraft/entity/passive/EntityTameable shouldAttackEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/passive/EntityTameable setOwnerId (Ljava/lang/String;)V b +MD net/minecraft/entity/passive/EntityTameable isTamed ()Z cl +MD net/minecraft/entity/passive/EntityTameable setupTamedAI ()V cm +MD net/minecraft/entity/passive/EntityTameable isSitting ()Z cn +MD net/minecraft/entity/passive/EntityTameable getOwner ()Lnet/minecraft/entity/EntityLivingBase; co +MD net/minecraft/entity/passive/EntityTameable getAISit ()Lnet/minecraft/entity/ai/EntityAISit; cp +MD net/minecraft/entity/passive/EntityTameable isOwner (Lnet/minecraft/entity/EntityLivingBase;)Z e +MD net/minecraft/entity/passive/EntityTameable playTameEffect (Z)V l +MD net/minecraft/entity/passive/EntityTameable setTamed (Z)V m +MD net/minecraft/entity/passive/EntityTameable setSitting (Z)V n +MD net/minecraft/entity/ai/attributes/IAttribute getAttributeUnlocalizedName ()Ljava/lang/String; a +MD net/minecraft/entity/ai/attributes/IAttribute clampValue (D)D a +MD net/minecraft/entity/ai/attributes/IAttribute getDefaultValue ()D b +MD net/minecraft/entity/ai/attributes/IAttribute getShouldWatch ()Z c +MD net/minecraft/entity/ai/attributes/IAttribute func_180372_d ()Lnet/minecraft/entity/ai/attributes/IAttribute; d +MD net/minecraft/entity/ai/attributes/IAttributeInstance getAttribute ()Lnet/minecraft/entity/ai/attributes/IAttribute; a +MD net/minecraft/entity/ai/attributes/IAttributeInstance setBaseValue (D)V a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getModifiersByOperation (I)Ljava/util/Collection; a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getModifier (Ljava/util/UUID;)Lnet/minecraft/entity/ai/attributes/AttributeModifier; a +MD net/minecraft/entity/ai/attributes/IAttributeInstance hasModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)Z a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getBaseValue ()D b +MD net/minecraft/entity/ai/attributes/IAttributeInstance applyModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)V b +MD net/minecraft/entity/ai/attributes/IAttributeInstance func_111122_c ()Ljava/util/Collection; c +MD net/minecraft/entity/ai/attributes/IAttributeInstance removeModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)V c +MD net/minecraft/entity/ai/attributes/IAttributeInstance removeAllModifiers ()V d +MD net/minecraft/entity/ai/attributes/IAttributeInstance getAttributeValue ()D e +MD net/minecraft/entity/ai/attributes/AttributeModifier getID ()Ljava/util/UUID; a +MD net/minecraft/entity/ai/attributes/AttributeModifier setSaved (Z)Lnet/minecraft/entity/ai/attributes/AttributeModifier; a +MD net/minecraft/entity/ai/attributes/AttributeModifier getName ()Ljava/lang/String; b +MD net/minecraft/entity/ai/attributes/AttributeModifier getOperation ()I c +MD net/minecraft/entity/ai/attributes/AttributeModifier getAmount ()D d +MD net/minecraft/entity/ai/attributes/AttributeModifier isSaved ()Z e +MD net/minecraft/entity/ai/attributes/AttributeModifier equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/ai/attributes/AttributeModifier hashCode ()I hashCode +MD net/minecraft/entity/ai/attributes/AttributeModifier toString ()Ljava/lang/String; toString +MD net/minecraft/entity/ai/attributes/BaseAttribute setShouldWatch (Z)Lnet/minecraft/entity/ai/attributes/BaseAttribute; a +MD net/minecraft/entity/ai/attributes/BaseAttribute equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/ai/attributes/BaseAttribute hashCode ()I hashCode +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAllAttributes ()Ljava/util/Collection; a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap removeAttributeModifiers (Lcom/google/common/collect/Multimap;)V a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAttributeInstanceByName (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap func_180794_a (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;)V a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap applyAttributeModifiers (Lcom/google/common/collect/Multimap;)V b +MD net/minecraft/entity/ai/attributes/BaseAttributeMap registerAttribute (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; b +MD net/minecraft/entity/ai/attributes/BaseAttributeMap func_180376_c (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; c +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance func_180375_b (I)Ljava/util/Collection; b +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance flagForUpdate ()V f +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance computeValue ()D g +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstanceSet ()Ljava/util/Set; b +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstanceByName (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/ModifiableAttributeInstance; b +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getWatchedAttributes ()Ljava/util/Collection; c +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/ModifiableAttributeInstance; e +MD net/minecraft/entity/ai/attributes/RangedAttribute setDescription (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/RangedAttribute; a +MD net/minecraft/entity/ai/attributes/RangedAttribute getDescription ()Ljava/lang/String; g +MD net/minecraft/entity/EntityBodyHelper updateRenderAngles ()V a +MD net/minecraft/entity/EntityBodyHelper computeAngleWithBound (FFF)F a +MD net/minecraft/entity/ai/EntityJumpHelper setJumping ()V a +MD net/minecraft/entity/ai/EntityJumpHelper doJump ()V b +MD net/minecraft/entity/ai/EntityLookHelper onUpdateLook ()V a +MD net/minecraft/entity/ai/EntityLookHelper setLookPosition (DDDFF)V a +MD net/minecraft/entity/ai/EntityLookHelper updateRotation (FFF)F a +MD net/minecraft/entity/ai/EntityLookHelper setLookPositionWithEntity (Lnet/minecraft/entity/Entity;FF)V a +MD net/minecraft/entity/ai/EntityLookHelper getIsLooking ()Z b +MD net/minecraft/entity/ai/EntityLookHelper getLookPosX ()D e +MD net/minecraft/entity/ai/EntityLookHelper getLookPosY ()D f +MD net/minecraft/entity/ai/EntityLookHelper getLookPosZ ()D g +MD net/minecraft/entity/ai/EntityMoveHelper isUpdating ()Z a +MD net/minecraft/entity/ai/EntityMoveHelper setMoveTo (DDDD)V a +MD net/minecraft/entity/ai/EntityMoveHelper limitAngle (FFF)F a +MD net/minecraft/entity/ai/EntityMoveHelper getSpeed ()D b +MD net/minecraft/entity/ai/EntityMoveHelper onUpdateMoveHelper ()V c +MD net/minecraft/entity/ai/EntityMoveHelper getX ()D d +MD net/minecraft/entity/ai/EntityMoveHelper getY ()D e +MD net/minecraft/entity/ai/EntityMoveHelper getZ ()D f +MD net/minecraft/entity/ai/EntityAIAvoidEntity$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/ai/EntityAIAvoidEntity$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAIBeg hasPlayerGotBoneInHand (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/entity/ai/EntityAIMate getNearbyMate ()Lnet/minecraft/entity/passive/EntityAnimal; f +MD net/minecraft/entity/ai/EntityAIMate spawnBaby ()V g +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isStairOrSlab (Lnet/minecraft/block/Block;)Z a +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isSpeedBoosted ()Z f +MD net/minecraft/entity/ai/EntityAIControlledByPlayer boostSpeed ()V g +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isControlledByPlayer ()Z h +MD net/minecraft/entity/ai/EntityAIDoorInteract getBlockDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockDoor; a +MD net/minecraft/entity/ai/EntityAIEatGrass getEatingGrassTimer ()I f +MD net/minecraft/entity/ai/EntityAIFleeSun findPossibleShelter ()Lnet/minecraft/util/Vec3; f +MD net/minecraft/entity/ai/EntityAIFollowOwner func_181065_a (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/entity/ai/EntityAIBase shouldExecute ()Z a +MD net/minecraft/entity/ai/EntityAIBase setMutexBits (I)V a +MD net/minecraft/entity/ai/EntityAIBase continueExecuting ()Z b +MD net/minecraft/entity/ai/EntityAIBase startExecuting ()V c +MD net/minecraft/entity/ai/EntityAIBase resetTask ()V d +MD net/minecraft/entity/ai/EntityAIBase updateTask ()V e +MD net/minecraft/entity/ai/EntityAIBase isInterruptible ()Z i +MD net/minecraft/entity/ai/EntityAIBase getMutexBits ()I j +MD net/minecraft/entity/ai/EntityAITasks onUpdateTasks ()V a +MD net/minecraft/entity/ai/EntityAITasks addTask (ILnet/minecraft/entity/ai/EntityAIBase;)V a +MD net/minecraft/entity/ai/EntityAITasks removeTask (Lnet/minecraft/entity/ai/EntityAIBase;)V a +MD net/minecraft/entity/ai/EntityAITasks canContinue (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z a +MD net/minecraft/entity/ai/EntityAITasks areTasksCompatible (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z a +MD net/minecraft/entity/ai/EntityAITasks canUse (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z b +MD net/minecraft/entity/ai/EntityAIVillagerMate checkSufficientDoorsPresentForNewVillager ()Z f +MD net/minecraft/entity/ai/EntityAIVillagerMate giveBirth ()V g +MD net/minecraft/entity/ai/EntityAIAttackOnCollide func_179512_a (Lnet/minecraft/entity/EntityLivingBase;)D a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage doesDoorListContain (Lnet/minecraft/village/VillageDoorInfo;)Z a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage findNearestDoor (Lnet/minecraft/village/Village;)Lnet/minecraft/village/VillageDoorInfo; a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage resizeDoorList ()V f +MD net/minecraft/entity/ai/EntityAIMoveToBlock shouldMoveTo (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/entity/ai/EntityAIMoveToBlock getIsAboveDestination ()Z f +MD net/minecraft/entity/ai/EntityAIMoveToBlock searchForDestination ()Z g +MD net/minecraft/entity/ai/EntityAIWander setExecutionChance (I)V b +MD net/minecraft/entity/ai/EntityAIWander makeUpdate ()V f +MD net/minecraft/entity/ai/EntityAISit setSitting (Z)V a +MD net/minecraft/entity/ai/EntityAITempt isRunning ()Z f +MD net/minecraft/entity/ai/EntityAIHurtByTarget setEntityAttackTarget (Lnet/minecraft/entity/EntityCreature;Lnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/entity/ai/EntityAIFindEntityNearest access$000 (Lnet/minecraft/entity/ai/EntityAIFindEntityNearest;)Lnet/minecraft/entity/EntityLiving; a +MD net/minecraft/entity/ai/EntityAIFindEntityNearest getFollowRange ()D f +MD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer access$000 (Lnet/minecraft/entity/ai/EntityAIFindEntityNearestPlayer;)Lnet/minecraft/entity/EntityLiving; a +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer maxTargetRange ()D f +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter compare (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)I a +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/entity/ai/EntityAITarget canEasilyReach (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/ai/EntityAITarget isSuitableTarget (Lnet/minecraft/entity/EntityLivingBase;Z)Z a +MD net/minecraft/entity/ai/EntityAITarget isSuitableTarget (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/entity/EntityLivingBase;ZZ)Z a +MD net/minecraft/entity/ai/EntityAITarget getTargetDistance ()D f +MD net/minecraft/pathfinding/PathNavigateGround isSafeToStandAt (IIIIIILnet/minecraft/util/Vec3;DD)Z a +MD net/minecraft/pathfinding/PathNavigateGround setAvoidsWater (Z)V a +MD net/minecraft/pathfinding/PathNavigateGround isPositionClear (IIIIIILnet/minecraft/util/Vec3;DD)Z b +MD net/minecraft/pathfinding/PathNavigateGround setBreakDoors (Z)V b +MD net/minecraft/pathfinding/PathNavigateGround setEnterDoors (Z)V c +MD net/minecraft/pathfinding/PathNavigateGround setCanSwim (Z)V d +MD net/minecraft/pathfinding/PathNavigateGround getAvoidsWater ()Z e +MD net/minecraft/pathfinding/PathNavigateGround setAvoidSun (Z)V e +MD net/minecraft/pathfinding/PathNavigateGround getEnterDoors ()Z g +MD net/minecraft/pathfinding/PathNavigateGround getCanSwim ()Z h +MD net/minecraft/pathfinding/PathNavigateGround getPathablePosY ()I p +MD net/minecraft/pathfinding/PathNavigate getPathFinder ()Lnet/minecraft/pathfinding/PathFinder; a +MD net/minecraft/pathfinding/PathNavigate setSpeed (D)V a +MD net/minecraft/pathfinding/PathNavigate getPathToXYZ (DDD)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathNavigate tryMoveToXYZ (DDDD)Z a +MD net/minecraft/pathfinding/PathNavigate setHeightRequirement (F)V a +MD net/minecraft/pathfinding/PathNavigate setPath (Lnet/minecraft/pathfinding/PathEntity;D)Z a +MD net/minecraft/pathfinding/PathNavigate checkForStuck (Lnet/minecraft/util/Vec3;)V a +MD net/minecraft/pathfinding/PathNavigate isDirectPathBetweenPoints (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;III)Z a +MD net/minecraft/pathfinding/PathNavigate getPathToPos (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathNavigate getPathToEntityLiving (Lnet/minecraft/entity/Entity;)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathNavigate tryMoveToEntityLiving (Lnet/minecraft/entity/Entity;D)Z a +MD net/minecraft/pathfinding/PathNavigate canNavigate ()Z b +MD net/minecraft/pathfinding/PathNavigate getEntityPosition ()Lnet/minecraft/util/Vec3; c +MD net/minecraft/pathfinding/PathNavigate removeSunnyPath ()V d +MD net/minecraft/pathfinding/PathNavigate getPathSearchRange ()F i +MD net/minecraft/pathfinding/PathNavigate getPath ()Lnet/minecraft/pathfinding/PathEntity; j +MD net/minecraft/pathfinding/PathNavigate onUpdateNavigation ()V k +MD net/minecraft/pathfinding/PathNavigate pathFollow ()V l +MD net/minecraft/pathfinding/PathNavigate noPath ()Z m +MD net/minecraft/pathfinding/PathNavigate clearPathEntity ()V n +MD net/minecraft/pathfinding/PathNavigate isInLiquid ()Z o +MD net/minecraft/entity/ai/EntitySenses clearSensingCache ()V a +MD net/minecraft/entity/ai/EntitySenses canSee (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTarget (Lnet/minecraft/entity/EntityCreature;II)Lnet/minecraft/util/Vec3; a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlockTowards (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlockAwayFrom (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; b +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlock (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; c +MD net/minecraft/village/VillageDoorInfo resetDoorOpeningRestrictionCounter ()V a +MD net/minecraft/village/VillageDoorInfo func_179849_a (I)V a +MD net/minecraft/village/VillageDoorInfo getFaceDirection (II)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/village/VillageDoorInfo getDistanceToDoorBlockSq (Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/village/VillageDoorInfo setIsDetachedFromVillageFlag (Z)V a +MD net/minecraft/village/VillageDoorInfo incrementDoorOpeningRestrictionCounter ()V b +MD net/minecraft/village/VillageDoorInfo getDistanceSquared (III)I b +MD net/minecraft/village/VillageDoorInfo getDistanceToInsideBlockSq (Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/village/VillageDoorInfo getDoorOpeningRestrictionCounter ()I c +MD net/minecraft/village/VillageDoorInfo func_179850_c (Lnet/minecraft/util/BlockPos;)Z c +MD net/minecraft/village/VillageDoorInfo getDoorBlockPos ()Lnet/minecraft/util/BlockPos; d +MD net/minecraft/village/VillageDoorInfo getInsideBlockPos ()Lnet/minecraft/util/BlockPos; e +MD net/minecraft/village/VillageDoorInfo getInsideOffsetX ()I f +MD net/minecraft/village/VillageDoorInfo getInsideOffsetZ ()I g +MD net/minecraft/village/VillageDoorInfo getInsidePosY ()I h +MD net/minecraft/village/VillageDoorInfo getIsDetachedFromVillageFlag ()Z i +MD net/minecraft/village/Village getCenter ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/village/Village tick (I)V a +MD net/minecraft/village/Village setWorld (Lnet/minecraft/world/World;)V a +MD net/minecraft/village/Village func_179866_a (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/village/Village func_179862_a (Lnet/minecraft/util/BlockPos;III)Lnet/minecraft/util/Vec3; a +MD net/minecraft/village/Village func_179861_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/village/Village readVillageDataFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/village/Village getReputationForPlayer (Ljava/lang/String;)I a +MD net/minecraft/village/Village setReputationForPlayer (Ljava/lang/String;I)I a +MD net/minecraft/village/Village addOrRenewAgressor (Lnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/village/Village addVillageDoorInfo (Lnet/minecraft/village/VillageDoorInfo;)V a +MD net/minecraft/village/Village getVillageRadius ()I b +MD net/minecraft/village/Village setDefaultPlayerReputation (I)V b +MD net/minecraft/village/Village getNearestDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; b +MD net/minecraft/village/Village writeVillageDataToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/village/Village findNearestVillageAggressor (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/entity/EntityLivingBase; b +MD net/minecraft/village/Village getNumVillageDoors ()I c +MD net/minecraft/village/Village getDoorInfo (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; c +MD net/minecraft/village/Village getNearestTargetPlayer (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/entity/player/EntityPlayer; c +MD net/minecraft/village/Village getTicksSinceLastDoorAdding ()I d +MD net/minecraft/village/Village isPlayerReputationTooLow (Ljava/lang/String;)Z d +MD net/minecraft/village/Village getNumVillagers ()I e +MD net/minecraft/village/Village getExistedDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; e +MD net/minecraft/village/Village getVillageDoorInfoList ()Ljava/util/List; f +MD net/minecraft/village/Village isWoodDoor (Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/village/Village isAnnihilated ()Z g +MD net/minecraft/village/Village endMatingSeason ()V h +MD net/minecraft/village/Village isMatingSeason ()Z i +MD net/minecraft/village/Village updateNumIronGolems ()V j +MD net/minecraft/village/Village updateNumVillagers ()V k +MD net/minecraft/village/Village removeDeadAndOldAgressors ()V l +MD net/minecraft/village/Village removeDeadAndOutOfRangeDoors ()V m +MD net/minecraft/village/Village updateVillageRadiusAndCenter ()V n +MD net/minecraft/village/VillageSiege tick ()V a +MD net/minecraft/village/VillageSiege func_179867_a (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/Vec3; a +MD net/minecraft/village/VillageSiege func_75529_b ()Z b +MD net/minecraft/village/VillageSiege spawnZombie ()Z c +MD net/minecraft/village/VillageCollection tick ()V a +MD net/minecraft/village/VillageCollection setWorldsForAll (Lnet/minecraft/world/World;)V a +MD net/minecraft/village/VillageCollection fileNameForProvider (Lnet/minecraft/world/WorldProvider;)Ljava/lang/String; a +MD net/minecraft/village/VillageCollection addToVillagerPositionList (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/village/VillageCollection getNearestVillage (Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/village/Village; a +MD net/minecraft/village/VillageCollection countBlocksCanSeeSky (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;I)I a +MD net/minecraft/village/VillageCollection getVillageList ()Ljava/util/List; b +MD net/minecraft/village/VillageCollection addDoorsAround (Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/village/VillageCollection checkDoorExistence (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; c +MD net/minecraft/village/VillageCollection addToNewDoorsList (Lnet/minecraft/util/BlockPos;)V d +MD net/minecraft/village/VillageCollection removeAnnihilatedVillages ()V e +MD net/minecraft/village/VillageCollection positionInList (Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/village/VillageCollection dropOldestVillagerPosition ()V f +MD net/minecraft/village/VillageCollection isWoodDoor (Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/village/VillageCollection addNewDoorsToVillageOrCreateVillage ()V g +MD net/minecraft/entity/passive/EntityBat isDateAroundHalloween (Ljava/util/Calendar;)Z a +MD net/minecraft/entity/passive/EntityBat setIsBatHanging (Z)V a +MD net/minecraft/entity/passive/EntityBat getIsBatHanging ()Z n +MD net/minecraft/entity/passive/EntityAnimal canMateWith (Lnet/minecraft/entity/passive/EntityAnimal;)Z a +MD net/minecraft/entity/passive/EntityAnimal consumeItemFromStack (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/entity/passive/EntityAnimal setInLove (Lnet/minecraft/entity/player/EntityPlayer;)V c +MD net/minecraft/entity/passive/EntityAnimal getPlayerInLove ()Lnet/minecraft/entity/player/EntityPlayer; cq +MD net/minecraft/entity/passive/EntityAnimal isInLove ()Z cr +MD net/minecraft/entity/passive/EntityAnimal resetInLove ()V cs +MD net/minecraft/entity/passive/EntityAnimal isBreedingItem (Lnet/minecraft/item/ItemStack;)Z d +MD net/minecraft/entity/passive/EntityChicken createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityChicken; b +MD net/minecraft/entity/passive/EntityChicken isChickenJockey ()Z cl +MD net/minecraft/entity/passive/EntityChicken setChickenJockey (Z)V l +MD net/minecraft/entity/passive/EntityCow createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityCow; b +MD net/minecraft/entity/passive/EntityHorse getClosestHorse (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/entity/passive/EntityHorse; a +MD net/minecraft/entity/passive/EntityHorse dropItemsInChest (Lnet/minecraft/entity/Entity;Lnet/minecraft/inventory/AnimalChest;)V a +MD net/minecraft/entity/passive/EntityHorse isArmorItem (Lnet/minecraft/item/Item;)Z a +MD net/minecraft/entity/passive/EntityHorse setOwnerId (Ljava/lang/String;)V b +MD net/minecraft/entity/passive/EntityHorse setHorseWatchableBoolean (IZ)V c +MD net/minecraft/entity/passive/EntityHorse isBreeding ()Z cA +MD net/minecraft/entity/passive/EntityHorse getHasReproduced ()Z cB +MD net/minecraft/entity/passive/EntityHorse getTemper ()I cC +MD net/minecraft/entity/passive/EntityHorse prepareChunkForSpawn ()Z cD +MD net/minecraft/entity/passive/EntityHorse dropChests ()V cE +MD net/minecraft/entity/passive/EntityHorse getHorseJumpStrength ()D cF +MD net/minecraft/entity/passive/EntityHorse isHorseSaddled ()Z cG +MD net/minecraft/entity/passive/EntityHorse getAngrySoundName ()Ljava/lang/String; cH +MD net/minecraft/entity/passive/EntityHorse getMaxTemper ()I cI +MD net/minecraft/entity/passive/EntityHorse func_110239_cn ()Z cJ +MD net/minecraft/entity/passive/EntityHorse func_175507_cI ()Z cK +MD net/minecraft/entity/passive/EntityHorse getHorseTexture ()Ljava/lang/String; cL +MD net/minecraft/entity/passive/EntityHorse getVariantTexturePaths ()[Ljava/lang/String; cM +MD net/minecraft/entity/passive/EntityHorse canWearArmor ()Z cO +MD net/minecraft/entity/passive/EntityHorse canCarryChest ()Z cP +MD net/minecraft/entity/passive/EntityHorse isUndead ()Z cR +MD net/minecraft/entity/passive/EntityHorse isSterile ()Z cS +MD net/minecraft/entity/passive/EntityHorse makeHorseRearWithSound ()V cW +MD net/minecraft/entity/passive/EntityHorse dropChestItems ()V cX +MD net/minecraft/entity/passive/EntityHorse func_110266_cB ()V cY +MD net/minecraft/entity/passive/EntityHorse getChestSize ()I cZ +MD net/minecraft/entity/passive/EntityHorse getHorseType ()I cl +MD net/minecraft/entity/passive/EntityHorse getHorseVariant ()I cm +MD net/minecraft/entity/passive/EntityHorse isAdultHorse ()Z cn +MD net/minecraft/entity/passive/EntityHorse isTame ()Z co +MD net/minecraft/entity/passive/EntityHorse func_110253_bW ()Z cp +MD net/minecraft/entity/passive/EntityHorse getOwnerId ()Ljava/lang/String; ct +MD net/minecraft/entity/passive/EntityHorse getHorseSize ()F cu +MD net/minecraft/entity/passive/EntityHorse isHorseJumping ()Z cv +MD net/minecraft/entity/passive/EntityHorse isChested ()Z cw +MD net/minecraft/entity/passive/EntityHorse getHorseArmorIndexSynced ()I cx +MD net/minecraft/entity/passive/EntityHorse isEatingHaystack ()Z cy +MD net/minecraft/entity/passive/EntityHorse isRearing ()Z cz +MD net/minecraft/entity/passive/EntityHorse initHorseChest ()V da +MD net/minecraft/entity/passive/EntityHorse updateHorseSlots ()V db +MD net/minecraft/entity/passive/EntityHorse resetTexturePrefix ()V dc +MD net/minecraft/entity/passive/EntityHorse setHorseTexturePaths ()V dd +MD net/minecraft/entity/passive/EntityHorse func_110210_cH ()V de +MD net/minecraft/entity/passive/EntityHorse openHorseMouth ()V df +MD net/minecraft/entity/passive/EntityHorse canMate ()Z dg +MD net/minecraft/entity/passive/EntityHorse makeHorseRear ()V dh +MD net/minecraft/entity/passive/EntityHorse getModifiedMaxHealth ()F di +MD net/minecraft/entity/passive/EntityHorse getModifiedJumpStrength ()D dj +MD net/minecraft/entity/passive/EntityHorse getModifiedMovementSpeed ()D dk +MD net/minecraft/entity/passive/EntityHorse setHorseArmorStack (Lnet/minecraft/item/ItemStack;)V e +MD net/minecraft/entity/passive/EntityHorse getHorseArmorIndex (Lnet/minecraft/item/ItemStack;)I f +MD net/minecraft/entity/passive/EntityHorse openGUI (Lnet/minecraft/entity/player/EntityPlayer;)V g +MD net/minecraft/entity/passive/EntityHorse setTamedBy (Lnet/minecraft/entity/player/EntityPlayer;)Z h +MD net/minecraft/entity/passive/EntityHorse mountTo (Lnet/minecraft/entity/player/EntityPlayer;)V i +MD net/minecraft/entity/passive/EntityHorse setHorseTamed (Z)V l +MD net/minecraft/entity/passive/EntityHorse setHorseJumping (Z)V m +MD net/minecraft/entity/passive/EntityHorse setBreeding (Z)V n +MD net/minecraft/entity/passive/EntityHorse setChested (Z)V o +MD net/minecraft/entity/passive/EntityHorse getGrassEatingAmount (F)F p +MD net/minecraft/entity/passive/EntityHorse setHasReproduced (Z)V p +MD net/minecraft/entity/passive/EntityHorse getRearingAmount (F)F q +MD net/minecraft/entity/passive/EntityHorse setHorseSaddled (Z)V q +MD net/minecraft/entity/passive/EntityHorse getMouthOpennessAngle (F)F r +MD net/minecraft/entity/passive/EntityHorse setHorseType (I)V r +MD net/minecraft/entity/passive/EntityHorse setEatingHaystack (Z)V r +MD net/minecraft/entity/passive/EntityHorse setHorseVariant (I)V s +MD net/minecraft/entity/passive/EntityHorse setRearing (Z)V s +MD net/minecraft/entity/passive/EntityHorse setTemper (I)V t +MD net/minecraft/entity/passive/EntityHorse spawnHorseParticles (Z)V t +MD net/minecraft/entity/passive/EntityHorse increaseTemper (I)I u +MD net/minecraft/entity/passive/EntityHorse setJumpPower (I)V v +MD net/minecraft/entity/passive/EntityHorse getHorseWatchableBoolean (I)Z w +MD net/minecraft/entity/passive/EntityHorse$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/passive/EntityHorse$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/passive/EntityMooshroom createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityMooshroom; c +MD net/minecraft/entity/passive/EntityOcelot createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityOcelot; b +MD net/minecraft/entity/passive/EntityOcelot getTameSkin ()I ct +MD net/minecraft/entity/passive/EntityOcelot setTameSkin (I)V r +MD net/minecraft/entity/passive/EntityPig createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityPig; b +MD net/minecraft/entity/passive/EntityPig getSaddled ()Z cl +MD net/minecraft/entity/passive/EntityPig getAIControlledByPlayer ()Lnet/minecraft/entity/ai/EntityAIControlledByPlayer; cm +MD net/minecraft/entity/passive/EntityPig setSaddled (Z)V l +MD net/minecraft/entity/passive/EntityRabbit calculateRotationYaw (DD)V a +MD net/minecraft/entity/passive/EntityRabbit setMoveType (Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V a +MD net/minecraft/entity/passive/EntityRabbit access$000 (Lnet/minecraft/entity/passive/EntityRabbit;)Z a +MD net/minecraft/entity/passive/EntityRabbit isRabbitBreedingItem (Lnet/minecraft/item/Item;)Z a +MD net/minecraft/entity/passive/EntityRabbit setJumping (ZLnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V a +MD net/minecraft/entity/passive/EntityRabbit setMovementSpeed (D)V b +MD net/minecraft/entity/passive/EntityRabbit createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityRabbit; b +MD net/minecraft/entity/passive/EntityRabbit doMovementAction (Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V b +MD net/minecraft/entity/passive/EntityRabbit func_175523_cj ()Z cl +MD net/minecraft/entity/passive/EntityRabbit getJumpingSound ()Ljava/lang/String; cm +MD net/minecraft/entity/passive/EntityRabbit getRabbitType ()I cn +MD net/minecraft/entity/passive/EntityRabbit getMoveTypeDuration ()I co +MD net/minecraft/entity/passive/EntityRabbit createEatingParticles ()V cp +MD net/minecraft/entity/passive/EntityRabbit func_175518_cr ()V ct +MD net/minecraft/entity/passive/EntityRabbit func_175520_cs ()V cu +MD net/minecraft/entity/passive/EntityRabbit updateMoveTypeDuration ()V cv +MD net/minecraft/entity/passive/EntityRabbit func_175517_cu ()V cw +MD net/minecraft/entity/passive/EntityRabbit isCarrotEaten ()Z cx +MD net/minecraft/entity/passive/EntityRabbit func_175521_o (F)F p +MD net/minecraft/entity/passive/EntityRabbit setRabbitType (I)V r +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType getSpeed ()F a +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType func_180074_b ()F b +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType getDuration ()I c +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType func_180073_d ()I d +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType; valueOf +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType values ()[Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType; values +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper func_180066_a (Z)V a +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper getIsJumping ()Z c +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper func_180065_d ()Z d +MD net/minecraft/entity/passive/EntitySheep getRandomSheepColor (Ljava/util/Random;)Lnet/minecraft/item/EnumDyeColor; a +MD net/minecraft/entity/passive/EntitySheep getDyeColorMixFromParents (Lnet/minecraft/entity/passive/EntityAnimal;Lnet/minecraft/entity/passive/EntityAnimal;)Lnet/minecraft/item/EnumDyeColor; a +MD net/minecraft/entity/passive/EntitySheep getDyeRgb (Lnet/minecraft/item/EnumDyeColor;)[F a +MD net/minecraft/entity/passive/EntitySheep createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntitySheep; b +MD net/minecraft/entity/passive/EntitySheep setFleeceColor (Lnet/minecraft/item/EnumDyeColor;)V b +MD net/minecraft/entity/passive/EntitySheep getFleeceColor ()Lnet/minecraft/item/EnumDyeColor; cl +MD net/minecraft/entity/passive/EntitySheep getSheared ()Z cm +MD net/minecraft/entity/passive/EntitySheep setSheared (Z)V l +MD net/minecraft/entity/passive/EntitySheep getHeadRotationPointY (F)F p +MD net/minecraft/entity/passive/EntitySheep getHeadRotationAngleX (F)F q +MD net/minecraft/entity/passive/EntitySquid access$000 (Lnet/minecraft/entity/passive/EntitySquid;)Z a +MD net/minecraft/entity/passive/EntitySquid func_175568_b (FFF)V b +MD net/minecraft/entity/passive/EntitySquid func_175567_n ()Z n +MD net/minecraft/entity/monster/EntityIronGolem setHoldingRose (Z)V a +MD net/minecraft/entity/monster/EntityIronGolem getAttackTimer ()I cl +MD net/minecraft/entity/monster/EntityIronGolem getHoldRoseTick ()I cm +MD net/minecraft/entity/monster/EntityIronGolem isPlayerCreated ()Z cn +MD net/minecraft/entity/monster/EntityIronGolem setPlayerCreated (Z)V l +MD net/minecraft/entity/monster/EntityIronGolem getVillage ()Lnet/minecraft/village/Village; n +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper access$000 (Lnet/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper;)D a +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper access$100 (Lnet/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper;Lnet/minecraft/entity/EntityLivingBase;Z)Z a +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/passive/EntityWolf setCollarColor (Lnet/minecraft/item/EnumDyeColor;)V a +MD net/minecraft/entity/passive/EntityWolf createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityWolf; b +MD net/minecraft/entity/passive/EntityWolf isWolfWet ()Z ct +MD net/minecraft/entity/passive/EntityWolf getTailRotation ()F cu +MD net/minecraft/entity/passive/EntityWolf isAngry ()Z cv +MD net/minecraft/entity/passive/EntityWolf getCollarColor ()Lnet/minecraft/item/EnumDyeColor; cw +MD net/minecraft/entity/passive/EntityWolf isBegging ()Z cx +MD net/minecraft/entity/passive/EntityWolf getShakeAngle (FF)F i +MD net/minecraft/entity/passive/EntityWolf setAngry (Z)V o +MD net/minecraft/entity/passive/EntityWolf getShadingWhileWet (F)F p +MD net/minecraft/entity/passive/EntityWolf setBegging (Z)V p +MD net/minecraft/entity/passive/EntityWolf getInterestedAngle (F)F q +MD net/minecraft/entity/passive/EntityWolf$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/passive/EntityWolf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/boss/IBossDisplayData getHealth ()F bn +MD net/minecraft/entity/boss/IBossDisplayData getMaxHealth ()F bu +MD net/minecraft/entity/boss/IBossDisplayData getDisplayName ()Lnet/minecraft/util/IChatComponent; f_ +MD net/minecraft/entity/IEntityMultiPart getWorld ()Lnet/minecraft/world/World; a +MD net/minecraft/entity/IEntityMultiPart attackEntityFromPart (Lnet/minecraft/entity/boss/EntityDragonPart;Lnet/minecraft/util/DamageSource;F)Z a +MD net/minecraft/entity/boss/EntityDragon generatePortal (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/entity/boss/EntityDragon collideWithEntities (Ljava/util/List;)V a +MD net/minecraft/entity/boss/EntityDragon simplifyAngle (D)F b +MD net/minecraft/entity/boss/EntityDragon getMovementOffsets (IF)[D b +MD net/minecraft/entity/boss/EntityDragon destroyBlocksInAABB (Lnet/minecraft/util/AxisAlignedBB;)Z b +MD net/minecraft/entity/boss/EntityDragon attackEntitiesInList (Ljava/util/List;)V b +MD net/minecraft/entity/boss/EntityDragon setNewTarget ()V cf +MD net/minecraft/entity/boss/EntityDragon attackDragonFrom (Lnet/minecraft/util/DamageSource;F)Z e +MD net/minecraft/entity/boss/EntityDragon updateDragonEnderCrystal ()V n +MD net/minecraft/entity/boss/EntityWither func_82207_a (I)F a +MD net/minecraft/entity/boss/EntityWither launchWitherSkullToCoords (IDDDZ)V a +MD net/minecraft/entity/boss/EntityWither launchWitherSkullToEntity (ILnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/entity/boss/EntityWither canDestroyBlock (Lnet/minecraft/block/Block;)Z a +MD net/minecraft/entity/boss/EntityWither func_82204_b (FFF)F b +MD net/minecraft/entity/boss/EntityWither func_82210_r (I)F b +MD net/minecraft/entity/boss/EntityWither updateWatchedTargetId (II)V b +MD net/minecraft/entity/boss/EntityWither getInvulTime ()I cl +MD net/minecraft/entity/boss/EntityWither isArmored ()Z cm +MD net/minecraft/entity/boss/EntityWither func_82206_m ()V n +MD net/minecraft/entity/boss/EntityWither setInvulTime (I)V r +MD net/minecraft/entity/boss/EntityWither getWatchedTargetId (I)I s +MD net/minecraft/entity/boss/EntityWither func_82214_u (I)D t +MD net/minecraft/entity/boss/EntityWither func_82208_v (I)D u +MD net/minecraft/entity/boss/EntityWither func_82213_w (I)D v +MD net/minecraft/entity/boss/EntityWither$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/boss/EntityWither$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/item/EntityArmorStand playParticles ()V A +MD net/minecraft/entity/item/EntityArmorStand dropBlock ()V C +MD net/minecraft/entity/item/EntityArmorStand dropContents ()V D +MD net/minecraft/entity/item/EntityArmorStand damageArmorStand (F)V a +MD net/minecraft/entity/item/EntityArmorStand setHeadRotation (Lnet/minecraft/util/Rotations;)V a +MD net/minecraft/entity/item/EntityArmorStand func_175422_a (Lnet/minecraft/entity/player/EntityPlayer;I)V a +MD net/minecraft/entity/item/EntityArmorStand func_181550_a (Z)V a +MD net/minecraft/entity/item/EntityArmorStand setBodyRotation (Lnet/minecraft/util/Rotations;)V b +MD net/minecraft/entity/item/EntityArmorStand setLeftArmRotation (Lnet/minecraft/util/Rotations;)V c +MD net/minecraft/entity/item/EntityArmorStand setRightArmRotation (Lnet/minecraft/util/Rotations;)V d +MD net/minecraft/entity/item/EntityArmorStand setLeftLegRotation (Lnet/minecraft/util/Rotations;)V e +MD net/minecraft/entity/item/EntityArmorStand setRightLegRotation (Lnet/minecraft/util/Rotations;)V f +MD net/minecraft/entity/item/EntityArmorStand writePoseToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V h +MD net/minecraft/entity/item/EntityArmorStand setSmall (Z)V j +MD net/minecraft/entity/item/EntityArmorStand setNoGravity (Z)V k +MD net/minecraft/entity/item/EntityArmorStand setShowArms (Z)V l +MD net/minecraft/entity/item/EntityArmorStand setNoBasePlate (Z)V m +MD net/minecraft/entity/item/EntityArmorStand isSmall ()Z n +MD net/minecraft/entity/item/EntityArmorStand setMarker (Z)V n +MD net/minecraft/entity/item/EntityArmorStand hasNoGravity ()Z p +MD net/minecraft/entity/item/EntityArmorStand getShowArms ()Z q +MD net/minecraft/entity/item/EntityArmorStand hasNoBasePlate ()Z r +MD net/minecraft/entity/item/EntityArmorStand hasMarker ()Z s +MD net/minecraft/entity/item/EntityArmorStand getHeadRotation ()Lnet/minecraft/util/Rotations; t +MD net/minecraft/entity/item/EntityArmorStand getBodyRotation ()Lnet/minecraft/util/Rotations; u +MD net/minecraft/entity/item/EntityArmorStand getLeftArmRotation ()Lnet/minecraft/util/Rotations; v +MD net/minecraft/entity/item/EntityArmorStand getRightArmRotation ()Lnet/minecraft/util/Rotations; w +MD net/minecraft/entity/item/EntityArmorStand getLeftLegRotation ()Lnet/minecraft/util/Rotations; x +MD net/minecraft/entity/item/EntityArmorStand getRightLegRotation ()Lnet/minecraft/util/Rotations; y +MD net/minecraft/entity/item/EntityArmorStand readPoseFromNBT ()Lnet/minecraft/nbt/NBTTagCompound; z +MD net/minecraft/entity/EntityHanging func_174858_a (I)D a +MD net/minecraft/entity/EntityHanging updateFacingWithBoundingBox (Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/entity/EntityHanging onBroken (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/entity/EntityHanging onValidSurface ()Z j +MD net/minecraft/entity/EntityHanging getWidthPixels ()I l +MD net/minecraft/entity/EntityHanging getHeightPixels ()I m +MD net/minecraft/entity/EntityHanging getHangingPosition ()Lnet/minecraft/util/BlockPos; n +MD net/minecraft/entity/EntityHanging updateBoundingBox ()V o +MD net/minecraft/entity/item/EntityItemFrame setItemRotation (I)V a +MD net/minecraft/entity/item/EntityItemFrame func_174865_a (IZ)V a +MD net/minecraft/entity/item/EntityItemFrame dropItemOrSelf (Lnet/minecraft/entity/Entity;Z)V a +MD net/minecraft/entity/item/EntityItemFrame setDisplayedItem (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/entity/item/EntityItemFrame setDisplayedItemWithUpdate (Lnet/minecraft/item/ItemStack;Z)V a +MD net/minecraft/entity/item/EntityItemFrame removeFrameFromMap (Lnet/minecraft/item/ItemStack;)V b +MD net/minecraft/entity/item/EntityItemFrame getDisplayedItem ()Lnet/minecraft/item/ItemStack; o +MD net/minecraft/entity/item/EntityItemFrame getRotation ()I p +MD net/minecraft/entity/item/EntityItemFrame func_174866_q ()I q +MD net/minecraft/entity/EntityLeashKnot createKnot (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/EntityLeashKnot; a +MD net/minecraft/entity/EntityLeashKnot getKnotForPosition (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/EntityLeashKnot; b +MD net/minecraft/entity/item/EntityPainting$EnumArt valueOf (Ljava/lang/String;)Lnet/minecraft/entity/item/EntityPainting$EnumArt; valueOf +MD net/minecraft/entity/item/EntityPainting$EnumArt values ()[Lnet/minecraft/entity/item/EntityPainting$EnumArt; values +MD net/minecraft/entity/projectile/EntityFishHook handleHookCasting (DDDFF)V c +MD net/minecraft/entity/projectile/EntityFishHook func_174855_j ()Ljava/util/List; j +MD net/minecraft/entity/projectile/EntityFishHook handleHookRetraction ()I l +MD net/minecraft/entity/projectile/EntityFishHook getFishingResult ()Lnet/minecraft/item/ItemStack; m +MD net/minecraft/util/WeightedRandomFishable setEnchantable ()Lnet/minecraft/util/WeightedRandomFishable; a +MD net/minecraft/util/WeightedRandomFishable setMaxDamagePercent (F)Lnet/minecraft/util/WeightedRandomFishable; a +MD net/minecraft/util/WeightedRandomFishable getItemStack (Ljava/util/Random;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/entity/item/EntityBoat setDamageTaken (F)V a +MD net/minecraft/entity/item/EntityBoat setTimeSinceHit (I)V a +MD net/minecraft/entity/item/EntityBoat setIsBoatEmpty (Z)V a +MD net/minecraft/entity/item/EntityBoat setForwardDirection (I)V b +MD net/minecraft/entity/item/EntityBoat getDamageTaken ()F j +MD net/minecraft/entity/item/EntityBoat getTimeSinceHit ()I l +MD net/minecraft/entity/item/EntityBoat getForwardDirection ()I m +MD net/minecraft/entity/item/EntityFallingBlock setHurtEntities (Z)V a +MD net/minecraft/entity/item/EntityFallingBlock getWorldObj ()Lnet/minecraft/world/World; j +MD net/minecraft/entity/item/EntityFallingBlock getBlock ()Lnet/minecraft/block/state/IBlockState; l +MD net/minecraft/entity/item/EntityItem setPickupDelay (I)V a +MD net/minecraft/entity/item/EntityItem combineItems (Lnet/minecraft/entity/item/EntityItem;)Z a +MD net/minecraft/entity/item/EntityItem setEntityItemStack (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/entity/item/EntityItem setOwner (Ljava/lang/String;)V b +MD net/minecraft/entity/item/EntityItem setThrower (Ljava/lang/String;)V c +MD net/minecraft/entity/item/EntityItem setAgeToCreativeDespawnTime ()V j +MD net/minecraft/entity/item/EntityItem getEntityItem ()Lnet/minecraft/item/ItemStack; l +MD net/minecraft/entity/item/EntityItem getOwner ()Ljava/lang/String; m +MD net/minecraft/entity/item/EntityItem getThrower ()Ljava/lang/String; n +MD net/minecraft/entity/item/EntityItem getAge ()I o +MD net/minecraft/entity/item/EntityItem setDefaultPickupDelay ()V p +MD net/minecraft/entity/item/EntityItem setNoPickupDelay ()V q +MD net/minecraft/entity/item/EntityItem setInfinitePickupDelay ()V r +MD net/minecraft/entity/item/EntityItem cannotPickup ()Z s +MD net/minecraft/entity/item/EntityItem setNoDespawn ()V u +MD net/minecraft/entity/item/EntityItem func_174870_v ()V v +MD net/minecraft/entity/item/EntityItem searchForOtherItemsNearby ()V w +MD net/minecraft/entity/item/EntityMinecart func_70495_a (DDDD)Lnet/minecraft/util/Vec3; a +MD net/minecraft/entity/item/EntityMinecart setDamage (F)V a +MD net/minecraft/entity/item/EntityMinecart onActivatorRailPass (IIIZ)V a +MD net/minecraft/entity/item/EntityMinecart getMinecart (Lnet/minecraft/world/World;DDDLnet/minecraft/entity/item/EntityMinecart$EnumMinecartType;)Lnet/minecraft/entity/item/EntityMinecart; a +MD net/minecraft/entity/item/EntityMinecart func_174899_a (Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/entity/item/EntityMinecart func_180460_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/entity/item/EntityMinecart killMinecart (Lnet/minecraft/util/DamageSource;)V a +MD net/minecraft/entity/item/EntityMinecart setHasDisplayTile (Z)V a +MD net/minecraft/entity/item/EntityMinecart setRollingAmplitude (I)V j +MD net/minecraft/entity/item/EntityMinecart func_70489_a (DDD)Lnet/minecraft/util/Vec3; k +MD net/minecraft/entity/item/EntityMinecart setRollingDirection (I)V k +MD net/minecraft/entity/item/EntityMinecart setDisplayTileOffset (I)V l +MD net/minecraft/entity/item/EntityMinecart getMaximumSpeed ()D m +MD net/minecraft/entity/item/EntityMinecart moveDerailedMinecart ()V n +MD net/minecraft/entity/item/EntityMinecart applyDrag ()V o +MD net/minecraft/entity/item/EntityMinecart getDamage ()F p +MD net/minecraft/entity/item/EntityMinecart getRollingAmplitude ()I q +MD net/minecraft/entity/item/EntityMinecart getRollingDirection ()I r +MD net/minecraft/entity/item/EntityMinecart getMinecartType ()Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; s +MD net/minecraft/entity/item/EntityMinecart getDisplayTile ()Lnet/minecraft/block/state/IBlockState; t +MD net/minecraft/entity/item/EntityMinecart getDefaultDisplayTile ()Lnet/minecraft/block/state/IBlockState; u +MD net/minecraft/entity/item/EntityMinecart getDisplayTileOffset ()I v +MD net/minecraft/entity/item/EntityMinecart getDefaultDisplayTileOffset ()I w +MD net/minecraft/entity/item/EntityMinecart hasDisplayTile ()Z x +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType getNetworkID ()I a +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType byNetworkID (I)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; a +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType getName ()Ljava/lang/String; b +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; valueOf +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType values ()[Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; values +MD net/minecraft/entity/EntityMinecartCommandBlock getCommandBlockLogic ()Lnet/minecraft/command/server/CommandBlockLogic; j +MD net/minecraft/entity/item/EntityMinecartFurnace setMinecartPowered (Z)V i +MD net/minecraft/entity/item/EntityMinecartFurnace isMinecartPowered ()Z j +MD net/minecraft/entity/item/EntityMinecartHopper func_96112_aD ()Z D +MD net/minecraft/entity/item/EntityMinecartHopper canTransfer ()Z E +MD net/minecraft/entity/item/EntityMinecartHopper setBlocked (Z)V i +MD net/minecraft/entity/item/EntityMinecartHopper setTransferTicker (I)V m +MD net/minecraft/entity/item/EntityMinecartHopper getBlocked ()Z y +MD net/minecraft/entity/ai/EntityMinecartMobSpawner func_98039_d ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic; j +MD net/minecraft/entity/item/EntityMinecartTNT explodeCart (D)V b +MD net/minecraft/entity/item/EntityMinecartTNT ignite ()V j +MD net/minecraft/entity/item/EntityMinecartTNT getFuseTicks ()I l +MD net/minecraft/entity/item/EntityMinecartTNT isIgnited ()Z y +MD net/minecraft/entity/item/EntityTNTPrimed getTntPlacedBy ()Lnet/minecraft/entity/EntityLivingBase; j +MD net/minecraft/entity/item/EntityTNTPrimed explode ()V l +MD net/minecraft/entity/monster/EntityBlaze setOnFire (Z)V a +MD net/minecraft/entity/monster/EntityBlaze func_70845_n ()Z n +MD net/minecraft/entity/monster/EntityCreeper getCreeperFlashIntensity (F)F a +MD net/minecraft/entity/monster/EntityCreeper setCreeperState (I)V a +MD net/minecraft/entity/monster/EntityCreeper getCreeperState ()I cm +MD net/minecraft/entity/monster/EntityCreeper hasIgnited ()Z cn +MD net/minecraft/entity/monster/EntityCreeper ignite ()V co +MD net/minecraft/entity/monster/EntityCreeper isAIEnabled ()Z cp +MD net/minecraft/entity/monster/EntityCreeper func_175493_co ()V cq +MD net/minecraft/entity/monster/EntityCreeper explode ()V cr +MD net/minecraft/entity/monster/EntityCreeper getPowered ()Z n +MD net/minecraft/entity/monster/EntityEnderman setHeldBlockState (Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/entity/monster/EntityEnderman access$100 (Lnet/minecraft/entity/monster/EntityEnderman;Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/entity/monster/EntityEnderman access$202 (Lnet/minecraft/entity/monster/EntityEnderman;Z)Z a +MD net/minecraft/entity/monster/EntityEnderman setScreaming (Z)V a +MD net/minecraft/entity/monster/EntityEnderman teleportToEntity (Lnet/minecraft/entity/Entity;)Z b +MD net/minecraft/entity/monster/EntityEnderman shouldAttackPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z c +MD net/minecraft/entity/monster/EntityEnderman getHeldBlockState ()Lnet/minecraft/block/state/IBlockState; cm +MD net/minecraft/entity/monster/EntityEnderman isScreaming ()Z co +MD net/minecraft/entity/monster/EntityEnderman access$000 ()Lnet/minecraft/entity/ai/attributes/AttributeModifier; cp +MD net/minecraft/entity/monster/EntityEnderman access$300 ()Ljava/util/Set; cq +MD net/minecraft/entity/monster/EntityEnderman teleportTo (DDD)Z k +MD net/minecraft/entity/monster/EntityEnderman teleportRandomly ()Z n +MD net/minecraft/entity/monster/EntityEnderman$1 apply (Lnet/minecraft/entity/monster/EntityEndermite;)Z a +MD net/minecraft/entity/monster/EntityEnderman$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock func_179474_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)Z a +MD net/minecraft/entity/monster/EntityEndermite setSpawnedByPlayer (Z)V a +MD net/minecraft/entity/monster/EntityEndermite isSpawnedByPlayer ()Z n +MD net/minecraft/entity/monster/IMob$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/monster/IMob$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/IMob$2 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/entity/monster/IMob$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityGhast setAttacking (Z)V a +MD net/minecraft/entity/monster/EntityGhast getFireballStrength ()I cf +MD net/minecraft/entity/monster/EntityGhast isAttacking ()Z n +MD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper isNotColliding (DDDD)Z b +MD net/minecraft/entity/monster/EntityGuardian func_175471_a (F)F a +MD net/minecraft/entity/monster/EntityGuardian isSyncedFlagSet (I)Z a +MD net/minecraft/entity/monster/EntityGuardian setSyncedFlag (IZ)V a +MD net/minecraft/entity/monster/EntityGuardian access$100 (Lnet/minecraft/entity/monster/EntityGuardian;)Lnet/minecraft/entity/ai/EntityAIWander; a +MD net/minecraft/entity/monster/EntityGuardian access$000 (Lnet/minecraft/entity/monster/EntityGuardian;I)V a +MD net/minecraft/entity/monster/EntityGuardian access$200 (Lnet/minecraft/entity/monster/EntityGuardian;Z)V a +MD net/minecraft/entity/monster/EntityGuardian setElder (Z)V a +MD net/minecraft/entity/monster/EntityGuardian setTargetedEntity (I)V b +MD net/minecraft/entity/monster/EntityGuardian func_175464_ck ()I cm +MD net/minecraft/entity/monster/EntityGuardian isElder ()Z cn +MD net/minecraft/entity/monster/EntityGuardian setElder ()V co +MD net/minecraft/entity/monster/EntityGuardian hasTargetedEntity ()Z cp +MD net/minecraft/entity/monster/EntityGuardian getTargetedEntity ()Lnet/minecraft/entity/EntityLivingBase; cq +MD net/minecraft/entity/monster/EntityGuardian func_175476_l (Z)V l +MD net/minecraft/entity/monster/EntityGuardian func_175472_n ()Z n +MD net/minecraft/entity/monster/EntityGuardian func_175469_o (F)F p +MD net/minecraft/entity/monster/EntityGuardian func_175477_p (F)F q +MD net/minecraft/entity/monster/EntityGuardian$1 apply (Lnet/minecraft/entity/player/EntityPlayerMP;)Z a +MD net/minecraft/entity/monster/EntityGuardian$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector apply (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityMob isValidLightLevel ()Z n_ +MD net/minecraft/entity/monster/EntityPigZombie access$000 (Lnet/minecraft/entity/monster/EntityPigZombie;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/entity/monster/EntityPigZombie becomeAngryAt (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/entity/monster/EntityPigZombie isAngry ()Z cm +MD net/minecraft/entity/IRangedAttackMob attackEntityWithRangedAttack (Lnet/minecraft/entity/EntityLivingBase;F)V a +MD net/minecraft/entity/SharedMonsterAttributes readAttributeModifierFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/entity/ai/attributes/AttributeModifier; a +MD net/minecraft/entity/SharedMonsterAttributes writeAttributeInstanceToNBT (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/entity/SharedMonsterAttributes applyModifiersToAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/entity/SharedMonsterAttributes writeAttributeModifierToNBT (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/entity/SharedMonsterAttributes writeBaseAttributeMapToNBT (Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;)Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/entity/SharedMonsterAttributes setAttributeModifiers (Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;Lnet/minecraft/nbt/NBTTagList;)V a +MD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish func_179462_f ()V f +MD net/minecraft/entity/monster/EntitySkeleton setSkeletonType (I)V a +MD net/minecraft/entity/monster/EntitySkeleton getSkeletonType ()I cm +MD net/minecraft/entity/monster/EntitySkeleton setCombatTask ()V n +MD net/minecraft/entity/monster/EntitySlime setSlimeSize (I)V a +MD net/minecraft/entity/monster/EntitySlime createInstance ()Lnet/minecraft/entity/monster/EntitySlime; cf +MD net/minecraft/entity/monster/EntitySlime getJumpDelay ()I cg +MD net/minecraft/entity/monster/EntitySlime alterSquishAmount ()V ch +MD net/minecraft/entity/monster/EntitySlime canDamagePlayer ()Z ci +MD net/minecraft/entity/monster/EntitySlime getAttackStrength ()I cj +MD net/minecraft/entity/monster/EntitySlime getJumpSound ()Ljava/lang/String; ck +MD net/minecraft/entity/monster/EntitySlime makesSoundOnLand ()Z cl +MD net/minecraft/entity/monster/EntitySlime getSlimeSize ()I cm +MD net/minecraft/entity/monster/EntitySlime makesSoundOnJump ()Z cn +MD net/minecraft/entity/monster/EntitySlime func_175451_e (Lnet/minecraft/entity/EntityLivingBase;)V e +MD net/minecraft/entity/monster/EntitySlime getParticleType ()Lnet/minecraft/util/EnumParticleTypes; n +MD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper setSpeed (D)V a +MD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper func_179920_a (FZ)V a +MD net/minecraft/entity/monster/EntitySpider setBesideClimbableBlock (Z)V a +MD net/minecraft/entity/monster/EntitySpider isBesideClimbableBlock ()Z n +MD net/minecraft/entity/monster/EntitySpider$GroupData func_111104_a (Ljava/util/Random;)V a +MD net/minecraft/entity/monster/EntityWitch setAggressive (Z)V a +MD net/minecraft/entity/monster/EntityWitch getAggressive ()Z n +MD net/minecraft/entity/monster/EntityZombie multiplySize (F)V a +MD net/minecraft/entity/monster/EntityZombie startConversion (I)V a +MD net/minecraft/entity/monster/EntityZombie setBreakDoorsAItask (Z)V a +MD net/minecraft/entity/monster/EntityZombie isBreakDoorsTaskSet ()Z cn +MD net/minecraft/entity/monster/EntityZombie isVillager ()Z co +MD net/minecraft/entity/monster/EntityZombie isConverting ()Z cp +MD net/minecraft/entity/monster/EntityZombie convertToVillager ()V cq +MD net/minecraft/entity/monster/EntityZombie getConversionTimeBoost ()I cr +MD net/minecraft/entity/monster/EntityZombie setChild (Z)V l +MD net/minecraft/entity/monster/EntityZombie setVillager (Z)V m +MD net/minecraft/entity/monster/EntityZombie applyEntityAI ()V n +MD net/minecraft/entity/monster/EntityZombie setChildSize (Z)V n +MD net/minecraft/entity/passive/EntityVillager spawnParticles (Lnet/minecraft/util/EnumParticleTypes;)V a +MD net/minecraft/entity/passive/EntityVillager canVillagerPickupItem (Lnet/minecraft/item/Item;)Z a +MD net/minecraft/entity/passive/EntityVillager createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityVillager; b +MD net/minecraft/entity/passive/EntityVillager getProfession ()I cl +MD net/minecraft/entity/passive/EntityVillager isMating ()Z cm +MD net/minecraft/entity/passive/EntityVillager isPlaying ()Z cn +MD net/minecraft/entity/passive/EntityVillager isTrading ()Z co +MD net/minecraft/entity/passive/EntityVillager setLookingForHome ()V cp +MD net/minecraft/entity/passive/EntityVillager getVillagerInventory ()Lnet/minecraft/inventory/InventoryBasic; cq +MD net/minecraft/entity/passive/EntityVillager func_175553_cp ()Z cr +MD net/minecraft/entity/passive/EntityVillager canAbondonItems ()Z cs +MD net/minecraft/entity/passive/EntityVillager func_175557_cr ()Z ct +MD net/minecraft/entity/passive/EntityVillager isFarmItemInInventory ()Z cu +MD net/minecraft/entity/passive/EntityVillager setAdditionalAItasks ()V cv +MD net/minecraft/entity/passive/EntityVillager populateBuyingList ()V cw +MD net/minecraft/entity/passive/EntityVillager setMating (Z)V l +MD net/minecraft/entity/passive/EntityVillager setPlaying (Z)V m +MD net/minecraft/entity/passive/EntityVillager getIsWillingToMate (Z)Z n +MD net/minecraft/entity/passive/EntityVillager setIsWillingToMate (Z)V o +MD net/minecraft/entity/passive/EntityVillager setProfession (I)V r +MD net/minecraft/entity/passive/EntityVillager hasEnoughItems (I)Z s +MD net/minecraft/entity/passive/EntityVillager$ITradeList modifyMerchantRecipeList (Lnet/minecraft/village/MerchantRecipeList;Ljava/util/Random;)V a +MD net/minecraft/entity/passive/EntityVillager$PriceInfo getPrice (Ljava/util/Random;)I a +MD net/minecraft/entity/player/PlayerCapabilities getFlySpeed ()F a +MD net/minecraft/entity/player/PlayerCapabilities setFlySpeed (F)V a +MD net/minecraft/entity/player/PlayerCapabilities writeCapabilitiesToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/entity/player/PlayerCapabilities getWalkSpeed ()F b +MD net/minecraft/entity/player/PlayerCapabilities setPlayerWalkSpeed (F)V b +MD net/minecraft/entity/player/PlayerCapabilities readCapabilitiesFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/entity/player/InventoryPlayer damageArmor (F)V a +MD net/minecraft/entity/player/InventoryPlayer getStrVsBlock (Lnet/minecraft/block/Block;)F a +MD net/minecraft/entity/player/InventoryPlayer writeToNBT (Lnet/minecraft/nbt/NBTTagList;)Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/entity/player/InventoryPlayer consumeInventoryItem (Lnet/minecraft/item/Item;)Z a +MD net/minecraft/entity/player/InventoryPlayer getInventorySlotContainItemAndDamage (Lnet/minecraft/item/Item;I)I a +MD net/minecraft/entity/player/InventoryPlayer clearMatchingItems (Lnet/minecraft/item/Item;IILnet/minecraft/nbt/NBTTagCompound;)I a +MD net/minecraft/entity/player/InventoryPlayer setCurrentItem (Lnet/minecraft/item/Item;IZZ)V a +MD net/minecraft/entity/player/InventoryPlayer addItemStackToInventory (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/entity/player/InventoryPlayer canHeldItemHarvest (Lnet/minecraft/block/Block;)Z b +MD net/minecraft/entity/player/InventoryPlayer readFromNBT (Lnet/minecraft/nbt/NBTTagList;)V b +MD net/minecraft/entity/player/InventoryPlayer copyInventory (Lnet/minecraft/entity/player/InventoryPlayer;)V b +MD net/minecraft/entity/player/InventoryPlayer hasItem (Lnet/minecraft/item/Item;)Z b +MD net/minecraft/entity/player/InventoryPlayer setItemStack (Lnet/minecraft/item/ItemStack;)V b +MD net/minecraft/entity/player/InventoryPlayer getInventorySlotContainItem (Lnet/minecraft/item/Item;)I c +MD net/minecraft/entity/player/InventoryPlayer hasItemStack (Lnet/minecraft/item/ItemStack;)Z c +MD net/minecraft/entity/player/InventoryPlayer changeCurrentItem (I)V d +MD net/minecraft/entity/player/InventoryPlayer storeItemStack (Lnet/minecraft/item/ItemStack;)I d +MD net/minecraft/entity/player/InventoryPlayer armorItemInSlot (I)Lnet/minecraft/item/ItemStack; e +MD net/minecraft/entity/player/InventoryPlayer storePartialItemStack (Lnet/minecraft/item/ItemStack;)I e +MD net/minecraft/entity/player/InventoryPlayer getCurrentItem ()Lnet/minecraft/item/ItemStack; h +MD net/minecraft/entity/player/InventoryPlayer getHotbarSize ()I i +MD net/minecraft/entity/player/InventoryPlayer getFirstEmptyStack ()I j +MD net/minecraft/entity/player/InventoryPlayer decrementAnimations ()V k +MD net/minecraft/entity/player/InventoryPlayer getTotalArmorValue ()I m +MD net/minecraft/entity/player/InventoryPlayer dropAllItems ()V n +MD net/minecraft/entity/player/InventoryPlayer getItemStack ()Lnet/minecraft/item/ItemStack; p +MD net/minecraft/entity/player/InventoryPlayer$1 call ()Ljava/lang/String; a +MD net/minecraft/entity/player/InventoryPlayer$1 call ()Ljava/lang/Object; call +MD net/minecraft/entity/player/EntityPlayer addExhaustion (F)V a +MD net/minecraft/entity/player/EntityPlayer addExperienceLevel (I)V a +MD net/minecraft/entity/player/EntityPlayer displayVillagerTradeGui (Lnet/minecraft/entity/IMerchant;)V a +MD net/minecraft/entity/player/EntityPlayer openEditCommandBlock (Lnet/minecraft/command/server/CommandBlockLogic;)V a +MD net/minecraft/entity/player/EntityPlayer getBedSpawnLocation (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/entity/player/EntityPlayer setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/entity/player/EntityPlayer getToolDigEfficiency (Lnet/minecraft/block/Block;)F a +MD net/minecraft/entity/player/EntityPlayer openEditSign (Lnet/minecraft/tileentity/TileEntitySign;)V a +MD net/minecraft/entity/player/EntityPlayer trySleep (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; a +MD net/minecraft/entity/player/EntityPlayer canPlayerEdit (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/entity/player/EntityPlayer setSpawnPoint (Lnet/minecraft/util/BlockPos;Z)V a +MD net/minecraft/entity/player/EntityPlayer getUUID (Lcom/mojang/authlib/GameProfile;)Ljava/util/UUID; a +MD net/minecraft/entity/player/EntityPlayer func_175139_a (Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/entity/player/EntityPlayer func_175145_a (Lnet/minecraft/stats/StatBase;)V a +MD net/minecraft/entity/player/EntityPlayer addStat (Lnet/minecraft/stats/StatBase;I)V a +MD net/minecraft/entity/player/EntityPlayer displayGUIChest (Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/entity/player/EntityPlayer displayGui (Lnet/minecraft/world/IInteractionObject;)V a +MD net/minecraft/entity/player/EntityPlayer canOpen (Lnet/minecraft/world/LockCode;)Z a +MD net/minecraft/entity/player/EntityPlayer displayGUIHorse (Lnet/minecraft/entity/passive/EntityHorse;Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/entity/player/EntityPlayer joinEntityItemWithWorld (Lnet/minecraft/entity/item/EntityItem;)V a +MD net/minecraft/entity/player/EntityPlayer canAttackPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/entity/player/EntityPlayer clonePlayer (Lnet/minecraft/entity/player/EntityPlayer;Z)V a +MD net/minecraft/entity/player/EntityPlayer isWearing (Lnet/minecraft/entity/player/EnumPlayerModelParts;)Z a +MD net/minecraft/entity/player/EntityPlayer displayGUIBook (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/entity/player/EntityPlayer setItemInUse (Lnet/minecraft/item/ItemStack;I)V a +MD net/minecraft/entity/player/EntityPlayer dropPlayerItemWithRandomChoice (Lnet/minecraft/item/ItemStack;Z)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/player/EntityPlayer dropItem (Lnet/minecraft/item/ItemStack;ZZ)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/player/EntityPlayer dropOneItem (Z)Lnet/minecraft/entity/item/EntityItem; a +MD net/minecraft/entity/player/EntityPlayer wakeUpPlayer (ZZZ)V a +MD net/minecraft/entity/player/EntityPlayer removeExperienceLevel (I)V b +MD net/minecraft/entity/player/EntityPlayer canHarvestBlock (Lnet/minecraft/block/Block;)Z b +MD net/minecraft/entity/player/EntityPlayer addChatComponentMessage (Lnet/minecraft/util/IChatComponent;)V b +MD net/minecraft/entity/player/EntityPlayer getOfflineUUID (Ljava/lang/String;)Ljava/util/UUID; b +MD net/minecraft/entity/player/EntityPlayer triggerAchievement (Lnet/minecraft/stats/StatBase;)V b +MD net/minecraft/entity/player/EntityPlayer onCriticalHit (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/entity/player/EntityPlayer updateItemUse (Lnet/minecraft/item/ItemStack;I)V b +MD net/minecraft/entity/player/EntityPlayer getItemInUse ()Lnet/minecraft/item/ItemStack; bQ +MD net/minecraft/entity/player/EntityPlayer getItemInUseCount ()I bR +MD net/minecraft/entity/player/EntityPlayer isUsingItem ()Z bS +MD net/minecraft/entity/player/EntityPlayer getItemInUseDuration ()I bT +MD net/minecraft/entity/player/EntityPlayer stopUsingItem ()V bU +MD net/minecraft/entity/player/EntityPlayer clearItemInUse ()V bV +MD net/minecraft/entity/player/EntityPlayer isBlocking ()Z bW +MD net/minecraft/entity/player/EntityPlayer getScore ()I bX +MD net/minecraft/entity/player/EntityPlayer getArmorVisibility ()F bY +MD net/minecraft/entity/player/EntityPlayer getCurrentEquippedItem ()Lnet/minecraft/item/ItemStack; bZ +MD net/minecraft/entity/player/EntityPlayer onEnchantmentCritical (Lnet/minecraft/entity/Entity;)V c +MD net/minecraft/entity/player/EntityPlayer destroyCurrentEquippedItem ()V ca +MD net/minecraft/entity/player/EntityPlayer respawnPlayer ()V cb +MD net/minecraft/entity/player/EntityPlayer isUser ()Z cc +MD net/minecraft/entity/player/EntityPlayer getGameProfile ()Lcom/mojang/authlib/GameProfile; cd +MD net/minecraft/entity/player/EntityPlayer getBedOrientationInDegrees ()F ce +MD net/minecraft/entity/player/EntityPlayer isPlayerFullyAsleep ()Z cf +MD net/minecraft/entity/player/EntityPlayer getSleepTimer ()I cg +MD net/minecraft/entity/player/EntityPlayer getBedLocation ()Lnet/minecraft/util/BlockPos; ch +MD net/minecraft/entity/player/EntityPlayer isSpawnForced ()Z ci +MD net/minecraft/entity/player/EntityPlayer getXPSeed ()I cj +MD net/minecraft/entity/player/EntityPlayer xpBarCap ()I ck +MD net/minecraft/entity/player/EntityPlayer getFoodStats ()Lnet/minecraft/util/FoodStats; cl +MD net/minecraft/entity/player/EntityPlayer shouldHeal ()Z cm +MD net/minecraft/entity/player/EntityPlayer isAllowEdit ()Z cn +MD net/minecraft/entity/player/EntityPlayer getInventoryEnderChest ()Lnet/minecraft/inventory/InventoryEnderChest; co +MD net/minecraft/entity/player/EntityPlayer getWorldScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; cp +MD net/minecraft/entity/player/EntityPlayer hasReducedDebug ()Z cq +MD net/minecraft/entity/player/EntityPlayer collideWithPlayer (Lnet/minecraft/entity/Entity;)V d +MD net/minecraft/entity/player/EntityPlayer func_175137_e (Lnet/minecraft/entity/Entity;)Ljava/util/Collection; e +MD net/minecraft/entity/player/EntityPlayer attackTargetEntityWithCurrentItem (Lnet/minecraft/entity/Entity;)V f +MD net/minecraft/entity/player/EntityPlayer canEat (Z)Z j +MD net/minecraft/entity/player/EntityPlayer addMovementStat (DDD)V k +MD net/minecraft/entity/player/EntityPlayer setReducedDebug (Z)V k +MD net/minecraft/entity/player/EntityPlayer addMountedMovementStat (DDD)V l +MD net/minecraft/entity/player/EntityPlayer closeScreen ()V n +MD net/minecraft/entity/player/EntityPlayer isInBed ()Z p +MD net/minecraft/entity/player/EntityPlayer setScore (I)V r +MD net/minecraft/entity/player/EntityPlayer onItemUseFinish ()V s +MD net/minecraft/entity/player/EntityPlayer addScore (I)V s +MD net/minecraft/entity/player/EntityPlayer sendPlayerAbilities ()V t +MD net/minecraft/entity/player/EntityPlayer addExperience (I)V u +MD net/minecraft/entity/player/EntityPlayer interactWith (Lnet/minecraft/entity/Entity;)Z u +MD net/minecraft/entity/player/EntityPlayer isSpectator ()Z v +MD net/minecraft/entity/player/EntityPlayer$EnumStatus valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; valueOf +MD net/minecraft/entity/player/EntityPlayer$EnumStatus values ()[Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; values +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getChatVisibility ()I a +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getEnumChatVisibility (I)Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; a +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getResourceKey ()Ljava/lang/String; b +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; valueOf +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility values ()[Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; values +MD net/minecraft/entity/player/EnumPlayerModelParts getPartMask ()I a +MD net/minecraft/entity/player/EnumPlayerModelParts getPartId ()I b +MD net/minecraft/entity/player/EnumPlayerModelParts getPartName ()Ljava/lang/String; c +MD net/minecraft/entity/player/EnumPlayerModelParts func_179326_d ()Lnet/minecraft/util/IChatComponent; d +MD net/minecraft/entity/player/EnumPlayerModelParts valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EnumPlayerModelParts; valueOf +MD net/minecraft/entity/player/EnumPlayerModelParts values ()[Lnet/minecraft/entity/player/EnumPlayerModelParts; values +MD net/minecraft/entity/projectile/EntityArrow setKnockbackStrength (I)V a +MD net/minecraft/entity/projectile/EntityArrow setIsCritical (Z)V a +MD net/minecraft/entity/projectile/EntityArrow setDamage (D)V b +MD net/minecraft/entity/projectile/EntityArrow getDamage ()D j +MD net/minecraft/entity/projectile/EntityArrow getIsCritical ()Z l +MD net/minecraft/entity/item/EntityEnderEye moveTowards (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/entity/projectile/EntityFireball onImpact (Lnet/minecraft/util/MovingObjectPosition;)V a +MD net/minecraft/entity/projectile/EntityFireball getMotionFactor ()F j +MD net/minecraft/entity/IProjectile setThrowableHeading (DDDFF)V c +MD net/minecraft/entity/projectile/EntityThrowable onImpact (Lnet/minecraft/util/MovingObjectPosition;)V a +MD net/minecraft/entity/projectile/EntityThrowable getVelocity ()F j +MD net/minecraft/entity/projectile/EntityThrowable getInaccuracy ()F l +MD net/minecraft/entity/projectile/EntityThrowable getGravityVelocity ()F m +MD net/minecraft/entity/projectile/EntityThrowable getThrower ()Lnet/minecraft/entity/EntityLivingBase; n +MD net/minecraft/entity/projectile/EntityPotion setPotionDamage (I)V a +MD net/minecraft/entity/projectile/EntityPotion getPotionDamage ()I o +MD net/minecraft/entity/projectile/EntityWitherSkull setInvulnerable (Z)V a +MD net/minecraft/entity/projectile/EntityWitherSkull isInvulnerable ()Z l +MD net/minecraft/util/FoodStats getFoodLevel ()I a +MD net/minecraft/util/FoodStats addExhaustion (F)V a +MD net/minecraft/util/FoodStats setFoodLevel (I)V a +MD net/minecraft/util/FoodStats addStats (IF)V a +MD net/minecraft/util/FoodStats readNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/util/FoodStats onUpdate (Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/util/FoodStats addStats (Lnet/minecraft/item/ItemFood;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/util/FoodStats getPrevFoodLevel ()I b +MD net/minecraft/util/FoodStats setFoodSaturationLevel (F)V b +MD net/minecraft/util/FoodStats writeNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/util/FoodStats needFood ()Z c +MD net/minecraft/util/FoodStats getSaturationLevel ()F e +MD net/minecraft/inventory/Container getInventory ()Ljava/util/List; a +MD net/minecraft/inventory/Container getSlot (I)Lnet/minecraft/inventory/Slot; a +MD net/minecraft/inventory/Container slotClick (IIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/inventory/Container retrySlotClick (IIZLnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/inventory/Container isValidDragMode (ILnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/inventory/Container putStackInSlot (ILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/Container calcRedstone (Lnet/minecraft/tileentity/TileEntity;)I a +MD net/minecraft/inventory/Container computeStackSize (Ljava/util/Set;ILnet/minecraft/item/ItemStack;I)V a +MD net/minecraft/inventory/Container onCraftMatrixChanged (Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/inventory/Container getSlotFromInventory (Lnet/minecraft/inventory/IInventory;I)Lnet/minecraft/inventory/Slot; a +MD net/minecraft/inventory/Container getNextTransactionID (Lnet/minecraft/entity/player/InventoryPlayer;)S a +MD net/minecraft/inventory/Container canInteractWith (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/inventory/Container enchantItem (Lnet/minecraft/entity/player/EntityPlayer;I)Z a +MD net/minecraft/inventory/Container setCanCraft (Lnet/minecraft/entity/player/EntityPlayer;Z)V a +MD net/minecraft/inventory/Container onCraftGuiOpened (Lnet/minecraft/inventory/ICrafting;)V a +MD net/minecraft/inventory/Container addSlotToContainer (Lnet/minecraft/inventory/Slot;)Lnet/minecraft/inventory/Slot; a +MD net/minecraft/inventory/Container canAddItemToSlot (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z a +MD net/minecraft/inventory/Container mergeItemStack (Lnet/minecraft/item/ItemStack;IIZ)Z a +MD net/minecraft/inventory/Container canMergeSlot (Lnet/minecraft/item/ItemStack;Lnet/minecraft/inventory/Slot;)Z a +MD net/minecraft/inventory/Container putStacksInSlots ([Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/Container detectAndSendChanges ()V b +MD net/minecraft/inventory/Container extractDragMode (I)I b +MD net/minecraft/inventory/Container updateProgressBar (II)V b +MD net/minecraft/inventory/Container calcRedstoneFromInventory (Lnet/minecraft/inventory/IInventory;)I b +MD net/minecraft/inventory/Container onContainerClosed (Lnet/minecraft/entity/player/EntityPlayer;)V b +MD net/minecraft/inventory/Container transferStackInSlot (Lnet/minecraft/entity/player/EntityPlayer;I)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/inventory/Container removeCraftingFromCrafters (Lnet/minecraft/inventory/ICrafting;)V b +MD net/minecraft/inventory/Container canDragIntoSlot (Lnet/minecraft/inventory/Slot;)Z b +MD net/minecraft/inventory/Container getDragEvent (I)I c +MD net/minecraft/inventory/Container getCanCraft (Lnet/minecraft/entity/player/EntityPlayer;)Z c +MD net/minecraft/inventory/Container resetDrag ()V d +MD net/minecraft/inventory/Container func_94534_d (II)I d +MD net/minecraft/inventory/ContainerRepair updateItemName (Ljava/lang/String;)V a +MD net/minecraft/inventory/ContainerRepair access$000 (Lnet/minecraft/inventory/ContainerRepair;)Lnet/minecraft/inventory/IInventory; a +MD net/minecraft/inventory/ContainerRepair access$100 (Lnet/minecraft/inventory/ContainerRepair;)I b +MD net/minecraft/inventory/ContainerRepair updateRepairOutput ()V e +MD net/minecraft/inventory/ContainerBeacon func_180611_e ()Lnet/minecraft/inventory/IInventory; e +MD net/minecraft/inventory/ContainerBrewingStand$Potion canHoldPotion (Lnet/minecraft/item/ItemStack;)Z b_ +MD net/minecraft/inventory/ICrafting sendProgressBarUpdate (Lnet/minecraft/inventory/Container;II)V a +MD net/minecraft/inventory/ICrafting sendSlotContents (Lnet/minecraft/inventory/Container;ILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/ICrafting updateCraftingInventory (Lnet/minecraft/inventory/Container;Ljava/util/List;)V a +MD net/minecraft/inventory/ICrafting sendAllWindowProperties (Lnet/minecraft/inventory/Container;Lnet/minecraft/inventory/IInventory;)V a +MD net/minecraft/inventory/ContainerChest getLowerChestInventory ()Lnet/minecraft/inventory/IInventory; e +MD net/minecraft/inventory/InventoryCrafting getStackInRowAndColumn (II)Lnet/minecraft/item/ItemStack; c +MD net/minecraft/inventory/InventoryCrafting getHeight ()I h +MD net/minecraft/inventory/InventoryCrafting getWidth ()I i +MD net/minecraft/inventory/ContainerEnchantment func_178148_a (Lnet/minecraft/item/ItemStack;II)Ljava/util/List; a +MD net/minecraft/inventory/ContainerEnchantment getLapisAmount ()I e +MD net/minecraft/inventory/SlotFurnaceFuel isBucket (Lnet/minecraft/item/ItemStack;)Z c_ +MD net/minecraft/inventory/InventoryMerchant setCurrentRecipeIndex (I)V d +MD net/minecraft/inventory/InventoryMerchant inventoryResetNeededOnSlotChange (I)Z e +MD net/minecraft/inventory/InventoryMerchant resetRecipeAndSlots ()V h +MD net/minecraft/inventory/InventoryMerchant getCurrentRecipe ()Lnet/minecraft/village/MerchantRecipe; i +MD net/minecraft/inventory/ContainerMerchant setCurrentRecipeIndex (I)V d +MD net/minecraft/inventory/ContainerMerchant getMerchantInventory ()Lnet/minecraft/inventory/InventoryMerchant; e +MD net/minecraft/inventory/SlotMerchantResult doTrade (Lnet/minecraft/village/MerchantRecipe;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/inventory/InventoryEnderChest setChestTileEntity (Lnet/minecraft/tileentity/TileEntityEnderChest;)V a +MD net/minecraft/inventory/InventoryEnderChest loadInventoryFromNBT (Lnet/minecraft/nbt/NBTTagList;)V a +MD net/minecraft/inventory/InventoryEnderChest saveInventoryToNBT ()Lnet/minecraft/nbt/NBTTagList; h +MD net/minecraft/inventory/Slot getSlotStackLimit ()I a +MD net/minecraft/inventory/Slot decrStackSize (I)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/inventory/Slot isHere (Lnet/minecraft/inventory/IInventory;I)Z a +MD net/minecraft/inventory/Slot canTakeStack (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/inventory/Slot onPickupFromSlot (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/Slot isItemValid (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/inventory/Slot onCrafting (Lnet/minecraft/item/ItemStack;I)V a +MD net/minecraft/inventory/Slot onSlotChange (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/inventory/Slot canBeHovered ()Z b +MD net/minecraft/inventory/Slot getItemStackLimit (Lnet/minecraft/item/ItemStack;)I b +MD net/minecraft/inventory/Slot getSlotTexture ()Ljava/lang/String; c +MD net/minecraft/inventory/Slot onCrafting (Lnet/minecraft/item/ItemStack;)V c +MD net/minecraft/inventory/Slot getStack ()Lnet/minecraft/item/ItemStack; d +MD net/minecraft/inventory/Slot putStack (Lnet/minecraft/item/ItemStack;)V d +MD net/minecraft/inventory/Slot getHasStack ()Z e +MD net/minecraft/inventory/Slot onSlotChanged ()V f +MD net/minecraft/item/ItemArmor getColor (Lnet/minecraft/item/ItemStack;)I b +MD net/minecraft/item/ItemArmor setColor (Lnet/minecraft/item/ItemStack;I)V b +MD net/minecraft/item/ItemArmor removeColor (Lnet/minecraft/item/ItemStack;)V c +MD net/minecraft/item/ItemArmor access$000 ()[I d +MD net/minecraft/item/ItemArmor hasColor (Lnet/minecraft/item/ItemStack;)Z d_ +MD net/minecraft/item/ItemArmor getArmorMaterial ()Lnet/minecraft/item/ItemArmor$ArmorMaterial; x_ +MD net/minecraft/item/ItemArmor$ArmorMaterial getEnchantability ()I a +MD net/minecraft/item/ItemArmor$ArmorMaterial getDurability (I)I a +MD net/minecraft/item/ItemArmor$ArmorMaterial getRepairItem ()Lnet/minecraft/item/Item; b +MD net/minecraft/item/ItemArmor$ArmorMaterial getDamageReductionAmount (I)I b +MD net/minecraft/item/ItemArmor$ArmorMaterial getName ()Ljava/lang/String; c +MD net/minecraft/item/ItemArmor$ArmorMaterial valueOf (Ljava/lang/String;)Lnet/minecraft/item/ItemArmor$ArmorMaterial; valueOf +MD net/minecraft/item/ItemArmor$ArmorMaterial values ()[Lnet/minecraft/item/ItemArmor$ArmorMaterial; values +MD net/minecraft/item/ItemArmorStand applyRandomRotations (Lnet/minecraft/entity/item/EntityArmorStand;Ljava/util/Random;)V a +MD net/minecraft/item/ItemBanner getBaseColor (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumDyeColor; h +MD net/minecraft/item/ItemBlock canPlaceBlockOnSide (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/ItemBlock setTileEntityNBT (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/ItemBlock setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/item/ItemBlock; b +MD net/minecraft/item/ItemBlock getBlock ()Lnet/minecraft/block/Block; d +MD net/minecraft/item/ItemBucket tryPlaceContainedLiquid (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/item/ItemBucket fillBucket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/Item;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/ItemMapBase createMapDataPacket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/network/Packet; c +MD net/minecraft/creativetab/CreativeTabs getTabIndex ()I a +MD net/minecraft/creativetab/CreativeTabs hasRelevantEnchantmentType (Lnet/minecraft/enchantment/EnumEnchantmentType;)Z a +MD net/minecraft/creativetab/CreativeTabs setBackgroundImageName (Ljava/lang/String;)Lnet/minecraft/creativetab/CreativeTabs; a +MD net/minecraft/creativetab/CreativeTabs displayAllReleventItems (Ljava/util/List;)V a +MD net/minecraft/creativetab/CreativeTabs addEnchantmentBooksToList (Ljava/util/List;[Lnet/minecraft/enchantment/EnumEnchantmentType;)V a +MD net/minecraft/creativetab/CreativeTabs setRelevantEnchantmentTypes ([Lnet/minecraft/enchantment/EnumEnchantmentType;)Lnet/minecraft/creativetab/CreativeTabs; a +MD net/minecraft/creativetab/CreativeTabs getTabLabel ()Ljava/lang/String; b +MD net/minecraft/creativetab/CreativeTabs getTranslatedTabLabel ()Ljava/lang/String; c +MD net/minecraft/creativetab/CreativeTabs getIconItemStack ()Lnet/minecraft/item/ItemStack; d +MD net/minecraft/creativetab/CreativeTabs getTabIconItem ()Lnet/minecraft/item/Item; e +MD net/minecraft/creativetab/CreativeTabs getIconItemDamage ()I f +MD net/minecraft/creativetab/CreativeTabs getBackgroundImageName ()Ljava/lang/String; g +MD net/minecraft/creativetab/CreativeTabs drawInForegroundOfTab ()Z h +MD net/minecraft/creativetab/CreativeTabs setNoTitle ()Lnet/minecraft/creativetab/CreativeTabs; i +MD net/minecraft/creativetab/CreativeTabs shouldHidePlayerInventory ()Z j +MD net/minecraft/creativetab/CreativeTabs setNoScrollbar ()Lnet/minecraft/creativetab/CreativeTabs; k +MD net/minecraft/creativetab/CreativeTabs getTabColumn ()I l +MD net/minecraft/creativetab/CreativeTabs isTabInFirstRow ()Z m +MD net/minecraft/creativetab/CreativeTabs getRelevantEnchantmentTypes ()[Lnet/minecraft/enchantment/EnumEnchantmentType; n +MD net/minecraft/item/ItemTool getToolMaterial ()Lnet/minecraft/item/Item$ToolMaterial; g +MD net/minecraft/item/ItemTool getToolMaterialName ()Ljava/lang/String; h +MD net/minecraft/item/ItemDoor placeDoor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/block/Block;)V a +MD net/minecraft/item/EnumDyeColor getMetadata ()I a +MD net/minecraft/item/EnumDyeColor byDyeDamage (I)Lnet/minecraft/item/EnumDyeColor; a +MD net/minecraft/item/EnumDyeColor getDyeDamage ()I b +MD net/minecraft/item/EnumDyeColor byMetadata (I)Lnet/minecraft/item/EnumDyeColor; b +MD net/minecraft/item/EnumDyeColor getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/item/EnumDyeColor getMapColor ()Lnet/minecraft/block/material/MapColor; e +MD net/minecraft/item/EnumDyeColor toString ()Ljava/lang/String; toString +MD net/minecraft/item/EnumDyeColor valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumDyeColor; valueOf +MD net/minecraft/item/EnumDyeColor values ()[Lnet/minecraft/item/EnumDyeColor; values +MD net/minecraft/item/ItemDye spawnBonemealParticles (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/item/ItemDye applyBonemeal (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/item/ItemEnchantedBook getAll (Lnet/minecraft/enchantment/Enchantment;Ljava/util/List;)V a +MD net/minecraft/item/ItemEnchantedBook getEnchantedItemStack (Lnet/minecraft/enchantment/EnchantmentData;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/ItemEnchantedBook getRandom (Ljava/util/Random;III)Lnet/minecraft/util/WeightedRandomChestContent; a +MD net/minecraft/item/ItemEnchantedBook addEnchantment (Lnet/minecraft/item/ItemStack;Lnet/minecraft/enchantment/EnchantmentData;)V a +MD net/minecraft/item/ItemEnchantedBook getRandom (Ljava/util/Random;)Lnet/minecraft/util/WeightedRandomChestContent; b +MD net/minecraft/item/ItemEnchantedBook getEnchantments (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/nbt/NBTTagList; h +MD net/minecraft/item/ItemFireworkCharge addExplosionInfo (Lnet/minecraft/nbt/NBTTagCompound;Ljava/util/List;)V a +MD net/minecraft/item/ItemFireworkCharge getExplosionTag (Lnet/minecraft/item/ItemStack;Ljava/lang/String;)Lnet/minecraft/nbt/NBTBase; a +MD net/minecraft/item/ItemFishFood$FishType getMetadata ()I a +MD net/minecraft/item/ItemFishFood$FishType byMetadata (I)Lnet/minecraft/item/ItemFishFood$FishType; a +MD net/minecraft/item/ItemFishFood$FishType byItemStack (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemFishFood$FishType; a +MD net/minecraft/item/ItemFishFood$FishType getUnlocalizedName ()Ljava/lang/String; b +MD net/minecraft/item/ItemFishFood$FishType getUncookedHealAmount ()I c +MD net/minecraft/item/ItemFishFood$FishType getUncookedSaturationModifier ()F d +MD net/minecraft/item/ItemFishFood$FishType getCookedHealAmount ()I e +MD net/minecraft/item/ItemFishFood$FishType getCookedSaturationModifier ()F f +MD net/minecraft/item/ItemFishFood$FishType canCook ()Z g +MD net/minecraft/item/ItemFishFood$FishType valueOf (Ljava/lang/String;)Lnet/minecraft/item/ItemFishFood$FishType; valueOf +MD net/minecraft/item/ItemFishFood$FishType values ()[Lnet/minecraft/item/ItemFishFood$FishType; values +MD net/minecraft/item/ItemFood setPotionEffect (IIIF)Lnet/minecraft/item/ItemFood; a +MD net/minecraft/item/ItemFood onFoodEaten (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)V c +MD net/minecraft/item/ItemFood isWolfsFavoriteMeat ()Z g +MD net/minecraft/item/ItemFood setAlwaysEdible ()Lnet/minecraft/item/ItemFood; h +MD net/minecraft/item/ItemFood getHealAmount (Lnet/minecraft/item/ItemStack;)I h +MD net/minecraft/item/ItemFood getSaturationModifier (Lnet/minecraft/item/ItemStack;)F i +MD net/minecraft/item/ItemHangingEntity createEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/entity/EntityHanging; a +MD net/minecraft/item/ItemHoe useHoe (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/item/ItemHoe getMaterialName ()Ljava/lang/String; g +MD net/minecraft/item/Item getUnlocalizedName ()Ljava/lang/String; a +MD net/minecraft/item/Item getMetadata (I)I a +MD net/minecraft/item/Item registerItem (ILjava/lang/String;Lnet/minecraft/item/Item;)V a +MD net/minecraft/item/Item registerItem (ILnet/minecraft/util/ResourceLocation;Lnet/minecraft/item/Item;)V a +MD net/minecraft/item/Item getMovingObjectPositionFromPlayer (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Z)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/item/Item getItemFromBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item; a +MD net/minecraft/item/Item registerItemBlock (Lnet/minecraft/block/Block;Lnet/minecraft/item/Item;)V a +MD net/minecraft/item/Item updateItemStackNBT (Lnet/minecraft/nbt/NBTTagCompound;)Z a +MD net/minecraft/item/Item setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/item/Item; a +MD net/minecraft/item/Item getSubItems (Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V a +MD net/minecraft/item/Item getItemStackDisplayName (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item getColorFromItemStack (Lnet/minecraft/item/ItemStack;I)I a +MD net/minecraft/item/Item onBlockDestroyed (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/item/Item onUpdate (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;IZ)V a +MD net/minecraft/item/Item onItemRightClick (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/Item onPlayerStoppedUsing (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V a +MD net/minecraft/item/Item getStrVsBlock (Lnet/minecraft/item/ItemStack;Lnet/minecraft/block/Block;)F a +MD net/minecraft/item/Item hitEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/item/Item onItemUse (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z a +MD net/minecraft/item/Item addInformation (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Ljava/util/List;Z)V a +MD net/minecraft/item/Item itemInteractionForEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/item/Item getIsRepairable (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/Item setHasSubtypes (Z)Lnet/minecraft/item/Item; a +MD net/minecraft/item/Item getItemEnchantability ()I b +MD net/minecraft/item/Item getItemById (I)Lnet/minecraft/item/Item; b +MD net/minecraft/item/Item canHarvestBlock (Lnet/minecraft/block/Block;)Z b +MD net/minecraft/item/Item getIdFromItem (Lnet/minecraft/item/Item;)I b +MD net/minecraft/item/Item onItemUseFinish (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/Item getCreativeTab ()Lnet/minecraft/creativetab/CreativeTabs; c +MD net/minecraft/item/Item setMaxStackSize (I)Lnet/minecraft/item/Item; c +MD net/minecraft/item/Item registerItemBlock (Lnet/minecraft/block/Block;)V c +MD net/minecraft/item/Item setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/item/Item; c +MD net/minecraft/item/Item setContainerItem (Lnet/minecraft/item/Item;)Lnet/minecraft/item/Item; c +MD net/minecraft/item/Item setMaxDamage (I)Lnet/minecraft/item/Item; d +MD net/minecraft/item/Item getByNameOrId (Ljava/lang/String;)Lnet/minecraft/item/Item; d +MD net/minecraft/item/Item getMaxItemUseDuration (Lnet/minecraft/item/ItemStack;)I d +MD net/minecraft/item/Item onCreated (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)V d +MD net/minecraft/item/Item shouldRotateAroundWhenRendering ()Z e +MD net/minecraft/item/Item setPotionEffect (Ljava/lang/String;)Lnet/minecraft/item/Item; e +MD net/minecraft/item/Item getItemUseAction (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumAction; e +MD net/minecraft/item/Item getUnlocalizedName (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; e_ +MD net/minecraft/item/Item isMap ()Z f +MD net/minecraft/item/Item hasEffect (Lnet/minecraft/item/ItemStack;)Z f +MD net/minecraft/item/Item isItemTool (Lnet/minecraft/item/ItemStack;)Z f_ +MD net/minecraft/item/Item getRarity (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumRarity; g +MD net/minecraft/item/Item getItemAttributeModifiers ()Lcom/google/common/collect/Multimap; i +MD net/minecraft/item/Item getItemStackLimit ()I j +MD net/minecraft/item/Item getPotionEffect (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; j +MD net/minecraft/item/Item getHasSubtypes ()Z k +MD net/minecraft/item/Item getUnlocalizedNameInefficiently (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; k +MD net/minecraft/item/Item getMaxDamage ()I l +MD net/minecraft/item/Item isPotionIngredient (Lnet/minecraft/item/ItemStack;)Z l +MD net/minecraft/item/Item isDamageable ()Z m +MD net/minecraft/item/Item setFull3D ()Lnet/minecraft/item/Item; n +MD net/minecraft/item/Item getShareTag ()Z p +MD net/minecraft/item/Item getContainerItem ()Lnet/minecraft/item/Item; q +MD net/minecraft/item/Item hasContainerItem ()Z r +MD net/minecraft/item/Item canItemEditBlocks ()Z s +MD net/minecraft/item/Item registerItems ()V t +MD net/minecraft/item/Item isFull3D ()Z w_ +MD net/minecraft/item/Item$1 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$2 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$2 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$3 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$3 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$4 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$4 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$5 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$5 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$6 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$6 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$7 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$7 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$8 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$8 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$9 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$9 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$ToolMaterial getMaxUses ()I a +MD net/minecraft/item/Item$ToolMaterial getEfficiencyOnProperMaterial ()F b +MD net/minecraft/item/Item$ToolMaterial getDamageVsEntity ()F c +MD net/minecraft/item/Item$ToolMaterial getHarvestLevel ()I d +MD net/minecraft/item/Item$ToolMaterial getEnchantability ()I e +MD net/minecraft/item/Item$ToolMaterial getRepairItem ()Lnet/minecraft/item/Item; f +MD net/minecraft/item/Item$ToolMaterial valueOf (Ljava/lang/String;)Lnet/minecraft/item/Item$ToolMaterial; valueOf +MD net/minecraft/item/Item$ToolMaterial values ()[Lnet/minecraft/item/Item$ToolMaterial; values +MD net/minecraft/item/Item$10 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$10 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$11 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$11 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$12 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$12 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$13 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$13 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$14 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$14 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$15 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$15 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$16 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$16 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$17 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/Item$17 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/ItemStack getRepairCost ()I A +MD net/minecraft/item/ItemStack getAttributeModifiers ()Lcom/google/common/collect/Multimap; B +MD net/minecraft/item/ItemStack getChatComponent ()Lnet/minecraft/util/IChatComponent; C +MD net/minecraft/item/ItemStack getUnlocalizedName ()Ljava/lang/String; a +MD net/minecraft/item/ItemStack splitStack (I)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/ItemStack attemptDamageItem (ILjava/util/Random;)Z a +MD net/minecraft/item/ItemStack damageItem (ILnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/item/ItemStack addEnchantment (Lnet/minecraft/enchantment/Enchantment;I)V a +MD net/minecraft/item/ItemStack onBlockDestroyed (Lnet/minecraft/world/World;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/item/ItemStack updateAnimation (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;IZ)V a +MD net/minecraft/item/ItemStack useItemRightClick (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/ItemStack onCrafting (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V a +MD net/minecraft/item/ItemStack getStrVsBlock (Lnet/minecraft/block/Block;)F a +MD net/minecraft/item/ItemStack loadItemStackFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/ItemStack setTagInfo (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;)V a +MD net/minecraft/item/ItemStack getSubCompound (Ljava/lang/String;Z)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/item/ItemStack hitEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/item/ItemStack setItemFrame (Lnet/minecraft/entity/item/EntityItemFrame;)V a +MD net/minecraft/item/ItemStack onItemUse (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z a +MD net/minecraft/item/ItemStack interactWithEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/item/ItemStack getTooltip (Lnet/minecraft/entity/player/EntityPlayer;Z)Ljava/util/List; a +MD net/minecraft/item/ItemStack setItem (Lnet/minecraft/item/Item;)V a +MD net/minecraft/item/ItemStack isItemEqual (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/ItemStack areItemStackTagsEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/ItemStack getItem ()Lnet/minecraft/item/Item; b +MD net/minecraft/item/ItemStack setItemDamage (I)V b +MD net/minecraft/item/ItemStack onItemUseFinish (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/ItemStack onPlayerStoppedUsing (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V b +MD net/minecraft/item/ItemStack canHarvestBlock (Lnet/minecraft/block/Block;)Z b +MD net/minecraft/item/ItemStack writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; b +MD net/minecraft/item/ItemStack copyItemStack (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/ItemStack areItemStacksEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z b +MD net/minecraft/item/ItemStack getMaxStackSize ()I c +MD net/minecraft/item/ItemStack setRepairCost (I)V c +MD net/minecraft/item/ItemStack canDestroy (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/item/ItemStack readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V c +MD net/minecraft/item/ItemStack setStackDisplayName (Ljava/lang/String;)Lnet/minecraft/item/ItemStack; c +MD net/minecraft/item/ItemStack getIsItemStackEqual (Lnet/minecraft/item/ItemStack;)Z c +MD net/minecraft/item/ItemStack areItemsEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z c +MD net/minecraft/item/ItemStack isStackable ()Z d +MD net/minecraft/item/ItemStack canPlaceOn (Lnet/minecraft/block/Block;)Z d +MD net/minecraft/item/ItemStack setTagCompound (Lnet/minecraft/nbt/NBTTagCompound;)V d +MD net/minecraft/item/ItemStack isItemStackEqual (Lnet/minecraft/item/ItemStack;)Z d +MD net/minecraft/item/ItemStack isItemStackDamageable ()Z e +MD net/minecraft/item/ItemStack getHasSubtypes ()Z f +MD net/minecraft/item/ItemStack isItemDamaged ()Z g +MD net/minecraft/item/ItemStack getItemDamage ()I h +MD net/minecraft/item/ItemStack getMetadata ()I i +MD net/minecraft/item/ItemStack getMaxDamage ()I j +MD net/minecraft/item/ItemStack copy ()Lnet/minecraft/item/ItemStack; k +MD net/minecraft/item/ItemStack getMaxItemUseDuration ()I l +MD net/minecraft/item/ItemStack getItemUseAction ()Lnet/minecraft/item/EnumAction; m +MD net/minecraft/item/ItemStack hasTagCompound ()Z n +MD net/minecraft/item/ItemStack getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; o +MD net/minecraft/item/ItemStack getEnchantmentTagList ()Lnet/minecraft/nbt/NBTTagList; p +MD net/minecraft/item/ItemStack getDisplayName ()Ljava/lang/String; q +MD net/minecraft/item/ItemStack clearCustomName ()V r +MD net/minecraft/item/ItemStack hasDisplayName ()Z s +MD net/minecraft/item/ItemStack hasEffect ()Z t +MD net/minecraft/item/ItemStack getRarity ()Lnet/minecraft/item/EnumRarity; u +MD net/minecraft/item/ItemStack isItemEnchantable ()Z v +MD net/minecraft/item/ItemStack isItemEnchanted ()Z w +MD net/minecraft/item/ItemStack canEditBlocks ()Z x +MD net/minecraft/item/ItemStack isOnItemFrame ()Z y +MD net/minecraft/item/ItemStack getItemFrame ()Lnet/minecraft/entity/item/EntityItemFrame; z +MD net/minecraft/item/ItemStack toString ()Ljava/lang/String; toString +MD net/minecraft/init/Items getRegisteredItem (Ljava/lang/String;)Lnet/minecraft/item/Item; a +MD net/minecraft/item/ItemLead attachToFence (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/item/ItemMap loadMapData (ILnet/minecraft/world/World;)Lnet/minecraft/world/storage/MapData; a +MD net/minecraft/item/ItemMap updateMapData (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;Lnet/minecraft/world/storage/MapData;)V a +MD net/minecraft/item/ItemMap getMapData (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;)Lnet/minecraft/world/storage/MapData; a +MD net/minecraft/item/ItemMinecart access$000 (Lnet/minecraft/item/ItemMinecart;)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; a +MD net/minecraft/item/ItemMultiTexture$1 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; a +MD net/minecraft/item/ItemMultiTexture$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/ItemPotion getEffects (I)Ljava/util/List; e +MD net/minecraft/item/ItemPotion isSplash (I)Z f +MD net/minecraft/item/ItemPotion getColorFromDamage (I)I g +MD net/minecraft/item/ItemPotion isEffectInstant (I)Z h +MD net/minecraft/item/ItemPotion getEffects (Lnet/minecraft/item/ItemStack;)Ljava/util/List; h +MD net/minecraft/item/EnumRarity valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumRarity; valueOf +MD net/minecraft/item/EnumRarity values ()[Lnet/minecraft/item/EnumRarity; values +MD net/minecraft/item/ItemRecord getRecord (Ljava/lang/String;)Lnet/minecraft/item/ItemRecord; b +MD net/minecraft/item/ItemRecord getRecordNameLocal ()Ljava/lang/String; g +MD net/minecraft/item/ItemSlab tryPlace (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Ljava/lang/Object;)Z a +MD net/minecraft/item/ItemMonsterPlacer spawnCreature (Lnet/minecraft/world/World;IDDD)Lnet/minecraft/entity/Entity; a +MD net/minecraft/item/ItemSword getDamageVsEntity ()F g +MD net/minecraft/item/ItemSword getToolMaterialName ()Ljava/lang/String; h +MD net/minecraft/item/ItemColored setSubtypeNames ([Ljava/lang/String;)Lnet/minecraft/item/ItemColored; a +MD net/minecraft/item/EnumAction valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumAction; valueOf +MD net/minecraft/item/EnumAction values ()[Lnet/minecraft/item/EnumAction; values +MD net/minecraft/item/ItemWritableBook isNBTValid (Lnet/minecraft/nbt/NBTTagCompound;)Z b +MD net/minecraft/item/ItemEditableBook resolveContents (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/item/ItemEditableBook validBookTagContents (Lnet/minecraft/nbt/NBTTagCompound;)Z b +MD net/minecraft/item/ItemEditableBook getGeneration (Lnet/minecraft/item/ItemStack;)I h +MD net/minecraft/potion/PotionHelper getPotionPrefixIndex (I)I a +MD net/minecraft/potion/PotionHelper checkFlag (II)Z a +MD net/minecraft/potion/PotionHelper getPotionPrefixIndexFlags (IIIIII)I a +MD net/minecraft/potion/PotionHelper brewBitOperations (IIZZZ)I a +MD net/minecraft/potion/PotionHelper applyIngredient (ILjava/lang/String;)I a +MD net/minecraft/potion/PotionHelper getLiquidColor (IZ)I a +MD net/minecraft/potion/PotionHelper parsePotionEffects (Ljava/lang/String;III)I a +MD net/minecraft/potion/PotionHelper calcPotionLiquidColor (Ljava/util/Collection;)I a +MD net/minecraft/potion/PotionHelper getPotionEffect (ZZZIIII)I a +MD net/minecraft/potion/PotionHelper getPotionEffects (IZ)Ljava/util/List; b +MD net/minecraft/potion/PotionHelper getAreAmbient (Ljava/util/Collection;)Z b +MD net/minecraft/potion/PotionHelper getPotionPrefix (I)Ljava/lang/String; c +MD net/minecraft/potion/PotionHelper isFlagSet (II)I c +MD net/minecraft/potion/PotionHelper isFlagUnset (II)I d +MD net/minecraft/potion/PotionHelper countSetFlags (I)I h +MD net/minecraft/item/crafting/RecipesArmor addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/RecipesBanners addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern func_179533_c (Lnet/minecraft/inventory/InventoryCrafting;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; c +MD net/minecraft/item/crafting/RecipesDyes addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/RecipesFood addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/FurnaceRecipes instance ()Lnet/minecraft/item/crafting/FurnaceRecipes; a +MD net/minecraft/item/crafting/FurnaceRecipes addSmeltingRecipeForBlock (Lnet/minecraft/block/Block;Lnet/minecraft/item/ItemStack;F)V a +MD net/minecraft/item/crafting/FurnaceRecipes addSmelting (Lnet/minecraft/item/Item;Lnet/minecraft/item/ItemStack;F)V a +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingResult (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/crafting/FurnaceRecipes compareItemStacks (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/item/crafting/FurnaceRecipes addSmeltingRecipe (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;F)V a +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingList ()Ljava/util/Map; b +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingExperience (Lnet/minecraft/item/ItemStack;)F b +MD net/minecraft/item/crafting/RecipesIngots addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/IRecipe getRecipeSize ()I a +MD net/minecraft/item/crafting/IRecipe getCraftingResult (Lnet/minecraft/inventory/InventoryCrafting;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/crafting/IRecipe matches (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)Z a +MD net/minecraft/item/crafting/IRecipe getRecipeOutput ()Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/crafting/IRecipe getRemainingItems (Lnet/minecraft/inventory/InventoryCrafting;)[Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/crafting/CraftingManager getInstance ()Lnet/minecraft/item/crafting/CraftingManager; a +MD net/minecraft/item/crafting/CraftingManager addRecipe (Lnet/minecraft/item/crafting/IRecipe;)V a +MD net/minecraft/item/crafting/CraftingManager findMatchingRecipe (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/item/crafting/CraftingManager addRecipe (Lnet/minecraft/item/ItemStack;[Ljava/lang/Object;)Lnet/minecraft/item/crafting/ShapedRecipes; a +MD net/minecraft/item/crafting/CraftingManager getRecipeList ()Ljava/util/List; b +MD net/minecraft/item/crafting/CraftingManager func_180303_b (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)[Lnet/minecraft/item/ItemStack; b +MD net/minecraft/item/crafting/CraftingManager addShapelessRecipe (Lnet/minecraft/item/ItemStack;[Ljava/lang/Object;)V b +MD net/minecraft/item/crafting/CraftingManager$1 compare (Lnet/minecraft/item/crafting/IRecipe;Lnet/minecraft/item/crafting/IRecipe;)I a +MD net/minecraft/item/crafting/CraftingManager$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/item/crafting/ShapedRecipes checkMatch (Lnet/minecraft/inventory/InventoryCrafting;IIZ)Z a +MD net/minecraft/item/crafting/RecipesCrafting addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/RecipesTools addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/item/crafting/RecipesWeapons addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V a +MD net/minecraft/enchantment/EnchantmentDurability negateDamage (Lnet/minecraft/item/ItemStack;ILjava/util/Random;)Z a +MD net/minecraft/enchantment/Enchantment getName ()Ljava/lang/String; a +MD net/minecraft/enchantment/Enchantment getMinEnchantability (I)I a +MD net/minecraft/enchantment/Enchantment calcModifierDamage (ILnet/minecraft/util/DamageSource;)I a +MD net/minecraft/enchantment/Enchantment calcDamageByCreature (ILnet/minecraft/entity/EnumCreatureAttribute;)F a +MD net/minecraft/enchantment/Enchantment canApplyTogether (Lnet/minecraft/enchantment/Enchantment;)Z a +MD net/minecraft/enchantment/Enchantment onEntityDamaged (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;I)V a +MD net/minecraft/enchantment/Enchantment canApply (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/enchantment/Enchantment getMaxLevel ()I b +MD net/minecraft/enchantment/Enchantment getMaxEnchantability (I)I b +MD net/minecraft/enchantment/Enchantment getEnchantmentByLocation (Ljava/lang/String;)Lnet/minecraft/enchantment/Enchantment; b +MD net/minecraft/enchantment/Enchantment onUserHurt (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;I)V b +MD net/minecraft/enchantment/Enchantment func_181077_c ()Ljava/util/Set; c +MD net/minecraft/enchantment/Enchantment getEnchantmentById (I)Lnet/minecraft/enchantment/Enchantment; c +MD net/minecraft/enchantment/Enchantment setName (Ljava/lang/String;)Lnet/minecraft/enchantment/Enchantment; c +MD net/minecraft/enchantment/Enchantment getWeight ()I d +MD net/minecraft/enchantment/Enchantment getTranslatedName (I)Ljava/lang/String; d +MD net/minecraft/enchantment/Enchantment getMinLevel ()I e +MD net/minecraft/enchantment/EnumEnchantmentType canEnchantItem (Lnet/minecraft/item/Item;)Z a +MD net/minecraft/enchantment/EnumEnchantmentType valueOf (Ljava/lang/String;)Lnet/minecraft/enchantment/EnumEnchantmentType; valueOf +MD net/minecraft/enchantment/EnumEnchantmentType values ()[Lnet/minecraft/enchantment/EnumEnchantmentType; values +MD net/minecraft/enchantment/EnchantmentHelper getEnchantmentLevel (ILnet/minecraft/item/ItemStack;)I a +MD net/minecraft/enchantment/EnchantmentHelper getMaxEnchantmentLevel (I[Lnet/minecraft/item/ItemStack;)I a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantedItem (Lnet/minecraft/enchantment/Enchantment;Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/enchantment/EnchantmentHelper applyEnchantmentModifier (Lnet/minecraft/enchantment/EnchantmentHelper$IModifier;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/enchantment/EnchantmentHelper applyEnchantmentModifierArray (Lnet/minecraft/enchantment/EnchantmentHelper$IModifier;[Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/enchantment/EnchantmentHelper setEnchantments (Ljava/util/Map;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/enchantment/EnchantmentHelper calcItemStackEnchantability (Ljava/util/Random;IILnet/minecraft/item/ItemStack;)I a +MD net/minecraft/enchantment/EnchantmentHelper addRandomEnchantment (Ljava/util/Random;Lnet/minecraft/item/ItemStack;I)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/enchantment/EnchantmentHelper getRespiration (Lnet/minecraft/entity/Entity;)I a +MD net/minecraft/enchantment/EnchantmentHelper getKnockbackModifier (Lnet/minecraft/entity/EntityLivingBase;)I a +MD net/minecraft/enchantment/EnchantmentHelper applyThornEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantments (Lnet/minecraft/item/ItemStack;)Ljava/util/Map; a +MD net/minecraft/enchantment/EnchantmentHelper getModifierForCreature (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EnumCreatureAttribute;)F a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantmentModifierDamage ([Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/DamageSource;)I a +MD net/minecraft/enchantment/EnchantmentHelper mapEnchantmentData (ILnet/minecraft/item/ItemStack;)Ljava/util/Map; b +MD net/minecraft/enchantment/EnchantmentHelper buildEnchantmentList (Ljava/util/Random;Lnet/minecraft/item/ItemStack;I)Ljava/util/List; b +MD net/minecraft/enchantment/EnchantmentHelper getDepthStriderModifier (Lnet/minecraft/entity/Entity;)I b +MD net/minecraft/enchantment/EnchantmentHelper getFireAspectModifier (Lnet/minecraft/entity/EntityLivingBase;)I b +MD net/minecraft/enchantment/EnchantmentHelper applyArthropodEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/enchantment/EnchantmentHelper getEfficiencyModifier (Lnet/minecraft/entity/EntityLivingBase;)I c +MD net/minecraft/enchantment/EnchantmentHelper getSilkTouchModifier (Lnet/minecraft/entity/EntityLivingBase;)Z e +MD net/minecraft/enchantment/EnchantmentHelper getFortuneModifier (Lnet/minecraft/entity/EntityLivingBase;)I f +MD net/minecraft/enchantment/EnchantmentHelper getLuckOfSeaModifier (Lnet/minecraft/entity/EntityLivingBase;)I g +MD net/minecraft/enchantment/EnchantmentHelper getLureModifier (Lnet/minecraft/entity/EntityLivingBase;)I h +MD net/minecraft/enchantment/EnchantmentHelper getLootingModifier (Lnet/minecraft/entity/EntityLivingBase;)I i +MD net/minecraft/enchantment/EnchantmentHelper getAquaAffinityModifier (Lnet/minecraft/entity/EntityLivingBase;)Z j +MD net/minecraft/enchantment/EnchantmentHelper$IModifier calculateModifier (Lnet/minecraft/enchantment/Enchantment;I)V a +MD net/minecraft/enchantment/EnchantmentProtection func_92092_a (Lnet/minecraft/entity/Entity;D)D a +MD net/minecraft/enchantment/EnchantmentProtection getFireTimeForEntity (Lnet/minecraft/entity/Entity;I)I a +MD net/minecraft/enchantment/EnchantmentThorns func_92094_a (ILjava/util/Random;)Z a +MD net/minecraft/enchantment/EnchantmentThorns func_92095_b (ILjava/util/Random;)I b +MD net/minecraft/entity/IMerchant useRecipe (Lnet/minecraft/village/MerchantRecipe;)V a +MD net/minecraft/entity/IMerchant setRecipes (Lnet/minecraft/village/MerchantRecipeList;)V a +MD net/minecraft/entity/IMerchant setCustomer (Lnet/minecraft/entity/player/EntityPlayer;)V a_ +MD net/minecraft/entity/IMerchant verifySellingItem (Lnet/minecraft/item/ItemStack;)V a_ +MD net/minecraft/entity/IMerchant getRecipes (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/village/MerchantRecipeList; b_ +MD net/minecraft/entity/IMerchant getDisplayName ()Lnet/minecraft/util/IChatComponent; f_ +MD net/minecraft/entity/IMerchant getCustomer ()Lnet/minecraft/entity/player/EntityPlayer; v_ +MD net/minecraft/village/MerchantRecipe getItemToBuy ()Lnet/minecraft/item/ItemStack; a +MD net/minecraft/village/MerchantRecipe increaseMaxTradeUses (I)V a +MD net/minecraft/village/MerchantRecipe readFromTags (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/village/MerchantRecipe getSecondItemToBuy ()Lnet/minecraft/item/ItemStack; b +MD net/minecraft/village/MerchantRecipe hasSecondItemToBuy ()Z c +MD net/minecraft/village/MerchantRecipe getItemToSell ()Lnet/minecraft/item/ItemStack; d +MD net/minecraft/village/MerchantRecipe getToolUses ()I e +MD net/minecraft/village/MerchantRecipe getMaxTradeUses ()I f +MD net/minecraft/village/MerchantRecipe incrementToolUses ()V g +MD net/minecraft/village/MerchantRecipe isRecipeDisabled ()Z h +MD net/minecraft/village/MerchantRecipe compensateToolUses ()V i +MD net/minecraft/village/MerchantRecipe getRewardsExp ()Z j +MD net/minecraft/village/MerchantRecipe writeToTags ()Lnet/minecraft/nbt/NBTTagCompound; k +MD net/minecraft/village/MerchantRecipeList getRecipiesAsTags ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/village/MerchantRecipeList readRecipiesFromTags (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/village/MerchantRecipeList writeToBuf (Lnet/minecraft/network/PacketBuffer;)V a +MD net/minecraft/village/MerchantRecipeList func_181078_a (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/village/MerchantRecipeList canRecipeBeUsed (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;I)Lnet/minecraft/village/MerchantRecipe; a +MD net/minecraft/village/MerchantRecipeList readFromBuf (Lnet/minecraft/network/PacketBuffer;)Lnet/minecraft/village/MerchantRecipeList; b +MD net/minecraft/command/server/CommandBlockLogic trigger (Lnet/minecraft/world/World;)V a +MD net/minecraft/command/server/CommandBlockLogic writeDataToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/command/server/CommandBlockLogic func_145757_a (Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/command/server/CommandBlockLogic setCommand (Ljava/lang/String;)V a +MD net/minecraft/command/server/CommandBlockLogic tryOpenEditCommandBlock (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/command/server/CommandBlockLogic setTrackOutput (Z)V a +MD net/minecraft/command/server/CommandBlockLogic readDataFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/command/server/CommandBlockLogic setLastOutput (Lnet/minecraft/util/IChatComponent;)V b +MD net/minecraft/command/server/CommandBlockLogic setName (Ljava/lang/String;)V b +MD net/minecraft/command/server/CommandBlockLogic updateCommand ()V h +MD net/minecraft/command/server/CommandBlockLogic func_145751_f ()I i +MD net/minecraft/command/server/CommandBlockLogic getSuccessCount ()I j +MD net/minecraft/command/server/CommandBlockLogic getLastOutput ()Lnet/minecraft/util/IChatComponent; k +MD net/minecraft/command/server/CommandBlockLogic getCommand ()Ljava/lang/String; l +MD net/minecraft/command/server/CommandBlockLogic shouldTrackOutput ()Z m +MD net/minecraft/command/server/CommandBlockLogic getCommandResultStats ()Lnet/minecraft/command/CommandResultStats; n +MD net/minecraft/command/server/CommandBlockLogic$1 call ()Ljava/lang/String; a +MD net/minecraft/command/server/CommandBlockLogic$1 call ()Ljava/lang/Object; call +MD net/minecraft/command/server/CommandBlockLogic$2 call ()Ljava/lang/String; a +MD net/minecraft/command/server/CommandBlockLogic$2 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/MobSpawnerBaseLogic getSpawnerWorld ()Lnet/minecraft/world/World; a +MD net/minecraft/tileentity/MobSpawnerBaseLogic func_98267_a (I)V a +MD net/minecraft/tileentity/MobSpawnerBaseLogic setRandomEntity (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)V a +MD net/minecraft/tileentity/MobSpawnerBaseLogic func_180612_a (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/tileentity/MobSpawnerBaseLogic readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/tileentity/MobSpawnerBaseLogic setEntityName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/MobSpawnerBaseLogic spawnNewEntity (Lnet/minecraft/entity/Entity;Z)Lnet/minecraft/entity/Entity; a +MD net/minecraft/tileentity/MobSpawnerBaseLogic getSpawnerPosition ()Lnet/minecraft/util/BlockPos; b +MD net/minecraft/tileentity/MobSpawnerBaseLogic setDelayToMin (I)Z b +MD net/minecraft/tileentity/MobSpawnerBaseLogic writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/tileentity/MobSpawnerBaseLogic updateSpawner ()V c +MD net/minecraft/tileentity/MobSpawnerBaseLogic getMobRotation ()D d +MD net/minecraft/tileentity/MobSpawnerBaseLogic getPrevMobRotation ()D e +MD net/minecraft/tileentity/MobSpawnerBaseLogic getEntityNameToSpawn ()Ljava/lang/String; f +MD net/minecraft/tileentity/MobSpawnerBaseLogic isActivated ()Z g +MD net/minecraft/tileentity/MobSpawnerBaseLogic resetTimer ()V h +MD net/minecraft/tileentity/MobSpawnerBaseLogic getRandomEntity ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart; i +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart toNBT ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart access$000 (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)Ljava/lang/String; a +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart access$100 (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)Lnet/minecraft/nbt/NBTTagCompound; b +MD net/minecraft/block/BlockEventData getPosition ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/block/BlockEventData getEventID ()I b +MD net/minecraft/block/BlockEventData getEventParameter ()I c +MD net/minecraft/block/BlockEventData getBlock ()Lnet/minecraft/block/Block; d +MD net/minecraft/block/BlockEventData equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/BlockEventData toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumWorldBlockLayer toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumWorldBlockLayer valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumWorldBlockLayer; valueOf +MD net/minecraft/util/EnumWorldBlockLayer values ()[Lnet/minecraft/util/EnumWorldBlockLayer; values +MD net/minecraft/world/ChunkCoordIntPair getCenterXPos ()I a +MD net/minecraft/world/ChunkCoordIntPair getCenterBlock (I)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/ChunkCoordIntPair chunkXZ2Int (II)J a +MD net/minecraft/world/ChunkCoordIntPair getBlock (III)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/ChunkCoordIntPair getCenterZPosition ()I b +MD net/minecraft/world/ChunkCoordIntPair getXStart ()I c +MD net/minecraft/world/ChunkCoordIntPair getZStart ()I d +MD net/minecraft/world/ChunkCoordIntPair getXEnd ()I e +MD net/minecraft/world/ChunkCoordIntPair getZEnd ()I f +MD net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/ChunkCoordIntPair hashCode ()I hashCode +MD net/minecraft/world/ChunkCoordIntPair toString ()Ljava/lang/String; toString +MD net/minecraft/world/Explosion doExplosionA ()V a +MD net/minecraft/world/Explosion doExplosionB (Z)V a +MD net/minecraft/world/Explosion getPlayerKnockbackMap ()Ljava/util/Map; b +MD net/minecraft/world/Explosion getExplosivePlacedBy ()Lnet/minecraft/entity/EntityLivingBase; c +MD net/minecraft/world/Explosion clearAffectedBlockPositions ()V d +MD net/minecraft/world/Explosion getAffectedBlockPositions ()Ljava/util/List; e +MD net/minecraft/world/ColorizerFoliage getFoliageColorPine ()I a +MD net/minecraft/world/ColorizerFoliage getFoliageColor (DD)I a +MD net/minecraft/world/ColorizerFoliage setFoliageBiomeColorizer ([I)V a +MD net/minecraft/world/ColorizerFoliage getFoliageColorBirch ()I b +MD net/minecraft/world/ColorizerFoliage getFoliageColorBasic ()I c +MD net/minecraft/world/GameRules writeToNBT ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/world/GameRules readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/GameRules getString (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/world/GameRules areSameType (Ljava/lang/String;Lnet/minecraft/world/GameRules$ValueType;)Z a +MD net/minecraft/world/GameRules setOrCreateGameRule (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/world/GameRules addGameRule (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/GameRules$ValueType;)V a +MD net/minecraft/world/GameRules getRules ()[Ljava/lang/String; b +MD net/minecraft/world/GameRules getBoolean (Ljava/lang/String;)Z b +MD net/minecraft/world/GameRules getInt (Ljava/lang/String;)I c +MD net/minecraft/world/GameRules hasRule (Ljava/lang/String;)Z e +MD net/minecraft/world/GameRules$Value getString ()Ljava/lang/String; a +MD net/minecraft/world/GameRules$Value setValue (Ljava/lang/String;)V a +MD net/minecraft/world/GameRules$Value getBoolean ()Z b +MD net/minecraft/world/GameRules$Value getInt ()I c +MD net/minecraft/world/GameRules$Value getType ()Lnet/minecraft/world/GameRules$ValueType; e +MD net/minecraft/world/GameRules$ValueType valueOf (Ljava/lang/String;)Lnet/minecraft/world/GameRules$ValueType; valueOf +MD net/minecraft/world/GameRules$ValueType values ()[Lnet/minecraft/world/GameRules$ValueType; values +MD net/minecraft/world/ColorizerGrass getGrassColor (DD)I a +MD net/minecraft/world/ColorizerGrass setGrassBiomeColorizer ([I)V a +MD net/minecraft/world/World getProviderName ()Ljava/lang/String; A +MD net/minecraft/world/World isBlockIndirectlyGettingPowered (Lnet/minecraft/util/BlockPos;)I A +MD net/minecraft/world/World calculateInitialSkylight ()V B +MD net/minecraft/world/World setSpawnPoint (Lnet/minecraft/util/BlockPos;)V B +MD net/minecraft/world/World calculateInitialWeather ()V C +MD net/minecraft/world/World isRainingAt (Lnet/minecraft/util/BlockPos;)Z C +MD net/minecraft/world/World setActivePlayerChunksAndCheckLight ()V D +MD net/minecraft/world/World isBlockinHighHumidity (Lnet/minecraft/util/BlockPos;)Z D +MD net/minecraft/world/World getLoadedEntityList ()Ljava/util/List; E +MD net/minecraft/world/World getDifficultyForLocation (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/DifficultyInstance; E +MD net/minecraft/world/World getSeaLevel ()I F +MD net/minecraft/world/World isWater (Lnet/minecraft/util/BlockPos;)Z F +MD net/minecraft/world/World sendQuittingDisconnectingPacket ()V H +MD net/minecraft/world/World checkSessionLock ()V I +MD net/minecraft/world/World getSeed ()J J +MD net/minecraft/world/World getTotalWorldTime ()J K +MD net/minecraft/world/World getWorldTime ()J L +MD net/minecraft/world/World getSpawnPoint ()Lnet/minecraft/util/BlockPos; M +MD net/minecraft/world/World getChunkProvider ()Lnet/minecraft/world/chunk/IChunkProvider; N +MD net/minecraft/world/World getSaveHandler ()Lnet/minecraft/world/storage/ISaveHandler; O +MD net/minecraft/world/World getWorldInfo ()Lnet/minecraft/world/storage/WorldInfo; P +MD net/minecraft/world/World getGameRules ()Lnet/minecraft/world/GameRules; Q +MD net/minecraft/world/World isThundering ()Z R +MD net/minecraft/world/World isRaining ()Z S +MD net/minecraft/world/World getMapStorage ()Lnet/minecraft/world/storage/MapStorage; T +MD net/minecraft/world/World getHeight ()I U +MD net/minecraft/world/World getActualHeight ()I V +MD net/minecraft/world/World getHorizon ()D X +MD net/minecraft/world/World getCurrentDate ()Ljava/util/Calendar; Y +MD net/minecraft/world/World getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; Z +MD net/minecraft/world/World getClosestPlayer (DDDD)Lnet/minecraft/entity/player/EntityPlayer; a +MD net/minecraft/world/World makeFireworks (DDDDDDLnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/World playSoundEffect (DDDLjava/lang/String;FF)V a +MD net/minecraft/world/World playSound (DDDLjava/lang/String;FFZ)V a +MD net/minecraft/world/World calculateSkylightSubtracted (F)I a +MD net/minecraft/world/World getEntityByID (I)Lnet/minecraft/entity/Entity; a +MD net/minecraft/world/World getChunkFromChunkCoords (II)Lnet/minecraft/world/chunk/Chunk; a +MD net/minecraft/world/World setRandomSeed (III)Ljava/util/Random; a +MD net/minecraft/world/World markBlocksDirtyVertical (IIII)V a +MD net/minecraft/world/World isAreaLoaded (IIIIIIZ)Z a +MD net/minecraft/world/World playMoodSoundAndCheckLight (IILnet/minecraft/world/chunk/Chunk;)V a +MD net/minecraft/world/World isChunkLoaded (IIZ)Z a +MD net/minecraft/world/World playBroadcastSound (ILnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/World spawnParticle (IZDDDDDD[I)V a +MD net/minecraft/world/World setTotalWorldTime (J)V a +MD net/minecraft/world/World addWorldAccess (Lnet/minecraft/world/IWorldAccess;)V a +MD net/minecraft/world/World initialize (Lnet/minecraft/world/WorldSettings;)V a +MD net/minecraft/world/World doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/World getLightFromNeighborsFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/World setLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/World forceBlockUpdateTick (Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Ljava/util/Random;)V a +MD net/minecraft/world/World canBlockBePlaced (Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;ZLnet/minecraft/util/EnumFacing;Lnet/minecraft/entity/Entity;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/world/World addTileEntity (Lnet/minecraft/tileentity/TileEntity;)Z a +MD net/minecraft/world/World isInsideBorder (Lnet/minecraft/world/border/WorldBorder;Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/world/World getPendingBlockUpdates (Lnet/minecraft/world/chunk/Chunk;Z)Ljava/util/List; a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/World func_175712_a (Lnet/minecraft/world/gen/structure/StructureBoundingBox;Z)Ljava/util/List; a +MD net/minecraft/world/World getCollisionBoxes (Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; a +MD net/minecraft/world/World isMaterialInBB (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;)Z a +MD net/minecraft/world/World handleMaterialAcceleration (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/world/World checkNoEntityCollision (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/world/World getBlockDensity (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/AxisAlignedBB;)F a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;Z)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;ZZZ)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/world/World addWorldInfoToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReportCategory; a +MD net/minecraft/world/World isValid (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;I)Z a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;IZ)Z a +MD net/minecraft/world/World getRawLight (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/EnumSkyBlock;)I a +MD net/minecraft/world/World isBlockTickPending (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)Z a +MD net/minecraft/world/World scheduleUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;I)V a +MD net/minecraft/world/World updateBlockTick (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V a +MD net/minecraft/world/World notifyNeighborsOfStateExcept (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/world/World setTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/world/World setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/world/World setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)Z a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Z)Z a +MD net/minecraft/world/World playRecord (Lnet/minecraft/util/BlockPos;Ljava/lang/String;)V a +MD net/minecraft/world/World isBlockLoaded (Lnet/minecraft/util/BlockPos;Z)Z a +MD net/minecraft/world/World spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDDDD[I)V a +MD net/minecraft/world/World spawnParticle (Lnet/minecraft/util/EnumParticleTypes;ZDDDDDD[I)V a +MD net/minecraft/world/World countEntities (Ljava/lang/Class;)I a +MD net/minecraft/world/World getEntitiesWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; a +MD net/minecraft/world/World getEntitiesWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Lcom/google/common/base/Predicate;)Ljava/util/List; a +MD net/minecraft/world/World findNearestEntityWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/entity/Entity;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/world/World getEntities (Ljava/lang/Class;Lcom/google/common/base/Predicate;)Ljava/util/List; a +MD net/minecraft/world/World loadItemData (Ljava/lang/Class;Ljava/lang/String;)Lnet/minecraft/world/WorldSavedData; a +MD net/minecraft/world/World getPlayerEntityByName (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer; a +MD net/minecraft/world/World setItemData (Ljava/lang/String;Lnet/minecraft/world/WorldSavedData;)V a +MD net/minecraft/world/World getStrongholdPos (Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/World addTileEntities (Ljava/util/Collection;)V a +MD net/minecraft/world/World onEntityAdded (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/world/World setEntityState (Lnet/minecraft/entity/Entity;B)V a +MD net/minecraft/world/World getClosestPlayerToEntity (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/entity/player/EntityPlayer; a +MD net/minecraft/world/World createExplosion (Lnet/minecraft/entity/Entity;DDDFZ)Lnet/minecraft/world/Explosion; a +MD net/minecraft/world/World newExplosion (Lnet/minecraft/entity/Entity;DDDFZZ)Lnet/minecraft/world/Explosion; a +MD net/minecraft/world/World getSkyColor (Lnet/minecraft/entity/Entity;F)Lnet/minecraft/util/Vec3; a +MD net/minecraft/world/World getCollidingBoundingBoxes (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; a +MD net/minecraft/world/World getEntitiesInAABBexcluding (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;Lcom/google/common/base/Predicate;)Ljava/util/List; a +MD net/minecraft/world/World playSoundAtEntity (Lnet/minecraft/entity/Entity;Ljava/lang/String;FF)V a +MD net/minecraft/world/World updateEntityWithOptionalForce (Lnet/minecraft/entity/Entity;Z)V a +MD net/minecraft/world/World playAuxSFXAtEntity (Lnet/minecraft/entity/player/EntityPlayer;ILnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/World isBlockModifiable (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/World extinguishFire (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/world/World playSoundToNearExcept (Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;FF)V a +MD net/minecraft/world/World tickUpdates (Z)Z a +MD net/minecraft/world/World setAllowedSpawnTypes (ZZ)V a +MD net/minecraft/world/World getDifficulty ()Lnet/minecraft/world/EnumDifficulty; aa +MD net/minecraft/world/World getSkylightSubtracted ()I ab +MD net/minecraft/world/World getLastLightningBolt ()I ac +MD net/minecraft/world/World isFindingSpawnPoint ()Z ad +MD net/minecraft/world/World getVillageCollection ()Lnet/minecraft/village/VillageCollection; ae +MD net/minecraft/world/World getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; af +MD net/minecraft/world/World init ()Lnet/minecraft/world/World; b +MD net/minecraft/world/World isAnyPlayerWithinRangeAt (DDDD)Z b +MD net/minecraft/world/World getSunBrightness (F)F b +MD net/minecraft/world/World setSeaLevel (I)V b +MD net/minecraft/world/World getChunksLowestHorizon (II)I b +MD net/minecraft/world/World markBlockRangeForRenderUpdate (IIIIII)V b +MD net/minecraft/world/World playAuxSFX (ILnet/minecraft/util/BlockPos;I)V b +MD net/minecraft/world/World setWorldTime (J)V b +MD net/minecraft/world/World removeWorldAccess (Lnet/minecraft/world/IWorldAccess;)V b +MD net/minecraft/world/World getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/World markTileEntityForRemoval (Lnet/minecraft/tileentity/TileEntity;)V b +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/world/gen/structure/StructureBoundingBox;Z)Z b +MD net/minecraft/world/World checkNoEntityCollision (Lnet/minecraft/util/AxisAlignedBB;)Z b +MD net/minecraft/world/World isAABBInMaterial (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;)Z b +MD net/minecraft/world/World notifyNeighborsRespectDebug (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V b +MD net/minecraft/world/World scheduleBlockUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V b +MD net/minecraft/world/World markChunkDirty (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V b +MD net/minecraft/world/World markBlockRangeForRenderUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/world/World isSidePowered (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/world/World destroyBlock (Lnet/minecraft/util/BlockPos;Z)Z b +MD net/minecraft/world/World getPlayers (Ljava/lang/Class;Lcom/google/common/base/Predicate;)Ljava/util/List; b +MD net/minecraft/world/World getUniqueDataId (Ljava/lang/String;)I b +MD net/minecraft/world/World loadEntities (Ljava/util/Collection;)V b +MD net/minecraft/world/World getPlayerEntityByUUID (Ljava/util/UUID;)Lnet/minecraft/entity/player/EntityPlayer; b +MD net/minecraft/world/World onEntityRemoved (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/world/World getEntitiesWithinAABBExcludingEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; b +MD net/minecraft/world/World tick ()V c +MD net/minecraft/world/World getCelestialAngle (F)F c +MD net/minecraft/world/World setSkylightSubtracted (I)V c +MD net/minecraft/world/World isSpawnChunk (II)Z c +MD net/minecraft/world/World sendBlockBreakProgress (ILnet/minecraft/util/BlockPos;I)V c +MD net/minecraft/world/World checkLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)Z c +MD net/minecraft/world/World checkBlockCollision (Lnet/minecraft/util/AxisAlignedBB;)Z c +MD net/minecraft/world/World getGroundAboveSeaLevel (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/Block; c +MD net/minecraft/world/World notifyNeighborsOfStateChange (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V c +MD net/minecraft/world/World addBlockEvent (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V c +MD net/minecraft/world/World getRedstonePower (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I c +MD net/minecraft/world/World getLight (Lnet/minecraft/util/BlockPos;Z)I c +MD net/minecraft/world/World unloadEntities (Ljava/util/Collection;)V c +MD net/minecraft/world/World addWeatherEffect (Lnet/minecraft/entity/Entity;)Z c +MD net/minecraft/world/World updateAllPlayersSleepingFlag ()V d +MD net/minecraft/world/World getCelestialAngleRadians (F)F d +MD net/minecraft/world/World setLastLightningBolt (I)V d +MD net/minecraft/world/World isAnyLiquid (Lnet/minecraft/util/AxisAlignedBB;)Z d +MD net/minecraft/world/World notifyBlockOfStateChange (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V d +MD net/minecraft/world/World isBlockNormalCube (Lnet/minecraft/util/BlockPos;Z)Z d +MD net/minecraft/world/World spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z d +MD net/minecraft/world/World getCloudColour (F)Lnet/minecraft/util/Vec3; e +MD net/minecraft/world/World isFlammableWithin (Lnet/minecraft/util/AxisAlignedBB;)Z e +MD net/minecraft/world/World isBlockLoaded (Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/world/World updateComparatorOutputLevel (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V e +MD net/minecraft/world/World canBlockFreeze (Lnet/minecraft/util/BlockPos;Z)Z e +MD net/minecraft/world/World removeEntity (Lnet/minecraft/entity/Entity;)V e +MD net/minecraft/world/World getFogColor (F)Lnet/minecraft/util/Vec3; f +MD net/minecraft/world/World getChunkFromBlockCoords (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/chunk/Chunk; f +MD net/minecraft/world/World canSnowAt (Lnet/minecraft/util/BlockPos;Z)Z f +MD net/minecraft/world/World removePlayerEntityDangerously (Lnet/minecraft/entity/Entity;)V f +MD net/minecraft/world/World setInitialSpawnLocation ()V g +MD net/minecraft/world/World getStarBrightness (F)F g +MD net/minecraft/world/World setBlockToAir (Lnet/minecraft/util/BlockPos;)Z g +MD net/minecraft/world/World updateEntity (Lnet/minecraft/entity/Entity;)V g +MD net/minecraft/world/World updateBlocks ()V h +MD net/minecraft/world/World getThunderStrength (F)F h +MD net/minecraft/world/World markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V h +MD net/minecraft/world/World joinEntityInSurroundings (Lnet/minecraft/entity/Entity;)V h +MD net/minecraft/world/World updateEntities ()V i +MD net/minecraft/world/World setThunderStrength (F)V i +MD net/minecraft/world/World canSeeSky (Lnet/minecraft/util/BlockPos;)Z i +MD net/minecraft/world/World getRainStrength (F)F j +MD net/minecraft/world/World canBlockSeeSky (Lnet/minecraft/util/BlockPos;)Z j +MD net/minecraft/world/World createChunkProvider ()Lnet/minecraft/world/chunk/IChunkProvider; k +MD net/minecraft/world/World setRainStrength (F)V k +MD net/minecraft/world/World getLight (Lnet/minecraft/util/BlockPos;)I k +MD net/minecraft/world/World getLightFromNeighbors (Lnet/minecraft/util/BlockPos;)I l +MD net/minecraft/world/World getHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; m +MD net/minecraft/world/World notifyLightSet (Lnet/minecraft/util/BlockPos;)V n +MD net/minecraft/world/World getLightBrightness (Lnet/minecraft/util/BlockPos;)F o +MD net/minecraft/world/World updateWeather ()V p +MD net/minecraft/world/World getRenderDistanceChunks ()I q +MD net/minecraft/world/World getPrecipitationHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; q +MD net/minecraft/world/World getTopSolidOrLiquidBlock (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; r +MD net/minecraft/world/World removeTileEntity (Lnet/minecraft/util/BlockPos;)V t +MD net/minecraft/world/World isBlockFullCube (Lnet/minecraft/util/BlockPos;)Z u +MD net/minecraft/world/World getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; v +MD net/minecraft/world/World canBlockFreezeWater (Lnet/minecraft/util/BlockPos;)Z v +MD net/minecraft/world/World isDaytime ()Z w +MD net/minecraft/world/World canBlockFreezeNoWater (Lnet/minecraft/util/BlockPos;)Z w +MD net/minecraft/world/World getMoonPhase ()I x +MD net/minecraft/world/World checkLight (Lnet/minecraft/util/BlockPos;)Z x +MD net/minecraft/world/World getCurrentMoonPhaseFactor ()F y +MD net/minecraft/world/World getStrongPower (Lnet/minecraft/util/BlockPos;)I y +MD net/minecraft/world/World getDebugLoadedEntities ()Ljava/lang/String; z +MD net/minecraft/world/World isBlockPowered (Lnet/minecraft/util/BlockPos;)Z z +MD net/minecraft/world/World$1 call ()Ljava/lang/String; a +MD net/minecraft/world/World$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$2 call ()Ljava/lang/String; a +MD net/minecraft/world/World$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$3 call ()Ljava/lang/String; a +MD net/minecraft/world/World$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$4 call ()Ljava/lang/String; a +MD net/minecraft/world/World$4 call ()Ljava/lang/Object; call +MD net/minecraft/world/IWorldAccess markBlockRangeForRenderUpdate (IIIIII)V a +MD net/minecraft/world/IWorldAccess broadcastSound (ILnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/IWorldAccess spawnParticle (IZDDDDDD[I)V a +MD net/minecraft/world/IWorldAccess markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/IWorldAccess playSound (Ljava/lang/String;DDDFF)V a +MD net/minecraft/world/IWorldAccess playRecord (Ljava/lang/String;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/IWorldAccess onEntityAdded (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/world/IWorldAccess playAuxSFX (Lnet/minecraft/entity/player/EntityPlayer;ILnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/IWorldAccess playSoundToNearExcept (Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;DDDFF)V a +MD net/minecraft/world/IWorldAccess sendBlockBreakProgress (ILnet/minecraft/util/BlockPos;I)V b +MD net/minecraft/world/IWorldAccess notifyLightSet (Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/world/IWorldAccess onEntityRemoved (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/world/WorldSettings enableBonusChest ()Lnet/minecraft/world/WorldSettings; a +MD net/minecraft/world/WorldSettings getGameTypeById (I)Lnet/minecraft/world/WorldSettings$GameType; a +MD net/minecraft/world/WorldSettings setWorldName (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings; a +MD net/minecraft/world/WorldSettings enableCommands ()Lnet/minecraft/world/WorldSettings; b +MD net/minecraft/world/WorldSettings isBonusChestEnabled ()Z c +MD net/minecraft/world/WorldSettings getSeed ()J d +MD net/minecraft/world/WorldSettings getGameType ()Lnet/minecraft/world/WorldSettings$GameType; e +MD net/minecraft/world/WorldSettings getHardcoreEnabled ()Z f +MD net/minecraft/world/WorldSettings isMapFeaturesEnabled ()Z g +MD net/minecraft/world/WorldSettings getTerrainType ()Lnet/minecraft/world/WorldType; h +MD net/minecraft/world/WorldSettings areCommandsAllowed ()Z i +MD net/minecraft/world/WorldSettings getWorldName ()Ljava/lang/String; j +MD net/minecraft/world/WorldSettings$GameType getID ()I a +MD net/minecraft/world/WorldSettings$GameType getByID (I)Lnet/minecraft/world/WorldSettings$GameType; a +MD net/minecraft/world/WorldSettings$GameType getByName (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; a +MD net/minecraft/world/WorldSettings$GameType configurePlayerCapabilities (Lnet/minecraft/entity/player/PlayerCapabilities;)V a +MD net/minecraft/world/WorldSettings$GameType getName ()Ljava/lang/String; b +MD net/minecraft/world/WorldSettings$GameType isAdventure ()Z c +MD net/minecraft/world/WorldSettings$GameType isCreative ()Z d +MD net/minecraft/world/WorldSettings$GameType isSurvivalOrAdventure ()Z e +MD net/minecraft/world/WorldSettings$GameType valueOf (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; valueOf +MD net/minecraft/world/WorldSettings$GameType values ()[Lnet/minecraft/world/WorldSettings$GameType; values +MD net/minecraft/world/IBlockAccess getWorldType ()Lnet/minecraft/world/WorldType; G +MD net/minecraft/world/IBlockAccess extendedLevelsInChunkCache ()Z W +MD net/minecraft/world/IBlockAccess getStrongPower (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/world/IBlockAccess getBiomeGenForCoords (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase; b +MD net/minecraft/world/IBlockAccess getCombinedLight (Lnet/minecraft/util/BlockPos;I)I b +MD net/minecraft/world/IBlockAccess isAirBlock (Lnet/minecraft/util/BlockPos;)Z d +MD net/minecraft/world/IBlockAccess getBlockState (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; p +MD net/minecraft/world/IBlockAccess getTileEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntity; s +MD net/minecraft/world/WorldType getWorldTypeName ()Ljava/lang/String; a +MD net/minecraft/world/WorldType getWorldTypeForGeneratorVersion (I)Lnet/minecraft/world/WorldType; a +MD net/minecraft/world/WorldType parseWorldType (Ljava/lang/String;)Lnet/minecraft/world/WorldType; a +MD net/minecraft/world/WorldType setCanBeCreated (Z)Lnet/minecraft/world/WorldType; a +MD net/minecraft/world/WorldType getTranslateName ()Ljava/lang/String; b +MD net/minecraft/world/WorldType getTranslatedInfo ()Ljava/lang/String; c +MD net/minecraft/world/WorldType getGeneratorVersion ()I d +MD net/minecraft/world/WorldType getCanBeCreated ()Z e +MD net/minecraft/world/WorldType isVersioned ()Z f +MD net/minecraft/world/WorldType getWorldTypeID ()I g +MD net/minecraft/world/WorldType showWorldInfoNotice ()Z h +MD net/minecraft/world/WorldType setVersioned ()Lnet/minecraft/world/WorldType; i +MD net/minecraft/world/WorldType setNotificationData ()Lnet/minecraft/world/WorldType; j +MD net/minecraft/world/EnumSkyBlock valueOf (Ljava/lang/String;)Lnet/minecraft/world/EnumSkyBlock; valueOf +MD net/minecraft/world/EnumSkyBlock values ()[Lnet/minecraft/world/EnumSkyBlock; values +MD net/minecraft/world/SpawnerAnimals getRandomChunkPosition (Lnet/minecraft/world/World;II)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/SpawnerAnimals performWorldGenSpawning (Lnet/minecraft/world/World;Lnet/minecraft/world/biome/BiomeGenBase;IIIILjava/util/Random;)V a +MD net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I a +MD net/minecraft/world/SpawnerAnimals canCreatureTypeSpawnAtLocation (Lnet/minecraft/entity/EntityLiving$SpawnPlacementType;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/Teleporter removeStalePortalLocations (J)V a +MD net/minecraft/world/Teleporter makePortal (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/world/Teleporter placeInPortal (Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/world/Teleporter placeInExistingPortal (Lnet/minecraft/entity/Entity;F)Z b +MD net/minecraft/world/ChunkCache getLightForExt (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/ChunkCache getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/NextTickListEntry getBlock ()Lnet/minecraft/block/Block; a +MD net/minecraft/world/NextTickListEntry setPriority (I)V a +MD net/minecraft/world/NextTickListEntry setScheduledTime (J)Lnet/minecraft/world/NextTickListEntry; a +MD net/minecraft/world/NextTickListEntry compareTo (Lnet/minecraft/world/NextTickListEntry;)I a +MD net/minecraft/world/NextTickListEntry compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/world/NextTickListEntry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/NextTickListEntry hashCode ()I hashCode +MD net/minecraft/world/NextTickListEntry toString ()Ljava/lang/String; toString +MD net/minecraft/world/biome/BiomeGenBase createBiomeDecorator ()Lnet/minecraft/world/biome/BiomeDecorator; a +MD net/minecraft/world/biome/BiomeGenBase getSkyColorByTemp (F)I a +MD net/minecraft/world/biome/BiomeGenBase setTemperatureRainfall (FF)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase setFillerBlockMetadata (I)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase getBiomeFromBiomeList (ILnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase func_150557_a (IZ)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase genTerrainBlocks (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/chunk/ChunkPrimer;IID)V a +MD net/minecraft/world/biome/BiomeGenBase decorate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/biome/BiomeGenBase setHeight (Lnet/minecraft/world/biome/BiomeGenBase$Height;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase isEqualTo (Lnet/minecraft/world/biome/BiomeGenBase;)Z a +MD net/minecraft/world/biome/BiomeGenBase getFloatTemperature (Lnet/minecraft/util/BlockPos;)F a +MD net/minecraft/world/biome/BiomeGenBase setBiomeName (Ljava/lang/String;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeGenBase genBigTreeChance (Ljava/util/Random;)Lnet/minecraft/world/gen/feature/WorldGenAbstractTree; a +MD net/minecraft/world/biome/BiomeGenBase pickRandomFlower (Ljava/util/Random;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockFlower$EnumFlowerType; a +MD net/minecraft/world/biome/BiomeGenBase getSpawnableList (Lnet/minecraft/entity/EnumCreatureType;)Ljava/util/List; a +MD net/minecraft/world/biome/BiomeGenBase setDisableRain ()Lnet/minecraft/world/biome/BiomeGenBase; b +MD net/minecraft/world/biome/BiomeGenBase setColor (I)Lnet/minecraft/world/biome/BiomeGenBase; b +MD net/minecraft/world/biome/BiomeGenBase generateBiomeTerrain (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/chunk/ChunkPrimer;IID)V b +MD net/minecraft/world/biome/BiomeGenBase getGrassColorAtPos (Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/biome/BiomeGenBase getRandomWorldGenForGrass (Ljava/util/Random;)Lnet/minecraft/world/gen/feature/WorldGenerator; b +MD net/minecraft/world/biome/BiomeGenBase setEnableSnow ()Lnet/minecraft/world/biome/BiomeGenBase; c +MD net/minecraft/world/biome/BiomeGenBase func_150563_c (I)Lnet/minecraft/world/biome/BiomeGenBase; c +MD net/minecraft/world/biome/BiomeGenBase getFoliageColorAtPos (Lnet/minecraft/util/BlockPos;)I c +MD net/minecraft/world/biome/BiomeGenBase getEnableSnow ()Z d +MD net/minecraft/world/biome/BiomeGenBase createMutatedBiome (I)Lnet/minecraft/world/biome/BiomeGenBase; d +MD net/minecraft/world/biome/BiomeGenBase canRain ()Z e +MD net/minecraft/world/biome/BiomeGenBase getBiome (I)Lnet/minecraft/world/biome/BiomeGenBase; e +MD net/minecraft/world/biome/BiomeGenBase isHighHumidity ()Z f +MD net/minecraft/world/biome/BiomeGenBase getSpawningChance ()F g +MD net/minecraft/world/biome/BiomeGenBase getIntRainfall ()I h +MD net/minecraft/world/biome/BiomeGenBase getFloatRainfall ()F i +MD net/minecraft/world/biome/BiomeGenBase isSnowyBiome ()Z j +MD net/minecraft/world/biome/BiomeGenBase createMutation ()Lnet/minecraft/world/biome/BiomeGenBase; k +MD net/minecraft/world/biome/BiomeGenBase getBiomeClass ()Ljava/lang/Class; l +MD net/minecraft/world/biome/BiomeGenBase getTempCategory ()Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; m +MD net/minecraft/world/biome/BiomeGenBase getBiomeGenArray ()[Lnet/minecraft/world/biome/BiomeGenBase; n +MD net/minecraft/world/biome/BiomeGenBase$Height attenuate ()Lnet/minecraft/world/biome/BiomeGenBase$Height; a +MD net/minecraft/world/biome/BiomeGenBase$TempCategory valueOf (Ljava/lang/String;)Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; valueOf +MD net/minecraft/world/biome/BiomeGenBase$TempCategory values ()[Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; values +MD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry toString ()Ljava/lang/String; toString +MD net/minecraft/world/biome/BiomeCache cleanupCache ()V a +MD net/minecraft/world/biome/BiomeCache getBiomeCacheBlock (II)Lnet/minecraft/world/biome/BiomeCache$Block; a +MD net/minecraft/world/biome/BiomeCache func_180284_a (IILnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeCache access$000 (Lnet/minecraft/world/biome/BiomeCache;)Lnet/minecraft/world/biome/WorldChunkManager; a +MD net/minecraft/world/biome/BiomeCache getCachedBiomes (II)[Lnet/minecraft/world/biome/BiomeGenBase; c +MD net/minecraft/world/biome/BiomeCache$Block getBiomeGenAt (II)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/BiomeColorHelper getGrassColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/biome/BiomeColorHelper getColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/BiomeColorHelper$ColorResolver;)I a +MD net/minecraft/world/biome/BiomeColorHelper getFoliageColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/biome/BiomeColorHelper getWaterColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I c +MD net/minecraft/world/biome/BiomeColorHelper$ColorResolver getColorAtPos (Lnet/minecraft/world/biome/BiomeGenBase;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/biome/BiomeDecorator generateOres ()V a +MD net/minecraft/world/biome/BiomeDecorator genStandardOre1 (ILnet/minecraft/world/gen/feature/WorldGenerator;II)V a +MD net/minecraft/world/biome/BiomeDecorator decorate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/biome/BiomeGenBase;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/biome/BiomeDecorator genDecorations (Lnet/minecraft/world/biome/BiomeGenBase;)V a +MD net/minecraft/world/biome/BiomeDecorator genStandardOre2 (ILnet/minecraft/world/gen/feature/WorldGenerator;II)V b +MD net/minecraft/world/biome/WorldChunkManager getBiomesToSpawnIn ()Ljava/util/List; a +MD net/minecraft/world/biome/WorldChunkManager getTemperatureAtHeight (FI)F a +MD net/minecraft/world/biome/WorldChunkManager areBiomesViable (IIILjava/util/List;)Z a +MD net/minecraft/world/biome/WorldChunkManager findBiomePosition (IIILjava/util/List;Ljava/util/Random;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenerator (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenerator (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/WorldChunkManager getRainfall ([FIIII)[F a +MD net/minecraft/world/biome/WorldChunkManager getBiomesForGeneration ([Lnet/minecraft/world/biome/BiomeGenBase;IIII)[Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenAt ([Lnet/minecraft/world/biome/BiomeGenBase;IIIIZ)[Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/biome/WorldChunkManager cleanupCache ()V b +MD net/minecraft/world/biome/WorldChunkManager loadBlockGeneratorData ([Lnet/minecraft/world/biome/BiomeGenBase;IIII)[Lnet/minecraft/world/biome/BiomeGenBase; b +MD net/minecraft/world/biome/BiomeGenHills mutateHills (Lnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenHills; b +MD net/minecraft/world/biome/BiomeGenMesa func_180629_a (III)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/biome/BiomeGenMesa func_150619_a (J)V a +MD net/minecraft/block/BlockContainer isInvalidNeighbor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockContainer hasInvalidNeighbor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockBasePressurePlate updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V a +MD net/minecraft/block/BlockBasePressurePlate setRedstoneStrength (Lnet/minecraft/block/state/IBlockState;I)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/BlockBasePressurePlate getSensitiveAABB (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/block/BlockBasePressurePlate setBlockBoundsBasedOnState0 (Lnet/minecraft/block/state/IBlockState;)V d +MD net/minecraft/block/BlockBasePressurePlate updateNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockBasePressurePlate getRedstoneStrength (Lnet/minecraft/block/state/IBlockState;)I e +MD net/minecraft/block/BlockBasePressurePlate computeRedstoneStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I f +MD net/minecraft/block/BlockBasePressurePlate canBePlacedOn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z m +MD net/minecraft/block/BlockRailBase func_176564_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Z)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/BlockRailBase onNeighborChangedInternal (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/Block;)V b +MD net/minecraft/block/BlockRailBase isRailBlock (Lnet/minecraft/block/state/IBlockState;)Z d +MD net/minecraft/block/BlockRailBase isRailBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockRailBase getShapeProperty ()Lnet/minecraft/block/properties/IProperty; n +MD net/minecraft/block/BlockRailBase$Rail countAdjacentRails ()I a +MD net/minecraft/block/BlockRailBase$Rail func_150653_a (Lnet/minecraft/block/BlockRailBase$Rail;)Z a +MD net/minecraft/block/BlockRailBase$Rail func_180360_a (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)V a +MD net/minecraft/block/BlockRailBase$Rail hasRailAt (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/block/BlockRailBase$Rail func_180364_a (ZZ)Lnet/minecraft/block/BlockRailBase$Rail; a +MD net/minecraft/block/BlockRailBase$Rail getBlockState ()Lnet/minecraft/block/state/IBlockState; b +MD net/minecraft/block/BlockRailBase$Rail func_150649_b (Lnet/minecraft/block/BlockRailBase$Rail;)Z b +MD net/minecraft/block/BlockRailBase$Rail findRailAt (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockRailBase$Rail; b +MD net/minecraft/block/BlockRailBase$Rail func_150651_b ()V c +MD net/minecraft/block/BlockRailBase$Rail func_150645_c (Lnet/minecraft/block/BlockRailBase$Rail;)V c +MD net/minecraft/block/BlockRailBase$Rail func_180363_c (Lnet/minecraft/util/BlockPos;)Z c +MD net/minecraft/block/BlockRailBase$Rail func_180361_d (Lnet/minecraft/util/BlockPos;)Z d +MD net/minecraft/block/BlockRailBase$EnumRailDirection getMetadata ()I a +MD net/minecraft/block/BlockRailBase$EnumRailDirection byMetadata (I)Lnet/minecraft/block/BlockRailBase$EnumRailDirection; a +MD net/minecraft/block/BlockRailBase$EnumRailDirection isAscending ()Z c +MD net/minecraft/block/BlockRailBase$EnumRailDirection toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRailBase$EnumRailDirection valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRailBase$EnumRailDirection; valueOf +MD net/minecraft/block/BlockRailBase$EnumRailDirection values ()[Lnet/minecraft/block/BlockRailBase$EnumRailDirection; values +MD net/minecraft/block/BlockBeacon updateColorAsync (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockBeacon$1 run ()V run +MD net/minecraft/block/BlockBeacon$1$1 run ()V run +MD net/minecraft/block/BlockBed getSafeExitLocation (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/block/BlockBed hasRoomForPlayer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockBed getPlayerInBed (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/player/EntityPlayer; f +MD net/minecraft/block/BlockBed setBedBounds ()V l +MD net/minecraft/block/BlockBed$EnumPartType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockBed$EnumPartType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockBed$EnumPartType; valueOf +MD net/minecraft/block/BlockBed$EnumPartType values ()[Lnet/minecraft/block/BlockBed$EnumPartType; values +MD net/minecraft/block/Block isCollidable ()Z A +MD net/minecraft/block/Block getBlockBoundsMinX ()D B +MD net/minecraft/block/Block getBlockBoundsMaxX ()D C +MD net/minecraft/block/Block getBlockBoundsMinY ()D D +MD net/minecraft/block/Block getBlockBoundsMaxY ()D E +MD net/minecraft/block/Block getBlockBoundsMinZ ()D F +MD net/minecraft/block/Block getBlockBoundsMaxZ ()D G +MD net/minecraft/block/Block getBlockColor ()I H +MD net/minecraft/block/Block canSilkHarvest ()Z I +MD net/minecraft/block/Block getEnableStats ()Z J +MD net/minecraft/block/Block disableStats ()Lnet/minecraft/block/Block; K +MD net/minecraft/block/Block getCreativeTabToDisplayOn ()Lnet/minecraft/creativetab/CreativeTabs; L +MD net/minecraft/block/Block isFlowerPot ()Z M +MD net/minecraft/block/Block requiresUpdates ()Z N +MD net/minecraft/block/Block hasComparatorInputOverride ()Z O +MD net/minecraft/block/Block getBlockState ()Lnet/minecraft/block/state/BlockState; P +MD net/minecraft/block/Block getDefaultState ()Lnet/minecraft/block/state/IBlockState; Q +MD net/minecraft/block/Block getOffsetType ()Lnet/minecraft/block/Block$EnumOffsetType; R +MD net/minecraft/block/Block registerBlocks ()V S +MD net/minecraft/block/Block getUnlocalizedName ()Ljava/lang/String; a +MD net/minecraft/block/Block setLightLevel (F)Lnet/minecraft/block/Block; a +MD net/minecraft/block/Block setBlockBounds (FFFFFF)V a +MD net/minecraft/block/Block getStateFromMeta (I)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/Block registerBlock (ILjava/lang/String;Lnet/minecraft/block/Block;)V a +MD net/minecraft/block/Block quantityDroppedWithBonus (ILjava/util/Random;)I a +MD net/minecraft/block/Block registerBlock (ILnet/minecraft/util/ResourceLocation;Lnet/minecraft/block/Block;)V a +MD net/minecraft/block/Block canDropFromExplosion (Lnet/minecraft/world/Explosion;)Z a +MD net/minecraft/block/Block tickRate (Lnet/minecraft/world/World;)I a +MD net/minecraft/block/Block isReplaceable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/block/Block onBlockDestroyedByExplosion (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/Explosion;)V a +MD net/minecraft/block/Block getCollisionBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/block/Block dropBlockAsItemWithChance (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;FI)V a +MD net/minecraft/block/Block onBlockEventReceived (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;II)Z a +MD net/minecraft/block/Block onNeighborBlockChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/Block;)V a +MD net/minecraft/block/Block addCollisionBoxesToList (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/block/Block randomTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V a +MD net/minecraft/block/Block onEntityCollidedWithBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/block/Block onBlockPlacedBy (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/block/Block onBlockHarvested (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/block/Block onBlockActivated (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/EnumFacing;FFF)Z a +MD net/minecraft/block/Block collisionRayTrace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/block/Block onBlockPlaced (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFFILnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/Block canReplace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/block/Block onEntityCollidedWithBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/block/Block onFallenUpon (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/block/Block modifyAcceleration (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; a +MD net/minecraft/block/Block onBlockClicked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/block/Block spawnAsEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/block/Block onLanded (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/block/Block harvestBlock (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/block/Block setBlockBoundsBasedOnState (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/block/Block colorMultiplier (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;I)I a +MD net/minecraft/block/Block getWeakPower (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/block/Block shouldSideBeRendered (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/Block setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block; a +MD net/minecraft/block/Block getIdFromBlock (Lnet/minecraft/block/Block;)I a +MD net/minecraft/block/Block isEqualTo (Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)Z a +MD net/minecraft/block/Block damageDropped (Lnet/minecraft/block/state/IBlockState;)I a +MD net/minecraft/block/Block getActualState (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/Block getItemDropped (Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;I)Lnet/minecraft/item/Item; a +MD net/minecraft/block/Block canCollideCheck (Lnet/minecraft/block/state/IBlockState;Z)Z a +MD net/minecraft/block/Block isVecInsideYZBounds (Lnet/minecraft/util/Vec3;)Z a +MD net/minecraft/block/Block quantityDropped (Ljava/util/Random;)I a +MD net/minecraft/block/Block getExplosionResistance (Lnet/minecraft/entity/Entity;)F a +MD net/minecraft/block/Block getPlayerRelativeBlockHardness (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F a +MD net/minecraft/block/Block setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block; a +MD net/minecraft/block/Block getBlockFromItem (Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block; a +MD net/minecraft/block/Block getSubBlocks (Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V a +MD net/minecraft/block/Block setTickRandomly (Z)Lnet/minecraft/block/Block; a +MD net/minecraft/block/Block getRenderType ()I b +MD net/minecraft/block/Block setResistance (F)Lnet/minecraft/block/Block; b +MD net/minecraft/block/Block getSelectedBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; b +MD net/minecraft/block/Block dropXpOnBlockBreak (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V b +MD net/minecraft/block/Block breakBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V b +MD net/minecraft/block/Block dropBlockAsItem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V b +MD net/minecraft/block/Block updateTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V b +MD net/minecraft/block/Block canPlaceBlockOnSide (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/block/Block isPassable (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/block/Block getStrongPower (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)I b +MD net/minecraft/block/Block isBlockSolid (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/block/Block isAssociatedBlock (Lnet/minecraft/block/Block;)Z b +MD net/minecraft/block/Block getStateForEntityRender (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; b +MD net/minecraft/block/Block isVecInsideXZBounds (Lnet/minecraft/util/Vec3;)Z b +MD net/minecraft/block/Block getBlockFromName (Ljava/lang/String;)Lnet/minecraft/block/Block; b +MD net/minecraft/block/Block isOpaqueCube ()Z c +MD net/minecraft/block/Block setHardness (F)Lnet/minecraft/block/Block; c +MD net/minecraft/block/Block getBlockById (I)Lnet/minecraft/block/Block; c +MD net/minecraft/block/Block getItem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/item/Item; c +MD net/minecraft/block/Block onBlockAdded (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V c +MD net/minecraft/block/Block randomDisplayTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V c +MD net/minecraft/block/Block getMixedBrightnessForBlock (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I c +MD net/minecraft/block/Block getMetaFromState (Lnet/minecraft/block/state/IBlockState;)I c +MD net/minecraft/block/Block isVecInsideXYBounds (Lnet/minecraft/util/Vec3;)Z c +MD net/minecraft/block/Block setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/block/Block; c +MD net/minecraft/block/Block isFullCube ()Z d +MD net/minecraft/block/Block getStateById (I)Lnet/minecraft/block/state/IBlockState; d +MD net/minecraft/block/Block canPlaceBlockAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z d +MD net/minecraft/block/Block onBlockDestroyedByPlayer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V d +MD net/minecraft/block/Block colorMultiplier (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I d +MD net/minecraft/block/Block createBlockState ()Lnet/minecraft/block/state/BlockState; e +MD net/minecraft/block/Block setLightOpacity (I)Lnet/minecraft/block/Block; e +MD net/minecraft/block/Block getLocalizedName ()Ljava/lang/String; f +MD net/minecraft/block/Block getStateId (Lnet/minecraft/block/state/IBlockState;)I f +MD net/minecraft/block/Block canSpawnInBlock ()Z g +MD net/minecraft/block/Block getBlockHardness (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F g +MD net/minecraft/block/Block getMapColor (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/material/MapColor; g +MD net/minecraft/block/Block getAmbientOcclusionLightValue ()F h +MD net/minecraft/block/Block getRenderColor (Lnet/minecraft/block/state/IBlockState;)I h +MD net/minecraft/block/Block canProvidePower ()Z i +MD net/minecraft/block/Block createStackedBlock (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/item/ItemStack; i +MD net/minecraft/block/Block setBlockBoundsForItemRender ()V j +MD net/minecraft/block/Block getDamageValue (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I j +MD net/minecraft/block/Block setDefaultState (Lnet/minecraft/block/state/IBlockState;)V j +MD net/minecraft/block/Block getMobilityFlag ()I k +MD net/minecraft/block/Block fillWithRain (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V k +MD net/minecraft/block/Block getComparatorInputOverride (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I l +MD net/minecraft/block/Block getBlockLayer ()Lnet/minecraft/util/EnumWorldBlockLayer; m +MD net/minecraft/block/Block isFullBlock ()Z o +MD net/minecraft/block/Block getLightOpacity ()I p +MD net/minecraft/block/Block isTranslucent ()Z q +MD net/minecraft/block/Block getLightValue ()I r +MD net/minecraft/block/Block getUseNeighborBrightness ()Z s +MD net/minecraft/block/Block getMaterial ()Lnet/minecraft/block/material/Material; t +MD net/minecraft/block/Block isBlockNormalCube ()Z u +MD net/minecraft/block/Block isNormalCube ()Z v +MD net/minecraft/block/Block isVisuallyOpaque ()Z w +MD net/minecraft/block/Block setBlockUnbreakable ()Lnet/minecraft/block/Block; x +MD net/minecraft/block/Block getTickRandomly ()Z y +MD net/minecraft/block/Block hasTileEntity ()Z z +MD net/minecraft/block/Block toString ()Ljava/lang/String; toString +MD net/minecraft/block/Block$EnumOffsetType valueOf (Ljava/lang/String;)Lnet/minecraft/block/Block$EnumOffsetType; valueOf +MD net/minecraft/block/Block$EnumOffsetType values ()[Lnet/minecraft/block/Block$EnumOffsetType; values +MD net/minecraft/block/Block$SoundType getBreakSound ()Ljava/lang/String; a +MD net/minecraft/block/Block$SoundType getPlaceSound ()Ljava/lang/String; b +MD net/minecraft/block/Block$SoundType getStepSound ()Ljava/lang/String; c +MD net/minecraft/block/Block$SoundType getVolume ()F d +MD net/minecraft/block/Block$SoundType getFrequency ()F e +MD net/minecraft/init/Blocks getRegisteredBlock (Ljava/lang/String;)Lnet/minecraft/block/Block; a +MD net/minecraft/block/IGrowable canGrow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Z)Z a +MD net/minecraft/block/IGrowable canUseBonemeal (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/block/IGrowable grow (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V b +MD net/minecraft/block/BlockBush canPlaceBlockOn (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockBush checkAndDropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockBush canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z f +MD net/minecraft/block/BlockButton func_181088_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockButton notifyNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V c +MD net/minecraft/block/BlockButton updateBlockBounds (Lnet/minecraft/block/state/IBlockState;)V d +MD net/minecraft/block/BlockButton checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockButton checkForArrows (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V f +MD net/minecraft/block/BlockCactus canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockCake eatCake (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V b +MD net/minecraft/block/BlockCake canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockCauldron setWaterLevel (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V a +MD net/minecraft/block/BlockChest checkForSurroundingChests (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; e +MD net/minecraft/block/BlockChest getLockableContainer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/ILockableContainer; f +MD net/minecraft/block/BlockChest correctFacing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; f +MD net/minecraft/block/BlockChest isDoubleChest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z m +MD net/minecraft/block/BlockChest isBlocked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z n +MD net/minecraft/block/BlockChest isBelowSolidBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z o +MD net/minecraft/block/BlockChest isOcelotSittingOnChest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z p +MD net/minecraft/block/BlockCocoa canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockCocoa dropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V f +MD net/minecraft/block/BlockRedstoneComparator findItemFrame (Lnet/minecraft/world/World;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/item/EntityItemFrame; a +MD net/minecraft/block/BlockRedstoneComparator calculateOutput (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I j +MD net/minecraft/block/BlockRedstoneComparator onStateChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V k +MD net/minecraft/block/BlockRedstoneComparator$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/block/BlockRedstoneComparator$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockRedstoneComparator$Mode toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedstoneComparator$Mode valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedstoneComparator$Mode; valueOf +MD net/minecraft/block/BlockRedstoneComparator$Mode values ()[Lnet/minecraft/block/BlockRedstoneComparator$Mode; values +MD net/minecraft/block/BlockCrops getGrowthChance (Lnet/minecraft/block/Block;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F a +MD net/minecraft/block/BlockCrops grow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V g +MD net/minecraft/block/BlockCrops getSeed ()Lnet/minecraft/item/Item; l +MD net/minecraft/block/BlockCrops getCrop ()Lnet/minecraft/item/Item; n +MD net/minecraft/block/BlockDaylightDetector updatePower (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockRailDetector findMinecarts (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Ljava/lang/Class;[Lcom/google/common/base/Predicate;)Ljava/util/List; a +MD net/minecraft/block/BlockRailDetector getDectectionBox (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/block/BlockRailDetector updatePoweredState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockRailDetector$1 apply (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z a +MD net/minecraft/block/BlockRailDetector$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockRedstoneDiode getActiveSignal (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I a +MD net/minecraft/block/BlockRedstoneDiode isLocked (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z b +MD net/minecraft/block/BlockRedstoneDiode getPowerOnSides (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I c +MD net/minecraft/block/BlockRedstoneDiode getPowerOnSide (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I c +MD net/minecraft/block/BlockRedstoneDiode canPowerSide (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockRedstoneDiode isRedstoneRepeaterBlockID (Lnet/minecraft/block/Block;)Z d +MD net/minecraft/block/BlockRedstoneDiode getDelay (Lnet/minecraft/block/state/IBlockState;)I d +MD net/minecraft/block/BlockRedstoneDiode canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockRedstoneDiode shouldBePowered (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockRedstoneDiode isAssociated (Lnet/minecraft/block/Block;)Z e +MD net/minecraft/block/BlockRedstoneDiode getPoweredState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; e +MD net/minecraft/block/BlockRedstoneDiode calculateInputStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I f +MD net/minecraft/block/BlockRedstoneDiode updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V g +MD net/minecraft/block/BlockRedstoneDiode notifyNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V h +MD net/minecraft/block/BlockRedstoneDiode isFacingTowardsRepeater (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z i +MD net/minecraft/block/BlockRedstoneDiode getUnpoweredState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; k +MD net/minecraft/block/BlockRedstoneDiode isPowered (Lnet/minecraft/block/state/IBlockState;)Z l +MD net/minecraft/block/BlockRedstoneDiode getTickDelay (Lnet/minecraft/block/state/IBlockState;)I m +MD net/minecraft/block/BlockDirt$DirtType getMetadata ()I a +MD net/minecraft/block/BlockDirt$DirtType byMetadata (I)Lnet/minecraft/block/BlockDirt$DirtType; a +MD net/minecraft/block/BlockDirt$DirtType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockDirt$DirtType func_181066_d ()Lnet/minecraft/block/material/MapColor; d +MD net/minecraft/block/BlockDirt$DirtType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDirt$DirtType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDirt$DirtType; valueOf +MD net/minecraft/block/BlockDirt$DirtType values ()[Lnet/minecraft/block/BlockDirt$DirtType; values +MD net/minecraft/block/BlockDispenser getDispensePosition (Lnet/minecraft/dispenser/IBlockSource;)Lnet/minecraft/dispenser/IPosition; a +MD net/minecraft/block/BlockDispenser getBehavior (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/dispenser/IBehaviorDispenseItem; a +MD net/minecraft/block/BlockDispenser getFacing (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/BlockDispenser setDefaultDirection (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockDispenser dispense (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockDoor toggleDoor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)V a +MD net/minecraft/block/BlockDoor removeHalfBit (I)I b +MD net/minecraft/block/BlockDoor combineMetadata (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I e +MD net/minecraft/block/BlockDoor getFacing (I)Lnet/minecraft/util/EnumFacing; f +MD net/minecraft/block/BlockDoor isOpen (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/block/BlockDoor isOpen (I)Z g +MD net/minecraft/block/BlockDoor getFacing (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/EnumFacing; h +MD net/minecraft/block/BlockDoor isTop (I)Z i +MD net/minecraft/block/BlockDoor isHingeLeft (I)Z j +MD net/minecraft/block/BlockDoor setBoundBasedOnMeta (I)V k +MD net/minecraft/block/BlockDoor getItem ()Lnet/minecraft/item/Item; l +MD net/minecraft/block/BlockDoor$EnumDoorHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoor$EnumDoorHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoor$EnumDoorHalf; valueOf +MD net/minecraft/block/BlockDoor$EnumDoorHalf values ()[Lnet/minecraft/block/BlockDoor$EnumDoorHalf; values +MD net/minecraft/block/BlockDoor$EnumHingePosition toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoor$EnumHingePosition valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoor$EnumHingePosition; valueOf +MD net/minecraft/block/BlockDoor$EnumHingePosition values ()[Lnet/minecraft/block/BlockDoor$EnumHingePosition; values +MD net/minecraft/block/BlockDoublePlant placeAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/BlockDoublePlant$EnumPlantType;I)V a +MD net/minecraft/block/BlockDoublePlant onHarvest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)Z b +MD net/minecraft/block/BlockDoublePlant getVariant (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; e +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoublePlant$EnumBlockHalf; valueOf +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf values ()[Lnet/minecraft/block/BlockDoublePlant$EnumBlockHalf; values +MD net/minecraft/block/BlockDoublePlant$EnumPlantType getMeta ()I a +MD net/minecraft/block/BlockDoublePlant$EnumPlantType byMetadata (I)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; a +MD net/minecraft/block/BlockDoublePlant$EnumPlantType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockDoublePlant$EnumPlantType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoublePlant$EnumPlantType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; valueOf +MD net/minecraft/block/BlockDoublePlant$EnumPlantType values ()[Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; values +MD net/minecraft/block/BlockDragonEgg checkFall (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockDragonEgg teleport (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockDynamicLiquid checkAdjacentBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)I a +MD net/minecraft/block/BlockDynamicLiquid func_176374_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ILnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/block/BlockDynamicLiquid tryFlowInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V a +MD net/minecraft/block/BlockDynamicLiquid getPossibleFlowDirections (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Ljava/util/Set; f +MD net/minecraft/block/BlockDynamicLiquid placeStaticBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V f +MD net/minecraft/block/BlockDynamicLiquid isBlocked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z g +MD net/minecraft/block/BlockDynamicLiquid canFlowInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z h +MD net/minecraft/block/ITileEntityProvider createNewTileEntity (Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity; a +MD net/minecraft/block/BlockFalling onStartFalling (Lnet/minecraft/entity/item/EntityFallingBlock;)V a +MD net/minecraft/block/BlockFalling onEndFalling (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V a_ +MD net/minecraft/block/BlockFalling canFallInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockFalling checkFallable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockFarmland hasCrops (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockFarmland hasWater (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/block/BlockFence canConnectTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockFire catchOnFire (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ILjava/util/Random;I)V a +MD net/minecraft/block/BlockFire setFireInfo (Lnet/minecraft/block/Block;II)V a +MD net/minecraft/block/BlockFire getFlammability (Lnet/minecraft/block/Block;)I c +MD net/minecraft/block/BlockFire getEncouragement (Lnet/minecraft/block/Block;)I d +MD net/minecraft/block/BlockFire canDie (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockFire canCatchFire (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockFire canNeighborCatchFire (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/block/BlockFire init ()V l +MD net/minecraft/block/BlockFire getNeighborEncouragement (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I m +MD net/minecraft/block/BlockFlower getBlockType ()Lnet/minecraft/block/BlockFlower$EnumFlowerColor; l +MD net/minecraft/block/BlockFlower getTypeProperty ()Lnet/minecraft/block/properties/IProperty; n +MD net/minecraft/block/BlockFlower$1 apply (Lnet/minecraft/block/BlockFlower$EnumFlowerType;)Z a +MD net/minecraft/block/BlockFlower$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockFlower$EnumFlowerType getBlockType ()Lnet/minecraft/block/BlockFlower$EnumFlowerColor; a +MD net/minecraft/block/BlockFlower$EnumFlowerType getTypes (Lnet/minecraft/block/BlockFlower$EnumFlowerColor;)[Lnet/minecraft/block/BlockFlower$EnumFlowerType; a +MD net/minecraft/block/BlockFlower$EnumFlowerType getType (Lnet/minecraft/block/BlockFlower$EnumFlowerColor;I)Lnet/minecraft/block/BlockFlower$EnumFlowerType; a +MD net/minecraft/block/BlockFlower$EnumFlowerType getMeta ()I b +MD net/minecraft/block/BlockFlower$EnumFlowerType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockFlower$EnumFlowerType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockFlower$EnumFlowerType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlower$EnumFlowerType; valueOf +MD net/minecraft/block/BlockFlower$EnumFlowerType values ()[Lnet/minecraft/block/BlockFlower$EnumFlowerType; values +MD net/minecraft/block/BlockFlower$EnumFlowerType$1 apply (Lnet/minecraft/block/BlockFlower$EnumFlowerType;)Z a +MD net/minecraft/block/BlockFlower$EnumFlowerType$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockFlower$EnumFlowerColor getBlock ()Lnet/minecraft/block/BlockFlower; a +MD net/minecraft/block/BlockFlower$EnumFlowerColor valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlower$EnumFlowerColor; valueOf +MD net/minecraft/block/BlockFlower$EnumFlowerColor values ()[Lnet/minecraft/block/BlockFlower$EnumFlowerColor; values +MD net/minecraft/block/BlockFlowerPot canNotContain (Lnet/minecraft/block/Block;I)Z a +MD net/minecraft/block/BlockFlowerPot getTileEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntityFlowerPot; f +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlowerPot$EnumFlowerType; valueOf +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType values ()[Lnet/minecraft/block/BlockFlowerPot$EnumFlowerType; values +MD net/minecraft/block/BlockFurnace setState (ZLnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/block/BlockFurnace setDefaultFacing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockSlab getVariant (Lnet/minecraft/item/ItemStack;)Ljava/lang/Object; a +MD net/minecraft/block/BlockSlab getUnlocalizedName (I)Ljava/lang/String; b +MD net/minecraft/block/BlockSlab isSlab (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockSlab isDouble ()Z l +MD net/minecraft/block/BlockSlab getVariantProperty ()Lnet/minecraft/block/properties/IProperty; n +MD net/minecraft/block/BlockSlab$EnumBlockHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSlab$EnumBlockHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSlab$EnumBlockHalf; valueOf +MD net/minecraft/block/BlockSlab$EnumBlockHalf values ()[Lnet/minecraft/block/BlockSlab$EnumBlockHalf; values +MD net/minecraft/block/BlockHopper getFacing (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/BlockHopper updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockHopper isEnabled (I)Z f +MD net/minecraft/block/BlockHopper$1 apply (Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockHopper$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockHugeMushroom$EnumType getMetadata ()I a +MD net/minecraft/block/BlockHugeMushroom$EnumType byMetadata (I)Lnet/minecraft/block/BlockHugeMushroom$EnumType; a +MD net/minecraft/block/BlockHugeMushroom$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockHugeMushroom$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockHugeMushroom$EnumType; valueOf +MD net/minecraft/block/BlockHugeMushroom$EnumType values ()[Lnet/minecraft/block/BlockHugeMushroom$EnumType; values +MD net/minecraft/block/BlockJukebox insertRecord (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/block/BlockJukebox dropRecord (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockJukebox$TileEntityJukebox getRecord ()Lnet/minecraft/item/ItemStack; a +MD net/minecraft/block/BlockJukebox$TileEntityJukebox setRecord (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/block/BlockLadder canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockLeaves dropApple (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V a +MD net/minecraft/block/BlockLeaves getWoodType (I)Lnet/minecraft/block/BlockPlanks$EnumType; b +MD net/minecraft/block/BlockLeaves setGraphicsLevel (Z)V b +MD net/minecraft/block/BlockLeaves getSaplingDropChance (Lnet/minecraft/block/state/IBlockState;)I d +MD net/minecraft/block/BlockLeaves destroy (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockLever func_181090_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockLever getMetadataForFacing (Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/block/BlockLever func_181091_e (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockLever$EnumOrientation getMetadata ()I a +MD net/minecraft/block/BlockLever$EnumOrientation byMetadata (I)Lnet/minecraft/block/BlockLever$EnumOrientation; a +MD net/minecraft/block/BlockLever$EnumOrientation forFacings (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/BlockLever$EnumOrientation; a +MD net/minecraft/block/BlockLever$EnumOrientation getFacing ()Lnet/minecraft/util/EnumFacing; c +MD net/minecraft/block/BlockLever$EnumOrientation toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockLever$EnumOrientation valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockLever$EnumOrientation; valueOf +MD net/minecraft/block/BlockLever$EnumOrientation values ()[Lnet/minecraft/block/BlockLever$EnumOrientation; values +MD net/minecraft/block/BlockLiquid getFlowDirection (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/material/Material;)D a +MD net/minecraft/block/BlockLiquid getFlowingBlock (Lnet/minecraft/block/material/Material;)Lnet/minecraft/block/BlockDynamicLiquid; a +MD net/minecraft/block/BlockLiquid getLiquidHeightPercent (I)F b +MD net/minecraft/block/BlockLiquid getStaticBlock (Lnet/minecraft/block/material/Material;)Lnet/minecraft/block/BlockStaticLiquid; b +MD net/minecraft/block/BlockLiquid triggerMixEffects (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockLiquid checkForMixing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockLiquid getLevel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I e +MD net/minecraft/block/BlockLiquid getEffectiveFlowDecay (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I f +MD net/minecraft/block/BlockLiquid shouldRenderSides (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z g +MD net/minecraft/block/BlockLiquid getFlowVector (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/Vec3; h +MD net/minecraft/block/BlockLog$EnumAxis fromFacingAxis (Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/block/BlockLog$EnumAxis; a +MD net/minecraft/block/BlockLog$EnumAxis toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockLog$EnumAxis valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockLog$EnumAxis; valueOf +MD net/minecraft/block/BlockLog$EnumAxis values ()[Lnet/minecraft/block/BlockLog$EnumAxis; values +MD net/minecraft/block/BlockSilverfish canContainSilverfish (Lnet/minecraft/block/state/IBlockState;)Z d +MD net/minecraft/block/BlockSilverfish$EnumType getMetadata ()I a +MD net/minecraft/block/BlockSilverfish$EnumType byMetadata (I)Lnet/minecraft/block/BlockSilverfish$EnumType; a +MD net/minecraft/block/BlockSilverfish$EnumType forModelBlock (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/BlockSilverfish$EnumType; a +MD net/minecraft/block/BlockSilverfish$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockSilverfish$EnumType getModelBlock ()Lnet/minecraft/block/state/IBlockState; d +MD net/minecraft/block/BlockSilverfish$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSilverfish$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSilverfish$EnumType; valueOf +MD net/minecraft/block/BlockSilverfish$EnumType values ()[Lnet/minecraft/block/BlockSilverfish$EnumType; values +MD net/minecraft/block/BlockMushroom generateBigMushroom (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)Z d +MD net/minecraft/block/BlockNewLeaf$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockNewLeaf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockNewLog$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockNewLog$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockStoneSlabNew$EnumType getMetadata ()I a +MD net/minecraft/block/BlockStoneSlabNew$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneSlabNew$EnumType; a +MD net/minecraft/block/BlockStoneSlabNew$EnumType func_181068_c ()Lnet/minecraft/block/material/MapColor; c +MD net/minecraft/block/BlockStoneSlabNew$EnumType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockStoneSlabNew$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneSlabNew$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneSlabNew$EnumType; valueOf +MD net/minecraft/block/BlockStoneSlabNew$EnumType values ()[Lnet/minecraft/block/BlockStoneSlabNew$EnumType; values +MD net/minecraft/block/BlockNote getInstrument (I)Ljava/lang/String; b +MD net/minecraft/block/BlockOldLeaf$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockOldLeaf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockOldLog$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockOldLog$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockPlanks$EnumType getMetadata ()I a +MD net/minecraft/block/BlockPlanks$EnumType byMetadata (I)Lnet/minecraft/block/BlockPlanks$EnumType; a +MD net/minecraft/block/BlockPlanks$EnumType getMapColor ()Lnet/minecraft/block/material/MapColor; c +MD net/minecraft/block/BlockPlanks$EnumType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockPlanks$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPlanks$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPlanks$EnumType; valueOf +MD net/minecraft/block/BlockPlanks$EnumType values ()[Lnet/minecraft/block/BlockPlanks$EnumType; values +MD net/minecraft/block/BlockPortal getMetaForAxis (Lnet/minecraft/util/EnumFacing$Axis;)I a +MD net/minecraft/block/BlockPortal func_176548_d (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockPortal func_181089_f (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; f +MD net/minecraft/block/BlockPortal$Size func_181100_a ()I a +MD net/minecraft/block/BlockPortal$Size func_150857_a (Lnet/minecraft/block/Block;)Z a +MD net/minecraft/block/BlockPortal$Size access$000 (Lnet/minecraft/block/BlockPortal$Size;)I a +MD net/minecraft/block/BlockPortal$Size func_180120_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/block/BlockPortal$Size func_181101_b ()I b +MD net/minecraft/block/BlockPortal$Size access$100 (Lnet/minecraft/block/BlockPortal$Size;)I b +MD net/minecraft/block/BlockPortal$Size func_150858_a ()I c +MD net/minecraft/block/BlockPortal$Size access$200 (Lnet/minecraft/block/BlockPortal$Size;)I c +MD net/minecraft/block/BlockPortal$Size func_150860_b ()Z d +MD net/minecraft/block/BlockPortal$Size access$300 (Lnet/minecraft/block/BlockPortal$Size;)Lnet/minecraft/util/EnumFacing; d +MD net/minecraft/block/BlockPortal$Size func_150859_c ()V e +MD net/minecraft/block/BlockPortal$Size access$400 (Lnet/minecraft/block/BlockPortal$Size;)Lnet/minecraft/util/BlockPos; e +MD net/minecraft/block/BlockRailPowered func_176566_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;ZI)Z a +MD net/minecraft/block/BlockRailPowered func_176567_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ZILnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z a +MD net/minecraft/block/BlockRailPowered$1 apply (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z a +MD net/minecraft/block/BlockRailPowered$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockPressurePlate$Sensitivity valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPressurePlate$Sensitivity; valueOf +MD net/minecraft/block/BlockPressurePlate$Sensitivity values ()[Lnet/minecraft/block/BlockPressurePlate$Sensitivity; values +MD net/minecraft/block/BlockPrismarine$EnumType getMetadata ()I a +MD net/minecraft/block/BlockPrismarine$EnumType byMetadata (I)Lnet/minecraft/block/BlockPrismarine$EnumType; a +MD net/minecraft/block/BlockPrismarine$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockPrismarine$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPrismarine$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPrismarine$EnumType; valueOf +MD net/minecraft/block/BlockPrismarine$EnumType values ()[Lnet/minecraft/block/BlockPrismarine$EnumType; values +MD net/minecraft/block/BlockPumpkin getGolemBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; T +MD net/minecraft/block/BlockPumpkin getGolemPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; U +MD net/minecraft/block/BlockPumpkin canDispenserPlace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockPumpkin trySpawnGolem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockPumpkin getSnowmanBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; l +MD net/minecraft/block/BlockPumpkin getSnowmanPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; n +MD net/minecraft/block/BlockPumpkin$1 apply (Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/block/BlockPumpkin$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockQuartz$EnumType getMetadata ()I a +MD net/minecraft/block/BlockQuartz$EnumType byMetadata (I)Lnet/minecraft/block/BlockQuartz$EnumType; a +MD net/minecraft/block/BlockQuartz$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockQuartz$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockQuartz$EnumType; valueOf +MD net/minecraft/block/BlockQuartz$EnumType values ()[Lnet/minecraft/block/BlockQuartz$EnumType; values +MD net/minecraft/block/BlockRedSandstone$EnumType getMetadata ()I a +MD net/minecraft/block/BlockRedSandstone$EnumType byMetadata (I)Lnet/minecraft/block/BlockRedSandstone$EnumType; a +MD net/minecraft/block/BlockRedSandstone$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockRedSandstone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedSandstone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedSandstone$EnumType; valueOf +MD net/minecraft/block/BlockRedSandstone$EnumType values ()[Lnet/minecraft/block/BlockRedSandstone$EnumType; values +MD net/minecraft/block/BlockRedstoneOre activate (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockRedstoneOre spawnParticles (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V f +MD net/minecraft/block/BlockRedstoneWire getMaxCurrentStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)I a +MD net/minecraft/block/BlockRedstoneWire calculateCurrentChanges (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/BlockRedstoneWire canConnectTo (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockRedstoneWire colorMultiplier (I)I b +MD net/minecraft/block/BlockRedstoneWire getAttachPosition (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; c +MD net/minecraft/block/BlockRedstoneWire func_176339_d (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z d +MD net/minecraft/block/BlockRedstoneWire canConnectUpwardsTo (Lnet/minecraft/block/state/IBlockState;)Z d +MD net/minecraft/block/BlockRedstoneWire notifyWireNeighborsOfStateChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockRedstoneWire updateSurroundingRedstone (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; e +MD net/minecraft/block/BlockRedstoneWire canConnectUpwardsTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; valueOf +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition values ()[Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; values +MD net/minecraft/block/BlockRedstoneTorch isBurnedOut (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)Z a +MD net/minecraft/block/BlockRedstoneTorch shouldBeOff (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z g +MD net/minecraft/block/BlockReed canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockReed checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockSand$EnumType getMetadata ()I a +MD net/minecraft/block/BlockSand$EnumType byMetadata (I)Lnet/minecraft/block/BlockSand$EnumType; a +MD net/minecraft/block/BlockSand$EnumType getMapColor ()Lnet/minecraft/block/material/MapColor; c +MD net/minecraft/block/BlockSand$EnumType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockSand$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSand$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSand$EnumType; valueOf +MD net/minecraft/block/BlockSand$EnumType values ()[Lnet/minecraft/block/BlockSand$EnumType; values +MD net/minecraft/block/BlockSandStone$EnumType getMetadata ()I a +MD net/minecraft/block/BlockSandStone$EnumType byMetadata (I)Lnet/minecraft/block/BlockSandStone$EnumType; a +MD net/minecraft/block/BlockSandStone$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockSandStone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSandStone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSandStone$EnumType; valueOf +MD net/minecraft/block/BlockSandStone$EnumType values ()[Lnet/minecraft/block/BlockSandStone$EnumType; values +MD net/minecraft/block/BlockSapling func_181624_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;IILnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockSapling isTypeAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/BlockPlanks$EnumType;)Z a +MD net/minecraft/block/BlockSapling grow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V d +MD net/minecraft/block/BlockSapling generateTree (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V e +MD net/minecraft/block/BlockSkull checkWitherSpawn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntitySkull;)V a +MD net/minecraft/block/BlockSkull canDispenserPlace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)Z b +MD net/minecraft/block/BlockSkull getWitherBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; l +MD net/minecraft/block/BlockSkull getWitherPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; n +MD net/minecraft/block/BlockSkull$1 apply (Lnet/minecraft/block/state/BlockWorldState;)Z a +MD net/minecraft/block/BlockSkull$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockSnow getBoundsForLayers (I)V b +MD net/minecraft/block/BlockSnow checkAndDropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockSponge absorb (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockSponge tryAbsorb (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockStairs isSameStair (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/block/BlockStairs isBlockStairs (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockStairs setBaseCollisionBounds (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockStairs func_176307_f (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I f +MD net/minecraft/block/BlockStairs func_176305_g (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I g +MD net/minecraft/block/BlockStairs func_176306_h (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z h +MD net/minecraft/block/BlockStairs func_176304_i (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z i +MD net/minecraft/block/BlockStairs$EnumHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStairs$EnumHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStairs$EnumHalf; valueOf +MD net/minecraft/block/BlockStairs$EnumHalf values ()[Lnet/minecraft/block/BlockStairs$EnumHalf; values +MD net/minecraft/block/BlockStairs$EnumShape toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStairs$EnumShape valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStairs$EnumShape; valueOf +MD net/minecraft/block/BlockStairs$EnumShape values ()[Lnet/minecraft/block/BlockStairs$EnumShape; values +MD net/minecraft/block/BlockStaticLiquid isSurroundingBlockFlammable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z f +MD net/minecraft/block/BlockStaticLiquid updateLiquid (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V f +MD net/minecraft/block/BlockStaticLiquid getCanBlockBurn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z m +MD net/minecraft/block/BlockStem growStem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V g +MD net/minecraft/block/BlockStem getSeedItem ()Lnet/minecraft/item/Item; l +MD net/minecraft/block/BlockStem$1 apply (Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockStem$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockStone$EnumType getMetadata ()I a +MD net/minecraft/block/BlockStone$EnumType byMetadata (I)Lnet/minecraft/block/BlockStone$EnumType; a +MD net/minecraft/block/BlockStone$EnumType func_181072_c ()Lnet/minecraft/block/material/MapColor; c +MD net/minecraft/block/BlockStone$EnumType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockStone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStone$EnumType; valueOf +MD net/minecraft/block/BlockStone$EnumType values ()[Lnet/minecraft/block/BlockStone$EnumType; values +MD net/minecraft/block/BlockStoneBrick$EnumType getMetadata ()I a +MD net/minecraft/block/BlockStoneBrick$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneBrick$EnumType; a +MD net/minecraft/block/BlockStoneBrick$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockStoneBrick$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneBrick$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneBrick$EnumType; valueOf +MD net/minecraft/block/BlockStoneBrick$EnumType values ()[Lnet/minecraft/block/BlockStoneBrick$EnumType; values +MD net/minecraft/block/BlockStoneSlab$EnumType getMetadata ()I a +MD net/minecraft/block/BlockStoneSlab$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneSlab$EnumType; a +MD net/minecraft/block/BlockStoneSlab$EnumType func_181074_c ()Lnet/minecraft/block/material/MapColor; c +MD net/minecraft/block/BlockStoneSlab$EnumType getUnlocalizedName ()Ljava/lang/String; d +MD net/minecraft/block/BlockStoneSlab$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneSlab$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneSlab$EnumType; valueOf +MD net/minecraft/block/BlockStoneSlab$EnumType values ()[Lnet/minecraft/block/BlockStoneSlab$EnumType; values +MD net/minecraft/block/BlockTallGrass$EnumType getMeta ()I a +MD net/minecraft/block/BlockTallGrass$EnumType byMetadata (I)Lnet/minecraft/block/BlockTallGrass$EnumType; a +MD net/minecraft/block/BlockTallGrass$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockTallGrass$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockTallGrass$EnumType; valueOf +MD net/minecraft/block/BlockTallGrass$EnumType values ()[Lnet/minecraft/block/BlockTallGrass$EnumType; values +MD net/minecraft/block/BlockPane canPaneConnectToBlock (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockTNT explode (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/block/BlockTorch canPlaceAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockTorch canPlaceOn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockTorch onNeighborChangeInternal (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockTorch checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z f +MD net/minecraft/block/BlockTorch$1 apply (Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockTorch$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockTrapDoor getMetaForFacing (Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/block/BlockTrapDoor getFacing (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/BlockTrapDoor isValidSupportBlock (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockTrapDoor setBounds (Lnet/minecraft/block/state/IBlockState;)V d +MD net/minecraft/block/BlockTrapDoor$DoorHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockTrapDoor$DoorHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockTrapDoor$DoorHalf; valueOf +MD net/minecraft/block/BlockTrapDoor$DoorHalf values ()[Lnet/minecraft/block/BlockTrapDoor$DoorHalf; values +MD net/minecraft/block/BlockTripWire isConnectedTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)Z c +MD net/minecraft/block/BlockTripWire updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/block/BlockTripWire notifyHook (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockTripWireHook func_176260_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;ZZILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/block/BlockTripWireHook func_176262_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/block/BlockTripWireHook func_180694_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ZZZZ)V a +MD net/minecraft/block/BlockTripWireHook checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockVine getPropertyFor (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/properties/PropertyBool; a +MD net/minecraft/block/BlockVine canPlaceOn (Lnet/minecraft/block/Block;)Z c +MD net/minecraft/block/BlockVine getNumGrownFaces (Lnet/minecraft/block/state/IBlockState;)I d +MD net/minecraft/block/BlockVine recheckGrownSides (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/block/BlockWall canConnectTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockWall$EnumType getMetadata ()I a +MD net/minecraft/block/BlockWall$EnumType byMetadata (I)Lnet/minecraft/block/BlockWall$EnumType; a +MD net/minecraft/block/BlockWall$EnumType getUnlocalizedName ()Ljava/lang/String; c +MD net/minecraft/block/BlockWall$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockWall$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockWall$EnumType; valueOf +MD net/minecraft/block/BlockWall$EnumType values ()[Lnet/minecraft/block/BlockWall$EnumType; values +MD net/minecraft/block/BlockCarpet setBlockBoundsFromMeta (I)V b +MD net/minecraft/block/BlockCarpet canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/block/BlockCarpet checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z e +MD net/minecraft/tileentity/TileEntityBanner setBaseColorAndPatterns (Lnet/minecraft/nbt/NBTTagCompound;ILnet/minecraft/nbt/NBTTagList;)V a +MD net/minecraft/tileentity/TileEntityBanner setItemValues (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/tileentity/TileEntityBanner getBaseColor ()I b +MD net/minecraft/tileentity/TileEntityBanner getBaseColor (Lnet/minecraft/item/ItemStack;)I b +MD net/minecraft/tileentity/TileEntityBanner getPatternList ()Ljava/util/List; c +MD net/minecraft/tileentity/TileEntityBanner getPatterns (Lnet/minecraft/item/ItemStack;)I c +MD net/minecraft/tileentity/TileEntityBanner getPatterns ()Lnet/minecraft/nbt/NBTTagList; d +MD net/minecraft/tileentity/TileEntityBanner getColorList ()Ljava/util/List; e +MD net/minecraft/tileentity/TileEntityBanner removeBannerData (Lnet/minecraft/item/ItemStack;)V e +MD net/minecraft/tileentity/TileEntityBanner getPatternResourceLocation ()Ljava/lang/String; g +MD net/minecraft/tileentity/TileEntityBanner initializeBannerData ()V h +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternName ()Ljava/lang/String; a +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternByID (Ljava/lang/String;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; a +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternID ()Ljava/lang/String; b +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getCraftingLayers ()[Ljava/lang/String; c +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern hasValidCrafting ()Z d +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern hasCraftingStack ()Z e +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getCraftingStack ()Lnet/minecraft/item/ItemStack; f +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern valueOf (Ljava/lang/String;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; valueOf +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern values ()[Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; values +MD net/minecraft/tileentity/TileEntityBeacon addEffectsToPlayers ()V A +MD net/minecraft/tileentity/TileEntityBeacon updateSegmentColors ()V B +MD net/minecraft/tileentity/TileEntityBeacon setName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityBeacon func_183001_h (I)I h +MD net/minecraft/tileentity/TileEntityBeacon updateBeacon ()V m +MD net/minecraft/tileentity/TileEntityBeacon getBeamSegments ()Ljava/util/List; n +MD net/minecraft/tileentity/TileEntityBeacon shouldBeamRender ()F o +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment incrementHeight ()V a +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment getColors ()[F b +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment getHeight ()I c +MD net/minecraft/tileentity/TileEntity validate ()V D +MD net/minecraft/tileentity/TileEntity updateContainingBlockInfo ()V E +MD net/minecraft/tileentity/TileEntity func_183000_F ()Z F +MD net/minecraft/tileentity/TileEntity access$000 ()Ljava/util/Map; G +MD net/minecraft/tileentity/TileEntity getDistanceSq (DDD)D a +MD net/minecraft/tileentity/TileEntity setWorldObj (Lnet/minecraft/world/World;)V a +MD net/minecraft/tileentity/TileEntity addInfoToCrashReport (Lnet/minecraft/crash/CrashReportCategory;)V a +MD net/minecraft/tileentity/TileEntity setPos (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/tileentity/TileEntity readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/tileentity/TileEntity addMapping (Ljava/lang/Class;Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntity writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/tileentity/TileEntity receiveClientEvent (II)Z c +MD net/minecraft/tileentity/TileEntity createAndLoadEntity (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/tileentity/TileEntity; c +MD net/minecraft/tileentity/TileEntity markDirty ()V p_ +MD net/minecraft/tileentity/TileEntity getMaxRenderDistanceSquared ()D s +MD net/minecraft/tileentity/TileEntity hasWorldObj ()Z t +MD net/minecraft/tileentity/TileEntity getBlockMetadata ()I u +MD net/minecraft/tileentity/TileEntity getPos ()Lnet/minecraft/util/BlockPos; v +MD net/minecraft/tileentity/TileEntity getBlockType ()Lnet/minecraft/block/Block; w +MD net/minecraft/tileentity/TileEntity isInvalid ()Z x +MD net/minecraft/tileentity/TileEntity invalidate ()V y +MD net/minecraft/tileentity/TileEntity getDescriptionPacket ()Lnet/minecraft/network/Packet; y_ +MD net/minecraft/tileentity/TileEntity getWorld ()Lnet/minecraft/world/World; z +MD net/minecraft/tileentity/TileEntity$1 call ()Ljava/lang/String; a +MD net/minecraft/tileentity/TileEntity$1 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntity$2 call ()Ljava/lang/String; a +MD net/minecraft/tileentity/TileEntity$2 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntity$3 call ()Ljava/lang/String; a +MD net/minecraft/tileentity/TileEntity$3 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntityBrewingStand setName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityBrewingStand getPotionResult (ILnet/minecraft/item/ItemStack;)I c +MD net/minecraft/tileentity/TileEntityBrewingStand func_174902_m ()[Z m +MD net/minecraft/tileentity/TileEntityBrewingStand canBrew ()Z n +MD net/minecraft/tileentity/TileEntityBrewingStand brewPotions ()V o +MD net/minecraft/tileentity/TileEntityChest func_174910_a (Lnet/minecraft/tileentity/TileEntityChest;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/tileentity/TileEntityChest getAdjacentChest (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/tileentity/TileEntityChest; a +MD net/minecraft/tileentity/TileEntityChest setCustomName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityChest isChestAt (Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/tileentity/TileEntityChest checkForAdjacentChests ()V m +MD net/minecraft/tileentity/TileEntityChest getChestType ()I n +MD net/minecraft/tileentity/TileEntityCommandBlock getCommandBlockLogic ()Lnet/minecraft/command/server/CommandBlockLogic; b +MD net/minecraft/tileentity/TileEntityCommandBlock getCommandResultStats ()Lnet/minecraft/command/CommandResultStats; c +MD net/minecraft/tileentity/TileEntityComparator setOutputSignal (I)V a +MD net/minecraft/tileentity/TileEntityComparator getOutputSignal ()I b +MD net/minecraft/tileentity/TileEntityDispenser setCustomName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityDispenser addItemStack (Lnet/minecraft/item/ItemStack;)I a +MD net/minecraft/tileentity/TileEntityDispenser getDispenseSlot ()I m +MD net/minecraft/tileentity/TileEntityEnchantmentTable setCustomName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityEnderChest canBeUsed (Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/tileentity/TileEntityEnderChest openChest ()V b +MD net/minecraft/tileentity/TileEntityEnderChest closeChest ()V d +MD net/minecraft/tileentity/TileEntityFlowerPot setFlowerPotData (Lnet/minecraft/item/Item;I)V a +MD net/minecraft/tileentity/TileEntityFlowerPot getFlowerPotItem ()Lnet/minecraft/item/Item; b +MD net/minecraft/tileentity/TileEntityFlowerPot getFlowerPotData ()I c +MD net/minecraft/tileentity/TileEntityFurnace setCustomInventoryName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityFurnace isBurning (Lnet/minecraft/inventory/IInventory;)Z a +MD net/minecraft/tileentity/TileEntityFurnace getCookTime (Lnet/minecraft/item/ItemStack;)I a +MD net/minecraft/tileentity/TileEntityFurnace getItemBurnTime (Lnet/minecraft/item/ItemStack;)I b +MD net/minecraft/tileentity/TileEntityFurnace isItemFuel (Lnet/minecraft/item/ItemStack;)Z c +MD net/minecraft/tileentity/TileEntityFurnace isBurning ()Z m +MD net/minecraft/tileentity/TileEntityFurnace smeltItem ()V n +MD net/minecraft/tileentity/TileEntityFurnace canSmelt ()Z o +MD net/minecraft/tileentity/IHopper getXPos ()D A +MD net/minecraft/tileentity/IHopper getYPos ()D B +MD net/minecraft/tileentity/IHopper getZPos ()D C +MD net/minecraft/tileentity/IHopper getWorld ()Lnet/minecraft/world/World; z +MD net/minecraft/tileentity/TileEntityHopper getInventoryForHopperTransfer ()Lnet/minecraft/inventory/IInventory; H +MD net/minecraft/tileentity/TileEntityHopper func_181556_a (Lnet/minecraft/world/World;DDD)Ljava/util/List; a +MD net/minecraft/tileentity/TileEntityHopper captureDroppedItems (Lnet/minecraft/tileentity/IHopper;)Z a +MD net/minecraft/tileentity/TileEntityHopper pullItemFromSlot (Lnet/minecraft/tileentity/IHopper;Lnet/minecraft/inventory/IInventory;ILnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/tileentity/TileEntityHopper setCustomName (Ljava/lang/String;)V a +MD net/minecraft/tileentity/TileEntityHopper isInventoryFull (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/tileentity/TileEntityHopper putDropInInventoryAllSlots (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/entity/item/EntityItem;)Z a +MD net/minecraft/tileentity/TileEntityHopper canInsertItemInSlot (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/tileentity/TileEntityHopper putStackInInventoryAllSlots (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/tileentity/TileEntityHopper canCombine (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/tileentity/TileEntityHopper getInventoryAtPosition (Lnet/minecraft/world/World;DDD)Lnet/minecraft/inventory/IInventory; b +MD net/minecraft/tileentity/TileEntityHopper getHopperInventory (Lnet/minecraft/tileentity/IHopper;)Lnet/minecraft/inventory/IInventory; b +MD net/minecraft/tileentity/TileEntityHopper isInventoryEmpty (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/tileentity/TileEntityHopper canExtractItemFromSlot (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/tileentity/TileEntityHopper insertStack (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Lnet/minecraft/item/ItemStack; c +MD net/minecraft/tileentity/TileEntityHopper setTransferCooldown (I)V d +MD net/minecraft/tileentity/TileEntityHopper updateHopper ()Z m +MD net/minecraft/tileentity/TileEntityHopper isOnTransferCooldown ()Z n +MD net/minecraft/tileentity/TileEntityHopper mayTransfer ()Z o +MD net/minecraft/tileentity/TileEntityHopper isEmpty ()Z p +MD net/minecraft/tileentity/TileEntityHopper isFull ()Z q +MD net/minecraft/tileentity/TileEntityHopper transferItemsOut ()Z r +MD net/minecraft/tileentity/TileEntityMobSpawner getSpawnerBaseLogic ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic; b +MD net/minecraft/tileentity/TileEntityNote triggerNote (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/tileentity/TileEntityNote changePitch ()V b +MD net/minecraft/tileentity/TileEntitySign access$000 (Lnet/minecraft/tileentity/TileEntitySign;)Lnet/minecraft/command/CommandResultStats; a +MD net/minecraft/tileentity/TileEntitySign setPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/tileentity/TileEntitySign setEditable (Z)V a +MD net/minecraft/tileentity/TileEntitySign getIsEditable ()Z b +MD net/minecraft/tileentity/TileEntitySign executeCommand (Lnet/minecraft/entity/player/EntityPlayer;)Z b +MD net/minecraft/tileentity/TileEntitySign getPlayer ()Lnet/minecraft/entity/player/EntityPlayer; c +MD net/minecraft/tileentity/TileEntitySign getStats ()Lnet/minecraft/command/CommandResultStats; d +MD net/minecraft/tileentity/TileEntitySkull setType (I)V a +MD net/minecraft/tileentity/TileEntitySkull setPlayerProfile (Lcom/mojang/authlib/GameProfile;)V a +MD net/minecraft/tileentity/TileEntitySkull getPlayerProfile ()Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/tileentity/TileEntitySkull setSkullRotation (I)V b +MD net/minecraft/tileentity/TileEntitySkull updateGameprofile (Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; b +MD net/minecraft/tileentity/TileEntitySkull getSkullType ()I c +MD net/minecraft/tileentity/TileEntitySkull getSkullRotation ()I d +MD net/minecraft/tileentity/TileEntitySkull updatePlayerProfile ()V e +MD net/minecraft/block/BlockPistonBase shouldBeExtended (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/block/BlockPistonBase doMove (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Z)Z a +MD net/minecraft/block/BlockPistonBase getFacingFromEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/block/BlockPistonBase canPush (Lnet/minecraft/block/Block;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Z)Z a +MD net/minecraft/block/BlockPistonBase getFacing (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/BlockPistonBase checkForMove (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockPistonExtension getFacing (I)Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/BlockPistonExtension applyHeadBounds (Lnet/minecraft/block/state/IBlockState;)V d +MD net/minecraft/block/BlockPistonExtension applyCoreBounds (Lnet/minecraft/block/state/IBlockState;)V e +MD net/minecraft/block/BlockPistonExtension$EnumPistonType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPistonExtension$EnumPistonType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPistonExtension$EnumPistonType; valueOf +MD net/minecraft/block/BlockPistonExtension$EnumPistonType values ()[Lnet/minecraft/block/BlockPistonExtension$EnumPistonType; values +MD net/minecraft/tileentity/TileEntityPiston getProgress (F)F a +MD net/minecraft/tileentity/TileEntityPiston launchWithSlimeBlock (FF)V a +MD net/minecraft/tileentity/TileEntityPiston getPistonState ()Lnet/minecraft/block/state/IBlockState; b +MD net/minecraft/tileentity/TileEntityPiston getOffsetX (F)F b +MD net/minecraft/tileentity/TileEntityPiston getOffsetY (F)F c +MD net/minecraft/tileentity/TileEntityPiston isExtending ()Z d +MD net/minecraft/tileentity/TileEntityPiston getOffsetZ (F)F d +MD net/minecraft/tileentity/TileEntityPiston getFacing ()Lnet/minecraft/util/EnumFacing; e +MD net/minecraft/tileentity/TileEntityPiston shouldPistonHeadBeRendered ()Z g +MD net/minecraft/tileentity/TileEntityPiston clearPistonTileEntity ()V h +MD net/minecraft/block/BlockPistonMoving getBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;FLnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/block/BlockPistonMoving newTileEntity (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;ZZ)Lnet/minecraft/tileentity/TileEntity; a +MD net/minecraft/block/BlockPistonMoving getTileEntity (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntityPiston; e +MD net/minecraft/block/state/BlockPistonStructureHelper canMove ()Z a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177255_a (II)V a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177251_a (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177250_b (Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/block/state/BlockPistonStructureHelper getBlocksToMove ()Ljava/util/List; c +MD net/minecraft/block/state/BlockPistonStructureHelper getBlocksToDestroy ()Ljava/util/List; d +MD net/minecraft/block/state/BlockStateBase cyclePropertyValue (Ljava/util/Collection;Ljava/lang/Object;)Ljava/lang/Object; a +MD net/minecraft/block/state/BlockStateBase toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/BlockStateBase$1 apply (Ljava/util/Map$Entry;)Ljava/lang/String; a +MD net/minecraft/block/state/BlockStateBase$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/block/state/IBlockState getPropertyNames ()Ljava/util/Collection; a +MD net/minecraft/block/state/IBlockState cycleProperty (Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/state/IBlockState withProperty (Lnet/minecraft/block/properties/IProperty;Ljava/lang/Comparable;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/state/IBlockState getProperties ()Lcom/google/common/collect/ImmutableMap; b +MD net/minecraft/block/state/IBlockState getValue (Lnet/minecraft/block/properties/IProperty;)Ljava/lang/Comparable; b +MD net/minecraft/block/state/IBlockState getBlock ()Lnet/minecraft/block/Block; c +MD net/minecraft/block/state/BlockState getValidStates ()Lcom/google/common/collect/ImmutableList; a +MD net/minecraft/block/state/BlockState getBaseState ()Lnet/minecraft/block/state/IBlockState; b +MD net/minecraft/block/state/BlockState getBlock ()Lnet/minecraft/block/Block; c +MD net/minecraft/block/state/BlockState getProperties ()Ljava/util/Collection; d +MD net/minecraft/block/state/BlockState getAllowedValues ()Ljava/util/List; e +MD net/minecraft/block/state/BlockState toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/BlockState$1 apply (Lnet/minecraft/block/properties/IProperty;)Ljava/lang/String; a +MD net/minecraft/block/state/BlockState$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/block/state/BlockState$2 compare (Lnet/minecraft/block/properties/IProperty;Lnet/minecraft/block/properties/IProperty;)I a +MD net/minecraft/block/state/BlockState$2 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/block/state/BlockState$StateImplementation buildPropertyValueTable (Ljava/util/Map;)V a +MD net/minecraft/block/state/BlockState$StateImplementation getPropertiesWithValue (Lnet/minecraft/block/properties/IProperty;Ljava/lang/Comparable;)Ljava/util/Map; b +MD net/minecraft/block/state/BlockState$StateImplementation equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/state/BlockState$StateImplementation hashCode ()I hashCode +MD net/minecraft/block/state/BlockWorldState getBlockState ()Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/block/state/BlockWorldState hasState (Lcom/google/common/base/Predicate;)Lcom/google/common/base/Predicate; a +MD net/minecraft/block/state/BlockWorldState getTileEntity ()Lnet/minecraft/tileentity/TileEntity; b +MD net/minecraft/block/state/BlockWorldState getPos ()Lnet/minecraft/util/BlockPos; d +MD net/minecraft/block/state/BlockWorldState$1 apply (Lnet/minecraft/block/state/BlockWorldState;)Z a +MD net/minecraft/block/state/BlockWorldState$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/state/pattern/BlockPattern match (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; a +MD net/minecraft/block/state/pattern/BlockPattern func_181627_a (Lnet/minecraft/world/World;Z)Lcom/google/common/cache/LoadingCache; a +MD net/minecraft/block/state/pattern/BlockPattern translateOffset (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;III)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/block/state/pattern/BlockPattern checkPatternAt (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;Lcom/google/common/cache/LoadingCache;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; a +MD net/minecraft/block/state/pattern/BlockPattern getThumbLength ()I b +MD net/minecraft/block/state/pattern/BlockPattern getPalmLength ()I c +MD net/minecraft/block/state/pattern/BlockPattern$CacheLoader load (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/BlockWorldState; a +MD net/minecraft/block/state/pattern/BlockPattern$CacheLoader load (Ljava/lang/Object;)Ljava/lang/Object; load +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper translateOffset (III)Lnet/minecraft/block/state/BlockWorldState; a +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getFinger ()Lnet/minecraft/util/EnumFacing; b +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getThumb ()Lnet/minecraft/util/EnumFacing; c +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper func_181118_d ()I d +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper func_181119_e ()I e +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/pattern/FactoryBlockPattern start ()Lnet/minecraft/block/state/pattern/FactoryBlockPattern; a +MD net/minecraft/block/state/pattern/FactoryBlockPattern where (CLcom/google/common/base/Predicate;)Lnet/minecraft/block/state/pattern/FactoryBlockPattern; a +MD net/minecraft/block/state/pattern/FactoryBlockPattern aisle ([Ljava/lang/String;)Lnet/minecraft/block/state/pattern/FactoryBlockPattern; a +MD net/minecraft/block/state/pattern/FactoryBlockPattern build ()Lnet/minecraft/block/state/pattern/BlockPattern; b +MD net/minecraft/block/state/pattern/FactoryBlockPattern makePredicateArray ()[[[Lcom/google/common/base/Predicate; c +MD net/minecraft/block/state/pattern/FactoryBlockPattern checkMissingPredicates ()V d +MD net/minecraft/block/state/pattern/BlockHelper forBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/block/state/pattern/BlockHelper; a +MD net/minecraft/block/state/pattern/BlockHelper apply (Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/block/state/pattern/BlockHelper apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/state/pattern/BlockStateHelper forBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/block/state/pattern/BlockStateHelper; a +MD net/minecraft/block/state/pattern/BlockStateHelper apply (Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/block/state/pattern/BlockStateHelper where (Lnet/minecraft/block/properties/IProperty;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/state/pattern/BlockStateHelper; a +MD net/minecraft/block/state/pattern/BlockStateHelper apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/properties/PropertyHelper equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/properties/PropertyHelper hashCode ()I hashCode +MD net/minecraft/block/properties/PropertyHelper toString ()Ljava/lang/String; toString +MD net/minecraft/block/properties/PropertyBool getName (Ljava/lang/Boolean;)Ljava/lang/String; a +MD net/minecraft/block/properties/PropertyBool create (Ljava/lang/String;)Lnet/minecraft/block/properties/PropertyBool; a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;)Lnet/minecraft/block/properties/PropertyDirection; a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/properties/PropertyDirection; a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;Ljava/util/Collection;)Lnet/minecraft/block/properties/PropertyDirection; a +MD net/minecraft/block/properties/PropertyEnum getName (Ljava/lang/Enum;)Ljava/lang/String; a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/block/properties/PropertyEnum; a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/properties/PropertyEnum; a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;Ljava/util/Collection;)Lnet/minecraft/block/properties/PropertyEnum; a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Enum;)Lnet/minecraft/block/properties/PropertyEnum; a +MD net/minecraft/block/properties/PropertyInteger getName (Ljava/lang/Integer;)Ljava/lang/String; a +MD net/minecraft/block/properties/PropertyInteger create (Ljava/lang/String;II)Lnet/minecraft/block/properties/PropertyInteger; a +MD net/minecraft/block/properties/IProperty getName ()Ljava/lang/String; a +MD net/minecraft/block/properties/IProperty getName (Ljava/lang/Comparable;)Ljava/lang/String; a +MD net/minecraft/block/properties/IProperty getValueClass ()Ljava/lang/Class; b +MD net/minecraft/block/properties/IProperty getAllowedValues ()Ljava/util/Collection; c +MD net/minecraft/world/border/IBorderListener onSizeChanged (Lnet/minecraft/world/border/WorldBorder;D)V a +MD net/minecraft/world/border/IBorderListener onCenterChanged (Lnet/minecraft/world/border/WorldBorder;DD)V a +MD net/minecraft/world/border/IBorderListener onTransitionStarted (Lnet/minecraft/world/border/WorldBorder;DDJ)V a +MD net/minecraft/world/border/IBorderListener onWarningTimeChanged (Lnet/minecraft/world/border/WorldBorder;I)V a +MD net/minecraft/world/border/IBorderListener onDamageAmountChanged (Lnet/minecraft/world/border/WorldBorder;D)V b +MD net/minecraft/world/border/IBorderListener onWarningDistanceChanged (Lnet/minecraft/world/border/WorldBorder;I)V b +MD net/minecraft/world/border/IBorderListener onDamageBufferChanged (Lnet/minecraft/world/border/WorldBorder;D)V c +MD net/minecraft/world/border/EnumBorderStatus getID ()I a +MD net/minecraft/world/border/EnumBorderStatus valueOf (Ljava/lang/String;)Lnet/minecraft/world/border/EnumBorderStatus; valueOf +MD net/minecraft/world/border/EnumBorderStatus values ()[Lnet/minecraft/world/border/EnumBorderStatus; values +MD net/minecraft/world/border/WorldBorder getStatus ()Lnet/minecraft/world/border/EnumBorderStatus; a +MD net/minecraft/world/border/WorldBorder setTransition (D)V a +MD net/minecraft/world/border/WorldBorder setTransition (DDJ)V a +MD net/minecraft/world/border/WorldBorder setSize (I)V a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/world/ChunkCoordIntPair;)Z a +MD net/minecraft/world/border/WorldBorder addListener (Lnet/minecraft/world/border/IBorderListener;)V a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/util/AxisAlignedBB;)Z a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/border/WorldBorder getClosestDistance (Lnet/minecraft/entity/Entity;)D a +MD net/minecraft/world/border/WorldBorder minX ()D b +MD net/minecraft/world/border/WorldBorder setDamageBuffer (D)V b +MD net/minecraft/world/border/WorldBorder getClosestDistance (DD)D b +MD net/minecraft/world/border/WorldBorder setWarningTime (I)V b +MD net/minecraft/world/border/WorldBorder minZ ()D c +MD net/minecraft/world/border/WorldBorder setDamageAmount (D)V c +MD net/minecraft/world/border/WorldBorder setCenter (DD)V c +MD net/minecraft/world/border/WorldBorder setWarningDistance (I)V c +MD net/minecraft/world/border/WorldBorder maxX ()D d +MD net/minecraft/world/border/WorldBorder maxZ ()D e +MD net/minecraft/world/border/WorldBorder getCenterX ()D f +MD net/minecraft/world/border/WorldBorder getCenterZ ()D g +MD net/minecraft/world/border/WorldBorder getDiameter ()D h +MD net/minecraft/world/border/WorldBorder getTimeUntilTarget ()J i +MD net/minecraft/world/border/WorldBorder getTargetSize ()D j +MD net/minecraft/world/border/WorldBorder getListeners ()Ljava/util/List; k +MD net/minecraft/world/border/WorldBorder getSize ()I l +MD net/minecraft/world/border/WorldBorder getDamageBuffer ()D m +MD net/minecraft/world/border/WorldBorder getDamageAmount ()D n +MD net/minecraft/world/border/WorldBorder getResizeSpeed ()D o +MD net/minecraft/world/border/WorldBorder getWarningTime ()I p +MD net/minecraft/world/border/WorldBorder getWarningDistance ()I q +MD net/minecraft/world/chunk/IChunkProvider chunkExists (II)Z a +MD net/minecraft/world/chunk/IChunkProvider getStrongholdGen (Lnet/minecraft/world/World;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/chunk/IChunkProvider populate (Lnet/minecraft/world/chunk/IChunkProvider;II)V a +MD net/minecraft/world/chunk/IChunkProvider populateChunk (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/chunk/Chunk;II)Z a +MD net/minecraft/world/chunk/IChunkProvider recreateStructures (Lnet/minecraft/world/chunk/Chunk;II)V a +MD net/minecraft/world/chunk/IChunkProvider provideChunk (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/chunk/Chunk; a +MD net/minecraft/world/chunk/IChunkProvider getPossibleCreatures (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/world/chunk/IChunkProvider saveChunks (ZLnet/minecraft/util/IProgressUpdate;)Z a +MD net/minecraft/world/chunk/IChunkProvider saveExtraData ()V c +MD net/minecraft/world/chunk/IChunkProvider unloadQueuedChunks ()Z d +MD net/minecraft/world/chunk/IChunkProvider provideChunk (II)Lnet/minecraft/world/chunk/Chunk; d +MD net/minecraft/world/chunk/IChunkProvider canSave ()Z e +MD net/minecraft/world/chunk/IChunkProvider makeString ()Ljava/lang/String; f +MD net/minecraft/world/chunk/IChunkProvider getLoadedChunkCount ()I g +MD net/minecraft/world/chunk/NibbleArray getData ()[B a +MD net/minecraft/world/chunk/NibbleArray getFromIndex (I)I a +MD net/minecraft/world/chunk/NibbleArray setIndex (II)V a +MD net/minecraft/world/chunk/NibbleArray get (III)I a +MD net/minecraft/world/chunk/NibbleArray set (IIII)V a +MD net/minecraft/world/chunk/NibbleArray isLowerNibble (I)Z b +MD net/minecraft/world/chunk/NibbleArray getCoordinateIndex (III)I b +MD net/minecraft/world/chunk/NibbleArray getNibbleIndex (I)I c +MD net/minecraft/world/chunk/Chunk generateHeightMap ()V a +MD net/minecraft/world/chunk/Chunk isAtLocation (II)Z a +MD net/minecraft/world/chunk/Chunk getBlock (III)Lnet/minecraft/block/Block; a +MD net/minecraft/world/chunk/Chunk updateSkylightNeighborHeight (IIII)V a +MD net/minecraft/world/chunk/Chunk getRandomWithSeed (J)Ljava/util/Random; a +MD net/minecraft/world/chunk/Chunk getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/chunk/Chunk setLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/chunk/Chunk addTileEntity (Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/world/chunk/Chunk populateChunk (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/chunk/IChunkProvider;II)V a +MD net/minecraft/world/chunk/Chunk getBlock (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/Block; a +MD net/minecraft/world/chunk/Chunk getLightSubtracted (Lnet/minecraft/util/BlockPos;I)I a +MD net/minecraft/world/chunk/Chunk getBiome (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/WorldChunkManager;)Lnet/minecraft/world/biome/BiomeGenBase; a +MD net/minecraft/world/chunk/Chunk addTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/world/chunk/Chunk setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/chunk/Chunk getTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType;)Lnet/minecraft/tileentity/TileEntity; a +MD net/minecraft/world/chunk/Chunk func_180700_a (Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/world/chunk/Chunk getEntitiesOfTypeWithinAAAB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lcom/google/common/base/Predicate;)V a +MD net/minecraft/world/chunk/Chunk addEntity (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/world/chunk/Chunk removeEntityAtIndex (Lnet/minecraft/entity/Entity;I)V a +MD net/minecraft/world/chunk/Chunk getEntitiesWithinAABBForEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lcom/google/common/base/Predicate;)V a +MD net/minecraft/world/chunk/Chunk needsSaving (Z)Z a +MD net/minecraft/world/chunk/Chunk setBiomeArray ([B)V a +MD net/minecraft/world/chunk/Chunk fillChunk ([BIZ)V a +MD net/minecraft/world/chunk/Chunk setHeightMap ([I)V a +MD net/minecraft/world/chunk/Chunk setStorageArrays ([Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;)V a +MD net/minecraft/world/chunk/Chunk generateSkylightMap ()V b +MD net/minecraft/world/chunk/Chunk getHeightValue (II)I b +MD net/minecraft/world/chunk/Chunk setLastSaveTime (J)V b +MD net/minecraft/world/chunk/Chunk getBlockLightOpacity (Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/chunk/Chunk removeEntity (Lnet/minecraft/entity/Entity;)V b +MD net/minecraft/world/chunk/Chunk func_150804_b (Z)V b +MD net/minecraft/world/chunk/Chunk onChunkLoad ()V c +MD net/minecraft/world/chunk/Chunk getAreLevelsEmpty (II)Z c +MD net/minecraft/world/chunk/Chunk checkSkylightNeighborHeight (III)V c +MD net/minecraft/world/chunk/Chunk setInhabitedTime (J)V c +MD net/minecraft/world/chunk/Chunk getBlockMetadata (Lnet/minecraft/util/BlockPos;)I c +MD net/minecraft/world/chunk/Chunk setChunkLoaded (Z)V c +MD net/minecraft/world/chunk/Chunk onChunkUnload ()V d +MD net/minecraft/world/chunk/Chunk propagateSkylightOcclusion (II)V d +MD net/minecraft/world/chunk/Chunk relightBlock (III)V d +MD net/minecraft/world/chunk/Chunk canSeeSky (Lnet/minecraft/util/BlockPos;)Z d +MD net/minecraft/world/chunk/Chunk setTerrainPopulated (Z)V d +MD net/minecraft/world/chunk/Chunk setChunkModified ()V e +MD net/minecraft/world/chunk/Chunk func_150811_f (II)Z e +MD net/minecraft/world/chunk/Chunk getBlockLightOpacity (III)I e +MD net/minecraft/world/chunk/Chunk removeTileEntity (Lnet/minecraft/util/BlockPos;)V e +MD net/minecraft/world/chunk/Chunk setLightPopulated (Z)V e +MD net/minecraft/world/chunk/Chunk isEmpty ()Z f +MD net/minecraft/world/chunk/Chunk getBlock0 (III)Lnet/minecraft/block/Block; f +MD net/minecraft/world/chunk/Chunk getHeight (Lnet/minecraft/util/BlockPos;)I f +MD net/minecraft/world/chunk/Chunk setModified (Z)V f +MD net/minecraft/world/chunk/Chunk getTopFilledSegment ()I g +MD net/minecraft/world/chunk/Chunk getBlockMetadata (III)I g +MD net/minecraft/world/chunk/Chunk getBlockState (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; g +MD net/minecraft/world/chunk/Chunk setHasEntities (Z)V g +MD net/minecraft/world/chunk/Chunk getBlockStorageArray ()[Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage; h +MD net/minecraft/world/chunk/Chunk getPrecipitationHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; h +MD net/minecraft/world/chunk/Chunk recheckGaps (Z)V h +MD net/minecraft/world/chunk/Chunk isPopulated ()Z i +MD net/minecraft/world/chunk/Chunk createNewTileEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntity; i +MD net/minecraft/world/chunk/Chunk getChunkCoordIntPair ()Lnet/minecraft/world/ChunkCoordIntPair; j +MD net/minecraft/world/chunk/Chunk getBiomeArray ()[B k +MD net/minecraft/world/chunk/Chunk resetRelightChecks ()V l +MD net/minecraft/world/chunk/Chunk enqueueRelightChecks ()V m +MD net/minecraft/world/chunk/Chunk func_150809_p ()V n +MD net/minecraft/world/chunk/Chunk isLoaded ()Z o +MD net/minecraft/world/chunk/Chunk getWorld ()Lnet/minecraft/world/World; p +MD net/minecraft/world/chunk/Chunk getHeightMap ()[I q +MD net/minecraft/world/chunk/Chunk getTileEntityMap ()Ljava/util/Map; r +MD net/minecraft/world/chunk/Chunk getEntityLists ()[Lnet/minecraft/util/ClassInheritanceMultiMap; s +MD net/minecraft/world/chunk/Chunk isTerrainPopulated ()Z t +MD net/minecraft/world/chunk/Chunk isLightPopulated ()Z u +MD net/minecraft/world/chunk/Chunk getLowestHeight ()I v +MD net/minecraft/world/chunk/Chunk getInhabitedTime ()J w +MD net/minecraft/world/chunk/Chunk func_177441_y ()V y +MD net/minecraft/world/chunk/Chunk$1 call ()Ljava/lang/String; a +MD net/minecraft/world/chunk/Chunk$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$2 call ()Ljava/lang/String; a +MD net/minecraft/world/chunk/Chunk$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$3 call ()Ljava/lang/String; a +MD net/minecraft/world/chunk/Chunk$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$EnumCreateEntityType valueOf (Ljava/lang/String;)Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType; valueOf +MD net/minecraft/world/chunk/Chunk$EnumCreateEntityType values ()[Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType; values +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage isEmpty ()Z a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage get (III)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setExtSkylightValue (IIII)V a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage set (IIILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setBlocklightArray (Lnet/minecraft/world/chunk/NibbleArray;)V a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setData ([C)V a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getNeedsRandomTick ()Z b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getBlockByExtId (III)Lnet/minecraft/block/Block; b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setExtBlocklightValue (IIII)V b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setSkylightArray (Lnet/minecraft/world/chunk/NibbleArray;)V b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtBlockMetadata (III)I c +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getYLocation ()I d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtSkylightValue (III)I d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage removeInvalidBlocks ()V e +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtBlocklightValue (III)I e +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getData ()[C g +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getBlocklightArray ()Lnet/minecraft/world/chunk/NibbleArray; h +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getSkylightArray ()Lnet/minecraft/world/chunk/NibbleArray; i +MD net/minecraft/world/chunk/storage/NibbleArrayReader get (III)I a +MD net/minecraft/world/chunk/storage/IChunkLoader chunkTick ()V a +MD net/minecraft/world/chunk/storage/IChunkLoader loadChunk (Lnet/minecraft/world/World;II)Lnet/minecraft/world/chunk/Chunk; a +MD net/minecraft/world/chunk/storage/IChunkLoader saveChunk (Lnet/minecraft/world/World;Lnet/minecraft/world/chunk/Chunk;)V a +MD net/minecraft/world/chunk/storage/IChunkLoader saveExtraData ()V b +MD net/minecraft/world/chunk/storage/IChunkLoader saveExtraChunkData (Lnet/minecraft/world/World;Lnet/minecraft/world/chunk/Chunk;)V b +MD net/minecraft/world/chunk/storage/ChunkLoader convertToAnvilFormat (Lnet/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData;Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/biome/WorldChunkManager;)V a +MD net/minecraft/world/chunk/storage/ChunkLoader load (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData; a +MD net/minecraft/world/chunk/storage/RegionFile getChunkDataInputStream (II)Ljava/io/DataInputStream; a +MD net/minecraft/world/chunk/storage/RegionFile setOffset (III)V a +MD net/minecraft/world/chunk/storage/RegionFile write (II[BI)V a +MD net/minecraft/world/chunk/storage/RegionFile write (I[BI)V a +MD net/minecraft/world/chunk/storage/RegionFile getChunkDataOutputStream (II)Ljava/io/DataOutputStream; b +MD net/minecraft/world/chunk/storage/RegionFile setChunkTimestamp (III)V b +MD net/minecraft/world/chunk/storage/RegionFile close ()V c +MD net/minecraft/world/chunk/storage/RegionFile isChunkSaved (II)Z c +MD net/minecraft/world/chunk/storage/RegionFile outOfBounds (II)Z d +MD net/minecraft/world/chunk/storage/RegionFile getOffset (II)I e +MD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer close ()V close +MD net/minecraft/world/chunk/storage/RegionFileCache clearRegionFileReferences ()V a +MD net/minecraft/world/chunk/storage/RegionFileCache createOrLoadRegionFile (Ljava/io/File;II)Lnet/minecraft/world/chunk/storage/RegionFile; a +MD net/minecraft/world/chunk/storage/RegionFileCache getChunkInputStream (Ljava/io/File;II)Ljava/io/DataInputStream; c +MD net/minecraft/world/chunk/storage/RegionFileCache getChunkOutputStream (Ljava/io/File;II)Ljava/io/DataOutputStream; d +MD net/minecraft/world/chunk/storage/AnvilChunkLoader addChunkToPending (Lnet/minecraft/world/ChunkCoordIntPair;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader checkedReadChunkFromNBT (Lnet/minecraft/world/World;IILnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/Chunk; a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader readChunkFromNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/Chunk; a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader writeChunkToNBT (Lnet/minecraft/world/chunk/Chunk;Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader func_183013_b (Lnet/minecraft/world/ChunkCoordIntPair;Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/world/WorldProvider generateLightBrightnessTable ()V a +MD net/minecraft/world/WorldProvider calcSunriseSunsetColors (FF)[F a +MD net/minecraft/world/WorldProvider getProviderForDimension (I)Lnet/minecraft/world/WorldProvider; a +MD net/minecraft/world/WorldProvider canCoordinateBeSpawn (II)Z a +MD net/minecraft/world/WorldProvider getMoonPhase (J)I a +MD net/minecraft/world/WorldProvider calculateCelestialAngle (JF)F a +MD net/minecraft/world/WorldProvider registerWorld (Lnet/minecraft/world/World;)V a +MD net/minecraft/world/WorldProvider registerWorldChunkManager ()V b +MD net/minecraft/world/WorldProvider getFogColor (FF)Lnet/minecraft/util/Vec3; b +MD net/minecraft/world/WorldProvider doesXZShowFog (II)Z b +MD net/minecraft/world/WorldProvider createChunkGenerator ()Lnet/minecraft/world/chunk/IChunkProvider; c +MD net/minecraft/world/WorldProvider isSurfaceWorld ()Z d +MD net/minecraft/world/WorldProvider canRespawnHere ()Z e +MD net/minecraft/world/WorldProvider getCloudHeight ()F f +MD net/minecraft/world/WorldProvider isSkyColored ()Z g +MD net/minecraft/world/WorldProvider getSpawnCoordinate ()Lnet/minecraft/util/BlockPos; h +MD net/minecraft/world/WorldProvider getAverageGroundLevel ()I i +MD net/minecraft/world/WorldProvider getVoidFogYFactor ()D j +MD net/minecraft/world/WorldProvider getDimensionName ()Ljava/lang/String; k +MD net/minecraft/world/WorldProvider getInternalNameSuffix ()Ljava/lang/String; l +MD net/minecraft/world/WorldProvider getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; m +MD net/minecraft/world/WorldProvider doesWaterVaporize ()Z n +MD net/minecraft/world/WorldProvider getHasNoSky ()Z o +MD net/minecraft/world/WorldProvider getLightBrightnessTable ()[F p +MD net/minecraft/world/WorldProvider getDimensionId ()I q +MD net/minecraft/world/WorldProvider getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; r +MD net/minecraft/world/gen/MapGenRavine func_180707_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V a +MD net/minecraft/world/chunk/ChunkPrimer getBlockState (I)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/chunk/ChunkPrimer getBlockState (III)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/chunk/ChunkPrimer setBlockState (IIILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/chunk/ChunkPrimer setBlockState (ILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory func_177863_a ()V a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory jsonToFactory (Ljava/lang/String;)Lnet/minecraft/world/gen/ChunkProviderSettings$Factory; a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory func_177864_b ()Lnet/minecraft/world/gen/ChunkProviderSettings; b +MD net/minecraft/world/gen/ChunkProviderSettings$Factory equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/gen/ChunkProviderSettings$Factory hashCode ()I hashCode +MD net/minecraft/world/gen/ChunkProviderSettings$Factory toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer serialize (Lnet/minecraft/world/gen/ChunkProviderSettings$Factory;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/world/gen/ChunkProviderSettings$Factory; a +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/world/gen/ChunkProviderDebug func_177461_b (II)Lnet/minecraft/block/state/IBlockState; b +MD net/minecraft/world/gen/ChunkProviderHell func_180515_a (IILnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/ChunkProviderHell initializeNoiseField ([DIIIIII)[D a +MD net/minecraft/world/gen/ChunkProviderHell func_180516_b (IILnet/minecraft/world/chunk/ChunkPrimer;)V b +MD net/minecraft/world/gen/MapGenCaves func_180703_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDD)V a +MD net/minecraft/world/gen/MapGenCaves func_180702_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V a +MD net/minecraft/world/gen/MapGenCaves func_175793_a (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;)Z a +MD net/minecraft/world/gen/MapGenBase recursiveGenerate (Lnet/minecraft/world/World;IIIILnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/MapGenBase generate (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/World;IILnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/MapGenCavesHell func_180705_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDD)V a +MD net/minecraft/world/gen/MapGenCavesHell func_180704_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V a +MD net/minecraft/world/gen/ChunkProviderGenerate func_147423_a (III)V a +MD net/minecraft/world/gen/ChunkProviderGenerate setBlocksInChunk (IILnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/ChunkProviderGenerate replaceBlocksForBiome (IILnet/minecraft/world/chunk/ChunkPrimer;[Lnet/minecraft/world/biome/BiomeGenBase;)V a +MD net/minecraft/world/gen/ChunkProviderEnd func_180520_a (IILnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/ChunkProviderEnd func_180519_a (Lnet/minecraft/world/chunk/ChunkPrimer;)V a +MD net/minecraft/world/gen/ChunkProviderEnd initializeNoiseField ([DIIIIII)[D a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_175921_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_180711_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_150523_a (Lnet/minecraft/block/Block;)Z a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNodeList ()V a +MD net/minecraft/world/gen/feature/WorldGenBigTree layerSize (I)F a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNode (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/gen/feature/WorldGenBigTree func_181631_a (Lnet/minecraft/util/BlockPos;FLnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/gen/feature/WorldGenBigTree checkBlockLine (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)I a +MD net/minecraft/world/gen/feature/WorldGenBigTree func_175937_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeaves ()V b +MD net/minecraft/world/gen/feature/WorldGenBigTree leafSize (I)F b +MD net/minecraft/world/gen/feature/WorldGenBigTree getGreatestDistance (Lnet/minecraft/util/BlockPos;)I b +MD net/minecraft/world/gen/feature/WorldGenBigTree func_175938_b (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockLog$EnumAxis; b +MD net/minecraft/world/gen/feature/WorldGenBigTree generateTrunk ()V c +MD net/minecraft/world/gen/feature/WorldGenBigTree leafNodeNeedsBase (I)Z c +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNodeBases ()V d +MD net/minecraft/world/gen/feature/WorldGenBigTree validTreeLocation ()Z f +MD net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates func_177999_q ()I q +MD net/minecraft/world/gen/feature/WorldGenDoublePlant setPlantType (Lnet/minecraft/block/BlockDoublePlant$EnumPlantType;)V a +MD net/minecraft/world/gen/feature/WorldGenerator setBlockAndNotifyAdequately (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/gen/feature/WorldGenerator generate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/world/gen/feature/WorldGenerator func_175904_e ()V e +MD net/minecraft/world/gen/feature/WorldGenFlowers setGeneratedBlock (Lnet/minecraft/block/BlockFlower;Lnet/minecraft/block/BlockFlower$EnumFlowerType;)V a +MD net/minecraft/world/gen/feature/WorldGenMegaJungle func_181632_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V a +MD net/minecraft/world/gen/feature/WorldGenMegaJungle func_175930_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V c +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_150541_c (Lnet/minecraft/world/World;IIIILjava/util/Random;)V a +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_175933_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_175934_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V c +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175925_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175929_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;I)Z a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175927_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/World;)Z a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_150533_a (Ljava/util/Random;)I a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175928_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V b +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175926_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Z c +MD net/minecraft/world/gen/feature/WorldGenDungeons pickMobSpawner (Ljava/util/Random;)Ljava/lang/String; a +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_150526_a (Lnet/minecraft/world/World;III)V a +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_181638_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Z a +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_181639_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/world/gen/feature/WorldGenSavannaTree func_181642_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V b +MD net/minecraft/world/gen/feature/WorldGenSavannaTree func_175924_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V c +MD net/minecraft/world/gen/feature/WorldGenSwamp func_181647_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181652_a (Lnet/minecraft/world/World;ILnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181651_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181650_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V b +MD net/minecraft/world/gen/FlatGeneratorInfo getBiome ()I a +MD net/minecraft/world/gen/FlatGeneratorInfo setBiome (I)V a +MD net/minecraft/world/gen/FlatGeneratorInfo func_180716_a (ILjava/lang/String;)Ljava/util/List; a +MD net/minecraft/world/gen/FlatGeneratorInfo func_180715_a (ILjava/lang/String;I)Lnet/minecraft/world/gen/FlatLayerInfo; a +MD net/minecraft/world/gen/FlatGeneratorInfo createFlatGeneratorFromString (Ljava/lang/String;)Lnet/minecraft/world/gen/FlatGeneratorInfo; a +MD net/minecraft/world/gen/FlatGeneratorInfo getWorldFeatures ()Ljava/util/Map; b +MD net/minecraft/world/gen/FlatGeneratorInfo getFlatLayers ()Ljava/util/List; c +MD net/minecraft/world/gen/FlatGeneratorInfo func_82645_d ()V d +MD net/minecraft/world/gen/FlatGeneratorInfo getDefaultFlatGenerator ()Lnet/minecraft/world/gen/FlatGeneratorInfo; e +MD net/minecraft/world/gen/FlatGeneratorInfo toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/FlatLayerInfo getLayerCount ()I b +MD net/minecraft/world/gen/FlatLayerInfo setMinY (I)V b +MD net/minecraft/world/gen/FlatLayerInfo getLayerMaterial ()Lnet/minecraft/block/state/IBlockState; c +MD net/minecraft/world/gen/FlatLayerInfo getMinY ()I d +MD net/minecraft/world/gen/FlatLayerInfo getLayerMaterialBlock ()Lnet/minecraft/block/Block; e +MD net/minecraft/world/gen/FlatLayerInfo getFillBlockMeta ()I f +MD net/minecraft/world/gen/FlatLayerInfo toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/structure/StructureBoundingBox getNewBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureBoundingBox offset (III)V a +MD net/minecraft/world/gen/structure/StructureBoundingBox intersectsWith (IIII)Z a +MD net/minecraft/world/gen/structure/StructureBoundingBox func_175899_a (IIIIII)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureBoundingBox getComponentToAddBoundingBox (IIIIIIIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureBoundingBox intersectsWith (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureBoundingBox func_175896_b ()Lnet/minecraft/util/Vec3i; b +MD net/minecraft/world/gen/structure/StructureBoundingBox expandTo (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V b +MD net/minecraft/world/gen/structure/StructureBoundingBox isVecInside (Lnet/minecraft/util/Vec3i;)Z b +MD net/minecraft/world/gen/structure/StructureBoundingBox getXSize ()I c +MD net/minecraft/world/gen/structure/StructureBoundingBox getYSize ()I d +MD net/minecraft/world/gen/structure/StructureBoundingBox getZSize ()I e +MD net/minecraft/world/gen/structure/StructureBoundingBox getCenter ()Lnet/minecraft/util/Vec3i; f +MD net/minecraft/world/gen/structure/StructureBoundingBox toNBTTagIntArray ()Lnet/minecraft/nbt/NBTTagIntArray; g +MD net/minecraft/world/gen/structure/StructureBoundingBox toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/structure/StructureMineshaftPieces registerStructurePieces ()V a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces access$000 (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces func_175892_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces access$100 ()Ljava/util/List; b +MD net/minecraft/world/gen/structure/StructureMineshaftPieces func_175890_b (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor func_175814_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross func_175813_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Stairs func_175812_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/MapGenNetherBridge getSpawnList ()Ljava/util/List; b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces registerNetherFortressPieces ()V a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$000 (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$100 ()[Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight; b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces func_175887_b (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$200 ()[Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight; c +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3 func_175885_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$End func_175884_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$End; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight func_175882_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3 func_175883_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4 func_175880_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance func_175881_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2 func_175878_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor func_175879_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5 func_175877_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 func_175876_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom func_175875_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne func_175874_a (Ljava/util/List;Ljava/util/Random;IIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece isAboveGround (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece func_175871_a (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece func_175870_a (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;IZ)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentNormal (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getTotalWeight (Ljava/util/List;)I a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentX (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentZ (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; c +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight func_78823_a ()Z a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight func_78822_a (I)Z a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing func_175873_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing; a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs func_175872_a (Ljava/util/List;Ljava/util/Random;IIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs; a +MD net/minecraft/world/gen/structure/StructureOceanMonument getScatteredFeatureSpawnList ()Ljava/util/List; b +MD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument func_175789_b (Lnet/minecraft/world/World;Ljava/util/Random;II)V b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces registerOceanMonumentPieces ()V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175836_a (Ljava/util/Random;)Ljava/util/List; a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175840_a (ZILnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175839_b (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175837_c (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V c +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175841_d (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V d +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175835_e (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V e +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175842_f (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V f +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175838_g (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V g +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper func_175969_a (Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;)Z a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper func_175968_a (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;Ljava/util/Random;)Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece; a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175817_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;III)Z a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175819_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_181655_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIIZ)V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175821_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIZ)V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175818_a (Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIII)Z a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175820_a (III)I b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175958_a ()V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175959_a (I)Z a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175957_a (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;)V a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175961_b ()Z b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175960_c ()I c +MD net/minecraft/world/gen/structure/MapGenScatteredFeature func_175798_a (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/gen/structure/MapGenScatteredFeature getScatteredFeatureSpawnList ()Ljava/util/List; b +MD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces registerScatteredFeaturePieces ()V a +MD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature func_74935_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;I)Z a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces registerStrongholdPieces ()V a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$000 (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$102 (Ljava/lang/Class;)Ljava/lang/Class; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175954_a (Ljava/lang/Class;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces prepareStructurePieces ()V b +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175955_b (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold; b +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$200 ()Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stones; c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175953_c (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces canAddStructurePieces ()Z d +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor func_175868_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor func_175869_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing func_175866_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn func_175867_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library func_175864_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Library; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight canSpawnMoreStructures ()Z a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight canSpawnMoreStructuresOfType (I)Z a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom func_175865_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Prison func_175860_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Prison; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing func_175859_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs func_175863_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight func_175862_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Straight; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight func_175861_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold placeDoor (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door;III)V a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold canStrongholdGoDeeper (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentNormal (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getRandomDoor (Ljava/util/Random;)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentX (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentZ (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door valueOf (Ljava/lang/String;)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; valueOf +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door values ()[Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; values +MD net/minecraft/world/gen/structure/MapGenStructure getStructureName ()Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructure canSpawnStructureAtCoords (II)Z a +MD net/minecraft/world/gen/structure/MapGenStructure setStructureStart (IILnet/minecraft/world/gen/structure/StructureStart;)V a +MD net/minecraft/world/gen/structure/MapGenStructure initializeStructureData (Lnet/minecraft/world/World;)V a +MD net/minecraft/world/gen/structure/MapGenStructure isPositionInStructure (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/world/gen/structure/MapGenStructure generateStructure (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/ChunkCoordIntPair;)Z a +MD net/minecraft/world/gen/structure/MapGenStructure getStructureStart (II)Lnet/minecraft/world/gen/structure/StructureStart; b +MD net/minecraft/world/gen/structure/MapGenStructure getClosestStrongholdPos (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; b +MD net/minecraft/world/gen/structure/MapGenStructure func_175795_b (Lnet/minecraft/util/BlockPos;)Z b +MD net/minecraft/world/gen/structure/MapGenStructure func_175797_c (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/gen/structure/StructureStart; c +MD net/minecraft/world/gen/structure/MapGenStructure getCoordList ()Ljava/util/List; z_ +MD net/minecraft/world/gen/structure/MapGenStructure$1 call ()Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructure$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructure$2 call ()Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructure$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructure$3 call ()Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructure$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureComponentName (Lnet/minecraft/world/gen/structure/StructureComponent;)Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureStartName (Lnet/minecraft/world/gen/structure/StructureStart;)Ljava/lang/String; a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureStart (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/world/gen/structure/StructureStart; a +MD net/minecraft/world/gen/structure/MapGenStructureIO registerStructureComponent (Ljava/lang/Class;Ljava/lang/String;)V a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureComponent (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/MapGenStructureIO registerStructure (Ljava/lang/Class;Ljava/lang/String;)V b +MD net/minecraft/world/gen/structure/MapGenStructureData getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/world/gen/structure/MapGenStructureData writeInstance (Lnet/minecraft/nbt/NBTTagCompound;II)V a +MD net/minecraft/world/gen/structure/MapGenStructureData formatChunkCoords (II)Ljava/lang/String; b +MD net/minecraft/world/gen/structure/StructureComponent getBoundingBoxCenter ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/world/gen/structure/StructureComponent getXWithOffset (II)I a +MD net/minecraft/world/gen/structure/StructureComponent func_181138_a (III)V a +MD net/minecraft/world/gen/structure/StructureComponent getBlockStateFromPos (Lnet/minecraft/world/World;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/gen/structure/StructureComponent setBlockState (Lnet/minecraft/world/World;Lnet/minecraft/block/state/IBlockState;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V a +MD net/minecraft/world/gen/structure/StructureComponent isLiquidInStructureBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureComponent fillWithAir (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIII)V a +MD net/minecraft/world/gen/structure/StructureComponent fillWithBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;Z)V a +MD net/minecraft/world/gen/structure/StructureComponent randomlyRareFillWithBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;Z)V a +MD net/minecraft/world/gen/structure/StructureComponent fillWithRandomizedBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIIZLjava/util/Random;Lnet/minecraft/world/gen/structure/StructureComponent$BlockSelector;)V a +MD net/minecraft/world/gen/structure/StructureComponent func_175805_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;FIIIIIILnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;Z)V a +MD net/minecraft/world/gen/structure/StructureComponent randomlyPlaceBlock (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;FIIILnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/world/gen/structure/StructureComponent generateDispenserContents (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIIILjava/util/List;I)Z a +MD net/minecraft/world/gen/structure/StructureComponent placeDoorCurrentPosition (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/world/gen/structure/StructureComponent generateChestContents (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIILjava/util/List;I)Z a +MD net/minecraft/world/gen/structure/StructureComponent readStructureBaseNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/gen/structure/StructureComponent addComponentParts (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureComponent getMetadataWithOffset (Lnet/minecraft/block/Block;I)I a +MD net/minecraft/world/gen/structure/StructureComponent buildComponent (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;)V a +MD net/minecraft/world/gen/structure/StructureComponent writeStructureToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/gen/structure/StructureComponent findIntersecting (Ljava/util/List;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureComponent createStructureBaseNBT ()Lnet/minecraft/nbt/NBTTagCompound; b +MD net/minecraft/world/gen/structure/StructureComponent getZWithOffset (II)I b +MD net/minecraft/world/gen/structure/StructureComponent clearCurrentPositionBlocksUpwards (Lnet/minecraft/world/World;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V b +MD net/minecraft/world/gen/structure/StructureComponent replaceAirAndLiquidDownwards (Lnet/minecraft/world/World;Lnet/minecraft/block/state/IBlockState;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V b +MD net/minecraft/world/gen/structure/StructureComponent readStructureFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/world/gen/structure/StructureComponent getBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; c +MD net/minecraft/world/gen/structure/StructureComponent getComponentType ()I d +MD net/minecraft/world/gen/structure/StructureComponent getYWithOffset (I)I d +MD net/minecraft/world/gen/structure/StructureComponent$BlockSelector getBlockState ()Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/gen/structure/StructureComponent$BlockSelector selectBlocks (Ljava/util/Random;IIIZ)V a +MD net/minecraft/world/gen/structure/StructureStart getBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureStart writeStructureComponentsToNBT (II)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/world/gen/structure/StructureStart func_175788_a (Lnet/minecraft/world/ChunkCoordIntPair;)Z a +MD net/minecraft/world/gen/structure/StructureStart readStructureComponentsFromNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/gen/structure/StructureStart markAvailableHeight (Lnet/minecraft/world/World;Ljava/util/Random;I)V a +MD net/minecraft/world/gen/structure/StructureStart setRandomHeight (Lnet/minecraft/world/World;Ljava/util/Random;II)V a +MD net/minecraft/world/gen/structure/StructureStart generateStructure (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V a +MD net/minecraft/world/gen/structure/StructureStart writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/gen/structure/StructureStart getComponents ()Ljava/util/LinkedList; b +MD net/minecraft/world/gen/structure/StructureStart func_175787_b (Lnet/minecraft/world/ChunkCoordIntPair;)V b +MD net/minecraft/world/gen/structure/StructureStart readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/world/gen/structure/StructureStart updateBoundingBox ()V c +MD net/minecraft/world/gen/structure/StructureStart isSizeableStructure ()Z d +MD net/minecraft/world/gen/structure/StructureStart getChunkPosX ()I e +MD net/minecraft/world/gen/structure/StructureStart getChunkPosZ ()I f +MD net/minecraft/world/gen/structure/StructureVillagePieces registerVillagePieces ()V a +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176065_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Lnet/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Village; a +MD net/minecraft/world/gen/structure/StructureVillagePieces access$000 (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureVillagePieces func_75079_a (Ljava/util/List;)I a +MD net/minecraft/world/gen/structure/StructureVillagePieces getStructureVillageWeightedPieceList (Ljava/util/Random;I)Ljava/util/List; a +MD net/minecraft/world/gen/structure/StructureVillagePieces access$100 (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176067_c (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Village; c +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176066_d (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; d +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176069_e (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; e +MD net/minecraft/world/gen/structure/StructureVillagePieces$House1 func_175850_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House1; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 func_175851_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Field1; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 func_151559_a (Ljava/util/Random;)Lnet/minecraft/block/Block; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 func_175852_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Field2; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 func_151560_a (Ljava/util/Random;)Lnet/minecraft/block/Block; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Torch func_175856_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight canSpawnMoreVillagePieces ()Z a +MD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight canSpawnMoreVillagePiecesOfType (I)Z a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Hall func_175857_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Hall; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden func_175858_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House4Garden; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut func_175853_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$WoodHut; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Church func_175854_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Church; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House2 func_175855_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House2; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Start getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; e +MD net/minecraft/world/gen/structure/StructureVillagePieces$Path func_175848_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House3 func_175849_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House3; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village spawnVillagers (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIII)V a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_175847_a (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village canVillageGoDeeper (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getNextComponentNN (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_175846_a (Z)V a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getAverageGroundLevel (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)I b +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getNextComponentPP (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; b +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_180779_c (II)I c +MD net/minecraft/world/gen/NoiseGeneratorImproved func_76309_a (IDD)D a +MD net/minecraft/world/gen/NoiseGeneratorImproved grad (IDDD)D a +MD net/minecraft/world/gen/NoiseGeneratorImproved populateNoiseArray ([DDDDIIIDDDD)V a +MD net/minecraft/world/gen/NoiseGeneratorImproved lerp (DDD)D b +MD net/minecraft/world/gen/NoiseGeneratorOctaves generateNoiseOctaves ([DIIIIDDD)[D a +MD net/minecraft/world/gen/NoiseGeneratorOctaves generateNoiseOctaves ([DIIIIIIDDD)[D a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151601_a (DD)D a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151599_a ([DDDIIDDD)[D a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151600_a ([DDDIIDDDD)[D a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151607_a (D)I a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151605_a (DD)D a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151606_a ([DDDIIDDD)V a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151604_a ([IDD)D a +MD net/minecraft/block/material/Material isSolid ()Z a +MD net/minecraft/block/material/Material blocksLight ()Z b +MD net/minecraft/block/material/Material blocksMovement ()Z c +MD net/minecraft/block/material/Material isLiquid ()Z d +MD net/minecraft/block/material/Material setRequiresTool ()Lnet/minecraft/block/material/Material; f +MD net/minecraft/block/material/Material setBurning ()Lnet/minecraft/block/material/Material; g +MD net/minecraft/block/material/Material getCanBurn ()Z h +MD net/minecraft/block/material/Material setReplaceable ()Lnet/minecraft/block/material/Material; i +MD net/minecraft/block/material/Material isReplaceable ()Z j +MD net/minecraft/block/material/Material isOpaque ()Z k +MD net/minecraft/block/material/Material isToolNotRequired ()Z l +MD net/minecraft/block/material/Material getMaterialMobility ()I m +MD net/minecraft/block/material/Material setNoPushMobility ()Lnet/minecraft/block/material/Material; n +MD net/minecraft/block/material/Material setImmovableMobility ()Lnet/minecraft/block/material/Material; o +MD net/minecraft/block/material/Material setAdventureModeExempt ()Lnet/minecraft/block/material/Material; p +MD net/minecraft/block/material/Material getMaterialMapColor ()Lnet/minecraft/block/material/MapColor; r +MD net/minecraft/block/material/Material setTranslucent ()Lnet/minecraft/block/material/Material; s +MD net/minecraft/block/material/MapColor getMapColor (I)I a +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsCoolWarm (IIII)[I c +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsHeatIce (IIII)[I d +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsSpecial (IIII)[I e +MD net/minecraft/world/gen/layer/GenLayerEdge$Mode valueOf (Ljava/lang/String;)Lnet/minecraft/world/gen/layer/GenLayerEdge$Mode; valueOf +MD net/minecraft/world/gen/layer/GenLayerEdge$Mode values ()[Lnet/minecraft/world/gen/layer/GenLayerEdge$Mode; values +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge replaceBiomeEdgeIfNecessary ([I[IIIIIII)Z a +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge canBiomesBeNeighbors (II)Z b +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge replaceBiomeEdge ([I[IIIIIII)Z b +MD net/minecraft/world/gen/layer/IntCache resetIntCache ()V a +MD net/minecraft/world/gen/layer/IntCache getIntCache (I)[I a +MD net/minecraft/world/gen/layer/IntCache getCacheSizes ()Ljava/lang/String; b +MD net/minecraft/world/gen/layer/GenLayer nextInt (I)I a +MD net/minecraft/world/gen/layer/GenLayer biomesEqualOrMesaPlateau (II)Z a +MD net/minecraft/world/gen/layer/GenLayer getInts (IIII)[I a +MD net/minecraft/world/gen/layer/GenLayer initWorldGenSeed (J)V a +MD net/minecraft/world/gen/layer/GenLayer initChunkSeed (JJ)V a +MD net/minecraft/world/gen/layer/GenLayer initializeAllBiomeGenerators (JLnet/minecraft/world/WorldType;Ljava/lang/String;)[Lnet/minecraft/world/gen/layer/GenLayer; a +MD net/minecraft/world/gen/layer/GenLayer selectRandom ([I)I a +MD net/minecraft/world/gen/layer/GenLayer isBiomeOceanic (I)Z b +MD net/minecraft/world/gen/layer/GenLayer selectModeOrRandom (IIII)I b +MD net/minecraft/world/gen/layer/GenLayer$1 call ()Ljava/lang/String; a +MD net/minecraft/world/gen/layer/GenLayer$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/layer/GenLayer$2 call ()Ljava/lang/String; a +MD net/minecraft/world/gen/layer/GenLayer$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/layer/GenLayerRiver func_151630_c (I)I c +MD net/minecraft/world/gen/layer/GenLayerShore func_151632_a ([I[IIIIII)V a +MD net/minecraft/world/gen/layer/GenLayerShore func_151631_c (I)Z c +MD net/minecraft/world/gen/layer/GenLayerShore func_151633_d (I)Z d +MD net/minecraft/world/gen/layer/GenLayerZoom magnify (JLnet/minecraft/world/gen/layer/GenLayer;I)Lnet/minecraft/world/gen/layer/GenLayer; b +MD net/minecraft/pathfinding/Path clearPath ()V a +MD net/minecraft/pathfinding/Path sortBack (I)V a +MD net/minecraft/pathfinding/Path addPoint (Lnet/minecraft/pathfinding/PathPoint;)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/pathfinding/Path changeDistance (Lnet/minecraft/pathfinding/PathPoint;F)V a +MD net/minecraft/pathfinding/Path sortForward (I)V b +MD net/minecraft/pathfinding/Path dequeue ()Lnet/minecraft/pathfinding/PathPoint; c +MD net/minecraft/pathfinding/Path isPathEmpty ()Z e +MD net/minecraft/pathfinding/PathPoint isAssigned ()Z a +MD net/minecraft/pathfinding/PathPoint makeHash (III)I a +MD net/minecraft/pathfinding/PathPoint distanceTo (Lnet/minecraft/pathfinding/PathPoint;)F a +MD net/minecraft/pathfinding/PathPoint distanceToSquared (Lnet/minecraft/pathfinding/PathPoint;)F b +MD net/minecraft/pathfinding/PathPoint equals (Ljava/lang/Object;)Z equals +MD net/minecraft/pathfinding/PathPoint hashCode ()I hashCode +MD net/minecraft/pathfinding/PathPoint toString ()Ljava/lang/String; toString +MD net/minecraft/world/pathfinder/NodeProcessor postProcess ()V a +MD net/minecraft/world/pathfinder/NodeProcessor openPoint (III)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/world/pathfinder/NodeProcessor initProcessor (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/world/pathfinder/NodeProcessor getPathPointTo (Lnet/minecraft/entity/Entity;)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/world/pathfinder/NodeProcessor getPathPointToCoords (Lnet/minecraft/entity/Entity;DDD)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/world/pathfinder/NodeProcessor findPathOptions ([Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/entity/Entity;Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;F)I a +MD net/minecraft/pathfinding/PathEntity incrementPathIndex ()V a +MD net/minecraft/pathfinding/PathEntity getPathPointFromIndex (I)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/pathfinding/PathEntity isSamePath (Lnet/minecraft/pathfinding/PathEntity;)Z a +MD net/minecraft/pathfinding/PathEntity getPosition (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/Vec3; a +MD net/minecraft/pathfinding/PathEntity getVectorFromIndex (Lnet/minecraft/entity/Entity;I)Lnet/minecraft/util/Vec3; a +MD net/minecraft/pathfinding/PathEntity isFinished ()Z b +MD net/minecraft/pathfinding/PathEntity setCurrentPathLength (I)V b +MD net/minecraft/pathfinding/PathEntity isDestinationSame (Lnet/minecraft/util/Vec3;)Z b +MD net/minecraft/pathfinding/PathEntity getFinalPathPoint ()Lnet/minecraft/pathfinding/PathPoint; c +MD net/minecraft/pathfinding/PathEntity setCurrentPathIndex (I)V c +MD net/minecraft/pathfinding/PathEntity getCurrentPathLength ()I d +MD net/minecraft/pathfinding/PathEntity getCurrentPathIndex ()I e +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;DDDF)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/BlockPos;F)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;F)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathFinder createEntityPath (Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/pathfinding/PathFinder addToPath (Lnet/minecraft/entity/Entity;Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;F)Lnet/minecraft/pathfinding/PathEntity; a +MD net/minecraft/world/pathfinder/SwimNodeProcessor getSafePoint (Lnet/minecraft/entity/Entity;III)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/world/pathfinder/SwimNodeProcessor func_176186_b (Lnet/minecraft/entity/Entity;III)I b +MD net/minecraft/world/pathfinder/WalkNodeProcessor func_176170_a (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;IIIIIIZZZ)I a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getVerticalOffset (Lnet/minecraft/entity/Entity;III)I a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getSafePoint (Lnet/minecraft/entity/Entity;IIII)Lnet/minecraft/pathfinding/PathPoint; a +MD net/minecraft/world/pathfinder/WalkNodeProcessor setEnterDoors (Z)V a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getEnterDoors ()Z b +MD net/minecraft/world/pathfinder/WalkNodeProcessor setBreakDoors (Z)V b +MD net/minecraft/world/pathfinder/WalkNodeProcessor setAvoidsWater (Z)V c +MD net/minecraft/world/pathfinder/WalkNodeProcessor getCanSwim ()Z d +MD net/minecraft/world/pathfinder/WalkNodeProcessor setCanSwim (Z)V d +MD net/minecraft/world/pathfinder/WalkNodeProcessor getAvoidsWater ()Z e +MD net/minecraft/world/WorldSavedData readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/WorldSavedData setDirty (Z)V a +MD net/minecraft/world/WorldSavedData writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V b +MD net/minecraft/world/WorldSavedData markDirty ()V c +MD net/minecraft/world/WorldSavedData isDirty ()Z d +MD net/minecraft/util/Vec4b func_176110_a ()B a +MD net/minecraft/util/Vec4b func_176112_b ()B b +MD net/minecraft/util/Vec4b func_176113_c ()B c +MD net/minecraft/util/Vec4b func_176111_d ()B d +MD net/minecraft/util/Vec4b equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/Vec4b hashCode ()I hashCode +MD net/minecraft/world/storage/MapData calculateMapCenter (DDI)V a +MD net/minecraft/world/storage/MapData updateMapData (II)V a +MD net/minecraft/world/storage/MapData updateDecorations (ILnet/minecraft/world/World;Ljava/lang/String;DDD)V a +MD net/minecraft/world/storage/MapData getMapInfo (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/world/storage/MapData$MapInfo; a +MD net/minecraft/world/storage/MapData updateVisiblePlayers (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/world/storage/MapData getMapPacket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/network/Packet; a +MD net/minecraft/world/storage/MapData$MapInfo update (II)V a +MD net/minecraft/world/storage/MapData$MapInfo getPacket (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/network/Packet; a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter convertChunks (Ljava/io/File;Ljava/io/File;Lnet/minecraft/world/biome/WorldChunkManager;IILnet/minecraft/util/IProgressUpdate;)V a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter convertFile (Ljava/io/File;Ljava/lang/Iterable;Lnet/minecraft/world/biome/WorldChunkManager;IILnet/minecraft/util/IProgressUpdate;)V a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter addRegionFilesToCollection (Ljava/io/File;Ljava/util/Collection;)V a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter getSaveVersion ()I c +MD net/minecraft/world/chunk/storage/AnvilSaveConverter createFile (Ljava/lang/String;)V g +MD net/minecraft/world/chunk/storage/AnvilSaveConverter$1 accept (Ljava/io/File;Ljava/lang/String;)Z accept +MD net/minecraft/world/storage/SaveHandler setSessionLock ()V h +MD net/minecraft/world/storage/SaveFormatOld deleteFiles ([Ljava/io/File;)Z a +MD net/minecraft/world/storage/WorldInfo getCleanWeatherTime ()I A +MD net/minecraft/world/storage/WorldInfo getGeneratorOptions ()Ljava/lang/String; B +MD net/minecraft/world/storage/WorldInfo getBorderCenterX ()D C +MD net/minecraft/world/storage/WorldInfo getBorderCenterZ ()D D +MD net/minecraft/world/storage/WorldInfo getBorderSize ()D E +MD net/minecraft/world/storage/WorldInfo getBorderLerpTime ()J F +MD net/minecraft/world/storage/WorldInfo getBorderLerpTarget ()D G +MD net/minecraft/world/storage/WorldInfo getBorderSafeZone ()D H +MD net/minecraft/world/storage/WorldInfo getBorderDamagePerBlock ()D I +MD net/minecraft/world/storage/WorldInfo getBorderWarningDistance ()I J +MD net/minecraft/world/storage/WorldInfo getBorderWarningTime ()I K +MD net/minecraft/world/storage/WorldInfo getNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/world/storage/WorldInfo setBorderSize (D)V a +MD net/minecraft/world/storage/WorldInfo setSpawnX (I)V a +MD net/minecraft/world/storage/WorldInfo setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/world/storage/WorldInfo populateFromWorldSettings (Lnet/minecraft/world/WorldSettings;)V a +MD net/minecraft/world/storage/WorldInfo setTerrainType (Lnet/minecraft/world/WorldType;)V a +MD net/minecraft/world/storage/WorldInfo access$000 (Lnet/minecraft/world/storage/WorldInfo;)Lnet/minecraft/world/WorldType; a +MD net/minecraft/world/storage/WorldInfo addToCrashReport (Lnet/minecraft/crash/CrashReportCategory;)V a +MD net/minecraft/world/storage/WorldInfo setSpawn (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/world/storage/WorldInfo cloneNBTCompound (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/world/storage/WorldInfo updateTagCompound (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/storage/WorldInfo setWorldName (Ljava/lang/String;)V a +MD net/minecraft/world/storage/WorldInfo setDifficulty (Lnet/minecraft/world/EnumDifficulty;)V a +MD net/minecraft/world/storage/WorldInfo setThundering (Z)V a +MD net/minecraft/world/storage/WorldInfo getSeed ()J b +MD net/minecraft/world/storage/WorldInfo setBorderLerpTarget (D)V b +MD net/minecraft/world/storage/WorldInfo setSpawnY (I)V b +MD net/minecraft/world/storage/WorldInfo setWorldTotalTime (J)V b +MD net/minecraft/world/storage/WorldInfo access$100 (Lnet/minecraft/world/storage/WorldInfo;)Z b +MD net/minecraft/world/storage/WorldInfo setRaining (Z)V b +MD net/minecraft/world/storage/WorldInfo getSpawnX ()I c +MD net/minecraft/world/storage/WorldInfo getBorderCenterZ (D)V c +MD net/minecraft/world/storage/WorldInfo setSpawnZ (I)V c +MD net/minecraft/world/storage/WorldInfo setWorldTime (J)V c +MD net/minecraft/world/storage/WorldInfo access$200 (Lnet/minecraft/world/storage/WorldInfo;)Ljava/lang/String; c +MD net/minecraft/world/storage/WorldInfo setAllowCommands (Z)V c +MD net/minecraft/world/storage/WorldInfo getSpawnY ()I d +MD net/minecraft/world/storage/WorldInfo getBorderCenterX (D)V d +MD net/minecraft/world/storage/WorldInfo access$300 (Lnet/minecraft/world/storage/WorldInfo;)I d +MD net/minecraft/world/storage/WorldInfo setServerInitialized (Z)V d +MD net/minecraft/world/storage/WorldInfo getSpawnZ ()I e +MD net/minecraft/world/storage/WorldInfo setBorderSafeZone (D)V e +MD net/minecraft/world/storage/WorldInfo setSaveVersion (I)V e +MD net/minecraft/world/storage/WorldInfo setBorderLerpTime (J)V e +MD net/minecraft/world/storage/WorldInfo access$400 (Lnet/minecraft/world/storage/WorldInfo;)I e +MD net/minecraft/world/storage/WorldInfo setDifficultyLocked (Z)V e +MD net/minecraft/world/storage/WorldInfo getWorldTotalTime ()J f +MD net/minecraft/world/storage/WorldInfo setBorderDamagePerBlock (D)V f +MD net/minecraft/world/storage/WorldInfo setThunderTime (I)V f +MD net/minecraft/world/storage/WorldInfo access$500 (Lnet/minecraft/world/storage/WorldInfo;)I f +MD net/minecraft/world/storage/WorldInfo setMapFeaturesEnabled (Z)V f +MD net/minecraft/world/storage/WorldInfo getWorldTime ()J g +MD net/minecraft/world/storage/WorldInfo setRainTime (I)V g +MD net/minecraft/world/storage/WorldInfo access$600 (Lnet/minecraft/world/storage/WorldInfo;)J g +MD net/minecraft/world/storage/WorldInfo setHardcore (Z)V g +MD net/minecraft/world/storage/WorldInfo getSizeOnDisk ()J h +MD net/minecraft/world/storage/WorldInfo access$700 (Lnet/minecraft/world/storage/WorldInfo;)J h +MD net/minecraft/world/storage/WorldInfo getPlayerNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; i +MD net/minecraft/world/storage/WorldInfo setCleanWeatherTime (I)V i +MD net/minecraft/world/storage/WorldInfo access$800 (Lnet/minecraft/world/storage/WorldInfo;)I i +MD net/minecraft/world/storage/WorldInfo setBorderWarningDistance (I)V j +MD net/minecraft/world/storage/WorldInfo access$900 (Lnet/minecraft/world/storage/WorldInfo;)I j +MD net/minecraft/world/storage/WorldInfo getWorldName ()Ljava/lang/String; k +MD net/minecraft/world/storage/WorldInfo setBorderWarningTime (I)V k +MD net/minecraft/world/storage/WorldInfo access$1000 (Lnet/minecraft/world/storage/WorldInfo;)I k +MD net/minecraft/world/storage/WorldInfo getSaveVersion ()I l +MD net/minecraft/world/storage/WorldInfo access$1100 (Lnet/minecraft/world/storage/WorldInfo;)Z l +MD net/minecraft/world/storage/WorldInfo getLastTimePlayed ()J m +MD net/minecraft/world/storage/WorldInfo access$1200 (Lnet/minecraft/world/storage/WorldInfo;)I m +MD net/minecraft/world/storage/WorldInfo isThundering ()Z n +MD net/minecraft/world/storage/WorldInfo access$1300 (Lnet/minecraft/world/storage/WorldInfo;)Z n +MD net/minecraft/world/storage/WorldInfo getThunderTime ()I o +MD net/minecraft/world/storage/WorldInfo access$1400 (Lnet/minecraft/world/storage/WorldInfo;)Lnet/minecraft/world/WorldSettings$GameType; o +MD net/minecraft/world/storage/WorldInfo isRaining ()Z p +MD net/minecraft/world/storage/WorldInfo access$1500 (Lnet/minecraft/world/storage/WorldInfo;)Z p +MD net/minecraft/world/storage/WorldInfo getRainTime ()I q +MD net/minecraft/world/storage/WorldInfo access$1600 (Lnet/minecraft/world/storage/WorldInfo;)Z q +MD net/minecraft/world/storage/WorldInfo getGameType ()Lnet/minecraft/world/WorldSettings$GameType; r +MD net/minecraft/world/storage/WorldInfo isMapFeaturesEnabled ()Z s +MD net/minecraft/world/storage/WorldInfo isHardcoreModeEnabled ()Z t +MD net/minecraft/world/storage/WorldInfo getTerrainType ()Lnet/minecraft/world/WorldType; u +MD net/minecraft/world/storage/WorldInfo areCommandsAllowed ()Z v +MD net/minecraft/world/storage/WorldInfo isInitialized ()Z w +MD net/minecraft/world/storage/WorldInfo getGameRulesInstance ()Lnet/minecraft/world/GameRules; x +MD net/minecraft/world/storage/WorldInfo getDifficulty ()Lnet/minecraft/world/EnumDifficulty; y +MD net/minecraft/world/storage/WorldInfo isDifficultyLocked ()Z z +MD net/minecraft/world/storage/WorldInfo$1 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$2 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$3 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$4 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$4 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$5 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$5 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$6 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$6 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$7 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$7 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$8 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$8 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$9 call ()Ljava/lang/String; a +MD net/minecraft/world/storage/WorldInfo$9 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/ISaveHandler flush ()V a +MD net/minecraft/world/storage/ISaveHandler getChunkLoader (Lnet/minecraft/world/WorldProvider;)Lnet/minecraft/world/chunk/storage/IChunkLoader; a +MD net/minecraft/world/storage/ISaveHandler saveWorldInfo (Lnet/minecraft/world/storage/WorldInfo;)V a +MD net/minecraft/world/storage/ISaveHandler saveWorldInfoWithPlayer (Lnet/minecraft/world/storage/WorldInfo;Lnet/minecraft/nbt/NBTTagCompound;)V a +MD net/minecraft/world/storage/ISaveHandler getMapFileFromName (Ljava/lang/String;)Ljava/io/File; a +MD net/minecraft/world/storage/ISaveHandler getWorldDirectory ()Ljava/io/File; b +MD net/minecraft/world/storage/ISaveHandler checkSessionLock ()V c +MD net/minecraft/world/storage/ISaveHandler loadWorldInfo ()Lnet/minecraft/world/storage/WorldInfo; d +MD net/minecraft/world/storage/ISaveHandler getPlayerNBTManager ()Lnet/minecraft/world/storage/IPlayerFileData; e +MD net/minecraft/world/storage/ISaveHandler getWorldDirectoryName ()Ljava/lang/String; g +MD net/minecraft/world/storage/ISaveFormat getName ()Ljava/lang/String; a +MD net/minecraft/world/storage/ISaveFormat isConvertible (Ljava/lang/String;)Z a +MD net/minecraft/world/storage/ISaveFormat renameWorld (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/world/storage/ISaveFormat convertMapFormat (Ljava/lang/String;Lnet/minecraft/util/IProgressUpdate;)Z a +MD net/minecraft/world/storage/ISaveFormat getSaveLoader (Ljava/lang/String;Z)Lnet/minecraft/world/storage/ISaveHandler; a +MD net/minecraft/world/storage/ISaveFormat getSaveList ()Ljava/util/List; b +MD net/minecraft/world/storage/ISaveFormat isOldMapFormat (Ljava/lang/String;)Z b +MD net/minecraft/world/storage/ISaveFormat getWorldInfo (Ljava/lang/String;)Lnet/minecraft/world/storage/WorldInfo; c +MD net/minecraft/world/storage/ISaveFormat flushCache ()V d +MD net/minecraft/world/storage/ISaveFormat isNewLevelIdAcceptable (Ljava/lang/String;)Z d +MD net/minecraft/world/storage/ISaveFormat deleteWorldDirectory (Ljava/lang/String;)Z e +MD net/minecraft/world/storage/ISaveFormat canLoadWorld (Ljava/lang/String;)Z f +MD net/minecraft/world/storage/SaveFormatComparator getFileName ()Ljava/lang/String; a +MD net/minecraft/world/storage/SaveFormatComparator compareTo (Lnet/minecraft/world/storage/SaveFormatComparator;)I a +MD net/minecraft/world/storage/SaveFormatComparator getDisplayName ()Ljava/lang/String; b +MD net/minecraft/world/storage/SaveFormatComparator getSizeOnDisk ()J c +MD net/minecraft/world/storage/SaveFormatComparator requiresConversion ()Z d +MD net/minecraft/world/storage/SaveFormatComparator getLastTimePlayed ()J e +MD net/minecraft/world/storage/SaveFormatComparator getEnumGameType ()Lnet/minecraft/world/WorldSettings$GameType; f +MD net/minecraft/world/storage/SaveFormatComparator isHardcoreModeEnabled ()Z g +MD net/minecraft/world/storage/SaveFormatComparator getCheatsEnabled ()Z h +MD net/minecraft/world/storage/SaveFormatComparator compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/world/storage/IPlayerFileData writePlayerData (Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/world/storage/IPlayerFileData readPlayerData (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/nbt/NBTTagCompound; b +MD net/minecraft/world/storage/IPlayerFileData getAvailablePlayerDat ()[Ljava/lang/String; f +MD net/minecraft/world/storage/MapStorage saveAllData ()V a +MD net/minecraft/world/storage/MapStorage saveData (Lnet/minecraft/world/WorldSavedData;)V a +MD net/minecraft/world/storage/MapStorage loadData (Ljava/lang/Class;Ljava/lang/String;)Lnet/minecraft/world/WorldSavedData; a +MD net/minecraft/world/storage/MapStorage getUniqueDataId (Ljava/lang/String;)I a +MD net/minecraft/world/storage/MapStorage setData (Ljava/lang/String;Lnet/minecraft/world/WorldSavedData;)V a +MD net/minecraft/world/storage/MapStorage loadIdCounts ()V b +MD net/minecraft/world/storage/ThreadedFileIOBase getThreadedIOInstance ()Lnet/minecraft/world/storage/ThreadedFileIOBase; a +MD net/minecraft/world/storage/ThreadedFileIOBase queueIO (Lnet/minecraft/world/storage/IThreadedFileIO;)V a +MD net/minecraft/world/storage/ThreadedFileIOBase waitForFinish ()V b +MD net/minecraft/world/storage/ThreadedFileIOBase processQueue ()V c +MD net/minecraft/world/storage/ThreadedFileIOBase run ()V run +MD net/minecraft/world/storage/IThreadedFileIO writeNextIO ()Z c +MD net/minecraft/util/AxisAlignedBB getAverageEdgeLength ()D a +MD net/minecraft/util/AxisAlignedBB addCoord (DDD)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/util/AxisAlignedBB fromBounds (DDDDDD)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/util/AxisAlignedBB union (Lnet/minecraft/util/AxisAlignedBB;)Lnet/minecraft/util/AxisAlignedBB; a +MD net/minecraft/util/AxisAlignedBB calculateXOffset (Lnet/minecraft/util/AxisAlignedBB;D)D a +MD net/minecraft/util/AxisAlignedBB isVecInside (Lnet/minecraft/util/Vec3;)Z a +MD net/minecraft/util/AxisAlignedBB calculateIntercept (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; a +MD net/minecraft/util/AxisAlignedBB hasNaN ()Z b +MD net/minecraft/util/AxisAlignedBB expand (DDD)Lnet/minecraft/util/AxisAlignedBB; b +MD net/minecraft/util/AxisAlignedBB intersectsWith (Lnet/minecraft/util/AxisAlignedBB;)Z b +MD net/minecraft/util/AxisAlignedBB calculateYOffset (Lnet/minecraft/util/AxisAlignedBB;D)D b +MD net/minecraft/util/AxisAlignedBB isVecInYZ (Lnet/minecraft/util/Vec3;)Z b +MD net/minecraft/util/AxisAlignedBB offset (DDD)Lnet/minecraft/util/AxisAlignedBB; c +MD net/minecraft/util/AxisAlignedBB calculateZOffset (Lnet/minecraft/util/AxisAlignedBB;D)D c +MD net/minecraft/util/AxisAlignedBB isVecInXZ (Lnet/minecraft/util/Vec3;)Z c +MD net/minecraft/util/AxisAlignedBB contract (DDD)Lnet/minecraft/util/AxisAlignedBB; d +MD net/minecraft/util/AxisAlignedBB isVecInXY (Lnet/minecraft/util/Vec3;)Z d +MD net/minecraft/util/AxisAlignedBB toString ()Ljava/lang/String; toString +MD net/minecraft/util/MovingObjectPosition getBlockPos ()Lnet/minecraft/util/BlockPos; a +MD net/minecraft/util/MovingObjectPosition toString ()Ljava/lang/String; toString +MD net/minecraft/util/MovingObjectPosition$MovingObjectType valueOf (Ljava/lang/String;)Lnet/minecraft/util/MovingObjectPosition$MovingObjectType; valueOf +MD net/minecraft/util/MovingObjectPosition$MovingObjectType values ()[Lnet/minecraft/util/MovingObjectPosition$MovingObjectType; values +MD net/minecraft/util/Vec3 normalize ()Lnet/minecraft/util/Vec3; a +MD net/minecraft/util/Vec3 subtract (DDD)Lnet/minecraft/util/Vec3; a +MD net/minecraft/util/Vec3 rotatePitch (F)Lnet/minecraft/util/Vec3; a +MD net/minecraft/util/Vec3 subtractReverse (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; a +MD net/minecraft/util/Vec3 getIntermediateWithXValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; a +MD net/minecraft/util/Vec3 lengthVector ()D b +MD net/minecraft/util/Vec3 addVector (DDD)Lnet/minecraft/util/Vec3; b +MD net/minecraft/util/Vec3 rotateYaw (F)Lnet/minecraft/util/Vec3; b +MD net/minecraft/util/Vec3 dotProduct (Lnet/minecraft/util/Vec3;)D b +MD net/minecraft/util/Vec3 getIntermediateWithYValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; b +MD net/minecraft/util/Vec3 crossProduct (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; c +MD net/minecraft/util/Vec3 getIntermediateWithZValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; c +MD net/minecraft/util/Vec3 subtract (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; d +MD net/minecraft/util/Vec3 add (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; e +MD net/minecraft/util/Vec3 distanceTo (Lnet/minecraft/util/Vec3;)D f +MD net/minecraft/util/Vec3 squareDistanceTo (Lnet/minecraft/util/Vec3;)D g +MD net/minecraft/util/Vec3 toString ()Ljava/lang/String; toString +MD net/minecraft/scoreboard/ScoreObjective getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; a +MD net/minecraft/scoreboard/ScoreObjective setRenderType (Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType;)V a +MD net/minecraft/scoreboard/ScoreObjective setDisplayName (Ljava/lang/String;)V a +MD net/minecraft/scoreboard/ScoreObjective getName ()Ljava/lang/String; b +MD net/minecraft/scoreboard/ScoreObjective getCriteria ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria; c +MD net/minecraft/scoreboard/ScoreObjective getDisplayName ()Ljava/lang/String; d +MD net/minecraft/scoreboard/ScoreObjective getRenderType ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; e +MD net/minecraft/scoreboard/ScorePlayerTeam func_98298_a (I)V a +MD net/minecraft/scoreboard/ScorePlayerTeam setChatFormat (Lnet/minecraft/util/EnumChatFormatting;)V a +MD net/minecraft/scoreboard/ScorePlayerTeam setNameTagVisibility (Lnet/minecraft/scoreboard/Team$EnumVisible;)V a +MD net/minecraft/scoreboard/ScorePlayerTeam formatPlayerName (Lnet/minecraft/scoreboard/Team;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/scoreboard/ScorePlayerTeam setTeamName (Ljava/lang/String;)V a +MD net/minecraft/scoreboard/ScorePlayerTeam setAllowFriendlyFire (Z)V a +MD net/minecraft/scoreboard/ScorePlayerTeam setDeathMessageVisibility (Lnet/minecraft/scoreboard/Team$EnumVisible;)V b +MD net/minecraft/scoreboard/ScorePlayerTeam setNamePrefix (Ljava/lang/String;)V b +MD net/minecraft/scoreboard/ScorePlayerTeam setSeeFriendlyInvisiblesEnabled (Z)V b +MD net/minecraft/scoreboard/ScorePlayerTeam getTeamName ()Ljava/lang/String; c +MD net/minecraft/scoreboard/ScorePlayerTeam setNameSuffix (Ljava/lang/String;)V c +MD net/minecraft/scoreboard/ScorePlayerTeam getColorPrefix ()Ljava/lang/String; e +MD net/minecraft/scoreboard/ScorePlayerTeam getColorSuffix ()Ljava/lang/String; f +MD net/minecraft/scoreboard/ScorePlayerTeam func_98299_i ()I k +MD net/minecraft/scoreboard/ScorePlayerTeam getChatFormat ()Lnet/minecraft/util/EnumChatFormatting; l +MD net/minecraft/scoreboard/Score func_96648_a ()V a +MD net/minecraft/scoreboard/Score increseScore (I)V a +MD net/minecraft/scoreboard/Score func_96651_a (Ljava/util/List;)V a +MD net/minecraft/scoreboard/Score setLocked (Z)V a +MD net/minecraft/scoreboard/Score decreaseScore (I)V b +MD net/minecraft/scoreboard/Score getScorePoints ()I c +MD net/minecraft/scoreboard/Score setScorePoints (I)V c +MD net/minecraft/scoreboard/Score getObjective ()Lnet/minecraft/scoreboard/ScoreObjective; d +MD net/minecraft/scoreboard/Score getPlayerName ()Ljava/lang/String; e +MD net/minecraft/scoreboard/Score getScoreScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; f +MD net/minecraft/scoreboard/Score isLocked ()Z g +MD net/minecraft/scoreboard/Score$1 compare (Lnet/minecraft/scoreboard/Score;Lnet/minecraft/scoreboard/Score;)I a +MD net/minecraft/scoreboard/Score$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/scoreboard/Scoreboard getObjectiveInDisplaySlot (I)Lnet/minecraft/scoreboard/ScoreObjective; a +MD net/minecraft/scoreboard/Scoreboard setObjectiveInDisplaySlot (ILnet/minecraft/scoreboard/ScoreObjective;)V a +MD net/minecraft/scoreboard/Scoreboard onScoreObjectiveAdded (Lnet/minecraft/scoreboard/ScoreObjective;)V a +MD net/minecraft/scoreboard/Scoreboard broadcastTeamCreated (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V a +MD net/minecraft/scoreboard/Scoreboard func_96536_a (Lnet/minecraft/scoreboard/Score;)V a +MD net/minecraft/scoreboard/Scoreboard getObjectivesFromCriteria (Lnet/minecraft/scoreboard/IScoreObjectiveCriteria;)Ljava/util/Collection; a +MD net/minecraft/scoreboard/Scoreboard func_96516_a (Ljava/lang/String;)V a +MD net/minecraft/scoreboard/Scoreboard func_178820_a (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)V a +MD net/minecraft/scoreboard/Scoreboard removePlayerFromTeam (Ljava/lang/String;Lnet/minecraft/scoreboard/ScorePlayerTeam;)V a +MD net/minecraft/scoreboard/Scoreboard addScoreObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/IScoreObjectiveCriteria;)Lnet/minecraft/scoreboard/ScoreObjective; a +MD net/minecraft/scoreboard/Scoreboard addPlayerToTeam (Ljava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/scoreboard/Scoreboard func_181140_a (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/scoreboard/Scoreboard getObjectiveDisplaySlot (I)Ljava/lang/String; b +MD net/minecraft/scoreboard/Scoreboard onObjectiveDisplayNameChanged (Lnet/minecraft/scoreboard/ScoreObjective;)V b +MD net/minecraft/scoreboard/Scoreboard sendTeamUpdate (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V b +MD net/minecraft/scoreboard/Scoreboard getObjective (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScoreObjective; b +MD net/minecraft/scoreboard/Scoreboard entityHasObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)Z b +MD net/minecraft/scoreboard/Scoreboard getScoreObjectives ()Ljava/util/Collection; c +MD net/minecraft/scoreboard/Scoreboard onScoreObjectiveRemoved (Lnet/minecraft/scoreboard/ScoreObjective;)V c +MD net/minecraft/scoreboard/Scoreboard func_96513_c (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V c +MD net/minecraft/scoreboard/Scoreboard getObjectivesForEntity (Ljava/lang/String;)Ljava/util/Map; c +MD net/minecraft/scoreboard/Scoreboard getValueFromObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)Lnet/minecraft/scoreboard/Score; c +MD net/minecraft/scoreboard/Scoreboard getObjectiveNames ()Ljava/util/Collection; d +MD net/minecraft/scoreboard/Scoreboard removeTeam (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V d +MD net/minecraft/scoreboard/Scoreboard getTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; d +MD net/minecraft/scoreboard/Scoreboard removeObjectiveFromEntity (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)V d +MD net/minecraft/scoreboard/Scoreboard getScores ()Ljava/util/Collection; e +MD net/minecraft/scoreboard/Scoreboard createTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; e +MD net/minecraft/scoreboard/Scoreboard getTeamNames ()Ljava/util/Collection; f +MD net/minecraft/scoreboard/Scoreboard removePlayerFromTeams (Ljava/lang/String;)Z f +MD net/minecraft/scoreboard/Scoreboard getTeams ()Ljava/util/Collection; g +MD net/minecraft/scoreboard/Scoreboard getDisplaySlotStrings ()[Ljava/lang/String; h +MD net/minecraft/scoreboard/Scoreboard getPlayersTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; h +MD net/minecraft/scoreboard/Scoreboard getSortedScores (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/Collection; i +MD net/minecraft/scoreboard/Scoreboard getObjectiveDisplaySlotNumber (Ljava/lang/String;)I i +MD net/minecraft/scoreboard/Scoreboard removeObjective (Lnet/minecraft/scoreboard/ScoreObjective;)V k +MD net/minecraft/scoreboard/ScoreboardSaveData func_96496_a ()Lnet/minecraft/nbt/NBTTagList; a +MD net/minecraft/scoreboard/ScoreboardSaveData func_96502_a (Lnet/minecraft/scoreboard/ScorePlayerTeam;Lnet/minecraft/nbt/NBTTagList;)V a +MD net/minecraft/scoreboard/ScoreboardSaveData setScoreboard (Lnet/minecraft/scoreboard/Scoreboard;)V a +MD net/minecraft/scoreboard/ScoreboardSaveData readTeams (Lnet/minecraft/nbt/NBTTagList;)V a +MD net/minecraft/scoreboard/ScoreboardSaveData objectivesToNbt ()Lnet/minecraft/nbt/NBTTagList; b +MD net/minecraft/scoreboard/ScoreboardSaveData readObjectives (Lnet/minecraft/nbt/NBTTagList;)V b +MD net/minecraft/scoreboard/ScoreboardSaveData readDisplayConfig (Lnet/minecraft/nbt/NBTTagCompound;)V c +MD net/minecraft/scoreboard/ScoreboardSaveData readScores (Lnet/minecraft/nbt/NBTTagList;)V c +MD net/minecraft/scoreboard/ScoreboardSaveData func_96497_d (Lnet/minecraft/nbt/NBTTagCompound;)V d +MD net/minecraft/scoreboard/ScoreboardSaveData scoresToNbt ()Lnet/minecraft/nbt/NBTTagList; e +MD net/minecraft/scoreboard/Team isSameTeam (Lnet/minecraft/scoreboard/Team;)Z a +MD net/minecraft/scoreboard/Team getRegisteredName ()Ljava/lang/String; b +MD net/minecraft/scoreboard/Team getMembershipCollection ()Ljava/util/Collection; d +MD net/minecraft/scoreboard/Team formatString (Ljava/lang/String;)Ljava/lang/String; d +MD net/minecraft/scoreboard/Team getAllowFriendlyFire ()Z g +MD net/minecraft/scoreboard/Team getSeeFriendlyInvisiblesEnabled ()Z h +MD net/minecraft/scoreboard/Team getNameTagVisibility ()Lnet/minecraft/scoreboard/Team$EnumVisible; i +MD net/minecraft/scoreboard/Team getDeathMessageVisibility ()Lnet/minecraft/scoreboard/Team$EnumVisible; j +MD net/minecraft/scoreboard/Team$EnumVisible func_178825_a ()[Ljava/lang/String; a +MD net/minecraft/scoreboard/Team$EnumVisible func_178824_a (Ljava/lang/String;)Lnet/minecraft/scoreboard/Team$EnumVisible; a +MD net/minecraft/scoreboard/Team$EnumVisible valueOf (Ljava/lang/String;)Lnet/minecraft/scoreboard/Team$EnumVisible; valueOf +MD net/minecraft/scoreboard/Team$EnumVisible values ()[Lnet/minecraft/scoreboard/Team$EnumVisible; values +MD net/minecraft/scoreboard/IScoreObjectiveCriteria getName ()Ljava/lang/String; a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria setScore (Ljava/util/List;)I a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria isReadOnly ()Z b +MD net/minecraft/scoreboard/IScoreObjectiveCriteria getRenderType ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; c +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType func_178796_a ()Ljava/lang/String; a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType func_178795_a (Ljava/lang/String;)Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType valueOf (Ljava/lang/String;)Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; valueOf +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType values ()[Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; values +MD net/minecraft/client/renderer/ActiveRenderInfo getPosition ()Lnet/minecraft/util/Vec3; a +MD net/minecraft/client/renderer/ActiveRenderInfo getBlockAtEntityViewpoint (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;F)Lnet/minecraft/block/Block; a +MD net/minecraft/client/renderer/ActiveRenderInfo projectViewFromEntity (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/util/Vec3; a +MD net/minecraft/client/renderer/ActiveRenderInfo updateRenderInfo (Lnet/minecraft/entity/player/EntityPlayer;Z)V a +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationX ()F b +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationXZ ()F c +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationZ ()F d +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationYZ ()F e +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationXY ()F f +MD net/minecraft/client/gui/ChatLine getChatComponent ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/gui/ChatLine getUpdatedCounter ()I b +MD net/minecraft/client/gui/ChatLine getChatLineID ()I c +MD net/minecraft/client/settings/KeyBinding unPressAllKeys ()V a +MD net/minecraft/client/settings/KeyBinding onTick (I)V a +MD net/minecraft/client/settings/KeyBinding setKeyBindState (IZ)V a +MD net/minecraft/client/settings/KeyBinding compareTo (Lnet/minecraft/client/settings/KeyBinding;)I a +MD net/minecraft/client/settings/KeyBinding resetKeyBindingArrayAndHash ()V b +MD net/minecraft/client/settings/KeyBinding setKeyCode (I)V b +MD net/minecraft/client/settings/KeyBinding getKeybinds ()Ljava/util/Set; c +MD net/minecraft/client/settings/KeyBinding isKeyDown ()Z d +MD net/minecraft/client/settings/KeyBinding getKeyCategory ()Ljava/lang/String; e +MD net/minecraft/client/settings/KeyBinding isPressed ()Z f +MD net/minecraft/client/settings/KeyBinding getKeyDescription ()Ljava/lang/String; g +MD net/minecraft/client/settings/KeyBinding getKeyCodeDefault ()I h +MD net/minecraft/client/settings/KeyBinding getKeyCode ()I i +MD net/minecraft/client/settings/KeyBinding unpressKey ()V j +MD net/minecraft/client/settings/KeyBinding compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/renderer/RenderHelper disableStandardItemLighting ()V a +MD net/minecraft/client/renderer/RenderHelper setColorBuffer (DDDD)Ljava/nio/FloatBuffer; a +MD net/minecraft/client/renderer/RenderHelper setColorBuffer (FFFF)Ljava/nio/FloatBuffer; a +MD net/minecraft/client/renderer/RenderHelper enableStandardItemLighting ()V b +MD net/minecraft/client/renderer/RenderHelper enableGUIStandardItemLighting ()V c +MD net/minecraft/client/renderer/GLAllocation generateDisplayLists (I)I a +MD net/minecraft/client/renderer/GLAllocation deleteDisplayLists (II)V a +MD net/minecraft/client/renderer/GLAllocation deleteDisplayLists (I)V b +MD net/minecraft/client/renderer/GLAllocation createDirectByteBuffer (I)Ljava/nio/ByteBuffer; c +MD net/minecraft/client/renderer/GLAllocation createDirectIntBuffer (I)Ljava/nio/IntBuffer; f +MD net/minecraft/client/renderer/GLAllocation createDirectFloatBuffer (I)Ljava/nio/FloatBuffer; h +MD net/minecraft/client/Minecraft getMinecraft ()Lnet/minecraft/client/Minecraft; A +MD net/minecraft/client/Minecraft scheduleResourcesRefresh ()Lcom/google/common/util/concurrent/ListenableFuture; B +MD net/minecraft/client/Minecraft getGLMaximumTextureSize ()I C +MD net/minecraft/client/Minecraft getCurrentServerData ()Lnet/minecraft/client/multiplayer/ServerData; D +MD net/minecraft/client/Minecraft isIntegratedServerRunning ()Z E +MD net/minecraft/client/Minecraft isSingleplayer ()Z F +MD net/minecraft/client/Minecraft getIntegratedServer ()Lnet/minecraft/server/integrated/IntegratedServer; G +MD net/minecraft/client/Minecraft stopIntegratedServer ()V H +MD net/minecraft/client/Minecraft getPlayerUsageSnooper ()Lnet/minecraft/profiler/PlayerUsageSnooper; I +MD net/minecraft/client/Minecraft getSystemTime ()J J +MD net/minecraft/client/Minecraft isFullScreen ()Z K +MD net/minecraft/client/Minecraft getSession ()Lnet/minecraft/util/Session; L +MD net/minecraft/client/Minecraft getTwitchDetails ()Lcom/mojang/authlib/properties/PropertyMap; M +MD net/minecraft/client/Minecraft getProfileProperties ()Lcom/mojang/authlib/properties/PropertyMap; N +MD net/minecraft/client/Minecraft getProxy ()Ljava/net/Proxy; O +MD net/minecraft/client/Minecraft getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager; P +MD net/minecraft/client/Minecraft getResourceManager ()Lnet/minecraft/client/resources/IResourceManager; Q +MD net/minecraft/client/Minecraft getResourcePackRepository ()Lnet/minecraft/client/resources/ResourcePackRepository; R +MD net/minecraft/client/Minecraft getLanguageManager ()Lnet/minecraft/client/resources/LanguageManager; S +MD net/minecraft/client/Minecraft getTextureMapBlocks ()Lnet/minecraft/client/renderer/texture/TextureMap; T +MD net/minecraft/client/Minecraft isJava64bit ()Z U +MD net/minecraft/client/Minecraft isGamePaused ()Z V +MD net/minecraft/client/Minecraft getSoundHandler ()Lnet/minecraft/client/audio/SoundHandler; W +MD net/minecraft/client/Minecraft getAmbientMusicType ()Lnet/minecraft/client/audio/MusicTicker$MusicType; X +MD net/minecraft/client/Minecraft getTwitchStream ()Lnet/minecraft/client/stream/IStream; Y +MD net/minecraft/client/Minecraft dispatchKeypresses ()V Z +MD net/minecraft/client/Minecraft run ()V a +MD net/minecraft/client/Minecraft setDimensionAndSpawnPlayer (I)V a +MD net/minecraft/client/Minecraft resize (II)V a +MD net/minecraft/client/Minecraft draw (IIIIIIIIII)V a +MD net/minecraft/client/Minecraft displayDebugInfo (J)V a +MD net/minecraft/client/Minecraft access$000 (Lnet/minecraft/client/Minecraft;)Ljava/lang/String; a +MD net/minecraft/client/Minecraft displayGuiScreen (Lnet/minecraft/client/gui/GuiScreen;)V a +MD net/minecraft/client/Minecraft crashed (Lnet/minecraft/crash/CrashReport;)V a +MD net/minecraft/client/Minecraft loadWorld (Lnet/minecraft/client/multiplayer/WorldClient;)V a +MD net/minecraft/client/Minecraft loadWorld (Lnet/minecraft/client/multiplayer/WorldClient;Ljava/lang/String;)V a +MD net/minecraft/client/Minecraft setServerData (Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/Minecraft drawSplashScreen (Lnet/minecraft/client/renderer/texture/TextureManager;)V a +MD net/minecraft/client/Minecraft readImageToBuffer (Ljava/io/InputStream;)Ljava/nio/ByteBuffer; a +MD net/minecraft/client/Minecraft launchIntegratedServer (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/WorldSettings;)V a +MD net/minecraft/client/Minecraft addScheduledTask (Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/client/Minecraft setRenderViewEntity (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/client/Minecraft pickBlockWithNBT (Lnet/minecraft/item/Item;ILnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/client/Minecraft setConnectedToRealms (Z)V a +MD net/minecraft/client/Minecraft getCurrentAction ()Ljava/lang/String; aA +MD net/minecraft/client/Minecraft getSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; aa +MD net/minecraft/client/Minecraft getSkinManager ()Lnet/minecraft/client/resources/SkinManager; ab +MD net/minecraft/client/Minecraft getRenderViewEntity ()Lnet/minecraft/entity/Entity; ac +MD net/minecraft/client/Minecraft getBlockRendererDispatcher ()Lnet/minecraft/client/renderer/BlockRendererDispatcher; ae +MD net/minecraft/client/Minecraft getRenderManager ()Lnet/minecraft/client/renderer/entity/RenderManager; af +MD net/minecraft/client/Minecraft getRenderItem ()Lnet/minecraft/client/renderer/entity/RenderItem; ag +MD net/minecraft/client/Minecraft getItemRenderer ()Lnet/minecraft/client/renderer/ItemRenderer; ah +MD net/minecraft/client/Minecraft getDebugFPS ()I ai +MD net/minecraft/client/Minecraft getFrameTimer ()Lnet/minecraft/util/FrameTimer; aj +MD net/minecraft/client/Minecraft getSessionInfo ()Ljava/util/Map; ak +MD net/minecraft/client/Minecraft isConnectedToRealms ()Z al +MD net/minecraft/client/Minecraft startGame ()V am +MD net/minecraft/client/Minecraft registerMetadataSerializers ()V an +MD net/minecraft/client/Minecraft initStream ()V ao +MD net/minecraft/client/Minecraft createDisplay ()V ap +MD net/minecraft/client/Minecraft setInitialDisplayMode ()V aq +MD net/minecraft/client/Minecraft setWindowIcon ()V ar +MD net/minecraft/client/Minecraft isJvm64bit ()Z as +MD net/minecraft/client/Minecraft startTimerHackThread ()V at +MD net/minecraft/client/Minecraft updateDisplayMode ()V au +MD net/minecraft/client/Minecraft runGameLoop ()V av +MD net/minecraft/client/Minecraft clickMouse ()V aw +MD net/minecraft/client/Minecraft rightClickMouse ()V ax +MD net/minecraft/client/Minecraft updateFramebufferSize ()V ay +MD net/minecraft/client/Minecraft middleClickMouse ()V az +MD net/minecraft/client/Minecraft getFramebuffer ()Lnet/minecraft/client/shader/Framebuffer; b +MD net/minecraft/client/Minecraft updateDebugProfilerName (I)V b +MD net/minecraft/client/Minecraft access$100 (Lnet/minecraft/client/Minecraft;)Lnet/minecraft/client/resources/LanguageManager; b +MD net/minecraft/client/Minecraft addGraphicsAndWorldToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReport; b +MD net/minecraft/client/Minecraft checkGLError (Ljava/lang/String;)V b +MD net/minecraft/client/Minecraft sendClickBlockToController (Z)V b +MD net/minecraft/client/Minecraft getVersion ()Ljava/lang/String; c +MD net/minecraft/client/Minecraft displayCrashReport (Lnet/minecraft/crash/CrashReport;)V c +MD net/minecraft/client/Minecraft isUnicode ()Z d +MD net/minecraft/client/Minecraft refreshResources ()V e +MD net/minecraft/client/Minecraft getSaveLoader ()Lnet/minecraft/world/storage/ISaveFormat; f +MD net/minecraft/client/Minecraft shutdownMinecraftApplet ()V g +MD net/minecraft/client/Minecraft updateDisplay ()V h +MD net/minecraft/client/Minecraft checkWindowResize ()V i +MD net/minecraft/client/Minecraft getLimitFramerate ()I j +MD net/minecraft/client/Minecraft isFramerateLimitBelowMax ()Z k +MD net/minecraft/client/Minecraft freeMemory ()V l +MD net/minecraft/client/Minecraft shutdown ()V m +MD net/minecraft/client/Minecraft setIngameFocus ()V n +MD net/minecraft/client/Minecraft setIngameNotInFocus ()V o +MD net/minecraft/client/Minecraft displayInGameMenu ()V p +MD net/minecraft/client/Minecraft toggleFullscreen ()V q +MD net/minecraft/client/Minecraft getMusicTicker ()Lnet/minecraft/client/audio/MusicTicker; r +MD net/minecraft/client/Minecraft runTick ()V s +MD net/minecraft/client/Minecraft isDemo ()Z t +MD net/minecraft/client/Minecraft getNetHandler ()Lnet/minecraft/client/network/NetHandlerPlayClient; u +MD net/minecraft/client/Minecraft isGuiEnabled ()Z v +MD net/minecraft/client/Minecraft isFancyGraphicsEnabled ()Z w +MD net/minecraft/client/Minecraft isAmbientOcclusionEnabled ()Z x +MD net/minecraft/client/Minecraft$2 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$3 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$4 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$5 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$5 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$6 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$6 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$7 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$7 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$8 run ()V run +MD net/minecraft/client/Minecraft$11 run ()V run +MD net/minecraft/client/Minecraft$12 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$12 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$13 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$13 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$14 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$14 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$15 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$15 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$16 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$16 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$17 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$17 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$18 call ()Ljava/lang/String; a +MD net/minecraft/client/Minecraft$18 call ()Ljava/lang/Object; call +MD net/minecraft/util/MouseHelper grabMouseCursor ()V a +MD net/minecraft/util/MouseHelper ungrabMouseCursor ()V b +MD net/minecraft/util/MouseHelper mouseXYChange ()V c +MD net/minecraft/client/settings/GameSettings loadOptions ()V a +MD net/minecraft/client/settings/GameSettings isKeyDown (Lnet/minecraft/client/settings/KeyBinding;)Z a +MD net/minecraft/client/settings/GameSettings setOptionKeyBinding (Lnet/minecraft/client/settings/KeyBinding;I)V a +MD net/minecraft/client/settings/GameSettings getOptionFloatValue (Lnet/minecraft/client/settings/GameSettings$Options;)F a +MD net/minecraft/client/settings/GameSettings setOptionFloatValue (Lnet/minecraft/client/settings/GameSettings$Options;F)V a +MD net/minecraft/client/settings/GameSettings setOptionValue (Lnet/minecraft/client/settings/GameSettings$Options;I)V a +MD net/minecraft/client/settings/GameSettings getSoundLevel (Lnet/minecraft/client/audio/SoundCategory;)F a +MD net/minecraft/client/settings/GameSettings setSoundLevel (Lnet/minecraft/client/audio/SoundCategory;F)V a +MD net/minecraft/client/settings/GameSettings parseFloat (Ljava/lang/String;)F a +MD net/minecraft/client/settings/GameSettings switchModelPartEnabled (Lnet/minecraft/entity/player/EnumPlayerModelParts;)V a +MD net/minecraft/client/settings/GameSettings setModelPartEnabled (Lnet/minecraft/entity/player/EnumPlayerModelParts;Z)V a +MD net/minecraft/client/settings/GameSettings getTranslation ([Ljava/lang/String;I)Ljava/lang/String; a +MD net/minecraft/client/settings/GameSettings saveOptions ()V b +MD net/minecraft/client/settings/GameSettings getOptionOrdinalValue (Lnet/minecraft/client/settings/GameSettings$Options;)Z b +MD net/minecraft/client/settings/GameSettings sendSettingsToServer ()V c +MD net/minecraft/client/settings/GameSettings getKeyDisplayString (I)Ljava/lang/String; c +MD net/minecraft/client/settings/GameSettings getKeyBinding (Lnet/minecraft/client/settings/GameSettings$Options;)Ljava/lang/String; c +MD net/minecraft/client/settings/GameSettings getModelParts ()Ljava/util/Set; d +MD net/minecraft/client/settings/GameSettings shouldRenderClouds ()I e +MD net/minecraft/client/settings/GameSettings isUsingNativeTransport ()Z f +MD net/minecraft/client/settings/GameSettings$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/client/settings/GameSettings$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/client/settings/GameSettings$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/client/settings/GameSettings$Options getEnumFloat ()Z a +MD net/minecraft/client/settings/GameSettings$Options setValueMax (F)V a +MD net/minecraft/client/settings/GameSettings$Options getEnumOptions (I)Lnet/minecraft/client/settings/GameSettings$Options; a +MD net/minecraft/client/settings/GameSettings$Options access$000 (Lnet/minecraft/client/settings/GameSettings$Options;)F a +MD net/minecraft/client/settings/GameSettings$Options getEnumBoolean ()Z b +MD net/minecraft/client/settings/GameSettings$Options access$100 (Lnet/minecraft/client/settings/GameSettings$Options;)F b +MD net/minecraft/client/settings/GameSettings$Options returnEnumOrdinal ()I c +MD net/minecraft/client/settings/GameSettings$Options normalizeValue (F)F c +MD net/minecraft/client/settings/GameSettings$Options getEnumString ()Ljava/lang/String; d +MD net/minecraft/client/settings/GameSettings$Options denormalizeValue (F)F d +MD net/minecraft/client/settings/GameSettings$Options snapToStepClamp (F)F e +MD net/minecraft/client/settings/GameSettings$Options getValueMax ()F f +MD net/minecraft/client/settings/GameSettings$Options snapToStep (F)F f +MD net/minecraft/client/settings/GameSettings$Options valueOf (Ljava/lang/String;)Lnet/minecraft/client/settings/GameSettings$Options; valueOf +MD net/minecraft/client/settings/GameSettings$Options values ()[Lnet/minecraft/client/settings/GameSettings$Options; values +MD net/minecraft/client/LoadingScreenRenderer displayString (Ljava/lang/String;)V d +MD net/minecraft/util/ScreenShotHelper getTimestampedPNGFileForDirectory (Ljava/io/File;)Ljava/io/File; a +MD net/minecraft/util/ScreenShotHelper saveScreenshot (Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/ScreenShotHelper saveScreenshot (Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/util/Timer updateTimer ()V a +MD net/minecraft/util/Session getSessionID ()Ljava/lang/String; a +MD net/minecraft/util/Session getPlayerID ()Ljava/lang/String; b +MD net/minecraft/util/Session getUsername ()Ljava/lang/String; c +MD net/minecraft/util/Session getToken ()Ljava/lang/String; d +MD net/minecraft/util/Session getProfile ()Lcom/mojang/authlib/GameProfile; e +MD net/minecraft/util/Session getSessionType ()Lnet/minecraft/util/Session$Type; f +MD net/minecraft/util/Session$Type setSessionType (Ljava/lang/String;)Lnet/minecraft/util/Session$Type; a +MD net/minecraft/util/Session$Type valueOf (Ljava/lang/String;)Lnet/minecraft/util/Session$Type; valueOf +MD net/minecraft/util/Session$Type values ()[Lnet/minecraft/util/Session$Type; values +MD net/minecraft/client/gui/FontRenderer getUnicodeFlag ()Z a +MD net/minecraft/client/gui/FontRenderer getCharWidth (C)I a +MD net/minecraft/client/gui/FontRenderer renderChar (CZ)F a +MD net/minecraft/client/gui/FontRenderer getUnicodePageLocation (I)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/gui/FontRenderer renderDefaultChar (IZ)F a +MD net/minecraft/client/gui/FontRenderer getStringWidth (Ljava/lang/String;)I a +MD net/minecraft/client/gui/FontRenderer drawStringWithShadow (Ljava/lang/String;FFI)I a +MD net/minecraft/client/gui/FontRenderer drawString (Ljava/lang/String;FFIZ)I a +MD net/minecraft/client/gui/FontRenderer trimStringToWidth (Ljava/lang/String;I)Ljava/lang/String; a +MD net/minecraft/client/gui/FontRenderer drawString (Ljava/lang/String;III)I a +MD net/minecraft/client/gui/FontRenderer drawSplitString (Ljava/lang/String;IIII)V a +MD net/minecraft/client/gui/FontRenderer renderStringAligned (Ljava/lang/String;IIIIZ)I a +MD net/minecraft/client/gui/FontRenderer renderSplitString (Ljava/lang/String;IIIZ)V a +MD net/minecraft/client/gui/FontRenderer trimStringToWidth (Ljava/lang/String;IZ)Ljava/lang/String; a +MD net/minecraft/client/gui/FontRenderer renderStringAtPos (Ljava/lang/String;Z)V a +MD net/minecraft/client/gui/FontRenderer setUnicodeFlag (Z)V a +MD net/minecraft/client/gui/FontRenderer getBidiFlag ()Z b +MD net/minecraft/client/gui/FontRenderer getColorCode (C)I b +MD net/minecraft/client/gui/FontRenderer renderUnicodeChar (CZ)F b +MD net/minecraft/client/gui/FontRenderer loadGlyphTexture (I)V b +MD net/minecraft/client/gui/FontRenderer getFormatFromString (Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/client/gui/FontRenderer renderString (Ljava/lang/String;FFIZ)I b +MD net/minecraft/client/gui/FontRenderer splitStringWidth (Ljava/lang/String;I)I b +MD net/minecraft/client/gui/FontRenderer setBidiFlag (Z)V b +MD net/minecraft/client/gui/FontRenderer readFontTexture ()V c +MD net/minecraft/client/gui/FontRenderer isFormatColor (C)Z c +MD net/minecraft/client/gui/FontRenderer bidiReorder (Ljava/lang/String;)Ljava/lang/String; c +MD net/minecraft/client/gui/FontRenderer listFormattedStringToWidth (Ljava/lang/String;I)Ljava/util/List; c +MD net/minecraft/client/gui/FontRenderer readGlyphSizes ()V d +MD net/minecraft/client/gui/FontRenderer isFormatSpecial (C)Z d +MD net/minecraft/client/gui/FontRenderer trimStringNewline (Ljava/lang/String;)Ljava/lang/String; d +MD net/minecraft/client/gui/FontRenderer wrapFormattedStringToWidth (Ljava/lang/String;I)Ljava/lang/String; d +MD net/minecraft/client/gui/FontRenderer resetStyles ()V e +MD net/minecraft/client/gui/FontRenderer sizeStringToWidth (Ljava/lang/String;I)I e +MD net/minecraft/client/gui/GuiIngame setDefaultTitlesTimes ()V a +MD net/minecraft/client/gui/GuiIngame renderGameOverlay (F)V a +MD net/minecraft/client/gui/GuiIngame renderVignette (FLnet/minecraft/client/gui/ScaledResolution;)V a +MD net/minecraft/client/gui/GuiIngame renderHotbarItem (IIIFLnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/client/gui/GuiIngame renderScoreboard (Lnet/minecraft/scoreboard/ScoreObjective;Lnet/minecraft/client/gui/ScaledResolution;)V a +MD net/minecraft/client/gui/GuiIngame renderSelectedItem (Lnet/minecraft/client/gui/ScaledResolution;)V a +MD net/minecraft/client/gui/GuiIngame renderTooltip (Lnet/minecraft/client/gui/ScaledResolution;F)V a +MD net/minecraft/client/gui/GuiIngame renderHorseJumpBar (Lnet/minecraft/client/gui/ScaledResolution;I)V a +MD net/minecraft/client/gui/GuiIngame setRecordPlaying (Lnet/minecraft/util/IChatComponent;Z)V a +MD net/minecraft/client/gui/GuiIngame setRecordPlayingMessage (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiIngame displayTitle (Ljava/lang/String;Ljava/lang/String;III)V a +MD net/minecraft/client/gui/GuiIngame setRecordPlaying (Ljava/lang/String;Z)V a +MD net/minecraft/client/gui/GuiIngame showCrosshair ()Z b +MD net/minecraft/client/gui/GuiIngame renderPortal (FLnet/minecraft/client/gui/ScaledResolution;)V b +MD net/minecraft/client/gui/GuiIngame renderDemo (Lnet/minecraft/client/gui/ScaledResolution;)V b +MD net/minecraft/client/gui/GuiIngame renderExpBar (Lnet/minecraft/client/gui/ScaledResolution;I)V b +MD net/minecraft/client/gui/GuiIngame updateTick ()V c +MD net/minecraft/client/gui/GuiIngame renderStreamIndicator (Lnet/minecraft/client/gui/ScaledResolution;)V c +MD net/minecraft/client/gui/GuiIngame getChatGUI ()Lnet/minecraft/client/gui/GuiNewChat; d +MD net/minecraft/client/gui/GuiIngame renderPlayerStats (Lnet/minecraft/client/gui/ScaledResolution;)V d +MD net/minecraft/client/gui/GuiIngame getUpdateCounter ()I e +MD net/minecraft/client/gui/GuiIngame renderPumpkinOverlay (Lnet/minecraft/client/gui/ScaledResolution;)V e +MD net/minecraft/client/gui/GuiIngame getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; f +MD net/minecraft/client/gui/GuiIngame getSpectatorGui ()Lnet/minecraft/client/gui/GuiSpectator; g +MD net/minecraft/client/gui/GuiIngame getTabList ()Lnet/minecraft/client/gui/GuiPlayerTabOverlay; h +MD net/minecraft/client/gui/GuiIngame resetPlayersOverlayFooterHeader ()V i +MD net/minecraft/client/gui/GuiIngame renderBossHealth ()V j +MD net/minecraft/client/gui/GuiIngame$1 apply (Lnet/minecraft/scoreboard/Score;)Z a +MD net/minecraft/client/gui/GuiIngame$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/Gui drawTexturedModalRect (FFIIII)V a +MD net/minecraft/client/gui/Gui drawModalRectWithCustomSizedTexture (IIFFIIFF)V a +MD net/minecraft/client/gui/Gui drawScaledCustomSizeModalRect (IIFFIIIIFF)V a +MD net/minecraft/client/gui/Gui drawHorizontalLine (IIII)V a +MD net/minecraft/client/gui/Gui drawRect (IIIII)V a +MD net/minecraft/client/gui/Gui drawGradientRect (IIIIII)V a +MD net/minecraft/client/gui/Gui drawTexturedModalRect (IILnet/minecraft/client/renderer/texture/TextureAtlasSprite;II)V a +MD net/minecraft/client/gui/Gui drawCenteredString (Lnet/minecraft/client/gui/FontRenderer;Ljava/lang/String;III)V a +MD net/minecraft/client/gui/Gui drawVerticalLine (IIII)V b +MD net/minecraft/client/gui/Gui drawTexturedModalRect (IIIIII)V b +MD net/minecraft/client/gui/Gui drawString (Lnet/minecraft/client/gui/FontRenderer;Ljava/lang/String;III)V c +MD net/minecraft/client/gui/MapItemRenderer clearLoadedMaps ()V a +MD net/minecraft/client/gui/MapItemRenderer updateMapTexture (Lnet/minecraft/world/storage/MapData;)V a +MD net/minecraft/client/gui/MapItemRenderer renderMap (Lnet/minecraft/world/storage/MapData;Z)V a +MD net/minecraft/client/gui/MapItemRenderer access$400 (Lnet/minecraft/client/gui/MapItemRenderer;)Lnet/minecraft/client/renderer/texture/TextureManager; a +MD net/minecraft/client/gui/MapItemRenderer access$500 ()Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/gui/MapItemRenderer getMapRendererInstance (Lnet/minecraft/world/storage/MapData;)Lnet/minecraft/client/gui/MapItemRenderer$Instance; b +MD net/minecraft/client/gui/MapItemRenderer$Instance updateMapTexture ()V a +MD net/minecraft/client/gui/MapItemRenderer$Instance access$000 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;)V a +MD net/minecraft/client/gui/MapItemRenderer$Instance access$100 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;Z)V a +MD net/minecraft/client/gui/MapItemRenderer$Instance render (Z)V a +MD net/minecraft/client/gui/MapItemRenderer$Instance access$300 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/gui/ScaledResolution getScaledWidth ()I a +MD net/minecraft/client/gui/ScaledResolution getScaledHeight ()I b +MD net/minecraft/client/gui/ScaledResolution getScaledWidth_double ()D c +MD net/minecraft/client/gui/ScaledResolution getScaledHeight_double ()D d +MD net/minecraft/client/gui/ScaledResolution getScaleFactor ()I e +MD net/minecraft/client/gui/GuiButton isMouseOver ()Z a +MD net/minecraft/client/gui/GuiButton setWidth (I)V a +MD net/minecraft/client/gui/GuiButton mouseReleased (II)V a +MD net/minecraft/client/gui/GuiButton drawButton (Lnet/minecraft/client/Minecraft;II)V a +MD net/minecraft/client/gui/GuiButton playPressSound (Lnet/minecraft/client/audio/SoundHandler;)V a +MD net/minecraft/client/gui/GuiButton getHoverState (Z)I a +MD net/minecraft/client/gui/GuiButton getButtonWidth ()I b +MD net/minecraft/client/gui/GuiButton drawButtonForegroundLayer (II)V b +MD net/minecraft/client/gui/GuiButton mouseDragged (Lnet/minecraft/client/Minecraft;II)V b +MD net/minecraft/client/gui/GuiButton mousePressed (Lnet/minecraft/client/Minecraft;II)Z c +MD net/minecraft/client/gui/GuiNewChat clearChatMessages ()V a +MD net/minecraft/client/gui/GuiNewChat calculateChatboxWidth (F)I a +MD net/minecraft/client/gui/GuiNewChat drawChat (I)V a +MD net/minecraft/client/gui/GuiNewChat getChatComponent (II)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/gui/GuiNewChat printChatMessage (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/client/gui/GuiNewChat printChatMessageWithOptionalDeletion (Lnet/minecraft/util/IChatComponent;I)V a +MD net/minecraft/client/gui/GuiNewChat setChatLine (Lnet/minecraft/util/IChatComponent;IIZ)V a +MD net/minecraft/client/gui/GuiNewChat addToSentMessages (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiNewChat refreshChat ()V b +MD net/minecraft/client/gui/GuiNewChat calculateChatboxHeight (F)I b +MD net/minecraft/client/gui/GuiNewChat scroll (I)V b +MD net/minecraft/client/gui/GuiNewChat getSentMessages ()Ljava/util/List; c +MD net/minecraft/client/gui/GuiNewChat deleteChatLine (I)V c +MD net/minecraft/client/gui/GuiNewChat resetScroll ()V d +MD net/minecraft/client/gui/GuiNewChat getChatOpen ()Z e +MD net/minecraft/client/gui/GuiNewChat getChatWidth ()I f +MD net/minecraft/client/gui/GuiNewChat getChatHeight ()I g +MD net/minecraft/client/gui/GuiNewChat getChatScale ()F h +MD net/minecraft/client/gui/GuiNewChat getLineCount ()I i +MD net/minecraft/client/gui/GuiUtilRenderComponents splitText (Lnet/minecraft/util/IChatComponent;ILnet/minecraft/client/gui/FontRenderer;ZZ)Ljava/util/List; a +MD net/minecraft/client/gui/GuiUtilRenderComponents func_178909_a (Ljava/lang/String;Z)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfoLeft ()V a +MD net/minecraft/client/gui/GuiOverlayDebug blendColors (IIF)I a +MD net/minecraft/client/gui/GuiOverlayDebug bytesToMb (J)J a +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfo (Lnet/minecraft/client/gui/ScaledResolution;)V a +MD net/minecraft/client/gui/GuiOverlayDebug call ()Ljava/util/List; b +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfoRight (Lnet/minecraft/client/gui/ScaledResolution;)V b +MD net/minecraft/client/gui/GuiOverlayDebug getDebugInfoRight ()Ljava/util/List; c +MD net/minecraft/client/gui/GuiOverlayDebug getFrameColor (IIII)I c +MD net/minecraft/client/gui/GuiOverlayDebug isReducedDebug ()Z d +MD net/minecraft/client/gui/GuiOverlayDebug renderLagometer ()V e +MD net/minecraft/client/gui/GuiTextField updateCursorCounter ()V a +MD net/minecraft/client/gui/GuiTextField textboxKeyTyped (CI)Z a +MD net/minecraft/client/gui/GuiTextField deleteWords (I)V a +MD net/minecraft/client/gui/GuiTextField getNthWordFromPos (II)I a +MD net/minecraft/client/gui/GuiTextField mouseClicked (III)V a +MD net/minecraft/client/gui/GuiTextField func_146197_a (IIZ)I a +MD net/minecraft/client/gui/GuiTextField func_175207_a (Lnet/minecraft/client/gui/GuiPageButtonList$GuiResponder;)V a +MD net/minecraft/client/gui/GuiTextField setValidator (Lcom/google/common/base/Predicate;)V a +MD net/minecraft/client/gui/GuiTextField setText (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiTextField setEnableBackgroundDrawing (Z)V a +MD net/minecraft/client/gui/GuiTextField getText ()Ljava/lang/String; b +MD net/minecraft/client/gui/GuiTextField deleteFromCursor (I)V b +MD net/minecraft/client/gui/GuiTextField writeText (Ljava/lang/String;)V b +MD net/minecraft/client/gui/GuiTextField setFocused (Z)V b +MD net/minecraft/client/gui/GuiTextField getSelectedText ()Ljava/lang/String; c +MD net/minecraft/client/gui/GuiTextField getNthWordFromCursor (I)I c +MD net/minecraft/client/gui/GuiTextField drawCursorVertical (IIII)V c +MD net/minecraft/client/gui/GuiTextField setEnabled (Z)V c +MD net/minecraft/client/gui/GuiTextField getId ()I d +MD net/minecraft/client/gui/GuiTextField moveCursorBy (I)V d +MD net/minecraft/client/gui/GuiTextField setCanLoseFocus (Z)V d +MD net/minecraft/client/gui/GuiTextField setCursorPositionZero ()V e +MD net/minecraft/client/gui/GuiTextField setCursorPosition (I)V e +MD net/minecraft/client/gui/GuiTextField setVisible (Z)V e +MD net/minecraft/client/gui/GuiTextField setCursorPositionEnd ()V f +MD net/minecraft/client/gui/GuiTextField setMaxStringLength (I)V f +MD net/minecraft/client/gui/GuiTextField drawTextBox ()V g +MD net/minecraft/client/gui/GuiTextField setTextColor (I)V g +MD net/minecraft/client/gui/GuiTextField getMaxStringLength ()I h +MD net/minecraft/client/gui/GuiTextField setDisabledTextColour (I)V h +MD net/minecraft/client/gui/GuiTextField getCursorPosition ()I i +MD net/minecraft/client/gui/GuiTextField setSelectionPos (I)V i +MD net/minecraft/client/gui/GuiTextField getEnableBackgroundDrawing ()Z j +MD net/minecraft/client/gui/GuiTextField isFocused ()Z m +MD net/minecraft/client/gui/GuiTextField getSelectionEnd ()I o +MD net/minecraft/client/gui/GuiTextField getWidth ()I p +MD net/minecraft/client/gui/GuiTextField getVisible ()Z r +MD net/minecraft/client/gui/GuiSlider func_175219_a (F)V a +MD net/minecraft/client/gui/GuiSlider func_175218_a (FZ)V a +MD net/minecraft/client/gui/GuiSlider func_175220_c ()F c +MD net/minecraft/client/gui/GuiSlider func_175217_d ()F d +MD net/minecraft/client/gui/GuiSlider getDisplayString ()Ljava/lang/String; e +MD net/minecraft/client/gui/GuiSlider$FormatHelper getText (ILjava/lang/String;F)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiLabel setCentered ()Lnet/minecraft/client/gui/GuiLabel; a +MD net/minecraft/client/gui/GuiLabel drawLabel (Lnet/minecraft/client/Minecraft;II)V a +MD net/minecraft/client/gui/GuiLabel func_175202_a (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiLabel drawLabelBackground (Lnet/minecraft/client/Minecraft;II)V b +MD net/minecraft/client/gui/GuiListButton func_175212_b (Z)V b +MD net/minecraft/client/gui/GuiListButton buildDisplayString ()Ljava/lang/String; c +MD net/minecraft/client/gui/GuiLockIconButton func_175229_b (Z)V b +MD net/minecraft/client/gui/GuiLockIconButton func_175230_c ()Z c +MD net/minecraft/client/gui/GuiLockIconButton$Icon func_178910_a ()I a +MD net/minecraft/client/gui/GuiLockIconButton$Icon func_178912_b ()I b +MD net/minecraft/client/gui/GuiLockIconButton$Icon valueOf (Ljava/lang/String;)Lnet/minecraft/client/gui/GuiLockIconButton$Icon; valueOf +MD net/minecraft/client/gui/GuiLockIconButton$Icon values ()[Lnet/minecraft/client/gui/GuiLockIconButton$Icon; values +MD net/minecraft/client/gui/GuiListExtended getListEntry (I)Lnet/minecraft/client/gui/GuiListExtended$IGuiListEntry; b +MD net/minecraft/client/gui/GuiListExtended mouseClicked (III)Z b +MD net/minecraft/client/gui/GuiListExtended mouseReleased (III)Z c +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry setSelected (III)V a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry mousePressed (IIIIII)Z a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry drawEntry (IIIIIIIZ)V a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry mouseReleased (IIIIII)V b +MD net/minecraft/client/gui/GuiOptionButton returnEnumOptions ()Lnet/minecraft/client/settings/GameSettings$Options; c +MD net/minecraft/client/gui/GuiOptionsRowList func_148182_a (Lnet/minecraft/client/Minecraft;IILnet/minecraft/client/settings/GameSettings$Options;)Lnet/minecraft/client/gui/GuiButton; a +MD net/minecraft/client/gui/GuiOptionsRowList getListEntry (I)Lnet/minecraft/client/gui/GuiOptionsRowList$Row; c +MD net/minecraft/client/gui/GuiPageButtonList func_178062_a (CI)V a +MD net/minecraft/client/gui/GuiPageButtonList func_178065_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry;)Lnet/minecraft/client/gui/GuiListButton; a +MD net/minecraft/client/gui/GuiPageButtonList func_178068_a (IILnet/minecraft/client/gui/GuiPageButtonList$EditBoxEntry;)Lnet/minecraft/client/gui/GuiTextField; a +MD net/minecraft/client/gui/GuiPageButtonList func_178063_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiLabelEntry;Z)Lnet/minecraft/client/gui/GuiLabel; a +MD net/minecraft/client/gui/GuiPageButtonList func_178067_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry;)Lnet/minecraft/client/gui/GuiSlider; a +MD net/minecraft/client/gui/GuiPageButtonList func_178066_a (Lnet/minecraft/client/gui/Gui;Z)V a +MD net/minecraft/client/gui/GuiPageButtonList func_178058_a (Lnet/minecraft/client/gui/GuiPageButtonList$GuiListEntry;IZ)Lnet/minecraft/client/gui/Gui; a +MD net/minecraft/client/gui/GuiPageButtonList func_181155_a (Z)V a +MD net/minecraft/client/gui/GuiPageButtonList func_181156_c (I)V c +MD net/minecraft/client/gui/GuiPageButtonList func_178061_c (I)Lnet/minecraft/client/gui/Gui; d +MD net/minecraft/client/gui/GuiPageButtonList func_178059_e ()I e +MD net/minecraft/client/gui/GuiPageButtonList getListEntry (I)Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry; e +MD net/minecraft/client/gui/GuiPageButtonList func_178060_e (II)V e +MD net/minecraft/client/gui/GuiPageButtonList func_178057_f ()I f +MD net/minecraft/client/gui/GuiPageButtonList func_178056_g ()Lnet/minecraft/client/gui/Gui; g +MD net/minecraft/client/gui/GuiPageButtonList func_178071_h ()V h +MD net/minecraft/client/gui/GuiPageButtonList func_178064_i ()V i +MD net/minecraft/client/gui/GuiPageButtonList func_178069_s ()V s +MD net/minecraft/client/gui/GuiPageButtonList func_178055_t ()V t +MD net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry func_178940_a ()Z a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder onTick (IF)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder func_175319_a (ILjava/lang/String;)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder func_175321_a (IZ)V a +MD net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry func_178950_a ()Lcom/google/common/base/Predicate; a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178022_a ()Lnet/minecraft/client/gui/Gui; a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178026_a (Lnet/minecraft/client/gui/Gui;III)Z a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178017_a (Lnet/minecraft/client/gui/Gui;IIIZ)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178023_a (Lnet/minecraft/client/gui/GuiButton;III)Z a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178024_a (Lnet/minecraft/client/gui/GuiButton;IIIZ)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178018_a (Lnet/minecraft/client/gui/GuiTextField;III)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178027_a (Lnet/minecraft/client/gui/GuiTextField;IZ)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178025_a (Lnet/minecraft/client/gui/GuiLabel;IIIZ)V a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$000 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178021_b ()Lnet/minecraft/client/gui/Gui; b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178016_b (Lnet/minecraft/client/gui/Gui;III)V b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178019_b (Lnet/minecraft/client/gui/GuiButton;III)V b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$100 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$200 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; c +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178935_b ()I b +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178936_c ()Ljava/lang/String; c +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178934_d ()Z d +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178945_a ()Lnet/minecraft/client/gui/GuiSlider$FormatHelper; a +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178943_e ()F e +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178944_f ()F f +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178942_g ()F g +MD net/minecraft/client/gui/GuiPlayerTabOverlay resetFooterHeader ()V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay drawPing (IIILnet/minecraft/client/network/NetworkPlayerInfo;)V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay renderPlayerlist (ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreObjective;)V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay drawScoreboardValues (Lnet/minecraft/scoreboard/ScoreObjective;ILjava/lang/String;IILnet/minecraft/client/network/NetworkPlayerInfo;)V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay getPlayerName (Lnet/minecraft/client/network/NetworkPlayerInfo;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiPlayerTabOverlay setFooter (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay updatePlayerList (Z)V a +MD net/minecraft/client/gui/GuiPlayerTabOverlay setHeader (Lnet/minecraft/util/IChatComponent;)V b +MD net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator compare (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/client/network/NetworkPlayerInfo;)I a +MD net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/GuiSlot drawBackground ()V a +MD net/minecraft/client/gui/GuiSlot isSelected (I)Z a +MD net/minecraft/client/gui/GuiSlot func_148132_a (II)V a +MD net/minecraft/client/gui/GuiSlot drawScreen (IIF)V a +MD net/minecraft/client/gui/GuiSlot func_178040_a (III)V a +MD net/minecraft/client/gui/GuiSlot setDimensions (IIII)V a +MD net/minecraft/client/gui/GuiSlot drawSlot (IIIIII)V a +MD net/minecraft/client/gui/GuiSlot drawListHeader (IILnet/minecraft/client/renderer/Tessellator;)V a +MD net/minecraft/client/gui/GuiSlot elementClicked (IZII)V a +MD net/minecraft/client/gui/GuiSlot actionPerformed (Lnet/minecraft/client/gui/GuiButton;)V a +MD net/minecraft/client/gui/GuiSlot setHasListHeader (ZI)V a +MD net/minecraft/client/gui/GuiSlot getSize ()I b +MD net/minecraft/client/gui/GuiSlot func_148142_b (II)V b +MD net/minecraft/client/gui/GuiSlot drawSelectionBox (IIII)V b +MD net/minecraft/client/gui/GuiSlot setShowSelectionBox (Z)V b +MD net/minecraft/client/gui/GuiSlot getListWidth ()I c +MD net/minecraft/client/gui/GuiSlot getSlotIndexFromScreenCoords (II)I c +MD net/minecraft/client/gui/GuiSlot overlayBackground (IIII)V c +MD net/minecraft/client/gui/GuiSlot getScrollBarX ()I d +MD net/minecraft/client/gui/GuiSlot registerScrollButtons (II)V d +MD net/minecraft/client/gui/GuiSlot setEnabled (Z)V d +MD net/minecraft/client/gui/GuiSlot isMouseYWithinSlotBounds (I)Z g +MD net/minecraft/client/gui/GuiSlot scrollBy (I)V h +MD net/minecraft/client/gui/GuiSlot setSlotXBoundsFromLeft (I)V i +MD net/minecraft/client/gui/GuiSlot getContentHeight ()I k +MD net/minecraft/client/gui/GuiSlot bindAmountScrolled ()V l +MD net/minecraft/client/gui/GuiSlot func_148135_f ()I m +MD net/minecraft/client/gui/GuiSlot getAmountScrolled ()I n +MD net/minecraft/client/gui/GuiSlot handleMouseInput ()V p +MD net/minecraft/client/gui/GuiSlot getEnabled ()Z q +MD net/minecraft/client/gui/GuiSlot getSlotHeight ()I r +MD net/minecraft/client/gui/GuiStreamIndicator updateStreamAlpha ()V a +MD net/minecraft/client/gui/GuiStreamIndicator render (II)V a +MD net/minecraft/client/gui/GuiStreamIndicator render (IIII)V a +MD net/minecraft/client/gui/GuiStreamIndicator func_152440_b ()I b +MD net/minecraft/client/gui/GuiStreamIndicator func_152438_c ()I c +MD net/minecraft/client/gui/GuiSpectator func_175262_a ()Z a +MD net/minecraft/client/gui/GuiSpectator func_175260_a (I)V a +MD net/minecraft/client/gui/GuiSpectator func_175266_a (IIFFLnet/minecraft/client/gui/spectator/ISpectatorMenuObject;)V a +MD net/minecraft/client/gui/GuiSpectator renderSelectedItem (Lnet/minecraft/client/gui/ScaledResolution;)V a +MD net/minecraft/client/gui/GuiSpectator renderTooltip (Lnet/minecraft/client/gui/ScaledResolution;F)V a +MD net/minecraft/client/gui/GuiSpectator func_175258_a (Lnet/minecraft/client/gui/ScaledResolution;FIFLnet/minecraft/client/gui/spectator/categories/SpectatorDetails;)V a +MD net/minecraft/client/gui/GuiSpectator func_175261_b ()V b +MD net/minecraft/client/gui/GuiSpectator func_175259_b (I)V b +MD net/minecraft/client/gui/GuiSpectator func_175265_c ()F c +MD net/minecraft/client/gui/GuiButtonRealmsProxy setText (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiButtonRealmsProxy setEnabled (Z)V b +MD net/minecraft/client/gui/GuiButtonRealmsProxy getId ()I c +MD net/minecraft/client/gui/GuiButtonRealmsProxy func_154312_c (Z)I c +MD net/minecraft/client/gui/GuiButtonRealmsProxy getEnabled ()Z d +MD net/minecraft/client/gui/GuiButtonRealmsProxy getPositionY ()I e +MD net/minecraft/client/gui/GuiButtonRealmsProxy getRealmsButton ()Lnet/minecraft/realms/RealmsButton; f +MD net/minecraft/client/gui/GuiButtonRealmsProxy getHeight ()I g +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178043_a (IIILnet/minecraft/realms/Tezzelator;)V a +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178044_e ()I e +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178042_f ()I f +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178045_g ()I g +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154321_a ()Lnet/minecraft/realms/RealmsScreen; a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154323_a (Ljava/lang/String;I)Ljava/util/List; a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154325_a (Ljava/lang/String;III)V a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154322_b (Ljava/lang/String;IIIZ)V a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154327_a (Lnet/minecraft/realms/RealmsButton;)V a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154319_c (Ljava/lang/String;III)V b +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154328_b (Lnet/minecraft/realms/RealmsButton;)V b +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154326_c (Ljava/lang/String;)I c +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154329_h ()I h +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154324_i ()V i +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154320_j ()Ljava/util/List; j +MD net/minecraft/client/gui/GuiSlotRealmsProxy getWidth ()I e +MD net/minecraft/client/gui/GuiSlotRealmsProxy getMouseY ()I f +MD net/minecraft/client/gui/GuiSlotRealmsProxy getMouseX ()I g +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getWidth ()I e +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getMouseY ()I f +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getMouseX ()I g +MD net/minecraft/client/gui/GuiChat autocompletePlayerNames ()V a +MD net/minecraft/client/gui/GuiChat sendAutocompleteRequest (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiChat onAutocompleteResponse ([Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiChat getSentHistory (I)V b +MD net/minecraft/client/gui/GuiConfirmOpenLink copyLinkToClipboard ()V a +MD net/minecraft/client/gui/GuiConfirmOpenLink disableSecurityWarning ()V f +MD net/minecraft/client/gui/GuiYesNoCallback confirmClicked (ZI)V a +MD net/minecraft/client/gui/GuiYesNo setButtonDelay (I)V b +MD net/minecraft/client/multiplayer/GuiConnecting access$300 ()Lorg/apache/logging/log4j/Logger; a +MD net/minecraft/client/multiplayer/GuiConnecting access$000 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Z a +MD net/minecraft/client/multiplayer/GuiConnecting access$102 (Lnet/minecraft/client/multiplayer/GuiConnecting;Lnet/minecraft/network/NetworkManager;)Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/client/multiplayer/GuiConnecting connect (Ljava/lang/String;I)V a +MD net/minecraft/client/multiplayer/GuiConnecting access$100 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Lnet/minecraft/network/NetworkManager; b +MD net/minecraft/client/multiplayer/GuiConnecting access$200 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Lnet/minecraft/client/gui/GuiScreen; c +MD net/minecraft/client/multiplayer/GuiConnecting$1 run ()V run +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146384_e ()Ljava/lang/String; a +MD net/minecraft/client/gui/GuiCreateFlatWorld access$000 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F a +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146383_a (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiCreateFlatWorld access$100 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F b +MD net/minecraft/client/gui/GuiCreateFlatWorld access$200 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F c +MD net/minecraft/client/gui/GuiCreateFlatWorld access$300 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F d +MD net/minecraft/client/gui/GuiCreateFlatWorld access$400 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)Lnet/minecraft/world/gen/FlatGeneratorInfo; e +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146375_g ()V f +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146382_i ()Z g +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148225_a (IILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148224_c (IIII)V d +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148226_e (II)V e +MD net/minecraft/client/gui/GuiCreateWorld calcSaveDirName ()V a +MD net/minecraft/client/gui/GuiCreateWorld recreateFromExistingWorld (Lnet/minecraft/world/storage/WorldInfo;)V a +MD net/minecraft/client/gui/GuiCreateWorld getUncollidingSaveDirName (Lnet/minecraft/world/storage/ISaveFormat;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiCreateWorld showMoreWorldOptions (Z)V a +MD net/minecraft/client/gui/GuiCreateWorld updateDisplayState ()V f +MD net/minecraft/client/gui/GuiCreateWorld canSelectCurWorldType ()Z g +MD net/minecraft/client/gui/GuiCreateWorld toggleMoreWorldOptions ()V h +MD net/minecraft/client/gui/GuiScreenCustomizePresets func_175304_a ()V a +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$100 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;)Lnet/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset; a +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$300 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V a +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$200 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;)Lnet/minecraft/client/gui/GuiTextField; b +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$400 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V b +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$500 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V c +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$600 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V d +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$000 ()Ljava/util/List; f +MD net/minecraft/client/gui/GuiScreenCustomizePresets func_175305_g ()Z g +MD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset func_178051_a (IILnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175323_a ()Ljava/lang/String; a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175327_a (F)V a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175324_a (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_181031_a (Z)V a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175322_b (I)V b +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175330_b (IF)Ljava/lang/String; b +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175329_a (Z)V b +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175325_f ()V f +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175326_g ()V g +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175331_h ()V h +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175328_i ()V i +MD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 apply (Ljava/lang/String;)Z a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/GuiScreenAddServer$1 apply (Ljava/lang/String;)Z a +MD net/minecraft/client/gui/GuiScreenAddServer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/GuiSleepMP wakeFromSleep ()V f +MD net/minecraft/client/gui/GuiLanguage access$000 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/resources/LanguageManager; a +MD net/minecraft/client/gui/GuiLanguage access$100 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/settings/GameSettings; b +MD net/minecraft/client/gui/GuiLanguage access$200 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/gui/GuiOptionButton; c +MD net/minecraft/client/gui/GuiLanguage access$300 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/gui/GuiOptionButton; d +MD net/minecraft/client/gui/GuiOptions func_175355_a (Lnet/minecraft/world/EnumDifficulty;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiFlatPresets func_146426_g ()V a +MD net/minecraft/client/gui/GuiFlatPresets access$000 (Lnet/minecraft/client/gui/GuiFlatPresets;)F a +MD net/minecraft/client/gui/GuiFlatPresets func_175354_a (Ljava/lang/String;Lnet/minecraft/item/Item;ILnet/minecraft/world/biome/BiomeGenBase;Ljava/util/List;[Lnet/minecraft/world/gen/FlatLayerInfo;)V a +MD net/minecraft/client/gui/GuiFlatPresets func_146421_a (Ljava/lang/String;Lnet/minecraft/item/Item;Lnet/minecraft/world/biome/BiomeGenBase;Ljava/util/List;[Lnet/minecraft/world/gen/FlatLayerInfo;)V a +MD net/minecraft/client/gui/GuiFlatPresets func_146425_a (Ljava/lang/String;Lnet/minecraft/item/Item;Lnet/minecraft/world/biome/BiomeGenBase;[Lnet/minecraft/world/gen/FlatLayerInfo;)V a +MD net/minecraft/client/gui/GuiFlatPresets access$100 (Lnet/minecraft/client/gui/GuiFlatPresets;)F b +MD net/minecraft/client/gui/GuiFlatPresets access$200 (Lnet/minecraft/client/gui/GuiFlatPresets;)F c +MD net/minecraft/client/gui/GuiFlatPresets access$300 (Lnet/minecraft/client/gui/GuiFlatPresets;)F d +MD net/minecraft/client/gui/GuiFlatPresets access$500 (Lnet/minecraft/client/gui/GuiFlatPresets;)Lnet/minecraft/client/gui/GuiFlatPresets$ListSlot; e +MD net/minecraft/client/gui/GuiFlatPresets access$400 ()Ljava/util/List; f +MD net/minecraft/client/gui/GuiFlatPresets access$600 (Lnet/minecraft/client/gui/GuiFlatPresets;)Lnet/minecraft/client/gui/GuiTextField; f +MD net/minecraft/client/gui/GuiFlatPresets func_146430_p ()Z g +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_178054_a (IILnet/minecraft/item/Item;I)V a +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_148171_c (IIII)V d +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_148173_e (II)V e +MD net/minecraft/client/gui/GuiScreen keyTyped (CI)V a +MD net/minecraft/client/gui/GuiScreen setGuiSize (II)V a +MD net/minecraft/client/gui/GuiScreen drawScreen (IIF)V a +MD net/minecraft/client/gui/GuiScreen mouseClicked (III)V a +MD net/minecraft/client/gui/GuiScreen mouseClickMove (IIIJ)V a +MD net/minecraft/client/gui/GuiScreen setWorldAndResolution (Lnet/minecraft/client/Minecraft;II)V a +MD net/minecraft/client/gui/GuiScreen actionPerformed (Lnet/minecraft/client/gui/GuiButton;)V a +MD net/minecraft/client/gui/GuiScreen handleComponentClick (Lnet/minecraft/util/IChatComponent;)Z a +MD net/minecraft/client/gui/GuiScreen handleComponentHover (Lnet/minecraft/util/IChatComponent;II)V a +MD net/minecraft/client/gui/GuiScreen drawCreativeTabHoveringText (Ljava/lang/String;II)V a +MD net/minecraft/client/gui/GuiScreen setText (Ljava/lang/String;Z)V a +MD net/minecraft/client/gui/GuiScreen openWebLink (Ljava/net/URI;)V a +MD net/minecraft/client/gui/GuiScreen drawHoveringText (Ljava/util/List;II)V a +MD net/minecraft/client/gui/GuiScreen renderToolTip (Lnet/minecraft/item/ItemStack;II)V a +MD net/minecraft/client/gui/GuiScreen initGui ()V b +MD net/minecraft/client/gui/GuiScreen mouseReleased (III)V b +MD net/minecraft/client/gui/GuiScreen onResize (Lnet/minecraft/client/Minecraft;II)V b +MD net/minecraft/client/gui/GuiScreen sendChatMessage (Ljava/lang/String;Z)V b +MD net/minecraft/client/gui/GuiScreen drawWorldBackground (I)V b_ +MD net/minecraft/client/gui/GuiScreen drawDefaultBackground ()V c +MD net/minecraft/client/gui/GuiScreen drawBackground (I)V c +MD net/minecraft/client/gui/GuiScreen doesGuiPauseGame ()Z d +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlX (I)Z d +MD net/minecraft/client/gui/GuiScreen updateScreen ()V e +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlV (I)Z e +MD net/minecraft/client/gui/GuiScreen setClipboardString (Ljava/lang/String;)V e +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlC (I)Z f +MD net/minecraft/client/gui/GuiScreen sendChatMessage (Ljava/lang/String;)V f +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlA (I)Z g +MD net/minecraft/client/gui/GuiScreen handleMouseInput ()V k +MD net/minecraft/client/gui/GuiScreen handleKeyboardInput ()V l +MD net/minecraft/client/gui/GuiScreen onGuiClosed ()V m +MD net/minecraft/client/gui/GuiScreen getClipboardString ()Ljava/lang/String; o +MD net/minecraft/client/gui/GuiScreen handleInput ()V p +MD net/minecraft/client/gui/GuiScreen isCtrlKeyDown ()Z q +MD net/minecraft/client/gui/GuiScreen isShiftKeyDown ()Z r +MD net/minecraft/client/gui/GuiScreen isAltKeyDown ()Z s +MD net/minecraft/client/gui/GuiSelectWorld addWorldSelectionButtons ()V a +MD net/minecraft/client/gui/GuiSelectWorld makeDeleteWorldYesNo (Lnet/minecraft/client/gui/GuiYesNoCallback;Ljava/lang/String;I)Lnet/minecraft/client/gui/GuiYesNo; a +MD net/minecraft/client/gui/GuiSelectWorld access$000 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/util/List; a +MD net/minecraft/client/gui/GuiSelectWorld access$102 (Lnet/minecraft/client/gui/GuiSelectWorld;I)I a +MD net/minecraft/client/gui/GuiSelectWorld func_146621_a (I)Ljava/lang/String; b +MD net/minecraft/client/gui/GuiSelectWorld access$100 (Lnet/minecraft/client/gui/GuiSelectWorld;)I b +MD net/minecraft/client/gui/GuiSelectWorld access$200 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; c +MD net/minecraft/client/gui/GuiSelectWorld access$300 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; d +MD net/minecraft/client/gui/GuiSelectWorld access$400 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; e +MD net/minecraft/client/gui/GuiSelectWorld loadLevelList ()V f +MD net/minecraft/client/gui/GuiSelectWorld access$500 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; f +MD net/minecraft/client/gui/GuiSelectWorld access$600 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/lang/String; g +MD net/minecraft/client/gui/GuiSelectWorld func_146614_d (I)Ljava/lang/String; h +MD net/minecraft/client/gui/GuiSelectWorld access$700 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/text/DateFormat; h +MD net/minecraft/client/gui/GuiSelectWorld func_146615_e (I)V i +MD net/minecraft/client/gui/GuiSelectWorld access$800 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/lang/String; i +MD net/minecraft/client/gui/GuiSelectWorld access$900 (Lnet/minecraft/client/gui/GuiSelectWorld;)[Ljava/lang/String; j +MD net/minecraft/client/gui/GuiShareToLan func_146595_g ()V a +MD net/minecraft/client/gui/GuiCustomizeSkin access$200 (Lnet/minecraft/client/gui/GuiCustomizeSkin;Lnet/minecraft/entity/player/EnumPlayerModelParts;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiCustomizeSkin func_175358_a (Lnet/minecraft/entity/player/EnumPlayerModelParts;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart access$100 (Lnet/minecraft/client/gui/GuiCustomizeSkin$ButtonPart;)Lnet/minecraft/entity/player/EnumPlayerModelParts; a +MD net/minecraft/client/gui/GuiSnooper access$000 (Lnet/minecraft/client/gui/GuiSnooper;)Ljava/util/List; a +MD net/minecraft/client/gui/GuiSnooper access$100 (Lnet/minecraft/client/gui/GuiSnooper;)Ljava/util/List; b +MD net/minecraft/client/gui/GuiScreenOptionsSounds access$000 (Lnet/minecraft/client/gui/GuiScreenOptionsSounds;)Lnet/minecraft/client/settings/GameSettings; a +MD net/minecraft/client/gui/GuiScreenOptionsSounds getSoundVolume (Lnet/minecraft/client/audio/SoundCategory;)Ljava/lang/String; a +MD net/minecraft/client/gui/GuiMainMenu func_183501_a ()Z a +MD net/minecraft/client/gui/GuiMainMenu rotateAndBlurSkybox (F)V a +MD net/minecraft/client/gui/GuiMainMenu addSingleplayerMultiplayerButtons (II)V b +MD net/minecraft/client/gui/GuiMainMenu drawPanorama (IIF)V b +MD net/minecraft/client/gui/GuiMainMenu addDemoButtons (II)V c +MD net/minecraft/client/gui/GuiMainMenu renderSkybox (IIF)V c +MD net/minecraft/client/gui/GuiMainMenu switchToRealms ()V f +MD net/minecraft/client/gui/GuiWinGame sendRespawnPacket ()V a +MD net/minecraft/client/gui/GuiWinGame drawWinGameScreen (IIF)V b +MD net/minecraft/client/gui/achievement/GuiAchievement updateAchievementWindow ()V a +MD net/minecraft/client/gui/achievement/GuiAchievement displayAchievement (Lnet/minecraft/stats/Achievement;)V a +MD net/minecraft/client/gui/achievement/GuiAchievement clearAchievements ()V b +MD net/minecraft/client/gui/achievement/GuiAchievement displayUnformattedAchievement (Lnet/minecraft/stats/Achievement;)V b +MD net/minecraft/client/gui/achievement/GuiAchievement updateAchievementWindowScale ()V c +MD net/minecraft/client/gui/achievement/GuiAchievements func_175371_a (Lnet/minecraft/block/Block;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/gui/achievement/GuiAchievements drawAchievementScreen (IIF)V b +MD net/minecraft/client/gui/achievement/GuiAchievements drawTitle ()V f +MD net/minecraft/client/gui/achievement/GuiStats drawStatsScreen (IILnet/minecraft/item/Item;)V a +MD net/minecraft/client/gui/achievement/GuiStats access$000 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; a +MD net/minecraft/client/gui/achievement/GuiStats access$400 (Lnet/minecraft/client/gui/achievement/GuiStats;IIII)V a +MD net/minecraft/client/gui/achievement/GuiStats access$1000 (Lnet/minecraft/client/gui/achievement/GuiStats;IIIIII)V a +MD net/minecraft/client/gui/achievement/GuiStats access$1500 (Lnet/minecraft/client/gui/achievement/GuiStats;IILnet/minecraft/item/Item;)V a +MD net/minecraft/client/gui/achievement/GuiStats drawButtonBackground (II)V b +MD net/minecraft/client/gui/achievement/GuiStats access$100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/stats/StatFileWriter; b +MD net/minecraft/client/gui/achievement/GuiStats access$1300 (Lnet/minecraft/client/gui/achievement/GuiStats;IIIIII)V b +MD net/minecraft/client/gui/achievement/GuiStats drawSprite (IIII)V c +MD net/minecraft/client/gui/achievement/GuiStats access$200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; c +MD net/minecraft/client/gui/achievement/GuiStats access$300 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; d +MD net/minecraft/client/gui/achievement/GuiStats access$500 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; e +MD net/minecraft/client/gui/achievement/GuiStats func_175366_f ()V f +MD net/minecraft/client/gui/achievement/GuiStats access$600 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; f +MD net/minecraft/client/gui/achievement/GuiStats createButtons ()V g +MD net/minecraft/client/gui/achievement/GuiStats access$700 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; g +MD net/minecraft/client/gui/achievement/GuiStats access$800 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; h +MD net/minecraft/client/gui/achievement/GuiStats access$900 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; i +MD net/minecraft/client/gui/achievement/GuiStats access$1100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; j +MD net/minecraft/client/gui/achievement/GuiStats access$1200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; k +MD net/minecraft/client/gui/achievement/GuiStats access$1400 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; l +MD net/minecraft/client/gui/achievement/GuiStats access$1600 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; m +MD net/minecraft/client/gui/achievement/GuiStats access$1700 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; n +MD net/minecraft/client/gui/achievement/GuiStats access$1800 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; o +MD net/minecraft/client/gui/achievement/GuiStats access$1900 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; p +MD net/minecraft/client/gui/achievement/GuiStats access$2000 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; q +MD net/minecraft/client/gui/achievement/GuiStats access$2100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; r +MD net/minecraft/client/gui/achievement/GuiStats access$2200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; s +MD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 compare (Lnet/minecraft/stats/StatCrafting;Lnet/minecraft/stats/StatCrafting;)I a +MD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 compare (Lnet/minecraft/stats/StatCrafting;Lnet/minecraft/stats/StatCrafting;)I a +MD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148213_a (Lnet/minecraft/stats/StatCrafting;II)V a +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148209_a (Lnet/minecraft/stats/StatBase;IIZ)V a +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148210_b (I)Ljava/lang/String; b +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148211_c (I)Lnet/minecraft/stats/StatCrafting; c +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148212_h (I)V d +MD net/minecraft/client/gui/IProgressMeter doneLoading ()V a +MD net/minecraft/client/gui/GuiKeyBindingList access$100 (Lnet/minecraft/client/gui/GuiKeyBindingList;)Lnet/minecraft/client/Minecraft; a +MD net/minecraft/client/gui/GuiKeyBindingList access$200 (Lnet/minecraft/client/gui/GuiKeyBindingList;)Lnet/minecraft/client/gui/GuiControls; b +MD net/minecraft/client/gui/GuiKeyBindingList access$300 (Lnet/minecraft/client/gui/GuiKeyBindingList;)I c +MD net/minecraft/client/gui/inventory/GuiContainer updateDragSplitting ()V a +MD net/minecraft/client/gui/inventory/GuiContainer drawGuiContainerBackgroundLayer (FII)V a +MD net/minecraft/client/gui/inventory/GuiContainer drawSlot (Lnet/minecraft/inventory/Slot;)V a +MD net/minecraft/client/gui/inventory/GuiContainer isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z a +MD net/minecraft/client/gui/inventory/GuiContainer handleMouseClick (Lnet/minecraft/inventory/Slot;III)V a +MD net/minecraft/client/gui/inventory/GuiContainer drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V a +MD net/minecraft/client/gui/inventory/GuiContainer checkHotbarKeys (I)Z b +MD net/minecraft/client/gui/inventory/GuiContainer drawGuiContainerForegroundLayer (II)V b +MD net/minecraft/client/gui/inventory/GuiContainer getSlotAtPosition (II)Lnet/minecraft/inventory/Slot; c +MD net/minecraft/client/gui/inventory/GuiContainer isPointInRegion (IIIIII)Z c +MD net/minecraft/client/gui/GuiRepair renameItem ()V a +MD net/minecraft/client/gui/inventory/GuiBeacon access$000 ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/gui/inventory/GuiBeacon access$100 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V a +MD net/minecraft/client/gui/inventory/GuiBeacon access$200 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V b +MD net/minecraft/client/gui/inventory/GuiBeacon access$300 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V c +MD net/minecraft/client/gui/inventory/GuiBeacon$Button func_146140_b (Z)V b +MD net/minecraft/client/gui/inventory/GuiBeacon$Button func_146141_c ()Z c +MD net/minecraft/client/gui/GuiScreenBook access$000 ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/gui/GuiScreenBook pageSetCurrent (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiScreenBook sendBookToServer (Z)V a +MD net/minecraft/client/gui/GuiScreenBook keyTypedInBook (CI)V b +MD net/minecraft/client/gui/GuiScreenBook func_175385_b (II)Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/client/gui/GuiScreenBook pageInsertIntoCurrent (Ljava/lang/String;)V b +MD net/minecraft/client/gui/GuiScreenBook keyTypedInTitle (CI)V c +MD net/minecraft/client/gui/GuiScreenBook updateButtons ()V f +MD net/minecraft/client/gui/GuiScreenBook addNewPage ()V g +MD net/minecraft/client/gui/GuiScreenBook pageGetCurrent ()Ljava/lang/String; h +MD net/minecraft/client/gui/GuiCommandBlock func_175388_a ()V a +MD net/minecraft/client/gui/inventory/GuiContainerCreative func_147051_a (Lnet/minecraft/creativetab/CreativeTabs;)V a +MD net/minecraft/client/gui/inventory/GuiContainerCreative func_147049_a (Lnet/minecraft/creativetab/CreativeTabs;II)Z a +MD net/minecraft/client/gui/inventory/GuiContainerCreative setCurrentCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)V b +MD net/minecraft/client/gui/inventory/GuiContainerCreative renderCreativeInventoryHoveringText (Lnet/minecraft/creativetab/CreativeTabs;II)Z b +MD net/minecraft/client/gui/inventory/GuiContainerCreative getSelectedTabIndex ()I f +MD net/minecraft/client/gui/inventory/GuiContainerCreative access$000 ()Lnet/minecraft/inventory/InventoryBasic; g +MD net/minecraft/client/gui/inventory/GuiContainerCreative updateCreativeSearch ()V h +MD net/minecraft/client/gui/inventory/GuiContainerCreative needsScrollBars ()Z i +MD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative scrollTo (F)V a +MD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative func_148328_e ()Z e +MD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot access$100 (Lnet/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot;)Lnet/minecraft/inventory/Slot; a +MD net/minecraft/client/renderer/InventoryEffectRenderer updateActivePotionEffects ()V a +MD net/minecraft/client/renderer/InventoryEffectRenderer drawActivePotionEffects ()V f +MD net/minecraft/util/EnchantmentNameParts getInstance ()Lnet/minecraft/util/EnchantmentNameParts; a +MD net/minecraft/util/EnchantmentNameParts reseedRandomGenerator (J)V a +MD net/minecraft/util/EnchantmentNameParts generateNewRandomName ()Ljava/lang/String; b +MD net/minecraft/client/gui/GuiEnchantment func_147068_g ()V a +MD net/minecraft/client/gui/inventory/GuiFurnace getCookProgressScaled (I)I h +MD net/minecraft/client/gui/inventory/GuiFurnace getBurnLeftScaled (I)I i +MD net/minecraft/client/gui/inventory/GuiInventory drawEntityOnScreen (IIIFFLnet/minecraft/entity/EntityLivingBase;)V a +MD net/minecraft/client/gui/GuiMerchant getMerchant ()Lnet/minecraft/entity/IMerchant; a +MD net/minecraft/client/gui/GuiMerchant access$000 ()Lnet/minecraft/util/ResourceLocation; f +MD net/minecraft/client/gui/GuiMultiplayer createButtons ()V a +MD net/minecraft/client/gui/GuiMultiplayer func_175392_a (Lnet/minecraft/client/gui/ServerListEntryNormal;I)Z a +MD net/minecraft/client/gui/GuiMultiplayer func_175391_a (Lnet/minecraft/client/gui/ServerListEntryNormal;IZ)V a +MD net/minecraft/client/gui/GuiMultiplayer connectToServer (Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/gui/GuiMultiplayer setHoveringText (Ljava/lang/String;)V a +MD net/minecraft/client/gui/GuiMultiplayer selectServer (I)V b +MD net/minecraft/client/gui/GuiMultiplayer func_175394_b (Lnet/minecraft/client/gui/ServerListEntryNormal;I)Z b +MD net/minecraft/client/gui/GuiMultiplayer func_175393_b (Lnet/minecraft/client/gui/ServerListEntryNormal;IZ)V b +MD net/minecraft/client/gui/GuiMultiplayer connectToSelected ()V f +MD net/minecraft/client/gui/GuiMultiplayer getOldServerPinger ()Lnet/minecraft/client/network/OldServerPinger; g +MD net/minecraft/client/gui/GuiMultiplayer getServerList ()Lnet/minecraft/client/multiplayer/ServerList; h +MD net/minecraft/client/gui/GuiMultiplayer refreshServerList ()V i +MD net/minecraft/client/gui/ServerListEntryLanDetected getLanServer ()Lnet/minecraft/client/network/LanServerDetector$LanServer; a +MD net/minecraft/client/gui/ServerListEntryNormal getServerData ()Lnet/minecraft/client/multiplayer/ServerData; a +MD net/minecraft/client/gui/ServerListEntryNormal drawTextureAt (IILnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/gui/ServerListEntryNormal access$000 (Lnet/minecraft/client/gui/ServerListEntryNormal;)Lnet/minecraft/client/multiplayer/ServerData; a +MD net/minecraft/client/gui/ServerListEntryNormal func_178013_b ()Z b +MD net/minecraft/client/gui/ServerListEntryNormal access$100 (Lnet/minecraft/client/gui/ServerListEntryNormal;)Lnet/minecraft/client/gui/GuiMultiplayer; b +MD net/minecraft/client/gui/ServerListEntryNormal prepareServerIcon ()V c +MD net/minecraft/client/gui/ServerListEntryNormal$1 run ()V run +MD net/minecraft/client/gui/ServerSelectionList func_148195_a (Lnet/minecraft/client/multiplayer/ServerList;)V a +MD net/minecraft/client/gui/ServerSelectionList func_148194_a (Ljava/util/List;)V a +MD net/minecraft/client/gui/ServerSelectionList setSelectedSlotIndex (I)V c +MD net/minecraft/client/gui/ServerSelectionList func_148193_k ()I e +MD net/minecraft/client/gui/GuiScreenResourcePacks getAvailableResourcePacks ()Ljava/util/List; a +MD net/minecraft/client/gui/GuiScreenResourcePacks hasResourcePackEntry (Lnet/minecraft/client/resources/ResourcePackListEntry;)Z a +MD net/minecraft/client/gui/GuiScreenResourcePacks getListContaining (Lnet/minecraft/client/resources/ResourcePackListEntry;)Ljava/util/List; b +MD net/minecraft/client/gui/GuiScreenResourcePacks getSelectedResourcePacks ()Ljava/util/List; f +MD net/minecraft/client/gui/GuiScreenResourcePacks markChanged ()V g +MD net/minecraft/client/resources/ResourcePackListEntry func_183019_a ()I a +MD net/minecraft/client/resources/ResourcePackListEntry func_148311_a ()Ljava/lang/String; b +MD net/minecraft/client/resources/ResourcePackListEntry func_148312_b ()Ljava/lang/String; c +MD net/minecraft/client/resources/ResourcePackListEntry func_148313_c ()V d +MD net/minecraft/client/resources/ResourcePackListEntry func_148310_d ()Z e +MD net/minecraft/client/resources/ResourcePackListEntry func_148309_e ()Z f +MD net/minecraft/client/resources/ResourcePackListEntry func_148308_f ()Z g +MD net/minecraft/client/resources/ResourcePackListEntry func_148314_g ()Z h +MD net/minecraft/client/resources/ResourcePackListEntry func_148307_h ()Z i +MD net/minecraft/client/resources/ResourcePackListEntryFound func_148318_i ()Lnet/minecraft/client/resources/ResourcePackRepository$Entry; j +MD net/minecraft/client/gui/GuiResourcePackList getListEntry (I)Lnet/minecraft/client/resources/ResourcePackListEntry; c +MD net/minecraft/client/gui/GuiResourcePackList getListHeader ()Ljava/lang/String; e +MD net/minecraft/client/gui/GuiResourcePackList getList ()Ljava/util/List; f +MD net/minecraft/client/gui/stream/GuiIngestServers access$000 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; a +MD net/minecraft/client/gui/stream/GuiIngestServers access$100 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; b +MD net/minecraft/client/gui/stream/GuiIngestServers access$200 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; c +MD net/minecraft/client/gui/stream/GuiIngestServers access$300 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; d +MD net/minecraft/client/gui/stream/GuiIngestServers access$400 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; e +MD net/minecraft/client/gui/stream/GuiIngestServers access$500 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; f +MD net/minecraft/client/gui/stream/GuiIngestServers access$600 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; g +MD net/minecraft/client/gui/stream/GuiIngestServers access$700 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; h +MD net/minecraft/client/gui/stream/GuiStreamUnavailable func_152321_a (Lnet/minecraft/client/gui/GuiScreen;)V a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable func_152320_a (Ljava/lang/String;)V a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason func_152561_a ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason func_152559_b ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason valueOf (Ljava/lang/String;)Lnet/minecraft/client/gui/stream/GuiStreamUnavailable$Reason; valueOf +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason values ()[Lnet/minecraft/client/gui/stream/GuiStreamUnavailable$Reason; values +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152328_a (Ljava/util/Set;Ljava/util/Set;Lnet/minecraft/client/stream/IStream;)Ljava/util/List; a +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152329_a (Ltv/twitch/chat/ChatUserMode;Ljava/lang/String;Z)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152330_a (Ltv/twitch/chat/ChatUserSubscription;Ljava/lang/String;Z)Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178642_a ()Ljava/util/List; a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178643_a (I)Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; a +MD net/minecraft/client/gui/spectator/SpectatorMenu access$112 (Lnet/minecraft/client/gui/spectator/SpectatorMenu;I)I a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178647_a (Lnet/minecraft/client/gui/spectator/ISpectatorMenuView;)V a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178645_b ()Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; b +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178644_b (I)V b +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178650_c ()Lnet/minecraft/client/gui/spectator/ISpectatorMenuView; c +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178641_d ()V d +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178648_e ()I e +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178646_f ()Lnet/minecraft/client/gui/spectator/categories/SpectatorDetails; f +MD net/minecraft/client/gui/spectator/ISpectatorMenuView func_178669_a ()Ljava/util/List; a +MD net/minecraft/client/gui/spectator/ISpectatorMenuView func_178670_b ()Lnet/minecraft/util/IChatComponent; b +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject getSpectatorName ()Lnet/minecraft/util/IChatComponent; A_ +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178662_A_ ()Z B_ +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178663_a (FI)V a +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178661_a (Lnet/minecraft/client/gui/spectator/SpectatorMenu;)V a +MD net/minecraft/client/gui/spectator/ISpectatorMenuRecipient func_175257_a (Lnet/minecraft/client/gui/spectator/SpectatorMenu;)V a +MD net/minecraft/client/gui/spectator/categories/SpectatorDetails func_178680_a (I)Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; a +MD net/minecraft/client/gui/spectator/categories/SpectatorDetails func_178681_b ()I b +MD net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 compare (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/client/network/NetworkPlayerInfo;)I a +MD net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/model/ModelBanner renderBanner ()V a +MD net/minecraft/client/model/ModelChest renderAll ()V a +MD net/minecraft/client/model/ModelGuardian func_178706_a ()I a +MD net/minecraft/client/model/ModelHorse updateHorseRotation (FFF)F a +MD net/minecraft/client/model/ModelHorse setBoxRotation (Lnet/minecraft/client/model/ModelRenderer;FFF)V a +MD net/minecraft/client/model/ModelBiped postRenderArm (F)V a +MD net/minecraft/client/model/ModelBiped setInvisible (Z)V a +MD net/minecraft/client/model/ModelBase setRotationAngles (FFFFFFLnet/minecraft/entity/Entity;)V a +MD net/minecraft/client/model/ModelBase setModelAttributes (Lnet/minecraft/client/model/ModelBase;)V a +MD net/minecraft/client/model/ModelBase copyModelAngles (Lnet/minecraft/client/model/ModelRenderer;Lnet/minecraft/client/model/ModelRenderer;)V a +MD net/minecraft/client/model/ModelBase getTextureOffset (Ljava/lang/String;)Lnet/minecraft/client/model/TextureOffset; a +MD net/minecraft/client/model/ModelBase setTextureOffset (Ljava/lang/String;II)V a +MD net/minecraft/client/model/ModelBase getRandomModelBox (Ljava/util/Random;)Lnet/minecraft/client/model/ModelRenderer; a +MD net/minecraft/client/model/ModelBase render (Lnet/minecraft/entity/Entity;FFFFFF)V a +MD net/minecraft/client/model/ModelBase setLivingAnimations (Lnet/minecraft/entity/EntityLivingBase;FFF)V a +MD net/minecraft/client/model/ModelPlayer renderRightArm ()V a +MD net/minecraft/client/model/ModelPlayer renderLeftArm ()V b +MD net/minecraft/client/model/ModelPlayer renderDeadmau5Head (F)V b +MD net/minecraft/client/model/ModelPlayer renderCape (F)V c +MD net/minecraft/client/model/TexturedQuad flipFace ()V a +MD net/minecraft/client/model/TexturedQuad draw (Lnet/minecraft/client/renderer/WorldRenderer;F)V a +MD net/minecraft/client/model/ModelRabbit setRotationOffset (Lnet/minecraft/client/model/ModelRenderer;FFF)V a +MD net/minecraft/client/model/ModelSign renderSign ()V a +MD net/minecraft/client/model/PositionTextureVertex setTexturePosition (FF)Lnet/minecraft/client/model/PositionTextureVertex; a +MD net/minecraft/client/model/ModelIronGolem func_78172_a (FF)F a +MD net/minecraft/client/model/ModelDragon updateRotations (D)F a +MD net/minecraft/client/model/ModelBox render (Lnet/minecraft/client/renderer/WorldRenderer;F)V a +MD net/minecraft/client/model/ModelBox setBoxName (Ljava/lang/String;)Lnet/minecraft/client/model/ModelBox; a +MD net/minecraft/client/model/ModelRenderer render (F)V a +MD net/minecraft/client/model/ModelRenderer setRotationPoint (FFF)V a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIII)Lnet/minecraft/client/model/ModelRenderer; a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIIIF)V a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIIIZ)Lnet/minecraft/client/model/ModelRenderer; a +MD net/minecraft/client/model/ModelRenderer setTextureOffset (II)Lnet/minecraft/client/model/ModelRenderer; a +MD net/minecraft/client/model/ModelRenderer addChild (Lnet/minecraft/client/model/ModelRenderer;)V a +MD net/minecraft/client/model/ModelRenderer addBox (Ljava/lang/String;FFFIII)Lnet/minecraft/client/model/ModelRenderer; a +MD net/minecraft/client/model/ModelRenderer renderWithRotation (F)V b +MD net/minecraft/client/model/ModelRenderer setTextureSize (II)Lnet/minecraft/client/model/ModelRenderer; b +MD net/minecraft/client/model/ModelRenderer postRender (F)V c +MD net/minecraft/client/model/ModelRenderer compileDisplayList (F)V d +MD net/minecraft/client/network/NetHandlerLoginClient access$000 (Lnet/minecraft/client/network/NetHandlerLoginClient;)Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/client/network/NetHandlerLoginClient getSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; b +MD net/minecraft/client/network/NetHandlerLoginClient$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/client/network/NetHandlerPlayClient getNetworkManager ()Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/client/network/NetHandlerPlayClient access$000 (Lnet/minecraft/client/network/NetHandlerPlayClient;)Lnet/minecraft/network/NetworkManager; a +MD net/minecraft/client/network/NetHandlerPlayClient access$102 (Lnet/minecraft/client/network/NetHandlerPlayClient;Lnet/minecraft/client/Minecraft;)Lnet/minecraft/client/Minecraft; a +MD net/minecraft/client/network/NetHandlerPlayClient addToSendQueue (Lnet/minecraft/network/Packet;)V a +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfo (Ljava/lang/String;)Lnet/minecraft/client/network/NetworkPlayerInfo; a +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfo (Ljava/util/UUID;)Lnet/minecraft/client/network/NetworkPlayerInfo; a +MD net/minecraft/client/network/NetHandlerPlayClient cleanup ()V b +MD net/minecraft/client/network/NetHandlerPlayClient access$100 (Lnet/minecraft/client/network/NetHandlerPlayClient;)Lnet/minecraft/client/Minecraft; b +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfoMap ()Ljava/util/Collection; d +MD net/minecraft/client/network/NetHandlerPlayClient getGameProfile ()Lcom/mojang/authlib/GameProfile; e +MD net/minecraft/client/network/NetHandlerPlayClient$1 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$1 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/network/NetHandlerPlayClient$2 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$2 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/network/NetHandlerPlayClient$3 run ()V run +MD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/multiplayer/ChunkProviderClient unloadChunk (II)V b +MD net/minecraft/client/multiplayer/ChunkProviderClient loadChunk (II)Lnet/minecraft/world/chunk/Chunk; c +MD net/minecraft/client/multiplayer/PlayerControllerMP isSpectator ()Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendEnchantPacket (II)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP windowClick (IIIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/client/multiplayer/PlayerControllerMP func_178892_a (Lnet/minecraft/world/World;Lnet/minecraft/stats/StatFileWriter;)Lnet/minecraft/client/entity/EntityPlayerSP; a +MD net/minecraft/client/multiplayer/PlayerControllerMP setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP clickBlockCreative (Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/multiplayer/PlayerControllerMP;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerRightClick (Lnet/minecraft/client/entity/EntityPlayerSP;Lnet/minecraft/client/multiplayer/WorldClient;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/Vec3;)Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP isHittingPosition (Lnet/minecraft/util/BlockPos;)Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerDestroyBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP setPlayerCapabilities (Lnet/minecraft/entity/player/EntityPlayer;)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP attackEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP isPlayerRightClickingOnEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/MovingObjectPosition;)Z a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendPacketDropItem (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendSlotPacket (Lnet/minecraft/item/ItemStack;I)V a +MD net/minecraft/client/multiplayer/PlayerControllerMP shouldDrawHUD ()Z b +MD net/minecraft/client/multiplayer/PlayerControllerMP clickBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z b +MD net/minecraft/client/multiplayer/PlayerControllerMP flipPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V b +MD net/minecraft/client/multiplayer/PlayerControllerMP interactWithEntitySendPacket (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;)Z b +MD net/minecraft/client/multiplayer/PlayerControllerMP resetBlockRemoving ()V c +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerDamageBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z c +MD net/minecraft/client/multiplayer/PlayerControllerMP onStoppedUsingItem (Lnet/minecraft/entity/player/EntityPlayer;)V c +MD net/minecraft/client/multiplayer/PlayerControllerMP getBlockReachDistance ()F d +MD net/minecraft/client/multiplayer/PlayerControllerMP updateController ()V e +MD net/minecraft/client/multiplayer/PlayerControllerMP gameIsSurvivalOrAdventure ()Z f +MD net/minecraft/client/multiplayer/PlayerControllerMP isNotCreative ()Z g +MD net/minecraft/client/multiplayer/PlayerControllerMP isInCreativeMode ()Z h +MD net/minecraft/client/multiplayer/PlayerControllerMP extendedReach ()Z i +MD net/minecraft/client/multiplayer/PlayerControllerMP isRidingHorse ()Z j +MD net/minecraft/client/multiplayer/PlayerControllerMP isSpectatorMode ()Z k +MD net/minecraft/client/multiplayer/PlayerControllerMP getCurrentGameType ()Lnet/minecraft/world/WorldSettings$GameType; l +MD net/minecraft/client/multiplayer/PlayerControllerMP getIsHittingBlock ()Z m +MD net/minecraft/client/multiplayer/PlayerControllerMP syncCurrentPlayItem ()V n +MD net/minecraft/client/multiplayer/WorldClient removeAllEntities ()V a +MD net/minecraft/client/multiplayer/WorldClient invalidateBlockReceiveRegion (IIIIII)V a +MD net/minecraft/client/multiplayer/WorldClient addEntityToWorld (ILnet/minecraft/entity/Entity;)V a +MD net/minecraft/client/multiplayer/WorldClient setWorldScoreboard (Lnet/minecraft/scoreboard/Scoreboard;)V a +MD net/minecraft/client/multiplayer/WorldClient access$000 (Lnet/minecraft/client/multiplayer/WorldClient;)Ljava/util/Set; a +MD net/minecraft/client/multiplayer/WorldClient playSoundAtPos (Lnet/minecraft/util/BlockPos;Ljava/lang/String;FFZ)V a +MD net/minecraft/client/multiplayer/WorldClient doVoidFogParticles (III)V b +MD net/minecraft/client/multiplayer/WorldClient doPreChunk (IIZ)V b +MD net/minecraft/client/multiplayer/WorldClient access$100 (Lnet/minecraft/client/multiplayer/WorldClient;)Ljava/util/Set; b +MD net/minecraft/client/multiplayer/WorldClient invalidateRegionAndSetBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z b +MD net/minecraft/client/multiplayer/WorldClient access$200 (Lnet/minecraft/client/multiplayer/WorldClient;)Lnet/minecraft/client/Minecraft; c +MD net/minecraft/client/multiplayer/WorldClient removeEntityFromWorld (I)Lnet/minecraft/entity/Entity; e +MD net/minecraft/client/multiplayer/WorldClient$1 call ()Ljava/lang/String; a +MD net/minecraft/client/multiplayer/WorldClient$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$2 call ()Ljava/lang/String; a +MD net/minecraft/client/multiplayer/WorldClient$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$3 call ()Ljava/lang/String; a +MD net/minecraft/client/multiplayer/WorldClient$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$4 call ()Ljava/lang/String; a +MD net/minecraft/client/multiplayer/WorldClient$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/network/NetworkPlayerInfo getGameProfile ()Lcom/mojang/authlib/GameProfile; a +MD net/minecraft/client/network/NetworkPlayerInfo setResponseTime (I)V a +MD net/minecraft/client/network/NetworkPlayerInfo func_178846_a (J)V a +MD net/minecraft/client/network/NetworkPlayerInfo setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/client/network/NetworkPlayerInfo access$100 (Lnet/minecraft/client/network/NetworkPlayerInfo;)Ljava/lang/String; a +MD net/minecraft/client/network/NetworkPlayerInfo access$102 (Lnet/minecraft/client/network/NetworkPlayerInfo;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/client/network/NetworkPlayerInfo access$002 (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/network/NetworkPlayerInfo setDisplayName (Lnet/minecraft/util/IChatComponent;)V a +MD net/minecraft/client/network/NetworkPlayerInfo getGameType ()Lnet/minecraft/world/WorldSettings$GameType; b +MD net/minecraft/client/network/NetworkPlayerInfo func_178836_b (I)V b +MD net/minecraft/client/network/NetworkPlayerInfo func_178844_b (J)V b +MD net/minecraft/client/network/NetworkPlayerInfo access$202 (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/network/NetworkPlayerInfo getResponseTime ()I c +MD net/minecraft/client/network/NetworkPlayerInfo func_178857_c (I)V c +MD net/minecraft/client/network/NetworkPlayerInfo func_178843_c (J)V c +MD net/minecraft/client/network/NetworkPlayerInfo hasLocationSkin ()Z e +MD net/minecraft/client/network/NetworkPlayerInfo getSkinType ()Ljava/lang/String; f +MD net/minecraft/client/network/NetworkPlayerInfo getLocationSkin ()Lnet/minecraft/util/ResourceLocation; g +MD net/minecraft/client/network/NetworkPlayerInfo getLocationCape ()Lnet/minecraft/util/ResourceLocation; h +MD net/minecraft/client/network/NetworkPlayerInfo getPlayerTeam ()Lnet/minecraft/scoreboard/ScorePlayerTeam; i +MD net/minecraft/client/network/NetworkPlayerInfo loadPlayerTextures ()V j +MD net/minecraft/client/network/NetworkPlayerInfo getDisplayName ()Lnet/minecraft/util/IChatComponent; k +MD net/minecraft/client/network/NetworkPlayerInfo func_178835_l ()I l +MD net/minecraft/client/network/NetworkPlayerInfo func_178860_m ()I m +MD net/minecraft/client/network/NetworkPlayerInfo func_178847_n ()J n +MD net/minecraft/client/network/NetworkPlayerInfo func_178858_o ()J o +MD net/minecraft/client/network/NetworkPlayerInfo func_178855_p ()J p +MD net/minecraft/client/multiplayer/ServerAddress getIP ()Ljava/lang/String; a +MD net/minecraft/client/multiplayer/ServerAddress fromString (Ljava/lang/String;)Lnet/minecraft/client/multiplayer/ServerAddress; a +MD net/minecraft/client/multiplayer/ServerAddress parseIntWithDefault (Ljava/lang/String;I)I a +MD net/minecraft/client/multiplayer/ServerAddress getPort ()I b +MD net/minecraft/client/multiplayer/ServerAddress getServerAddress (Ljava/lang/String;)[Ljava/lang/String; b +MD net/minecraft/client/multiplayer/ServerData getNBTCompound ()Lnet/minecraft/nbt/NBTTagCompound; a +MD net/minecraft/client/multiplayer/ServerData setResourceMode (Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode;)V a +MD net/minecraft/client/multiplayer/ServerData copyFrom (Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/multiplayer/ServerData getServerDataFromNBTCompound (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/client/multiplayer/ServerData; a +MD net/minecraft/client/multiplayer/ServerData setBase64EncodedIconData (Ljava/lang/String;)V a +MD net/minecraft/client/multiplayer/ServerData getResourceMode ()Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; b +MD net/minecraft/client/multiplayer/ServerData getBase64EncodedIconData ()Ljava/lang/String; c +MD net/minecraft/client/multiplayer/ServerData isOnLAN ()Z d +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode getMotd ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode valueOf (Ljava/lang/String;)Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; valueOf +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode values ()[Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; values +MD net/minecraft/client/multiplayer/ServerList loadServerList ()V a +MD net/minecraft/client/multiplayer/ServerList getServerData (I)Lnet/minecraft/client/multiplayer/ServerData; a +MD net/minecraft/client/multiplayer/ServerList swapServers (II)V a +MD net/minecraft/client/multiplayer/ServerList func_147413_a (ILnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/multiplayer/ServerList addServerData (Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/multiplayer/ServerList saveServerList ()V b +MD net/minecraft/client/multiplayer/ServerList removeServerData (I)V b +MD net/minecraft/client/multiplayer/ServerList func_147414_b (Lnet/minecraft/client/multiplayer/ServerData;)V b +MD net/minecraft/client/multiplayer/ServerList countServers ()I c +MD net/minecraft/client/network/OldServerPinger pingPendingNetworks ()V a +MD net/minecraft/client/network/OldServerPinger ping (Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/network/OldServerPinger access$100 (Lnet/minecraft/client/network/OldServerPinger;Lnet/minecraft/client/multiplayer/ServerData;)V a +MD net/minecraft/client/network/OldServerPinger clearPendingNetworks ()V b +MD net/minecraft/client/network/OldServerPinger tryCompatibilityPing (Lnet/minecraft/client/multiplayer/ServerData;)V b +MD net/minecraft/client/network/OldServerPinger access$000 ()Lorg/apache/logging/log4j/Logger; c +MD net/minecraft/client/network/OldServerPinger access$200 ()Lcom/google/common/base/Splitter; d +MD net/minecraft/client/network/OldServerPinger$2 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/client/network/OldServerPinger$2$1 channelRead0 (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V a +MD net/minecraft/client/network/OldServerPinger$2$1 channelActive (Lio/netty/channel/ChannelHandlerContext;)V channelActive +MD net/minecraft/client/network/OldServerPinger$2$1 channelRead0 (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead0 +MD net/minecraft/client/network/OldServerPinger$2$1 exceptionCaught (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V exceptionCaught +MD net/minecraft/client/particle/EntityFirework$SparkFX setColour (I)V a +MD net/minecraft/client/particle/EntityFirework$SparkFX setTrail (Z)V a +MD net/minecraft/client/particle/EntityFirework$SparkFX setFadeColour (I)V b +MD net/minecraft/client/particle/EntityFirework$SparkFX setTwinkle (Z)V i +MD net/minecraft/client/particle/EntityFirework$StarterFX createParticle (DDDDDD[I[IZZ)V a +MD net/minecraft/client/particle/EntityFirework$StarterFX createBall (DI[I[IZZ)V a +MD net/minecraft/client/particle/EntityFirework$StarterFX createShaped (D[[D[I[IZZZ)V a +MD net/minecraft/client/particle/EntityFirework$StarterFX createBurst ([I[IZZ)V a +MD net/minecraft/client/particle/EntityFirework$StarterFX func_92037_i ()Z l +MD net/minecraft/client/particle/EntityFX getFXLayer ()I a +MD net/minecraft/client/particle/EntityFX multiplyVelocity (F)Lnet/minecraft/client/particle/EntityFX; a +MD net/minecraft/client/particle/EntityFX renderParticle (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/entity/Entity;FFFFFF)V a +MD net/minecraft/client/particle/EntityFX setParticleIcon (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/particle/EntityFX getRedColorF ()F b +MD net/minecraft/client/particle/EntityFX setRBGColorF (FFF)V b +MD net/minecraft/client/particle/EntityFX getGreenColorF ()F g +MD net/minecraft/client/particle/EntityFX multipleParticleScaleBy (F)Lnet/minecraft/client/particle/EntityFX; h +MD net/minecraft/client/particle/EntityFX getBlueColorF ()F i +MD net/minecraft/client/particle/EntityFX setAlphaF (F)V i +MD net/minecraft/client/particle/EntityFX getAlpha ()F j +MD net/minecraft/client/particle/EntityFX nextTextureIndexX ()V k +MD net/minecraft/client/particle/EntityFX setParticleTextureIndex (I)V k +MD net/minecraft/client/particle/EffectRenderer updateEffects ()V a +MD net/minecraft/client/particle/EffectRenderer updateEffectLayer (I)V a +MD net/minecraft/client/particle/EffectRenderer spawnEffectParticle (IDDDDDD[I)Lnet/minecraft/client/particle/EntityFX; a +MD net/minecraft/client/particle/EffectRenderer registerParticle (ILnet/minecraft/client/particle/IParticleFactory;)V a +MD net/minecraft/client/particle/EffectRenderer clearEffects (Lnet/minecraft/world/World;)V a +MD net/minecraft/client/particle/EffectRenderer addEffect (Lnet/minecraft/client/particle/EntityFX;)V a +MD net/minecraft/client/particle/EffectRenderer moveToLayer (Lnet/minecraft/client/particle/EntityFX;II)V a +MD net/minecraft/client/particle/EffectRenderer addBlockDestroyEffects (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/client/particle/EffectRenderer addBlockHitEffects (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/client/particle/EffectRenderer updateEffectAlphaLayer (Ljava/util/List;)V a +MD net/minecraft/client/particle/EffectRenderer renderParticles (Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/client/particle/EffectRenderer emitParticleAtEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/EnumParticleTypes;)V a +MD net/minecraft/client/particle/EffectRenderer getStatistics ()Ljava/lang/String; b +MD net/minecraft/client/particle/EffectRenderer moveToAlphaLayer (Lnet/minecraft/client/particle/EntityFX;)V b +MD net/minecraft/client/particle/EffectRenderer renderLitParticles (Lnet/minecraft/entity/Entity;F)V b +MD net/minecraft/client/particle/EffectRenderer registerVanillaParticles ()V c +MD net/minecraft/client/particle/EffectRenderer moveToNoAlphaLayer (Lnet/minecraft/client/particle/EntityFX;)V c +MD net/minecraft/client/particle/EffectRenderer tickParticle (Lnet/minecraft/client/particle/EntityFX;)V d +MD net/minecraft/client/particle/EffectRenderer$1 call ()Ljava/lang/String; a +MD net/minecraft/client/particle/EffectRenderer$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$2 call ()Ljava/lang/String; a +MD net/minecraft/client/particle/EffectRenderer$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$3 call ()Ljava/lang/String; a +MD net/minecraft/client/particle/EffectRenderer$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$4 call ()Ljava/lang/String; a +MD net/minecraft/client/particle/EffectRenderer$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/IParticleFactory getEntityFX (ILnet/minecraft/world/World;DDDDDD[I)Lnet/minecraft/client/particle/EntityFX; a +MD net/minecraft/client/particle/EntitySpellParticleFX setBaseSpellTextureIndex (I)V a +MD net/minecraft/client/particle/EntityDiggingFX setBlockPos (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/particle/EntityDiggingFX; a +MD net/minecraft/client/particle/EntityDiggingFX func_174845_l ()Lnet/minecraft/client/particle/EntityDiggingFX; l +MD net/minecraft/client/entity/AbstractClientPlayer hasPlayerInfo ()Z a +MD net/minecraft/client/entity/AbstractClientPlayer getDownloadImageSkin (Lnet/minecraft/util/ResourceLocation;Ljava/lang/String;)Lnet/minecraft/client/renderer/ThreadDownloadImageData; a +MD net/minecraft/client/entity/AbstractClientPlayer getPlayerInfo ()Lnet/minecraft/client/network/NetworkPlayerInfo; b +MD net/minecraft/client/entity/AbstractClientPlayer getLocationSkin (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; c +MD net/minecraft/client/entity/AbstractClientPlayer hasSkin ()Z g +MD net/minecraft/client/entity/AbstractClientPlayer getLocationSkin ()Lnet/minecraft/util/ResourceLocation; i +MD net/minecraft/client/entity/AbstractClientPlayer getLocationCape ()Lnet/minecraft/util/ResourceLocation; k +MD net/minecraft/client/entity/AbstractClientPlayer getSkinType ()Ljava/lang/String; l +MD net/minecraft/client/entity/AbstractClientPlayer getFovModifier ()F o +MD net/minecraft/util/MovementInput updatePlayerMoveState ()V a +MD net/minecraft/client/entity/EntityPlayerSP isCurrentViewEntity ()Z A +MD net/minecraft/client/entity/EntityPlayerSP setXPStats (FII)V a +MD net/minecraft/client/entity/EntityPlayerSP isOpenBlockSpace (Lnet/minecraft/util/BlockPos;)Z e +MD net/minecraft/client/entity/EntityPlayerSP sendChatMessage (Ljava/lang/String;)V e +MD net/minecraft/client/entity/EntityPlayerSP setClientBrand (Ljava/lang/String;)V f +MD net/minecraft/client/entity/EntityPlayerSP setPlayerSPHealth (F)V n +MD net/minecraft/client/entity/EntityPlayerSP onUpdateWalkingPlayer ()V p +MD net/minecraft/client/entity/EntityPlayerSP closeScreenAndDropStack ()V q +MD net/minecraft/client/entity/EntityPlayerSP sendHorseJump ()V r +MD net/minecraft/client/entity/EntityPlayerSP sendHorseInventory ()V u +MD net/minecraft/client/entity/EntityPlayerSP getClientBrand ()Ljava/lang/String; w +MD net/minecraft/client/entity/EntityPlayerSP getStatFileWriter ()Lnet/minecraft/stats/StatFileWriter; x +MD net/minecraft/client/entity/EntityPlayerSP isRidingHorse ()Z y +MD net/minecraft/client/entity/EntityPlayerSP getHorseJumpPower ()F z +MD net/minecraft/entity/boss/BossStatus setBossStatus (Lnet/minecraft/entity/boss/IBossDisplayData;Z)V a +MD net/minecraft/client/renderer/WorldRenderer getVertexState ()Lnet/minecraft/client/renderer/WorldRenderer$State; a +MD net/minecraft/client/renderer/WorldRenderer tex (DD)Lnet/minecraft/client/renderer/WorldRenderer; a +MD net/minecraft/client/renderer/WorldRenderer putPosition (DDD)V a +MD net/minecraft/client/renderer/WorldRenderer sortVertexData (FFF)V a +MD net/minecraft/client/renderer/WorldRenderer color (FFFF)Lnet/minecraft/client/renderer/WorldRenderer; a +MD net/minecraft/client/renderer/WorldRenderer putColorMultiplier (FFFI)V a +MD net/minecraft/client/renderer/WorldRenderer putColor4 (I)V a +MD net/minecraft/client/renderer/WorldRenderer lightmap (II)Lnet/minecraft/client/renderer/WorldRenderer; a +MD net/minecraft/client/renderer/WorldRenderer putBrightness4 (IIII)V a +MD net/minecraft/client/renderer/WorldRenderer putColorRGBA (IIIII)V a +MD net/minecraft/client/renderer/WorldRenderer begin (ILnet/minecraft/client/renderer/vertex/VertexFormat;)V a +MD net/minecraft/client/renderer/WorldRenderer setVertexState (Lnet/minecraft/client/renderer/WorldRenderer$State;)V a +MD net/minecraft/client/renderer/WorldRenderer getDistanceSq (Ljava/nio/FloatBuffer;FFFII)F a +MD net/minecraft/client/renderer/WorldRenderer addVertexData ([I)V a +MD net/minecraft/client/renderer/WorldRenderer reset ()V b +MD net/minecraft/client/renderer/WorldRenderer pos (DDD)Lnet/minecraft/client/renderer/WorldRenderer; b +MD net/minecraft/client/renderer/WorldRenderer putNormal (FFF)V b +MD net/minecraft/client/renderer/WorldRenderer putColorRGB_F (FFFI)V b +MD net/minecraft/client/renderer/WorldRenderer growBuffer (I)V b +MD net/minecraft/client/renderer/WorldRenderer putColor (II)V b +MD net/minecraft/client/renderer/WorldRenderer color (IIII)Lnet/minecraft/client/renderer/WorldRenderer; b +MD net/minecraft/client/renderer/WorldRenderer noColor ()V c +MD net/minecraft/client/renderer/WorldRenderer setTranslation (DDD)V c +MD net/minecraft/client/renderer/WorldRenderer normal (FFF)Lnet/minecraft/client/renderer/WorldRenderer; c +MD net/minecraft/client/renderer/WorldRenderer getColorIndex (I)I c +MD net/minecraft/client/renderer/WorldRenderer endVertex ()V d +MD net/minecraft/client/renderer/WorldRenderer putColorRGB_F4 (FFF)V d +MD net/minecraft/client/renderer/WorldRenderer finishDrawing ()V e +MD net/minecraft/client/renderer/WorldRenderer getByteBuffer ()Ljava/nio/ByteBuffer; f +MD net/minecraft/client/renderer/WorldRenderer getVertexFormat ()Lnet/minecraft/client/renderer/vertex/VertexFormat; g +MD net/minecraft/client/renderer/WorldRenderer getVertexCount ()I h +MD net/minecraft/client/renderer/WorldRenderer getDrawMode ()I i +MD net/minecraft/client/renderer/WorldRenderer getBufferSize ()I j +MD net/minecraft/client/renderer/WorldRenderer nextVertexFormatIndex ()V k +MD net/minecraft/client/renderer/WorldRenderer$1 compare (Ljava/lang/Integer;Ljava/lang/Integer;)I a +MD net/minecraft/client/renderer/WorldRenderer$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/renderer/WorldRenderer$State getRawBuffer ()[I a +MD net/minecraft/client/renderer/WorldRenderer$State getVertexCount ()I b +MD net/minecraft/client/renderer/WorldRenderer$State getVertexFormat ()Lnet/minecraft/client/renderer/vertex/VertexFormat; c +MD net/minecraft/client/renderer/WorldVertexBufferUploader draw (Lnet/minecraft/client/renderer/WorldRenderer;)V a +MD net/minecraft/client/renderer/RegionRenderCache getBlockStateRaw (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; c +MD net/minecraft/client/renderer/RegionRenderCache getPositionIndex (Lnet/minecraft/util/BlockPos;)I e +MD net/minecraft/client/renderer/RegionRenderCacheBuilder getWorldRendererByLayerId (I)Lnet/minecraft/client/renderer/WorldRenderer; a +MD net/minecraft/client/renderer/RegionRenderCacheBuilder getWorldRendererByLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)Lnet/minecraft/client/renderer/WorldRenderer; a +MD net/minecraft/client/renderer/ChunkRenderContainer initialize (DDD)V a +MD net/minecraft/client/renderer/ChunkRenderContainer renderChunkLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)V a +MD net/minecraft/client/renderer/ChunkRenderContainer preRenderChunk (Lnet/minecraft/client/renderer/chunk/RenderChunk;)V a +MD net/minecraft/client/renderer/ChunkRenderContainer addRenderChunk (Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/util/EnumWorldBlockLayer;)V a +MD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer renderByItem (Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/renderer/EnumFaceDirection getVertexInformation (I)Lnet/minecraft/client/renderer/EnumFaceDirection$VertexInformation; a +MD net/minecraft/client/renderer/EnumFaceDirection getFacing (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/EnumFaceDirection; a +MD net/minecraft/client/renderer/EnumFaceDirection valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/EnumFaceDirection; valueOf +MD net/minecraft/client/renderer/EnumFaceDirection values ()[Lnet/minecraft/client/renderer/EnumFaceDirection; values +MD net/minecraft/client/renderer/EntityRenderer isShaderActive ()Z a +MD net/minecraft/client/renderer/EntityRenderer getMouseOver (F)V a +MD net/minecraft/client/renderer/EntityRenderer setFogColorBuffer (FFFF)Ljava/nio/FloatBuffer; a +MD net/minecraft/client/renderer/EntityRenderer setupCameraTransform (FI)V a +MD net/minecraft/client/renderer/EntityRenderer updateCameraAndRender (FJ)V a +MD net/minecraft/client/renderer/EntityRenderer getFOVModifier (FZ)F a +MD net/minecraft/client/renderer/EntityRenderer setupFog (IF)V a +MD net/minecraft/client/renderer/EntityRenderer renderWorldPass (IFJ)V a +MD net/minecraft/client/renderer/EntityRenderer updateShaderGroupSize (II)V a +MD net/minecraft/client/renderer/EntityRenderer access$000 (Lnet/minecraft/client/renderer/EntityRenderer;)Lnet/minecraft/client/Minecraft; a +MD net/minecraft/client/renderer/EntityRenderer renderCloudsCheck (Lnet/minecraft/client/renderer/RenderGlobal;FI)V a +MD net/minecraft/client/renderer/EntityRenderer loadShader (Lnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/renderer/EntityRenderer loadEntityShader (Lnet/minecraft/entity/Entity;)V a +MD net/minecraft/client/renderer/EntityRenderer getNightVisionBrightness (Lnet/minecraft/entity/EntityLivingBase;F)F a +MD net/minecraft/client/renderer/EntityRenderer stopUseShader ()V b +MD net/minecraft/client/renderer/EntityRenderer renderStreamIndicator (F)V b +MD net/minecraft/client/renderer/EntityRenderer renderHand (FI)V b +MD net/minecraft/client/renderer/EntityRenderer renderWorld (FJ)V b +MD net/minecraft/client/renderer/EntityRenderer switchUseShader ()V c +MD net/minecraft/client/renderer/EntityRenderer renderRainSnow (F)V c +MD net/minecraft/client/renderer/EntityRenderer activateNextShader ()V d +MD net/minecraft/client/renderer/EntityRenderer hurtCameraEffect (F)V d +MD net/minecraft/client/renderer/EntityRenderer updateRenderer ()V e +MD net/minecraft/client/renderer/EntityRenderer setupViewBobbing (F)V e +MD net/minecraft/client/renderer/EntityRenderer getShaderGroup ()Lnet/minecraft/client/shader/ShaderGroup; f +MD net/minecraft/client/renderer/EntityRenderer orientCamera (F)V f +MD net/minecraft/client/renderer/EntityRenderer updateLightmap (F)V g +MD net/minecraft/client/renderer/EntityRenderer disableLightmap ()V h +MD net/minecraft/client/renderer/EntityRenderer renderWorldDirections (F)V h +MD net/minecraft/client/renderer/EntityRenderer enableLightmap ()V i +MD net/minecraft/client/renderer/EntityRenderer updateFogColor (F)V i +MD net/minecraft/client/renderer/EntityRenderer setupOverlayRendering ()V j +MD net/minecraft/client/renderer/EntityRenderer getMapItemRenderer ()Lnet/minecraft/client/gui/MapItemRenderer; k +MD net/minecraft/client/renderer/EntityRenderer updateFovModifierHand ()V l +MD net/minecraft/client/renderer/EntityRenderer updateTorchFlicker ()V m +MD net/minecraft/client/renderer/EntityRenderer isDrawBlockOutline ()Z n +MD net/minecraft/client/renderer/EntityRenderer addRainParticles ()V o +MD net/minecraft/client/renderer/EntityRenderer$1 apply (Lnet/minecraft/entity/Entity;)Z a +MD net/minecraft/client/renderer/EntityRenderer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/renderer/EntityRenderer$2 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/EntityRenderer$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/EntityRenderer$3 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/EntityRenderer$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/EntityRenderer$4 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/EntityRenderer$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/GlStateManager disableNormalize ()V A +MD net/minecraft/client/renderer/GlStateManager enableRescaleNormal ()V B +MD net/minecraft/client/renderer/GlStateManager disableRescaleNormal ()V C +MD net/minecraft/client/renderer/GlStateManager loadIdentity ()V D +MD net/minecraft/client/renderer/GlStateManager pushMatrix ()V E +MD net/minecraft/client/renderer/GlStateManager popMatrix ()V F +MD net/minecraft/client/renderer/GlStateManager resetColor ()V G +MD net/minecraft/client/renderer/GlStateManager pushAttrib ()V a +MD net/minecraft/client/renderer/GlStateManager clearDepth (D)V a +MD net/minecraft/client/renderer/GlStateManager scale (DDD)V a +MD net/minecraft/client/renderer/GlStateManager ortho (DDDDDD)V a +MD net/minecraft/client/renderer/GlStateManager setFogDensity (F)V a +MD net/minecraft/client/renderer/GlStateManager doPolygonOffset (FF)V a +MD net/minecraft/client/renderer/GlStateManager scale (FFF)V a +MD net/minecraft/client/renderer/GlStateManager clearColor (FFFF)V a +MD net/minecraft/client/renderer/GlStateManager enableLight (I)V a +MD net/minecraft/client/renderer/GlStateManager alphaFunc (IF)V a +MD net/minecraft/client/renderer/GlStateManager colorMaterial (II)V a +MD net/minecraft/client/renderer/GlStateManager tryBlendFuncSeparate (IIII)V a +MD net/minecraft/client/renderer/GlStateManager getFloat (ILjava/nio/FloatBuffer;)V a +MD net/minecraft/client/renderer/GlStateManager enableTexGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)V a +MD net/minecraft/client/renderer/GlStateManager texGen (Lnet/minecraft/client/renderer/GlStateManager$TexGen;I)V a +MD net/minecraft/client/renderer/GlStateManager texGen (Lnet/minecraft/client/renderer/GlStateManager$TexGen;ILjava/nio/FloatBuffer;)V a +MD net/minecraft/client/renderer/GlStateManager multMatrix (Ljava/nio/FloatBuffer;)V a +MD net/minecraft/client/renderer/GlStateManager depthMask (Z)V a +MD net/minecraft/client/renderer/GlStateManager colorMask (ZZZZ)V a +MD net/minecraft/client/renderer/GlStateManager popAttrib ()V b +MD net/minecraft/client/renderer/GlStateManager translate (DDD)V b +MD net/minecraft/client/renderer/GlStateManager setFogStart (F)V b +MD net/minecraft/client/renderer/GlStateManager translate (FFF)V b +MD net/minecraft/client/renderer/GlStateManager rotate (FFFF)V b +MD net/minecraft/client/renderer/GlStateManager disableLight (I)V b +MD net/minecraft/client/renderer/GlStateManager blendFunc (II)V b +MD net/minecraft/client/renderer/GlStateManager viewport (IIII)V b +MD net/minecraft/client/renderer/GlStateManager disableTexGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)V b +MD net/minecraft/client/renderer/GlStateManager disableAlpha ()V c +MD net/minecraft/client/renderer/GlStateManager setFogEnd (F)V c +MD net/minecraft/client/renderer/GlStateManager color (FFF)V c +MD net/minecraft/client/renderer/GlStateManager color (FFFF)V c +MD net/minecraft/client/renderer/GlStateManager depthFunc (I)V c +MD net/minecraft/client/renderer/GlStateManager texGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)Lnet/minecraft/client/renderer/GlStateManager$TexGenCoord; c +MD net/minecraft/client/renderer/GlStateManager enableAlpha ()V d +MD net/minecraft/client/renderer/GlStateManager setFog (I)V d +MD net/minecraft/client/renderer/GlStateManager enableLighting ()V e +MD net/minecraft/client/renderer/GlStateManager cullFace (I)V e +MD net/minecraft/client/renderer/GlStateManager disableLighting ()V f +MD net/minecraft/client/renderer/GlStateManager colorLogicOp (I)V f +MD net/minecraft/client/renderer/GlStateManager enableColorMaterial ()V g +MD net/minecraft/client/renderer/GlStateManager setActiveTexture (I)V g +MD net/minecraft/client/renderer/GlStateManager disableColorMaterial ()V h +MD net/minecraft/client/renderer/GlStateManager deleteTexture (I)V h +MD net/minecraft/client/renderer/GlStateManager disableDepth ()V i +MD net/minecraft/client/renderer/GlStateManager bindTexture (I)V i +MD net/minecraft/client/renderer/GlStateManager enableDepth ()V j +MD net/minecraft/client/renderer/GlStateManager shadeModel (I)V j +MD net/minecraft/client/renderer/GlStateManager disableBlend ()V k +MD net/minecraft/client/renderer/GlStateManager enableBlend ()V l +MD net/minecraft/client/renderer/GlStateManager enableFog ()V m +MD net/minecraft/client/renderer/GlStateManager clear (I)V m +MD net/minecraft/client/renderer/GlStateManager disableFog ()V n +MD net/minecraft/client/renderer/GlStateManager matrixMode (I)V n +MD net/minecraft/client/renderer/GlStateManager enableCull ()V o +MD net/minecraft/client/renderer/GlStateManager callList (I)V o +MD net/minecraft/client/renderer/GlStateManager disableCull ()V p +MD net/minecraft/client/renderer/GlStateManager enablePolygonOffset ()V q +MD net/minecraft/client/renderer/GlStateManager disablePolygonOffset ()V r +MD net/minecraft/client/renderer/GlStateManager enableColorLogic ()V u +MD net/minecraft/client/renderer/GlStateManager disableColorLogic ()V v +MD net/minecraft/client/renderer/GlStateManager enableTexture2D ()V w +MD net/minecraft/client/renderer/GlStateManager disableTexture2D ()V x +MD net/minecraft/client/renderer/GlStateManager generateTexture ()I y +MD net/minecraft/client/renderer/GlStateManager enableNormalize ()V z +MD net/minecraft/client/renderer/GlStateManager$BooleanState setDisabled ()V a +MD net/minecraft/client/renderer/GlStateManager$BooleanState setState (Z)V a +MD net/minecraft/client/renderer/GlStateManager$BooleanState setEnabled ()V b +MD net/minecraft/client/renderer/GlStateManager$TexGen valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/GlStateManager$TexGen; valueOf +MD net/minecraft/client/renderer/GlStateManager$TexGen values ()[Lnet/minecraft/client/renderer/GlStateManager$TexGen; values +MD net/minecraft/client/renderer/IImageBuffer skinAvailable ()V a +MD net/minecraft/client/renderer/IImageBuffer parseUserSkin (Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage; a +MD net/minecraft/client/renderer/ItemRenderer updateEquippedItem ()V a +MD net/minecraft/client/renderer/ItemRenderer renderItemInFirstPerson (F)V a +MD net/minecraft/client/renderer/ItemRenderer rotateArroundXAndY (FF)V a +MD net/minecraft/client/renderer/ItemRenderer doBowTransformations (FLnet/minecraft/client/entity/AbstractClientPlayer;)V a +MD net/minecraft/client/renderer/ItemRenderer renderBlockInHand (FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/renderer/ItemRenderer isBlockTranslucent (Lnet/minecraft/block/Block;)Z a +MD net/minecraft/client/renderer/ItemRenderer setLightMapFromPlayer (Lnet/minecraft/client/entity/AbstractClientPlayer;)V a +MD net/minecraft/client/renderer/ItemRenderer performDrinking (Lnet/minecraft/client/entity/AbstractClientPlayer;F)V a +MD net/minecraft/client/renderer/ItemRenderer renderPlayerArm (Lnet/minecraft/client/entity/AbstractClientPlayer;FF)V a +MD net/minecraft/client/renderer/ItemRenderer renderItemMap (Lnet/minecraft/client/entity/AbstractClientPlayer;FFF)V a +MD net/minecraft/client/renderer/ItemRenderer rotateWithPlayerRotations (Lnet/minecraft/client/entity/EntityPlayerSP;F)V a +MD net/minecraft/client/renderer/ItemRenderer renderRightArm (Lnet/minecraft/client/renderer/entity/RenderPlayer;)V a +MD net/minecraft/client/renderer/ItemRenderer renderItem (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V a +MD net/minecraft/client/renderer/ItemRenderer resetEquippedProgress ()V b +MD net/minecraft/client/renderer/ItemRenderer renderOverlays (F)V b +MD net/minecraft/client/renderer/ItemRenderer transformFirstPersonItem (FF)V b +MD net/minecraft/client/renderer/ItemRenderer renderPlayerArms (Lnet/minecraft/client/entity/AbstractClientPlayer;)V b +MD net/minecraft/client/renderer/ItemRenderer renderLeftArm (Lnet/minecraft/client/renderer/entity/RenderPlayer;)V b +MD net/minecraft/client/renderer/ItemRenderer resetEquippedProgress2 ()V c +MD net/minecraft/client/renderer/ItemRenderer getMapAngleFromPitch (F)F c +MD net/minecraft/client/renderer/ItemRenderer doBlockTransformations ()V d +MD net/minecraft/client/renderer/ItemRenderer doItemUsedTransformations (F)V d +MD net/minecraft/client/renderer/ItemRenderer renderWaterOverlayTexture (F)V e +MD net/minecraft/client/renderer/ItemRenderer renderFireInFirstPerson (F)V f +MD net/minecraft/client/renderer/ItemModelMesher getModelManager ()Lnet/minecraft/client/resources/model/ModelManager; a +MD net/minecraft/client/renderer/ItemModelMesher getParticleIcon (Lnet/minecraft/item/Item;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/ItemModelMesher getParticleIcon (Lnet/minecraft/item/Item;I)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/ItemModelMesher register (Lnet/minecraft/item/Item;ILnet/minecraft/client/resources/model/ModelResourceLocation;)V a +MD net/minecraft/client/renderer/ItemModelMesher register (Lnet/minecraft/item/Item;Lnet/minecraft/client/renderer/ItemMeshDefinition;)V a +MD net/minecraft/client/renderer/ItemModelMesher getItemModel (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/renderer/ItemModelMesher rebuildCache ()V b +MD net/minecraft/client/renderer/ItemModelMesher getItemModel (Lnet/minecraft/item/Item;I)Lnet/minecraft/client/resources/model/IBakedModel; b +MD net/minecraft/client/renderer/ItemModelMesher getMetadata (Lnet/minecraft/item/ItemStack;)I b +MD net/minecraft/client/renderer/ItemModelMesher getIndex (Lnet/minecraft/item/Item;I)I c +MD net/minecraft/client/renderer/ItemMeshDefinition getModelLocation (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/resources/model/ModelResourceLocation; a +MD net/minecraft/client/renderer/RenderGlobal loadRenderers ()V a +MD net/minecraft/client/renderer/RenderGlobal fixTerrainFrustum (DDD)V a +MD net/minecraft/client/renderer/RenderGlobal hasCloudFog (DDDF)Z a +MD net/minecraft/client/renderer/RenderGlobal renderSky (FI)V a +MD net/minecraft/client/renderer/RenderGlobal createBindEntityOutlineFbs (II)V a +MD net/minecraft/client/renderer/RenderGlobal updateChunks (J)V a +MD net/minecraft/client/renderer/RenderGlobal renderBlockLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)V a +MD net/minecraft/client/renderer/RenderGlobal renderBlockLayer (Lnet/minecraft/util/EnumWorldBlockLayer;DILnet/minecraft/entity/Entity;)I a +MD net/minecraft/client/renderer/RenderGlobal drawSelectionBoundingBox (Lnet/minecraft/util/AxisAlignedBB;)V a +MD net/minecraft/client/renderer/RenderGlobal drawOutlinedBoundingBox (Lnet/minecraft/util/AxisAlignedBB;IIII)V a +MD net/minecraft/client/renderer/RenderGlobal setWorldAndLoadRenderers (Lnet/minecraft/client/multiplayer/WorldClient;)V a +MD net/minecraft/client/renderer/RenderGlobal renderStars (Lnet/minecraft/client/renderer/WorldRenderer;)V a +MD net/minecraft/client/renderer/RenderGlobal renderSky (Lnet/minecraft/client/renderer/WorldRenderer;FZ)V a +MD net/minecraft/client/renderer/RenderGlobal drawBlockDamageTexture (Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/client/renderer/RenderGlobal isPositionInRenderChunk (Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z a +MD net/minecraft/client/renderer/RenderGlobal getRenderChunkOffset (Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/chunk/RenderChunk; a +MD net/minecraft/client/renderer/RenderGlobal spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDDDD[I)V a +MD net/minecraft/client/renderer/RenderGlobal updateTileEntities (Ljava/util/Collection;Ljava/util/Collection;)V a +MD net/minecraft/client/renderer/RenderGlobal cleanupDamagedBlocks (Ljava/util/Iterator;)V a +MD net/minecraft/client/renderer/RenderGlobal getViewVector (Lnet/minecraft/entity/Entity;D)Lorg/lwjgl/util/vector/Vector3f; a +MD net/minecraft/client/renderer/RenderGlobal setupTerrain (Lnet/minecraft/entity/Entity;DLnet/minecraft/client/renderer/culling/ICamera;IZ)V a +MD net/minecraft/client/renderer/RenderGlobal renderWorldBorder (Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/client/renderer/RenderGlobal renderEntities (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;F)V a +MD net/minecraft/client/renderer/RenderGlobal drawSelectionBox (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/MovingObjectPosition;IF)V a +MD net/minecraft/client/renderer/RenderGlobal makeEntityOutlineShader ()V b +MD net/minecraft/client/renderer/RenderGlobal renderClouds (FI)V b +MD net/minecraft/client/renderer/RenderGlobal markBlocksForUpdate (IIIIII)V b +MD net/minecraft/client/renderer/RenderGlobal spawnEntityFX (IZDDDDDD[I)Lnet/minecraft/client/particle/EntityFX; b +MD net/minecraft/client/renderer/RenderGlobal renderEntityOutlineFramebuffer ()V c +MD net/minecraft/client/renderer/RenderGlobal renderCloudsFancy (FI)V c +MD net/minecraft/client/renderer/RenderGlobal getVisibleFacings (Lnet/minecraft/util/BlockPos;)Ljava/util/Set; c +MD net/minecraft/client/renderer/RenderGlobal isRenderEntityOutlines ()Z d +MD net/minecraft/client/renderer/RenderGlobal stopChunkUpdates ()V e +MD net/minecraft/client/renderer/RenderGlobal getDebugInfoRenders ()Ljava/lang/String; f +MD net/minecraft/client/renderer/RenderGlobal getDebugInfoEntities ()Ljava/lang/String; g +MD net/minecraft/client/renderer/RenderGlobal updateClouds ()V j +MD net/minecraft/client/renderer/RenderGlobal deleteAllDisplayLists ()V k +MD net/minecraft/client/renderer/RenderGlobal setDisplayListEntitiesDirty ()V m +MD net/minecraft/client/renderer/RenderGlobal updateDestroyBlockIcons ()V n +MD net/minecraft/client/renderer/RenderGlobal generateSky2 ()V o +MD net/minecraft/client/renderer/RenderGlobal generateSky ()V p +MD net/minecraft/client/renderer/RenderGlobal generateStars ()V q +MD net/minecraft/client/renderer/RenderGlobal renderSkyEnd ()V r +MD net/minecraft/client/renderer/RenderGlobal preRenderDamagedBlocks ()V s +MD net/minecraft/client/renderer/RenderGlobal postRenderDamagedBlocks ()V t +MD net/minecraft/client/renderer/RenderGlobal$1 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/RenderGlobal$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/ImageBufferDownload setAreaTransparent (IIII)V a +MD net/minecraft/client/renderer/ImageBufferDownload setAreaOpaque (IIII)V b +MD net/minecraft/client/renderer/ImageBufferDownload hasTransparency (IIII)Z c +MD net/minecraft/client/shader/Framebuffer deleteFramebuffer ()V a +MD net/minecraft/client/shader/Framebuffer setFramebufferColor (FFFF)V a +MD net/minecraft/client/shader/Framebuffer setFramebufferFilter (I)V a +MD net/minecraft/client/shader/Framebuffer createBindFramebuffer (II)V a +MD net/minecraft/client/shader/Framebuffer framebufferRenderExt (IIZ)V a +MD net/minecraft/client/shader/Framebuffer bindFramebuffer (Z)V a +MD net/minecraft/client/shader/Framebuffer checkFramebufferComplete ()V b +MD net/minecraft/client/shader/Framebuffer createFramebuffer (II)V b +MD net/minecraft/client/shader/Framebuffer bindFramebufferTexture ()V c +MD net/minecraft/client/shader/Framebuffer framebufferRender (II)V c +MD net/minecraft/client/shader/Framebuffer unbindFramebufferTexture ()V d +MD net/minecraft/client/shader/Framebuffer unbindFramebuffer ()V e +MD net/minecraft/client/shader/Framebuffer framebufferClear ()V f +MD net/minecraft/client/renderer/Tessellator getInstance ()Lnet/minecraft/client/renderer/Tessellator; a +MD net/minecraft/client/renderer/Tessellator draw ()V b +MD net/minecraft/client/renderer/Tessellator getWorldRenderer ()Lnet/minecraft/client/renderer/WorldRenderer; c +MD net/minecraft/client/renderer/VboRenderList setupArrayPointers ()V a +MD net/minecraft/client/renderer/VertexBufferUploader setVertexBuffer (Lnet/minecraft/client/renderer/vertex/VertexBuffer;)V a +MD net/minecraft/client/renderer/ViewFrustum deleteGlResources ()V a +MD net/minecraft/client/renderer/ViewFrustum updateChunkPositions (DD)V a +MD net/minecraft/client/renderer/ViewFrustum setCountChunksXYZ (I)V a +MD net/minecraft/client/renderer/ViewFrustum func_178157_a (III)I a +MD net/minecraft/client/renderer/ViewFrustum markBlocksForUpdate (IIIIII)V a +MD net/minecraft/client/renderer/ViewFrustum createRenderChunks (Lnet/minecraft/client/renderer/chunk/IRenderChunkFactory;)V a +MD net/minecraft/client/renderer/ViewFrustum getRenderChunk (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/renderer/chunk/RenderChunk; a +MD net/minecraft/client/renderer/ChestRenderer renderChestBrightness (Lnet/minecraft/block/Block;F)V a +MD net/minecraft/client/renderer/BlockModelShapes getBlockStateMapper ()Lnet/minecraft/client/renderer/block/statemap/BlockStateMapper; a +MD net/minecraft/client/renderer/BlockModelShapes registerBlockWithStateMapper (Lnet/minecraft/block/Block;Lnet/minecraft/client/renderer/block/statemap/IStateMapper;)V a +MD net/minecraft/client/renderer/BlockModelShapes getTexture (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/BlockModelShapes registerBuiltInBlocks ([Lnet/minecraft/block/Block;)V a +MD net/minecraft/client/renderer/BlockModelShapes getModelManager ()Lnet/minecraft/client/resources/model/ModelManager; b +MD net/minecraft/client/renderer/BlockModelShapes getModelForState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/resources/model/IBakedModel; b +MD net/minecraft/client/renderer/BlockModelShapes reloadModels ()V c +MD net/minecraft/client/renderer/BlockModelShapes registerAllBlocks ()V d +MD net/minecraft/client/renderer/BlockRendererDispatcher getBlockModelShapes ()Lnet/minecraft/client/renderer/BlockModelShapes; a +MD net/minecraft/client/renderer/BlockRendererDispatcher isRenderTypeChest (Lnet/minecraft/block/Block;I)Z a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlockBrightness (Lnet/minecraft/block/state/IBlockState;F)V a +MD net/minecraft/client/renderer/BlockRendererDispatcher getModelFromBlockState (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/renderer/BlockRendererDispatcher getBakedModel (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlock (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/renderer/WorldRenderer;)Z a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlockDamage (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/world/IBlockAccess;)V a +MD net/minecraft/client/renderer/BlockRendererDispatcher getBlockModelRenderer ()Lnet/minecraft/client/renderer/BlockModelRenderer; b +MD net/minecraft/client/renderer/BlockFluidRenderer initAtlasSprites ()V a +MD net/minecraft/client/renderer/BlockFluidRenderer renderFluid (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;)Z a +MD net/minecraft/client/renderer/BlockFluidRenderer getFluidHeight (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/material/Material;)F a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightnessColorQuads (FFFFLjava/util/List;)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelAmbientOcclusionQuads (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;[FLjava/util/BitSet;Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelStandardQuads (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;IZLnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;Ljava/util/BitSet;)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelAmbientOcclusion (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z a +MD net/minecraft/client/renderer/BlockModelRenderer renderModel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;)Z a +MD net/minecraft/client/renderer/BlockModelRenderer renderModel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z a +MD net/minecraft/client/renderer/BlockModelRenderer fillQuadBounds (Lnet/minecraft/block/Block;[ILnet/minecraft/util/EnumFacing;[FLjava/util/BitSet;)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightnessColor (Lnet/minecraft/client/resources/model/IBakedModel;FFFF)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightness (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;FZ)V a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelStandard (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z b +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo getNeighbourInfo (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; a +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; values +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace getAoBrightness (IIII)I a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace getVertexBrightness (IIIIFFFF)I a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace updateVertexBrightness (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;[FLjava/util/BitSet;)V a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace access$000 (Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)[I a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace access$100 (Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)[F b +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$200 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I a +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations getVertexTranslations (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; a +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$300 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I b +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$400 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I c +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$500 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I d +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; values +MD net/minecraft/client/renderer/BlockModelRenderer$Orientation valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$Orientation; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$Orientation values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$Orientation; values +MD net/minecraft/client/renderer/block/model/BakedQuad getVertexData ()[I a +MD net/minecraft/client/renderer/block/model/BakedQuad hasTintIndex ()Z b +MD net/minecraft/client/renderer/block/model/BakedQuad getTintIndex ()I c +MD net/minecraft/client/renderer/block/model/BakedQuad getFace ()Lnet/minecraft/util/EnumFacing; d +MD net/minecraft/client/renderer/block/model/BlockPart setDefaultUvs ()V a +MD net/minecraft/client/renderer/block/model/BlockPart getFaceUvs (Lnet/minecraft/util/EnumFacing;)[F a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseFacesCheck (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockPart; a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseRotation (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/renderer/block/model/BlockPartRotation; a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePosition (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lorg/lwjgl/util/vector/Vector3f; a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseEnumFacing (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseFaces (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; b +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseAngle (Lcom/google/gson/JsonObject;)F b +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseAxis (Lcom/google/gson/JsonObject;)Lnet/minecraft/util/EnumFacing$Axis; c +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePositionTo (Lcom/google/gson/JsonObject;)Lorg/lwjgl/util/vector/Vector3f; d +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePositionFrom (Lcom/google/gson/JsonObject;)Lorg/lwjgl/util/vector/Vector3f; e +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockPartFace; a +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseTintIndex (Lcom/google/gson/JsonObject;)I a +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseTexture (Lcom/google/gson/JsonObject;)Ljava/lang/String; b +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseCullFace (Lcom/google/gson/JsonObject;)Lnet/minecraft/util/EnumFacing; c +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178348_a (I)F a +MD net/minecraft/client/renderer/block/model/BlockFaceUV setUvs ([F)V a +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178346_b (I)F b +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178345_c (I)I c +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178347_d (I)I d +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockFaceUV; a +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer parseRotation (Lcom/google/gson/JsonObject;)I a +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer parseUV (Lcom/google/gson/JsonObject;)[F b +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlock getElements ()Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ModelBlock getTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; a +MD net/minecraft/client/renderer/block/model/ModelBlock deserialize (Ljava/io/Reader;)Lnet/minecraft/client/renderer/block/model/ModelBlock; a +MD net/minecraft/client/renderer/block/model/ModelBlock deserialize (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ModelBlock; a +MD net/minecraft/client/renderer/block/model/ModelBlock resolveTextureName (Ljava/lang/String;Lnet/minecraft/client/renderer/block/model/ModelBlock$Bookkeep;)Ljava/lang/String; a +MD net/minecraft/client/renderer/block/model/ModelBlock getParentFromMap (Ljava/util/Map;)V a +MD net/minecraft/client/renderer/block/model/ModelBlock isAmbientOcclusion ()Z b +MD net/minecraft/client/renderer/block/model/ModelBlock isTexturePresent (Ljava/lang/String;)Z b +MD net/minecraft/client/renderer/block/model/ModelBlock checkModelHierarchy (Ljava/util/Map;)V b +MD net/minecraft/client/renderer/block/model/ModelBlock isGui3d ()Z c +MD net/minecraft/client/renderer/block/model/ModelBlock resolveTextureName (Ljava/lang/String;)Ljava/lang/String; c +MD net/minecraft/client/renderer/block/model/ModelBlock isResolved ()Z d +MD net/minecraft/client/renderer/block/model/ModelBlock startsWithHash (Ljava/lang/String;)Z d +MD net/minecraft/client/renderer/block/model/ModelBlock getParentLocation ()Lnet/minecraft/util/ResourceLocation; e +MD net/minecraft/client/renderer/block/model/ModelBlock getRootModel ()Lnet/minecraft/client/renderer/block/model/ModelBlock; f +MD net/minecraft/client/renderer/block/model/ModelBlock getAllTransforms ()Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; g +MD net/minecraft/client/renderer/block/model/ModelBlock hasParent ()Z h +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getModelElements (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlock; a +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getAmbientOcclusionEnabled (Lcom/google/gson/JsonObject;)Z a +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getTextures (Lcom/google/gson/JsonObject;)Ljava/util/Map; b +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getParent (Lcom/google/gson/JsonObject;)Ljava/lang/String; c +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition parseFromReader (Ljava/io/Reader;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition getVariants (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants; b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer parseVariantsList (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer parseVariants (Lcom/google/gson/JsonDeserializationContext;Ljava/util/Map$Entry;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getModelLocation ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getRotation ()Lnet/minecraft/client/resources/model/ModelRotation; b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant isUvLocked ()Z c +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getWeight ()I d +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseRotation (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/resources/model/ModelRotation; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer makeModelLocation (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseModel (Lcom/google/gson/JsonObject;)Ljava/lang/String; b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseWeight (Lcom/google/gson/JsonObject;)I c +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseUvLock (Lcom/google/gson/JsonObject;)Z d +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants access$000 (Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants;)Ljava/lang/String; a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants getVariants ()Ljava/util/List; b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/BreakingFour remapVert (I)V a +MD net/minecraft/client/renderer/block/model/BreakingFour remapQuad ()V e +MD net/minecraft/client/renderer/block/model/FaceBakery getMatrixIdentity ()Lorg/lwjgl/util/vector/Matrix4f; a +MD net/minecraft/client/renderer/block/model/FaceBakery lockVertexUv (I[ILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery makeQuadVertexData (Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;[FLnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)[I a +MD net/minecraft/client/renderer/block/model/FaceBakery getFaceShadeColor (Lnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/client/renderer/block/model/FaceBakery rotatePart (Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery rotateVertex (Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/util/EnumFacing;ILnet/minecraft/client/resources/model/ModelRotation;Z)I a +MD net/minecraft/client/renderer/block/model/FaceBakery getPositionsDiv16 (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;)[F a +MD net/minecraft/client/renderer/block/model/FaceBakery makeBakedQuad (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)Lnet/minecraft/client/renderer/block/model/BakedQuad; a +MD net/minecraft/client/renderer/block/model/FaceBakery rotateScale (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Matrix4f;Lorg/lwjgl/util/vector/Vector3f;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery getFacingFromVertexData ([I)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/client/renderer/block/model/FaceBakery storeVertexData ([IIILorg/lwjgl/util/vector/Vector3f;ILnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery fillVertexData ([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockPartFace;[FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)V a +MD net/minecraft/client/renderer/block/model/FaceBakery applyFacing ([ILnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery lockUv ([ILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/renderer/block/model/FaceBakery getFaceBrightness (Lnet/minecraft/util/EnumFacing;)F b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178394_a (ILjava/lang/String;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178396_a (Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;Ljava/util/List;[IIIIIZ)V a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator makeItemModel (Lnet/minecraft/client/renderer/texture/TextureMap;Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178393_a (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178397_a (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Ljava/lang/String;I)Ljava/util/List; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178395_a (Ljava/util/List;Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;II)V a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178391_a ([IIIII)Z a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178383_a ()Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178382_a (I)V a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178385_b ()I b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178384_c ()I c +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178381_d ()I d +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing getFacing ()Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing access$000 (Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;)Z a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178372_b ()I b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178371_c ()I c +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178369_d ()Z d +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; valueOf +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing values ()[Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; values +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; a +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer parseVector3f (Lcom/google/gson/JsonObject;Ljava/lang/String;Lorg/lwjgl/util/vector/Vector3f;)Lorg/lwjgl/util/vector/Vector3f; a +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms applyTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V a +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms getTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; b +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms func_181687_c (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Z c +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer func_181683_a (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; a +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; a +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType; valueOf +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType values ()[Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType; values +MD net/minecraft/client/renderer/block/statemap/StateMapperBase getModelResourceLocation (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/resources/model/ModelResourceLocation; a +MD net/minecraft/client/renderer/block/statemap/StateMapperBase getPropertyString (Ljava/util/Map;)Ljava/lang/String; a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper putAllStateModelLocations ()Ljava/util/Map; a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper registerBlockStateMapper (Lnet/minecraft/block/Block;Lnet/minecraft/client/renderer/block/statemap/IStateMapper;)V a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper registerBuiltInBlocks ([Lnet/minecraft/block/Block;)V a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder build ()Lnet/minecraft/client/renderer/block/statemap/StateMap; a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder withName (Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder withSuffix (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder ignore ([Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; a +MD net/minecraft/client/renderer/block/statemap/IStateMapper putStateModelLocations (Lnet/minecraft/block/Block;)Ljava/util/Map; a +MD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer func_178463_a (Lnet/minecraft/tileentity/TileEntityBanner;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityBanner;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityBeacon;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher setWorld (Lnet/minecraft/world/World;)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher cacheActiveRenderInfo (Lnet/minecraft/world/World;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/entity/Entity;F)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDF)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntity (Lnet/minecraft/tileentity/TileEntity;FI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getSpecialRendererByClass (Ljava/lang/Class;)Lnet/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer; a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getSpecialRenderer (Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer; b +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer forceTileEntityRender ()Z a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer setRendererDispatcher (Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer bindTexture (Lnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer getWorld ()Lnet/minecraft/world/World; b +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; c +MD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityChest;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEnchantmentTable;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEnderChest;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer renderMob (Lnet/minecraft/tileentity/MobSpawnerBaseLogic;DDDF)V a +MD net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityMobSpawner;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityPiston;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntitySign;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer renderSkull (FFFLnet/minecraft/util/EnumFacing;FILcom/mojang/authlib/GameProfile;I)V a +MD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntitySkull;DDDFI)V a +MD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer func_147525_a (FFFF)Ljava/nio/FloatBuffer; a +MD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFI)V a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getStatus ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setRegionRenderCacheBuilder (Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)V a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setStatus (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status;)V a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setCompiledChunk (Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator addFinishRunnable (Ljava/lang/Runnable;)V a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getRenderChunk ()Lnet/minecraft/client/renderer/chunk/RenderChunk; b +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getCompiledChunk ()Lnet/minecraft/client/renderer/chunk/CompiledChunk; c +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getRegionRenderCacheBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; d +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator finish ()V e +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getLock ()Ljava/util/concurrent/locks/ReentrantLock; f +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getType ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; g +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator isFinished ()Z h +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; valueOf +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status values ()[Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; values +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; valueOf +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type values ()[Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; values +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher getDebugInfo ()Ljava/lang/String; a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher runChunkUploads (J)Z a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadChunk (Lnet/minecraft/util/EnumWorldBlockLayer;Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadDisplayList (Lnet/minecraft/client/renderer/WorldRenderer;ILnet/minecraft/client/renderer/chunk/RenderChunk;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadVertexBuffer (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/vertex/VertexBuffer;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher freeRenderBuilder (Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher access$000 (Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher;)Ljava/util/concurrent/BlockingQueue; a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateChunkLater (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher stopChunkUpdates ()V b +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateChunkNow (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z b +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher allocateRenderBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; c +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateTransparencyLater (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z c +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher getNextChunkUpdate ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; d +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher clearChunkUpdates ()V e +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker access$100 ()Lorg/apache/logging/log4j/Logger; a +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker processTask (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker access$000 (Lnet/minecraft/client/renderer/chunk/ChunkRenderWorker;Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker getRegionRenderCacheBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; b +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker freeRenderBuilder (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V b +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onSuccess (Ljava/util/List;)V a +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/renderer/chunk/CompiledChunk isEmpty ()Z a +MD net/minecraft/client/renderer/chunk/CompiledChunk setLayerUsed (Lnet/minecraft/util/EnumWorldBlockLayer;)V a +MD net/minecraft/client/renderer/chunk/CompiledChunk addTileEntity (Lnet/minecraft/tileentity/TileEntity;)V a +MD net/minecraft/client/renderer/chunk/CompiledChunk setState (Lnet/minecraft/client/renderer/WorldRenderer$State;)V a +MD net/minecraft/client/renderer/chunk/CompiledChunk setVisibility (Lnet/minecraft/client/renderer/chunk/SetVisibility;)V a +MD net/minecraft/client/renderer/chunk/CompiledChunk isVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/client/renderer/chunk/CompiledChunk getTileEntities ()Ljava/util/List; b +MD net/minecraft/client/renderer/chunk/CompiledChunk isLayerEmpty (Lnet/minecraft/util/EnumWorldBlockLayer;)Z b +MD net/minecraft/client/renderer/chunk/CompiledChunk getState ()Lnet/minecraft/client/renderer/WorldRenderer$State; c +MD net/minecraft/client/renderer/chunk/CompiledChunk setLayerStarted (Lnet/minecraft/util/EnumWorldBlockLayer;)V c +MD net/minecraft/client/renderer/chunk/CompiledChunk isLayerStarted (Lnet/minecraft/util/EnumWorldBlockLayer;)Z d +MD net/minecraft/client/renderer/chunk/ListedRenderChunk getDisplayList (Lnet/minecraft/util/EnumWorldBlockLayer;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)I a +MD net/minecraft/client/renderer/chunk/RenderChunk deleteGlResources ()V a +MD net/minecraft/client/renderer/chunk/RenderChunk resortTransparency (FFFLnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V a +MD net/minecraft/client/renderer/chunk/RenderChunk setFrameIndex (I)Z a +MD net/minecraft/client/renderer/chunk/RenderChunk postRenderBlocks (Lnet/minecraft/util/EnumWorldBlockLayer;FFFLnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V a +MD net/minecraft/client/renderer/chunk/RenderChunk preRenderBlocks (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/client/renderer/chunk/RenderChunk setCompiledChunk (Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V a +MD net/minecraft/client/renderer/chunk/RenderChunk setPosition (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/client/renderer/chunk/RenderChunk getBlockPosOffset16 (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/BlockPos; a +MD net/minecraft/client/renderer/chunk/RenderChunk setNeedsUpdate (Z)V a +MD net/minecraft/client/renderer/chunk/RenderChunk finishCompileTask ()V b +MD net/minecraft/client/renderer/chunk/RenderChunk rebuildChunk (FFFLnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V b +MD net/minecraft/client/renderer/chunk/RenderChunk getVertexBufferByLayer (I)Lnet/minecraft/client/renderer/vertex/VertexBuffer; b +MD net/minecraft/client/renderer/chunk/RenderChunk getLockCompileTask ()Ljava/util/concurrent/locks/ReentrantLock; c +MD net/minecraft/client/renderer/chunk/RenderChunk makeCompileTaskChunk ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; d +MD net/minecraft/client/renderer/chunk/RenderChunk makeCompileTaskTransparency ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; e +MD net/minecraft/client/renderer/chunk/RenderChunk multModelviewMatrix ()V f +MD net/minecraft/client/renderer/chunk/RenderChunk getCompiledChunk ()Lnet/minecraft/client/renderer/chunk/CompiledChunk; g +MD net/minecraft/client/renderer/chunk/RenderChunk stopCompileTask ()V h +MD net/minecraft/client/renderer/chunk/RenderChunk getPosition ()Lnet/minecraft/util/BlockPos; j +MD net/minecraft/client/renderer/chunk/RenderChunk isNeedsUpdate ()Z l +MD net/minecraft/client/renderer/chunk/RenderChunk initModelviewMatrix ()V m +MD net/minecraft/client/renderer/chunk/IRenderChunkFactory makeRenderChunk (Lnet/minecraft/world/World;Lnet/minecraft/client/renderer/RenderGlobal;Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/client/renderer/chunk/RenderChunk; a +MD net/minecraft/client/renderer/chunk/VisGraph computeVisibility ()Lnet/minecraft/client/renderer/chunk/SetVisibility; a +MD net/minecraft/client/renderer/chunk/VisGraph func_178604_a (I)Ljava/util/Set; a +MD net/minecraft/client/renderer/chunk/VisGraph getIndex (III)I a +MD net/minecraft/client/renderer/chunk/VisGraph func_178603_a (ILnet/minecraft/util/EnumFacing;)I a +MD net/minecraft/client/renderer/chunk/VisGraph func_178610_a (ILjava/util/Set;)V a +MD net/minecraft/client/renderer/chunk/VisGraph func_178606_a (Lnet/minecraft/util/BlockPos;)V a +MD net/minecraft/client/renderer/chunk/VisGraph func_178609_b (Lnet/minecraft/util/BlockPos;)Ljava/util/Set; b +MD net/minecraft/client/renderer/chunk/VisGraph getIndex (Lnet/minecraft/util/BlockPos;)I c +MD net/minecraft/client/renderer/chunk/SetVisibility isVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Z a +MD net/minecraft/client/renderer/chunk/SetVisibility setVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;Z)V a +MD net/minecraft/client/renderer/chunk/SetVisibility setManyVisible (Ljava/util/Set;)V a +MD net/minecraft/client/renderer/chunk/SetVisibility setAllVisible (Z)V a +MD net/minecraft/client/renderer/chunk/SetVisibility toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/culling/ICamera setPosition (DDD)V a +MD net/minecraft/client/renderer/culling/ICamera isBoundingBoxInFrustum (Lnet/minecraft/util/AxisAlignedBB;)Z a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl getInstance ()Lnet/minecraft/client/renderer/culling/ClippingHelper; a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl normalize ([F)V a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl init ()V b +MD net/minecraft/client/renderer/culling/Frustum isBoxInFrustum (DDDDDD)Z b +MD net/minecraft/client/renderer/culling/ClippingHelper dot ([FDDD)D a +MD net/minecraft/client/renderer/culling/ClippingHelper isBoxInFrustum (DDDDDD)Z b +MD net/minecraft/client/renderer/entity/ArmorStandRenderer getMainModel ()Lnet/minecraft/client/model/ModelArmorStand; a +MD net/minecraft/client/renderer/entity/ArmorStandRenderer getEntityTexture (Lnet/minecraft/entity/item/EntityArmorStand;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/ArmorStandRenderer rotateCorpse (Lnet/minecraft/entity/item/EntityArmorStand;FFF)V a +MD net/minecraft/client/renderer/entity/ArmorStandRenderer canRenderName (Lnet/minecraft/entity/item/EntityArmorStand;)Z b +MD net/minecraft/client/renderer/entity/RenderArrow getEntityTexture (Lnet/minecraft/entity/projectile/EntityArrow;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderArrow doRender (Lnet/minecraft/entity/projectile/EntityArrow;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderBat getEntityTexture (Lnet/minecraft/entity/passive/EntityBat;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderBat preRenderCallback (Lnet/minecraft/entity/passive/EntityBat;F)V a +MD net/minecraft/client/renderer/entity/RenderBat rotateCorpse (Lnet/minecraft/entity/passive/EntityBat;FFF)V a +MD net/minecraft/client/renderer/entity/RenderBlaze getEntityTexture (Lnet/minecraft/entity/monster/EntityBlaze;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderBoat getEntityTexture (Lnet/minecraft/entity/item/EntityBoat;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderBoat doRender (Lnet/minecraft/entity/item/EntityBoat;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderCaveSpider getEntityTexture (Lnet/minecraft/entity/monster/EntityCaveSpider;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderCaveSpider preRenderCallback (Lnet/minecraft/entity/monster/EntityCaveSpider;F)V a +MD net/minecraft/client/renderer/entity/RenderChicken getEntityTexture (Lnet/minecraft/entity/passive/EntityChicken;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderChicken handleRotationFloat (Lnet/minecraft/entity/passive/EntityChicken;F)F a +MD net/minecraft/client/renderer/entity/RenderCow getEntityTexture (Lnet/minecraft/entity/passive/EntityCow;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderCreeper getEntityTexture (Lnet/minecraft/entity/monster/EntityCreeper;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderCreeper preRenderCallback (Lnet/minecraft/entity/monster/EntityCreeper;F)V a +MD net/minecraft/client/renderer/entity/RenderCreeper getColorMultiplier (Lnet/minecraft/entity/monster/EntityCreeper;FF)I a +MD net/minecraft/client/renderer/tileentity/RenderEnderCrystal getEntityTexture (Lnet/minecraft/entity/item/EntityEnderCrystal;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/tileentity/RenderEnderCrystal doRender (Lnet/minecraft/entity/item/EntityEnderCrystal;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderDragon getEntityTexture (Lnet/minecraft/entity/boss/EntityDragon;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderDragon drawRechargeRay (Lnet/minecraft/entity/boss/EntityDragon;DDDF)V a +MD net/minecraft/client/renderer/entity/RenderDragon doRender (Lnet/minecraft/entity/boss/EntityDragon;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderDragon rotateCorpse (Lnet/minecraft/entity/boss/EntityDragon;FFF)V a +MD net/minecraft/client/renderer/entity/RenderDragon renderModel (Lnet/minecraft/entity/boss/EntityDragon;FFFFFF)V a +MD net/minecraft/client/renderer/entity/RenderEnderman getEntityTexture (Lnet/minecraft/entity/monster/EntityEnderman;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderEnderman doRender (Lnet/minecraft/entity/monster/EntityEnderman;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderEndermite getDeathMaxRotation (Lnet/minecraft/entity/monster/EntityEndermite;)F a +MD net/minecraft/client/renderer/entity/RenderEndermite getEntityTexture (Lnet/minecraft/entity/monster/EntityEndermite;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/renderer/entity/RenderManager isRenderShadow ()Z a +MD net/minecraft/client/renderer/entity/RenderManager setRenderPosition (DDD)V a +MD net/minecraft/client/renderer/entity/RenderManager setPlayerViewY (F)V a +MD net/minecraft/client/renderer/entity/RenderManager set (Lnet/minecraft/world/World;)V a +MD net/minecraft/client/renderer/entity/RenderManager cacheActiveRenderInfo (Lnet/minecraft/world/World;Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;Lnet/minecraft/client/settings/GameSettings;F)V a +MD net/minecraft/client/renderer/entity/RenderManager getEntityClassRenderObject (Ljava/lang/Class;)Lnet/minecraft/client/renderer/entity/Render; a +MD net/minecraft/client/renderer/entity/RenderManager getEntityRenderObject (Lnet/minecraft/entity/Entity;)Lnet/minecraft/client/renderer/entity/Render; a +MD net/minecraft/client/renderer/entity/RenderManager renderEntityWithPosYaw (Lnet/minecraft/entity/Entity;DDDFF)Z a +MD net/minecraft/client/renderer/entity/RenderManager doRenderEntity (Lnet/minecraft/entity/Entity;DDDFFZ)Z a +MD net/minecraft/client/renderer/entity/RenderManager renderEntitySimple (Lnet/minecraft/entity/Entity;F)Z a +MD net/minecraft/client/renderer/entity/RenderManager renderEntityStatic (Lnet/minecraft/entity/Entity;FZ)Z a +MD net/minecraft/client/renderer/entity/RenderManager shouldRender (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z a +MD net/minecraft/client/renderer/entity/RenderManager setRenderShadow (Z)V a +MD net/minecraft/client/renderer/entity/RenderManager isDebugBoundingBox ()Z b +MD net/minecraft/client/renderer/entity/RenderManager getDistanceToCamera (DDD)D b +MD net/minecraft/client/renderer/entity/RenderManager renderDebugBoundingBox (Lnet/minecraft/entity/Entity;DDDFF)V b +MD net/minecraft/client/renderer/entity/RenderManager renderWitherSkull (Lnet/minecraft/entity/Entity;F)V b +MD net/minecraft/client/renderer/entity/RenderManager setDebugBoundingBox (Z)V b +MD net/minecraft/client/renderer/entity/RenderManager getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; c +MD net/minecraft/client/renderer/entity/RenderManager setRenderOutlines (Z)V c +MD net/minecraft/client/renderer/entity/Render getWorldFromRenderManager ()Lnet/minecraft/world/World; a +MD net/minecraft/client/renderer/entity/Render renderShadowBlock (Lnet/minecraft/block/Block;DDDLnet/minecraft/util/BlockPos;FFDDD)V a +MD net/minecraft/client/renderer/entity/Render renderOffsetAABB (Lnet/minecraft/util/AxisAlignedBB;DDD)V a +MD net/minecraft/client/renderer/entity/Render bindTexture (Lnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/renderer/entity/Render getEntityTexture (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/Render renderName (Lnet/minecraft/entity/Entity;DDD)V a +MD net/minecraft/client/renderer/entity/Render renderEntityOnFire (Lnet/minecraft/entity/Entity;DDDF)V a +MD net/minecraft/client/renderer/entity/Render doRender (Lnet/minecraft/entity/Entity;DDDFF)V a +MD net/minecraft/client/renderer/entity/Render renderOffsetLivingLabel (Lnet/minecraft/entity/Entity;DDDLjava/lang/String;FD)V a +MD net/minecraft/client/renderer/entity/Render shouldRender (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z a +MD net/minecraft/client/renderer/entity/Render renderLivingLabel (Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V a +MD net/minecraft/client/renderer/entity/Render canRenderName (Lnet/minecraft/entity/Entity;)Z b +MD net/minecraft/client/renderer/entity/Render doRenderShadowAndFire (Lnet/minecraft/entity/Entity;DDDFF)V b +MD net/minecraft/client/renderer/entity/Render getFontRendererFromRenderManager ()Lnet/minecraft/client/gui/FontRenderer; c +MD net/minecraft/client/renderer/entity/Render bindEntityTexture (Lnet/minecraft/entity/Entity;)Z c +MD net/minecraft/client/renderer/entity/Render renderShadow (Lnet/minecraft/entity/Entity;DDDFF)V c +MD net/minecraft/client/renderer/entity/Render getRenderManager ()Lnet/minecraft/client/renderer/entity/RenderManager; d +MD net/minecraft/client/renderer/entity/RenderXPOrb getEntityTexture (Lnet/minecraft/entity/item/EntityXPOrb;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderXPOrb doRender (Lnet/minecraft/entity/item/EntityXPOrb;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderFallingBlock getEntityTexture (Lnet/minecraft/entity/item/EntityFallingBlock;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderFallingBlock doRender (Lnet/minecraft/entity/item/EntityFallingBlock;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderFireball getEntityTexture (Lnet/minecraft/entity/projectile/EntityFireball;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderFireball doRender (Lnet/minecraft/entity/projectile/EntityFireball;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderFish getEntityTexture (Lnet/minecraft/entity/projectile/EntityFishHook;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderFish doRender (Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderGhast getEntityTexture (Lnet/minecraft/entity/monster/EntityGhast;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderGhast preRenderCallback (Lnet/minecraft/entity/monster/EntityGhast;F)V a +MD net/minecraft/client/renderer/entity/RenderGiantZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityGiantZombie;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderGiantZombie preRenderCallback (Lnet/minecraft/entity/monster/EntityGiantZombie;F)V a +MD net/minecraft/client/renderer/entity/RenderGuardian func_177110_a (Lnet/minecraft/entity/EntityLivingBase;DF)Lnet/minecraft/util/Vec3; a +MD net/minecraft/client/renderer/entity/RenderGuardian getEntityTexture (Lnet/minecraft/entity/monster/EntityGuardian;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderGuardian doRender (Lnet/minecraft/entity/monster/EntityGuardian;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderGuardian preRenderCallback (Lnet/minecraft/entity/monster/EntityGuardian;F)V a +MD net/minecraft/client/renderer/entity/RenderGuardian shouldRender (Lnet/minecraft/entity/monster/EntityGuardian;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z a +MD net/minecraft/client/renderer/entity/RenderHorse getEntityTexture (Lnet/minecraft/entity/passive/EntityHorse;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderHorse preRenderCallback (Lnet/minecraft/entity/passive/EntityHorse;F)V a +MD net/minecraft/client/renderer/entity/RenderHorse func_110848_b (Lnet/minecraft/entity/passive/EntityHorse;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/renderer/entity/RenderBiped getEntityTexture (Lnet/minecraft/entity/EntityLiving;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderEntityItem getEntityTexture (Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderEntityItem doRender (Lnet/minecraft/entity/item/EntityItem;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderEntityItem func_177077_a (Lnet/minecraft/entity/item/EntityItem;DDDFLnet/minecraft/client/resources/model/IBakedModel;)I a +MD net/minecraft/client/renderer/entity/RenderEntityItem func_177078_a (Lnet/minecraft/item/ItemStack;)I a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame getEntityTexture (Lnet/minecraft/entity/item/EntityItemFrame;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame renderName (Lnet/minecraft/entity/item/EntityItemFrame;DDD)V a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame doRender (Lnet/minecraft/entity/item/EntityItemFrame;DDDFF)V a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame renderItem (Lnet/minecraft/entity/item/EntityItemFrame;)V b +MD net/minecraft/client/renderer/entity/RenderItem getItemModelMesher ()Lnet/minecraft/client/renderer/ItemModelMesher; a +MD net/minecraft/client/renderer/entity/RenderItem setupGuiTransform (IIZ)V a +MD net/minecraft/client/renderer/entity/RenderItem registerBlock (Lnet/minecraft/block/Block;ILjava/lang/String;)V a +MD net/minecraft/client/renderer/entity/RenderItem registerBlock (Lnet/minecraft/block/Block;Ljava/lang/String;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItemOverlays (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/item/ItemStack;II)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItemOverlayIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V a +MD net/minecraft/client/renderer/entity/RenderItem draw (Lnet/minecraft/client/renderer/WorldRenderer;IIIIIIII)V a +MD net/minecraft/client/renderer/entity/RenderItem putQuadNormal (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/block/model/BakedQuad;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderQuad (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/block/model/BakedQuad;I)V a +MD net/minecraft/client/renderer/entity/RenderItem renderQuads (Lnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;ILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/renderer/entity/RenderItem isThereOneNegativeScale (Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f;)Z a +MD net/minecraft/client/renderer/entity/RenderItem renderEffect (Lnet/minecraft/client/resources/model/IBakedModel;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;I)V a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;ILnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V a +MD net/minecraft/client/renderer/entity/RenderItem registerItem (Lnet/minecraft/item/Item;ILjava/lang/String;)V a +MD net/minecraft/client/renderer/entity/RenderItem registerItem (Lnet/minecraft/item/Item;Ljava/lang/String;)V a +MD net/minecraft/client/renderer/entity/RenderItem shouldRenderItemIn3D (Lnet/minecraft/item/ItemStack;)Z a +MD net/minecraft/client/renderer/entity/RenderItem renderItemIntoGUI (Lnet/minecraft/item/ItemStack;II)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItem (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItem (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItemModelTransform (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V a +MD net/minecraft/client/renderer/entity/RenderItem renderItemModelForEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V a +MD net/minecraft/client/renderer/entity/RenderItem isNotRenderingEffectsInGUI (Z)V a +MD net/minecraft/client/renderer/entity/RenderItem registerItems ()V b +MD net/minecraft/client/renderer/entity/RenderItem preTransform (Lnet/minecraft/item/ItemStack;)V b +MD net/minecraft/client/renderer/entity/RenderItem renderItemAndEffectIntoGUI (Lnet/minecraft/item/ItemStack;II)V b +MD net/minecraft/client/renderer/entity/RenderItem$1 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/entity/RenderItem$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$2 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/entity/RenderItem$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$3 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/entity/RenderItem$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$4 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/entity/RenderItem$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderMagmaCube getEntityTexture (Lnet/minecraft/entity/monster/EntityMagmaCube;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderMagmaCube preRenderCallback (Lnet/minecraft/entity/monster/EntityMagmaCube;F)V a +MD net/minecraft/client/renderer/entity/RenderLeashKnot getEntityTexture (Lnet/minecraft/entity/EntityLeashKnot;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderLeashKnot doRender (Lnet/minecraft/entity/EntityLeashKnot;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderLightningBolt getEntityTexture (Lnet/minecraft/entity/effect/EntityLightningBolt;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderLightningBolt doRender (Lnet/minecraft/entity/effect/EntityLightningBolt;DDDFF)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity transformHeldFull3DItemLayer ()V C_ +MD net/minecraft/client/renderer/entity/RendererLivingEntity interpolateRotation (FFF)F a +MD net/minecraft/client/renderer/entity/RendererLivingEntity addLayer (Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z a +MD net/minecraft/client/renderer/entity/RendererLivingEntity canRenderName (Lnet/minecraft/entity/EntityLivingBase;)Z a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderLivingAt (Lnet/minecraft/entity/EntityLivingBase;DDD)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity doRender (Lnet/minecraft/entity/EntityLivingBase;DDDFF)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity preRenderCallback (Lnet/minecraft/entity/EntityLivingBase;F)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity getColorMultiplier (Lnet/minecraft/entity/EntityLivingBase;FF)I a +MD net/minecraft/client/renderer/entity/RendererLivingEntity rotateCorpse (Lnet/minecraft/entity/EntityLivingBase;FFF)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderModel (Lnet/minecraft/entity/EntityLivingBase;FFFFFF)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderLayers (Lnet/minecraft/entity/EntityLivingBase;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity setBrightness (Lnet/minecraft/entity/EntityLivingBase;FZ)Z a +MD net/minecraft/client/renderer/entity/RendererLivingEntity setRenderOutlines (Z)V a +MD net/minecraft/client/renderer/entity/RendererLivingEntity getMainModel ()Lnet/minecraft/client/model/ModelBase; b +MD net/minecraft/client/renderer/entity/RendererLivingEntity removeLayer (Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z b +MD net/minecraft/client/renderer/entity/RendererLivingEntity getDeathMaxRotation (Lnet/minecraft/entity/EntityLivingBase;)F b +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderName (Lnet/minecraft/entity/EntityLivingBase;DDD)V b +MD net/minecraft/client/renderer/entity/RendererLivingEntity handleRotationFloat (Lnet/minecraft/entity/EntityLivingBase;F)F b +MD net/minecraft/client/renderer/entity/RendererLivingEntity setScoreTeamColor (Lnet/minecraft/entity/EntityLivingBase;)Z c +MD net/minecraft/client/renderer/entity/RendererLivingEntity setDoRenderBrightness (Lnet/minecraft/entity/EntityLivingBase;F)Z c +MD net/minecraft/client/renderer/entity/RendererLivingEntity getSwingProgress (Lnet/minecraft/entity/EntityLivingBase;F)F d +MD net/minecraft/client/renderer/entity/RendererLivingEntity unsetScoreTeamColor ()V e +MD net/minecraft/client/renderer/entity/RendererLivingEntity unsetBrightness ()V f +MD net/minecraft/client/renderer/entity/RenderMinecart getEntityTexture (Lnet/minecraft/entity/item/EntityMinecart;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderMinecart doRender (Lnet/minecraft/entity/item/EntityMinecart;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderMinecart func_180560_a (Lnet/minecraft/entity/item/EntityMinecart;FLnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/client/renderer/entity/RenderMinecartMobSpawner func_180560_a (Lnet/minecraft/entity/ai/EntityMinecartMobSpawner;FLnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/client/renderer/entity/RenderLiving interpolateValue (DDD)D a +MD net/minecraft/client/renderer/entity/RenderLiving doRender (Lnet/minecraft/entity/EntityLiving;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderLiving setLightmap (Lnet/minecraft/entity/EntityLiving;F)V a +MD net/minecraft/client/renderer/entity/RenderLiving shouldRender (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z a +MD net/minecraft/client/renderer/entity/RenderLiving canRenderName (Lnet/minecraft/entity/EntityLiving;)Z b +MD net/minecraft/client/renderer/entity/RenderLiving renderLeash (Lnet/minecraft/entity/EntityLiving;DDDFF)V b +MD net/minecraft/client/renderer/entity/RenderMooshroom getEntityTexture (Lnet/minecraft/entity/passive/EntityMooshroom;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderOcelot getEntityTexture (Lnet/minecraft/entity/passive/EntityOcelot;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderOcelot preRenderCallback (Lnet/minecraft/entity/passive/EntityOcelot;F)V a +MD net/minecraft/client/renderer/entity/RenderPainting getEntityTexture (Lnet/minecraft/entity/item/EntityPainting;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderPainting doRender (Lnet/minecraft/entity/item/EntityPainting;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderPainting setLightmap (Lnet/minecraft/entity/item/EntityPainting;FF)V a +MD net/minecraft/client/renderer/entity/RenderPainting renderPainting (Lnet/minecraft/entity/item/EntityPainting;IIII)V a +MD net/minecraft/client/renderer/entity/RenderPig getEntityTexture (Lnet/minecraft/entity/passive/EntityPig;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderPigZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityPigZombie;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderRabbit getEntityTexture (Lnet/minecraft/entity/passive/EntityRabbit;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSheep getEntityTexture (Lnet/minecraft/entity/passive/EntitySheep;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSilverfish getDeathMaxRotation (Lnet/minecraft/entity/monster/EntitySilverfish;)F a +MD net/minecraft/client/renderer/entity/RenderSilverfish getEntityTexture (Lnet/minecraft/entity/monster/EntitySilverfish;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/renderer/entity/RenderSkeleton getEntityTexture (Lnet/minecraft/entity/monster/EntitySkeleton;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSkeleton preRenderCallback (Lnet/minecraft/entity/monster/EntitySkeleton;F)V a +MD net/minecraft/client/renderer/entity/RenderSlime getEntityTexture (Lnet/minecraft/entity/monster/EntitySlime;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSlime doRender (Lnet/minecraft/entity/monster/EntitySlime;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderSlime preRenderCallback (Lnet/minecraft/entity/monster/EntitySlime;F)V a +MD net/minecraft/client/renderer/entity/RenderSnowMan getEntityTexture (Lnet/minecraft/entity/monster/EntitySnowman;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSnowMan getMainModel ()Lnet/minecraft/client/model/ModelSnowMan; g +MD net/minecraft/client/renderer/entity/RenderSpider getEntityTexture (Lnet/minecraft/entity/monster/EntitySpider;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSpider getDeathMaxRotation (Lnet/minecraft/entity/monster/EntitySpider;)F b +MD net/minecraft/client/renderer/entity/RenderSquid getEntityTexture (Lnet/minecraft/entity/passive/EntitySquid;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderSquid handleRotationFloat (Lnet/minecraft/entity/passive/EntitySquid;F)F a +MD net/minecraft/client/renderer/entity/RenderSquid rotateCorpse (Lnet/minecraft/entity/passive/EntitySquid;FFF)V a +MD net/minecraft/client/renderer/entity/RenderSnowball func_177082_d (Lnet/minecraft/entity/Entity;)Lnet/minecraft/item/ItemStack; d +MD net/minecraft/client/renderer/entity/RenderPotion func_177082_d (Lnet/minecraft/entity/projectile/EntityPotion;)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/client/renderer/entity/RenderTntMinecart func_180560_a (Lnet/minecraft/entity/item/EntityMinecartTNT;FLnet/minecraft/block/state/IBlockState;)V a +MD net/minecraft/client/renderer/entity/RenderTNTPrimed getEntityTexture (Lnet/minecraft/entity/item/EntityTNTPrimed;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderTNTPrimed doRender (Lnet/minecraft/entity/item/EntityTNTPrimed;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderIronGolem getEntityTexture (Lnet/minecraft/entity/monster/EntityIronGolem;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderIronGolem rotateCorpse (Lnet/minecraft/entity/monster/EntityIronGolem;FFF)V a +MD net/minecraft/client/renderer/entity/RenderVillager getEntityTexture (Lnet/minecraft/entity/passive/EntityVillager;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderVillager preRenderCallback (Lnet/minecraft/entity/passive/EntityVillager;F)V a +MD net/minecraft/client/renderer/entity/RenderVillager getMainModel ()Lnet/minecraft/client/model/ModelVillager; g +MD net/minecraft/client/renderer/entity/RenderWitch getEntityTexture (Lnet/minecraft/entity/monster/EntityWitch;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderWitch doRender (Lnet/minecraft/entity/monster/EntityWitch;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderWitch preRenderCallback (Lnet/minecraft/entity/monster/EntityWitch;F)V a +MD net/minecraft/client/renderer/entity/RenderWither getEntityTexture (Lnet/minecraft/entity/boss/EntityWither;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderWither doRender (Lnet/minecraft/entity/boss/EntityWither;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderWither preRenderCallback (Lnet/minecraft/entity/boss/EntityWither;F)V a +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull func_82400_a (FFF)F a +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull getEntityTexture (Lnet/minecraft/entity/projectile/EntityWitherSkull;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull doRender (Lnet/minecraft/entity/projectile/EntityWitherSkull;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderWolf getEntityTexture (Lnet/minecraft/entity/passive/EntityWolf;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderWolf doRender (Lnet/minecraft/entity/passive/EntityWolf;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderWolf handleRotationFloat (Lnet/minecraft/entity/passive/EntityWolf;F)F a +MD net/minecraft/client/renderer/entity/RenderZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityZombie;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderZombie doRender (Lnet/minecraft/entity/monster/EntityZombie;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderZombie rotateCorpse (Lnet/minecraft/entity/monster/EntityZombie;FFF)V a +MD net/minecraft/client/renderer/entity/RenderZombie func_82427_a (Lnet/minecraft/entity/monster/EntityZombie;)V b +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase initArmor ()V a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorModel (I)Lnet/minecraft/client/model/ModelBase; a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase setModelPartVisible (Lnet/minecraft/client/model/ModelBase;I)V a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderLayer (Lnet/minecraft/entity/EntityLivingBase;FFFFFFFI)V a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getCurrentArmor (Lnet/minecraft/entity/EntityLivingBase;I)Lnet/minecraft/item/ItemStack; a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderGlint (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/model/ModelBase;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorResource (Lnet/minecraft/item/ItemArmor;Z)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorResource (Lnet/minecraft/item/ItemArmor;ZLjava/lang/String;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase isSlotForLeggings (I)Z b +MD net/minecraft/client/renderer/entity/layers/LayerCape doRenderLayer (Lnet/minecraft/client/entity/AbstractClientPlayer;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerHeldBlock doRenderLayer (Lnet/minecraft/entity/monster/EntityEnderman;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge doRenderLayer (Lnet/minecraft/entity/monster/EntityCreeper;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head doRenderLayer (Lnet/minecraft/client/entity/AbstractClientPlayer;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath doRenderLayer (Lnet/minecraft/entity/boss/EntityDragon;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes doRenderLayer (Lnet/minecraft/entity/boss/EntityDragon;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes doRenderLayer (Lnet/minecraft/entity/monster/EntityEnderman;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerBipedArmor setModelVisible (Lnet/minecraft/client/model/ModelBiped;)V a +MD net/minecraft/client/renderer/entity/layers/LayerBipedArmor setModelPartVisible (Lnet/minecraft/client/model/ModelBiped;I)V a +MD net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom doRenderLayer (Lnet/minecraft/entity/passive/EntityMooshroom;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerSaddle doRenderLayer (Lnet/minecraft/entity/passive/EntityPig;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerRenderer doRenderLayer (Lnet/minecraft/entity/EntityLivingBase;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerRenderer shouldCombineTextures ()Z b +MD net/minecraft/client/renderer/entity/layers/LayerSheepWool doRenderLayer (Lnet/minecraft/entity/passive/EntitySheep;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerSlimeGel doRenderLayer (Lnet/minecraft/entity/monster/EntitySlime;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerSnowmanHead doRenderLayer (Lnet/minecraft/entity/monster/EntitySnowman;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes doRenderLayer (Lnet/minecraft/entity/monster/EntitySpider;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower doRenderLayer (Lnet/minecraft/entity/monster/EntityIronGolem;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch doRenderLayer (Lnet/minecraft/entity/monster/EntityWitch;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerWitherAura doRenderLayer (Lnet/minecraft/entity/boss/EntityWither;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/layers/LayerWolfCollar doRenderLayer (Lnet/minecraft/entity/passive/EntityWolf;FFFFFFF)V a +MD net/minecraft/client/renderer/entity/RenderPlayer getEntityTexture (Lnet/minecraft/client/entity/AbstractClientPlayer;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/entity/RenderPlayer renderLivingAt (Lnet/minecraft/client/entity/AbstractClientPlayer;DDD)V a +MD net/minecraft/client/renderer/entity/RenderPlayer doRender (Lnet/minecraft/client/entity/AbstractClientPlayer;DDDFF)V a +MD net/minecraft/client/renderer/entity/RenderPlayer renderOffsetLivingLabel (Lnet/minecraft/client/entity/AbstractClientPlayer;DDDLjava/lang/String;FD)V a +MD net/minecraft/client/renderer/entity/RenderPlayer preRenderCallback (Lnet/minecraft/client/entity/AbstractClientPlayer;F)V a +MD net/minecraft/client/renderer/entity/RenderPlayer rotateCorpse (Lnet/minecraft/client/entity/AbstractClientPlayer;FFF)V a +MD net/minecraft/client/renderer/entity/RenderPlayer renderRightArm (Lnet/minecraft/client/entity/AbstractClientPlayer;)V b +MD net/minecraft/client/renderer/entity/RenderPlayer renderLeftArm (Lnet/minecraft/client/entity/AbstractClientPlayer;)V c +MD net/minecraft/client/renderer/entity/RenderPlayer setModelVisibilities (Lnet/minecraft/client/entity/AbstractClientPlayer;)V d +MD net/minecraft/client/renderer/entity/RenderPlayer getMainModel ()Lnet/minecraft/client/model/ModelPlayer; g +MD net/minecraft/client/util/JsonBlendingMode func_148109_a ()V a +MD net/minecraft/client/util/JsonBlendingMode func_148110_a (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/util/JsonBlendingMode; a +MD net/minecraft/client/util/JsonBlendingMode func_148108_a (Ljava/lang/String;)I a +MD net/minecraft/client/util/JsonBlendingMode func_148111_b ()Z b +MD net/minecraft/client/util/JsonBlendingMode func_148107_b (Ljava/lang/String;)I b +MD net/minecraft/client/util/JsonBlendingMode equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/util/JsonBlendingMode hashCode ()I hashCode +MD net/minecraft/client/shader/ShaderManager deleteShader ()V a +MD net/minecraft/client/shader/ShaderManager parseSampler (Lcom/google/gson/JsonElement;)V a +MD net/minecraft/client/shader/ShaderManager getShaderUniform (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderUniform; a +MD net/minecraft/client/shader/ShaderManager addSamplerTexture (Ljava/lang/String;Ljava/lang/Object;)V a +MD net/minecraft/client/shader/ShaderManager endShader ()V b +MD net/minecraft/client/shader/ShaderManager parseUniform (Lcom/google/gson/JsonElement;)V b +MD net/minecraft/client/shader/ShaderManager getShaderUniformOrDefault (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderUniform; b +MD net/minecraft/client/shader/ShaderManager useShader ()V c +MD net/minecraft/client/shader/ShaderManager markDirty ()V d +MD net/minecraft/client/shader/ShaderManager getVertexShaderLoader ()Lnet/minecraft/client/shader/ShaderLoader; e +MD net/minecraft/client/shader/ShaderManager getFragmentShaderLoader ()Lnet/minecraft/client/shader/ShaderLoader; f +MD net/minecraft/client/shader/ShaderManager getProgram ()I h +MD net/minecraft/client/shader/ShaderManager setupUniforms ()V i +MD net/minecraft/client/shader/ShaderGroup deleteShaderGroup ()V a +MD net/minecraft/client/shader/ShaderGroup loadShaderGroup (F)V a +MD net/minecraft/client/shader/ShaderGroup createBindFramebuffers (II)V a +MD net/minecraft/client/shader/ShaderGroup parsePass (Lnet/minecraft/client/renderer/texture/TextureManager;Lcom/google/gson/JsonElement;)V a +MD net/minecraft/client/shader/ShaderGroup parseGroup (Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/shader/ShaderGroup initTarget (Lcom/google/gson/JsonElement;)V a +MD net/minecraft/client/shader/ShaderGroup getFramebufferRaw (Ljava/lang/String;)Lnet/minecraft/client/shader/Framebuffer; a +MD net/minecraft/client/shader/ShaderGroup addFramebuffer (Ljava/lang/String;II)V a +MD net/minecraft/client/shader/ShaderGroup addShader (Ljava/lang/String;Lnet/minecraft/client/shader/Framebuffer;Lnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/client/shader/Shader; a +MD net/minecraft/client/shader/ShaderGroup getShaderGroupName ()Ljava/lang/String; b +MD net/minecraft/client/shader/ShaderGroup initUniform (Lcom/google/gson/JsonElement;)V b +MD net/minecraft/client/shader/ShaderGroup getFramebuffer (Ljava/lang/String;)Lnet/minecraft/client/shader/Framebuffer; b +MD net/minecraft/client/shader/ShaderGroup resetProjectionMatrix ()V c +MD net/minecraft/client/shader/Shader loadShader (F)V a +MD net/minecraft/client/shader/Shader addAuxFramebuffer (Ljava/lang/String;Ljava/lang/Object;II)V a +MD net/minecraft/client/shader/Shader setProjectionMatrix (Lorg/lwjgl/util/vector/Matrix4f;)V a +MD net/minecraft/client/shader/Shader deleteShader ()V b +MD net/minecraft/client/shader/Shader getShaderManager ()Lnet/minecraft/client/shader/ShaderManager; c +MD net/minecraft/client/shader/Shader preLoadShader ()V d +MD net/minecraft/client/shader/ShaderLoader getShaderFilename ()Ljava/lang/String; a +MD net/minecraft/client/shader/ShaderLoader attachShader (Lnet/minecraft/client/shader/ShaderManager;)V a +MD net/minecraft/client/shader/ShaderLoader loadShader (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/client/shader/ShaderLoader$ShaderType;Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderLoader; a +MD net/minecraft/client/shader/ShaderLoader toByteArray (Ljava/io/BufferedInputStream;)[B a +MD net/minecraft/client/shader/ShaderLoader deleteShader (Lnet/minecraft/client/shader/ShaderManager;)V b +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderName ()Ljava/lang/String; a +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderExtension ()Ljava/lang/String; b +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderMode ()I c +MD net/minecraft/client/shader/ShaderLoader$ShaderType getLoadedShaders ()Ljava/util/Map; d +MD net/minecraft/client/shader/ShaderLoader$ShaderType valueOf (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderLoader$ShaderType; valueOf +MD net/minecraft/client/shader/ShaderLoader$ShaderType values ()[Lnet/minecraft/client/shader/ShaderLoader$ShaderType; values +MD net/minecraft/client/shader/ShaderLinkHelper setNewStaticShaderLinkHelper ()V a +MD net/minecraft/client/shader/ShaderLinkHelper deleteShader (Lnet/minecraft/client/shader/ShaderManager;)V a +MD net/minecraft/client/shader/ShaderLinkHelper getStaticShaderLinkHelper ()Lnet/minecraft/client/shader/ShaderLinkHelper; b +MD net/minecraft/client/shader/ShaderLinkHelper linkProgram (Lnet/minecraft/client/shader/ShaderManager;)V b +MD net/minecraft/client/shader/ShaderLinkHelper createProgram ()I c +MD net/minecraft/client/shader/ShaderUniform getShaderName ()Ljava/lang/String; a +MD net/minecraft/client/shader/ShaderUniform set (F)V a +MD net/minecraft/client/shader/ShaderUniform set (FF)V a +MD net/minecraft/client/shader/ShaderUniform set (FFF)V a +MD net/minecraft/client/shader/ShaderUniform set (FFFF)V a +MD net/minecraft/client/shader/ShaderUniform set (FFFFFFFFFFFFFFFF)V a +MD net/minecraft/client/shader/ShaderUniform set (IIII)V a +MD net/minecraft/client/shader/ShaderUniform parseType (Ljava/lang/String;)I a +MD net/minecraft/client/shader/ShaderUniform set (Lorg/lwjgl/util/vector/Matrix4f;)V a +MD net/minecraft/client/shader/ShaderUniform set ([F)V a +MD net/minecraft/client/shader/ShaderUniform upload ()V b +MD net/minecraft/client/shader/ShaderUniform func_148092_b (FFFF)V b +MD net/minecraft/client/shader/ShaderUniform setUniformLocation (I)V b +MD net/minecraft/client/shader/ShaderUniform markDirty ()V h +MD net/minecraft/client/shader/ShaderUniform uploadInt ()V i +MD net/minecraft/client/shader/ShaderUniform uploadFloat ()V j +MD net/minecraft/client/shader/ShaderUniform uploadFloatMatrix ()V k +MD net/minecraft/client/renderer/texture/AbstractTexture setBlurMipmapDirect (ZZ)V a +MD net/minecraft/client/renderer/texture/AbstractTexture deleteGlTexture ()V c +MD net/minecraft/client/renderer/texture/DynamicTexture updateDynamicTexture ()V d +MD net/minecraft/client/renderer/texture/DynamicTexture getTextureData ()[I e +MD net/minecraft/client/renderer/ThreadDownloadImageData access$000 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Ljava/lang/String; a +MD net/minecraft/client/renderer/ThreadDownloadImageData setBufferedImage (Ljava/awt/image/BufferedImage;)V a +MD net/minecraft/client/renderer/ThreadDownloadImageData access$100 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Ljava/io/File; b +MD net/minecraft/client/renderer/ThreadDownloadImageData access$300 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Lnet/minecraft/client/renderer/IImageBuffer; c +MD net/minecraft/client/renderer/ThreadDownloadImageData loadTextureFromServer ()V d +MD net/minecraft/client/renderer/ThreadDownloadImageData access$200 ()Lorg/apache/logging/log4j/Logger; f +MD net/minecraft/client/renderer/ThreadDownloadImageData checkTextureUploaded ()V g +MD net/minecraft/client/renderer/ThreadDownloadImageData$1 run ()V run +MD net/minecraft/client/renderer/texture/IIconCreator registerSprites (Lnet/minecraft/client/renderer/texture/TextureMap;)V a +MD net/minecraft/client/renderer/texture/Stitcher getCurrentWidth ()I a +MD net/minecraft/client/renderer/texture/Stitcher access$000 (II)I a +MD net/minecraft/client/renderer/texture/Stitcher allocateSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z a +MD net/minecraft/client/renderer/texture/Stitcher addSprite (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/renderer/texture/Stitcher getCurrentHeight ()I b +MD net/minecraft/client/renderer/texture/Stitcher getMipmapDimension (II)I b +MD net/minecraft/client/renderer/texture/Stitcher expandAndAllocateSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z b +MD net/minecraft/client/renderer/texture/Stitcher doStitch ()V c +MD net/minecraft/client/renderer/texture/Stitcher getStichSlots ()Ljava/util/List; d +MD net/minecraft/client/renderer/texture/Stitcher$Holder getAtlasSprite ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/texture/Stitcher$Holder setNewDimension (I)V a +MD net/minecraft/client/renderer/texture/Stitcher$Holder compareTo (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)I a +MD net/minecraft/client/renderer/texture/Stitcher$Holder getWidth ()I b +MD net/minecraft/client/renderer/texture/Stitcher$Holder getHeight ()I c +MD net/minecraft/client/renderer/texture/Stitcher$Holder rotate ()V d +MD net/minecraft/client/renderer/texture/Stitcher$Holder isRotated ()Z e +MD net/minecraft/client/renderer/texture/Stitcher$Holder compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/renderer/texture/Stitcher$Holder toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/Stitcher$Slot getStitchHolder ()Lnet/minecraft/client/renderer/texture/Stitcher$Holder; a +MD net/minecraft/client/renderer/texture/Stitcher$Slot addSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z a +MD net/minecraft/client/renderer/texture/Stitcher$Slot getAllStitchSlots (Ljava/util/List;)V a +MD net/minecraft/client/renderer/texture/Stitcher$Slot getOriginX ()I b +MD net/minecraft/client/renderer/texture/Stitcher$Slot getOriginY ()I c +MD net/minecraft/client/renderer/texture/Stitcher$Slot toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/TextureMap setMipmapLevels (I)V a +MD net/minecraft/client/renderer/texture/TextureMap loadSprites (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/client/renderer/texture/IIconCreator;)V a +MD net/minecraft/client/renderer/texture/TextureMap getAtlasSprite (Ljava/lang/String;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/texture/TextureMap registerSprite (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/texture/TextureMap completeResourceLocation (Lnet/minecraft/util/ResourceLocation;I)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/texture/TextureMap loadTextureAtlas (Lnet/minecraft/client/resources/IResourceManager;)V b +MD net/minecraft/client/renderer/texture/TextureMap updateAnimations ()V d +MD net/minecraft/client/renderer/texture/TextureMap getMissingSprite ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; f +MD net/minecraft/client/renderer/texture/TextureMap initMissingImage ()V g +MD net/minecraft/client/renderer/texture/TextureMap$1 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/texture/TextureMap$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureMap$2 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/texture/TextureMap$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureMap$3 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/texture/TextureMap$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getOriginX ()I a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getInterpolatedU (D)F a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameTextureData (I)[[I a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite initSprite (IIIIZ)V a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite copyFrom (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setLocationNameClock (Ljava/lang/String;)V a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setFramesTextureData (Ljava/util/List;)V a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite makeAtlasSprite (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite loadSprite ([Ljava/awt/image/BufferedImage;Lnet/minecraft/client/resources/data/AnimationMetadataSection;)V a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameTextureData ([[IIII)[[I a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getOriginY ()I b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getInterpolatedV (D)F b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setIconWidth (I)V b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setLocationNameCompass (Ljava/lang/String;)V b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconWidth ()I c +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setIconHeight (I)V c +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconHeight ()I d +MD net/minecraft/client/renderer/texture/TextureAtlasSprite generateMipmaps (I)V d +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMinU ()F e +MD net/minecraft/client/renderer/texture/TextureAtlasSprite allocateFrameTextureData (I)V e +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMaxU ()F f +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMinV ()F g +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMaxV ()F h +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconName ()Ljava/lang/String; i +MD net/minecraft/client/renderer/texture/TextureAtlasSprite updateAnimation ()V j +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameCount ()I k +MD net/minecraft/client/renderer/texture/TextureAtlasSprite clearFramesTextureData ()V l +MD net/minecraft/client/renderer/texture/TextureAtlasSprite hasAnimationMetadata ()Z m +MD net/minecraft/client/renderer/texture/TextureAtlasSprite updateAnimationInterpolated ()V n +MD net/minecraft/client/renderer/texture/TextureAtlasSprite resetSprite ()V o +MD net/minecraft/client/renderer/texture/TextureAtlasSprite toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureManager getDynamicTextureLocation (Ljava/lang/String;Lnet/minecraft/client/renderer/texture/DynamicTexture;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/renderer/texture/TextureManager bindTexture (Lnet/minecraft/util/ResourceLocation;)V a +MD net/minecraft/client/renderer/texture/TextureManager loadTexture (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/renderer/texture/ITextureObject;)Z a +MD net/minecraft/client/renderer/texture/TextureManager loadTickableTexture (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/renderer/texture/ITickableTextureObject;)Z a +MD net/minecraft/client/renderer/texture/TextureManager getTexture (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/ITextureObject; b +MD net/minecraft/client/renderer/texture/TextureManager deleteTexture (Lnet/minecraft/util/ResourceLocation;)V c +MD net/minecraft/client/renderer/texture/TextureManager$1 call ()Ljava/lang/String; a +MD net/minecraft/client/renderer/texture/TextureManager$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/ITextureObject restoreLastBlurMipmap ()V a +MD net/minecraft/client/renderer/texture/ITextureObject loadTexture (Lnet/minecraft/client/resources/IResourceManager;)V a +MD net/minecraft/client/renderer/texture/ITextureObject getGlTextureId ()I b +MD net/minecraft/client/renderer/texture/ITextureObject setBlurMipmap (ZZ)V b +MD net/minecraft/client/renderer/texture/TextureUtil glGenTextures ()I a +MD net/minecraft/client/renderer/texture/TextureUtil deleteTexture (I)V a +MD net/minecraft/client/renderer/texture/TextureUtil allocateTexture (III)V a +MD net/minecraft/client/renderer/texture/TextureUtil allocateTextureImpl (IIII)V a +MD net/minecraft/client/renderer/texture/TextureUtil blendColorComponent (IIIII)I a +MD net/minecraft/client/renderer/texture/TextureUtil blendColors (IIIIZ)I a +MD net/minecraft/client/renderer/texture/TextureUtil generateMipmapData (II[[I)[[I a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImage (ILjava/awt/image/BufferedImage;)I a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageSub (ILjava/awt/image/BufferedImage;IIZZ)I a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageAllocate (ILjava/awt/image/BufferedImage;ZZ)I a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTexture (I[III)V a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureSub (I[IIIIIZZZ)V a +MD net/minecraft/client/renderer/texture/TextureUtil readImageData (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/util/ResourceLocation;)[I a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageSubImpl (Ljava/awt/image/BufferedImage;IIZZ)V a +MD net/minecraft/client/renderer/texture/TextureUtil readBufferedImage (Ljava/io/InputStream;)Ljava/awt/image/BufferedImage; a +MD net/minecraft/client/renderer/texture/TextureUtil setTextureClamped (Z)V a +MD net/minecraft/client/renderer/texture/TextureUtil setTextureBlurMipmap (ZZ)V a +MD net/minecraft/client/renderer/texture/TextureUtil updateAnaglyph ([I)[I a +MD net/minecraft/client/renderer/texture/TextureUtil copyToBuffer ([II)V a +MD net/minecraft/client/renderer/texture/TextureUtil processPixelValues ([III)V a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureMipmap ([[IIIIIZZ)V a +MD net/minecraft/client/renderer/texture/TextureUtil bindTexture (I)V b +MD net/minecraft/client/renderer/texture/TextureUtil setTextureBlurred (Z)V b +MD net/minecraft/client/renderer/texture/TextureUtil copyToBufferPos ([III)V b +MD net/minecraft/client/renderer/texture/TextureUtil anaglyphColor (I)I c +MD net/minecraft/client/renderer/texture/ITickable tick ()V e +MD net/minecraft/client/renderer/texture/TextureCompass updateCompass (Lnet/minecraft/world/World;DDDZZ)V a +MD net/minecraft/client/renderer/vertex/VertexBuffer bindBuffer ()V a +MD net/minecraft/client/renderer/vertex/VertexBuffer drawArrays (I)V a +MD net/minecraft/client/renderer/vertex/VertexBuffer bufferData (Ljava/nio/ByteBuffer;)V a +MD net/minecraft/client/renderer/vertex/VertexBuffer unbindBuffer ()V b +MD net/minecraft/client/renderer/vertex/VertexBuffer deleteGlBuffers ()V c +MD net/minecraft/client/renderer/vertex/VertexFormat clear ()V a +MD net/minecraft/client/renderer/vertex/VertexFormat hasUvOffset (I)Z a +MD net/minecraft/client/renderer/vertex/VertexFormat addElement (Lnet/minecraft/client/renderer/vertex/VertexFormatElement;)Lnet/minecraft/client/renderer/vertex/VertexFormat; a +MD net/minecraft/client/renderer/vertex/VertexFormat hasNormal ()Z b +MD net/minecraft/client/renderer/vertex/VertexFormat getUvOffsetById (I)I b +MD net/minecraft/client/renderer/vertex/VertexFormat getNormalOffset ()I c +MD net/minecraft/client/renderer/vertex/VertexFormat getElement (I)Lnet/minecraft/client/renderer/vertex/VertexFormatElement; c +MD net/minecraft/client/renderer/vertex/VertexFormat hasColor ()Z d +MD net/minecraft/client/renderer/vertex/VertexFormat getOffset (I)I d +MD net/minecraft/client/renderer/vertex/VertexFormat getColorOffset ()I e +MD net/minecraft/client/renderer/vertex/VertexFormat getIntegerSize ()I f +MD net/minecraft/client/renderer/vertex/VertexFormat getNextOffset ()I g +MD net/minecraft/client/renderer/vertex/VertexFormat getElements ()Ljava/util/List; h +MD net/minecraft/client/renderer/vertex/VertexFormat getElementCount ()I i +MD net/minecraft/client/renderer/vertex/VertexFormat hasPosition ()Z j +MD net/minecraft/client/renderer/vertex/VertexFormat equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/vertex/VertexFormat hashCode ()I hashCode +MD net/minecraft/client/renderer/vertex/VertexFormat toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/vertex/VertexFormatElement getType ()Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; a +MD net/minecraft/client/renderer/vertex/VertexFormatElement func_177372_a (ILnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage;)Z a +MD net/minecraft/client/renderer/vertex/VertexFormatElement getUsage ()Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; b +MD net/minecraft/client/renderer/vertex/VertexFormatElement getElementCount ()I c +MD net/minecraft/client/renderer/vertex/VertexFormatElement getIndex ()I d +MD net/minecraft/client/renderer/vertex/VertexFormatElement getSize ()I e +MD net/minecraft/client/renderer/vertex/VertexFormatElement isPositionElement ()Z f +MD net/minecraft/client/renderer/vertex/VertexFormatElement equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/vertex/VertexFormatElement hashCode ()I hashCode +MD net/minecraft/client/renderer/vertex/VertexFormatElement toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getSize ()I a +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getDisplayName ()Ljava/lang/String; b +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getGlConstant ()I c +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; valueOf +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType values ()[Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; values +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage getDisplayName ()Ljava/lang/String; a +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; valueOf +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage values ()[Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; values +MD net/minecraft/client/resources/AbstractResourcePack readMetadata (Lnet/minecraft/client/resources/data/IMetadataSerializer;Ljava/io/InputStream;Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; a +MD net/minecraft/client/resources/AbstractResourcePack getRelativeName (Ljava/io/File;Ljava/io/File;)Ljava/lang/String; a +MD net/minecraft/client/resources/AbstractResourcePack getInputStreamByName (Ljava/lang/String;)Ljava/io/InputStream; a +MD net/minecraft/client/resources/AbstractResourcePack hasResourceName (Ljava/lang/String;)Z b +MD net/minecraft/client/resources/AbstractResourcePack logNameNotLowercase (Ljava/lang/String;)V c +MD net/minecraft/client/resources/AbstractResourcePack locationToName (Lnet/minecraft/util/ResourceLocation;)Ljava/lang/String; c +MD net/minecraft/client/resources/ResourceIndex getResourceMap ()Ljava/util/Map; a +MD net/minecraft/client/resources/DefaultPlayerSkin getDefaultSkinLegacy ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/DefaultPlayerSkin getDefaultSkin (Ljava/util/UUID;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/DefaultPlayerSkin getSkinType (Ljava/util/UUID;)Ljava/lang/String; b +MD net/minecraft/client/resources/DefaultPlayerSkin isSlimSkin (Ljava/util/UUID;)Z c +MD net/minecraft/client/resources/DefaultResourcePack getInputStreamAssets (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; c +MD net/minecraft/client/resources/DefaultResourcePack getResourceStream (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; d +MD net/minecraft/client/resources/FallbackResourceManager addResourcePack (Lnet/minecraft/client/resources/IResourcePack;)V a +MD net/minecraft/client/resources/FallbackResourceManager getInputStream (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/resources/IResourcePack;)Ljava/io/InputStream; a +MD net/minecraft/client/resources/FallbackResourceManager access$000 ()Lorg/apache/logging/log4j/Logger; b +MD net/minecraft/client/resources/FallbackResourceManager getLocationMcmeta (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; c +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger close ()V close +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger finalize ()V finalize +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger read ()I read +MD net/minecraft/client/resources/FileResourcePack getResourcePackZipFile ()Ljava/util/zip/ZipFile; d +MD net/minecraft/client/resources/FileResourcePack close ()V close +MD net/minecraft/client/resources/FileResourcePack finalize ()V finalize +MD net/minecraft/client/resources/IReloadableResourceManager registerReloadListener (Lnet/minecraft/client/resources/IResourceManagerReloadListener;)V a +MD net/minecraft/client/resources/IReloadableResourceManager reloadResources (Ljava/util/List;)V a +MD net/minecraft/client/resources/IResource getResourceLocation ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/IResource getMetadata (Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; a +MD net/minecraft/client/resources/IResource getInputStream ()Ljava/io/InputStream; b +MD net/minecraft/client/resources/IResource hasMetadata ()Z c +MD net/minecraft/client/resources/IResource getResourcePackName ()Ljava/lang/String; d +MD net/minecraft/client/resources/IResourceManager getResourceDomains ()Ljava/util/Set; a +MD net/minecraft/client/resources/IResourceManager getResource (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/resources/IResource; a +MD net/minecraft/client/resources/IResourceManager getAllResources (Lnet/minecraft/util/ResourceLocation;)Ljava/util/List; b +MD net/minecraft/client/resources/IResourceManagerReloadListener onResourceManagerReload (Lnet/minecraft/client/resources/IResourceManager;)V a +MD net/minecraft/client/resources/IResourcePack getPackImage ()Ljava/awt/image/BufferedImage; a +MD net/minecraft/client/resources/IResourcePack getPackMetadata (Lnet/minecraft/client/resources/data/IMetadataSerializer;Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; a +MD net/minecraft/client/resources/IResourcePack getInputStream (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; a +MD net/minecraft/client/resources/IResourcePack getPackName ()Ljava/lang/String; b +MD net/minecraft/client/resources/IResourcePack resourceExists (Lnet/minecraft/util/ResourceLocation;)Z b +MD net/minecraft/client/resources/IResourcePack getResourceDomains ()Ljava/util/Set; c +MD net/minecraft/client/resources/ResourcePackRepository updateRepositoryEntriesAll ()V a +MD net/minecraft/client/resources/ResourcePackRepository setResourcePackInstance (Ljava/io/File;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/client/resources/ResourcePackRepository downloadResourcePack (Ljava/lang/String;Ljava/lang/String;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/client/resources/ResourcePackRepository setRepositories (Ljava/util/List;)V a +MD net/minecraft/client/resources/ResourcePackRepository getRepositoryEntriesAll ()Ljava/util/List; b +MD net/minecraft/client/resources/ResourcePackRepository getRepositoryEntries ()Ljava/util/List; c +MD net/minecraft/client/resources/ResourcePackRepository getDirResourcepacks ()Ljava/io/File; d +MD net/minecraft/client/resources/ResourcePackRepository getResourcePackInstance ()Lnet/minecraft/client/resources/IResourcePack; e +MD net/minecraft/client/resources/ResourcePackRepository clearResourcePack ()V f +MD net/minecraft/client/resources/ResourcePackRepository fixDirResourcepacks ()V g +MD net/minecraft/client/resources/ResourcePackRepository getResourcePackFiles ()Ljava/util/List; h +MD net/minecraft/client/resources/ResourcePackRepository deleteOldServerResourcesPacks ()V i +MD net/minecraft/client/resources/ResourcePackRepository$1 accept (Ljava/io/File;)Z accept +MD net/minecraft/client/resources/ResourcePackRepository$2 run ()V run +MD net/minecraft/client/resources/ResourcePackRepository$3 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/resources/ResourcePackRepository$3 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/resources/ResourcePackRepository$Entry updateResourcePack ()V a +MD net/minecraft/client/resources/ResourcePackRepository$Entry bindTexturePackIcon (Lnet/minecraft/client/renderer/texture/TextureManager;)V a +MD net/minecraft/client/resources/ResourcePackRepository$Entry closeResourcePack ()V b +MD net/minecraft/client/resources/ResourcePackRepository$Entry getResourcePack ()Lnet/minecraft/client/resources/IResourcePack; c +MD net/minecraft/client/resources/ResourcePackRepository$Entry getResourcePackName ()Ljava/lang/String; d +MD net/minecraft/client/resources/ResourcePackRepository$Entry getTexturePackDescription ()Ljava/lang/String; e +MD net/minecraft/client/resources/ResourcePackRepository$Entry func_183027_f ()I f +MD net/minecraft/client/resources/ResourcePackRepository$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/ResourcePackRepository$Entry hashCode ()I hashCode +MD net/minecraft/client/resources/ResourcePackRepository$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/client/resources/SimpleReloadableResourceManager reloadResourcePack (Lnet/minecraft/client/resources/IResourcePack;)V a +MD net/minecraft/client/resources/SimpleReloadableResourceManager clearResources ()V b +MD net/minecraft/client/resources/SimpleReloadableResourceManager notifyReloadListeners ()V c +MD net/minecraft/client/resources/SimpleReloadableResourceManager$1 apply (Lnet/minecraft/client/resources/IResourcePack;)Ljava/lang/String; a +MD net/minecraft/client/resources/SimpleReloadableResourceManager$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/client/resources/SimpleResource equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/SimpleResource hashCode ()I hashCode +MD net/minecraft/client/resources/SkinManager access$000 (Lnet/minecraft/client/resources/SkinManager;)Lcom/mojang/authlib/minecraft/MinecraftSessionService; a +MD net/minecraft/client/resources/SkinManager loadSkinFromCache (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map; a +MD net/minecraft/client/resources/SkinManager loadProfileTextures (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;Z)V a +MD net/minecraft/client/resources/SkinManager loadSkin (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/SkinManager loadSkin (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/SkinManager$1 load (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map; a +MD net/minecraft/client/resources/SkinManager$1 load (Ljava/lang/Object;)Ljava/lang/Object; load +MD net/minecraft/client/resources/SkinManager$3 run ()V run +MD net/minecraft/client/resources/SkinManager$3$1 run ()V run +MD net/minecraft/client/resources/SkinManager$SkinAvailableCallback skinAvailable (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/util/ResourceLocation;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)V a +MD net/minecraft/client/resources/I18n setLocale (Lnet/minecraft/client/resources/Locale;)V a +MD net/minecraft/client/resources/I18n format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/client/resources/Language getLanguageCode ()Ljava/lang/String; a +MD net/minecraft/client/resources/Language compareTo (Lnet/minecraft/client/resources/Language;)I a +MD net/minecraft/client/resources/Language isBidirectional ()Z b +MD net/minecraft/client/resources/Language compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/resources/Language equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/Language hashCode ()I hashCode +MD net/minecraft/client/resources/Language toString ()Ljava/lang/String; toString +MD net/minecraft/client/resources/LanguageManager isCurrentLocaleUnicode ()Z a +MD net/minecraft/client/resources/LanguageManager setCurrentLanguage (Lnet/minecraft/client/resources/Language;)V a +MD net/minecraft/client/resources/LanguageManager parseLanguageMetadata (Ljava/util/List;)V a +MD net/minecraft/client/resources/LanguageManager isCurrentLanguageBidirectional ()Z b +MD net/minecraft/client/resources/LanguageManager getCurrentLanguage ()Lnet/minecraft/client/resources/Language; c +MD net/minecraft/client/resources/LanguageManager getLanguages ()Ljava/util/SortedSet; d +MD net/minecraft/client/resources/Locale isUnicode ()Z a +MD net/minecraft/client/resources/Locale loadLocaleDataFiles (Lnet/minecraft/client/resources/IResourceManager;Ljava/util/List;)V a +MD net/minecraft/client/resources/Locale loadLocaleData (Ljava/io/InputStream;)V a +MD net/minecraft/client/resources/Locale formatMessage (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; a +MD net/minecraft/client/resources/Locale loadLocaleData (Ljava/util/List;)V a +MD net/minecraft/client/resources/Locale checkUnicode ()V b +MD net/minecraft/client/resources/Locale translateKeyPrivate (Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/client/resources/data/IMetadataSectionSerializer getSectionName ()Ljava/lang/String; a +MD net/minecraft/client/resources/data/IMetadataSerializer getGson ()Lcom/google/gson/Gson; a +MD net/minecraft/client/resources/data/IMetadataSerializer registerMetadataSectionType (Lnet/minecraft/client/resources/data/IMetadataSectionSerializer;Ljava/lang/Class;)V a +MD net/minecraft/client/resources/data/IMetadataSerializer parseMetadataSection (Ljava/lang/String;Lcom/google/gson/JsonObject;)Lnet/minecraft/client/resources/data/IMetadataSection; a +MD net/minecraft/client/resources/data/AnimationFrame hasNoTime ()Z a +MD net/minecraft/client/resources/data/AnimationFrame getFrameTime ()I b +MD net/minecraft/client/resources/data/AnimationFrame getFrameIndex ()I c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameHeight ()I a +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameTimeSingle (I)I a +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameWidth ()I b +MD net/minecraft/client/resources/data/AnimationMetadataSection frameHasTime (I)Z b +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameCount ()I c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameIndex (I)I c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameTime ()I d +MD net/minecraft/client/resources/data/AnimationMetadataSection getAnimationFrame (I)Lnet/minecraft/client/resources/data/AnimationFrame; d +MD net/minecraft/client/resources/data/AnimationMetadataSection isInterpolate ()Z e +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameIndexSet ()Ljava/util/Set; f +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer parseAnimationFrame (ILcom/google/gson/JsonElement;)Lnet/minecraft/client/resources/data/AnimationFrame; a +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer serialize (Lnet/minecraft/client/resources/data/AnimationMetadataSection;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/AnimationMetadataSection; a +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/FontMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/FontMetadataSection; a +MD net/minecraft/client/resources/data/FontMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/LanguageMetadataSection getLanguages ()Ljava/util/Collection; a +MD net/minecraft/client/resources/data/LanguageMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/LanguageMetadataSection; a +MD net/minecraft/client/resources/data/LanguageMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/PackMetadataSection getPackDescription ()Lnet/minecraft/util/IChatComponent; a +MD net/minecraft/client/resources/data/PackMetadataSection getPackFormat ()I b +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer serialize (Lnet/minecraft/client/resources/data/PackMetadataSection;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; a +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/PackMetadataSection; a +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/TextureMetadataSection getTextureBlur ()Z a +MD net/minecraft/client/resources/data/TextureMetadataSection getTextureClamp ()Z b +MD net/minecraft/client/resources/data/TextureMetadataSection getListMipmaps ()Ljava/util/List; c +MD net/minecraft/client/resources/data/TextureMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/TextureMetadataSection; a +MD net/minecraft/client/resources/data/TextureMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/model/IBakedModel getGeneralQuads ()Ljava/util/List; a +MD net/minecraft/client/resources/model/IBakedModel getFaceQuads (Lnet/minecraft/util/EnumFacing;)Ljava/util/List; a +MD net/minecraft/client/resources/model/IBakedModel isAmbientOcclusion ()Z b +MD net/minecraft/client/resources/model/IBakedModel isGui3d ()Z c +MD net/minecraft/client/resources/model/IBakedModel isBuiltInRenderer ()Z d +MD net/minecraft/client/resources/model/IBakedModel getParticleTexture ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; e +MD net/minecraft/client/resources/model/IBakedModel getItemCameraTransforms ()Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; f +MD net/minecraft/client/resources/model/ModelRotation getMatrix4d ()Lorg/lwjgl/util/vector/Matrix4f; a +MD net/minecraft/client/resources/model/ModelRotation getModelRotation (II)Lnet/minecraft/client/resources/model/ModelRotation; a +MD net/minecraft/client/resources/model/ModelRotation rotateFace (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/EnumFacing; a +MD net/minecraft/client/resources/model/ModelRotation rotateVertex (Lnet/minecraft/util/EnumFacing;I)I a +MD net/minecraft/client/resources/model/ModelRotation combineXY (II)I b +MD net/minecraft/client/resources/model/ModelRotation valueOf (Ljava/lang/String;)Lnet/minecraft/client/resources/model/ModelRotation; valueOf +MD net/minecraft/client/resources/model/ModelRotation values ()[Lnet/minecraft/client/resources/model/ModelRotation; values +MD net/minecraft/client/resources/model/ModelBakery setupModelRegistry ()Lnet/minecraft/util/IRegistry; a +MD net/minecraft/client/resources/model/ModelBakery makeBakedQuad (Lnet/minecraft/client/renderer/block/model/BlockPart;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/resources/model/ModelRotation;Z)Lnet/minecraft/client/renderer/block/model/BakedQuad; a +MD net/minecraft/client/resources/model/ModelBakery getTextureLocations (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Ljava/util/Set; a +MD net/minecraft/client/resources/model/ModelBakery bakeModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;Lnet/minecraft/client/resources/model/ModelRotation;Z)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/resources/model/ModelBakery registerVariant (Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition;Lnet/minecraft/client/resources/model/ModelResourceLocation;)V a +MD net/minecraft/client/resources/model/ModelBakery access$000 (Lnet/minecraft/client/resources/model/ModelBakery;)Ljava/util/Map; a +MD net/minecraft/client/resources/model/ModelBakery getItemLocation (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/resources/model/ModelBakery loadVariants (Ljava/util/Collection;)V a +MD net/minecraft/client/resources/model/ModelBakery getModelBlockDefinition (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; a +MD net/minecraft/client/resources/model/ModelBakery getVariantNames (Lnet/minecraft/item/Item;)Ljava/util/List; a +MD net/minecraft/client/resources/model/ModelBakery loadVariantItemModels ()V b +MD net/minecraft/client/resources/model/ModelBakery hasItemModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z b +MD net/minecraft/client/resources/model/ModelBakery getBlockStateLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; b +MD net/minecraft/client/resources/model/ModelBakery loadVariantModels ()V c +MD net/minecraft/client/resources/model/ModelBakery isCustomRenderer (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z c +MD net/minecraft/client/resources/model/ModelBakery loadModel (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlock; c +MD net/minecraft/client/resources/model/ModelBakery loadItemModels ()V d +MD net/minecraft/client/resources/model/ModelBakery makeItemModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; d +MD net/minecraft/client/resources/model/ModelBakery getModelLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; d +MD net/minecraft/client/resources/model/ModelBakery registerVariantNames ()V e +MD net/minecraft/client/resources/model/ModelBakery getParentPath (Lnet/minecraft/util/ResourceLocation;)Ljava/util/List; e +MD net/minecraft/client/resources/model/ModelBakery bakeBlockModels ()V f +MD net/minecraft/client/resources/model/ModelBakery getParentLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; f +MD net/minecraft/client/resources/model/ModelBakery getVariantsTextureLocations ()Ljava/util/Set; g +MD net/minecraft/client/resources/model/ModelBakery loadModelsCheck ()V h +MD net/minecraft/client/resources/model/ModelBakery loadModels ()V i +MD net/minecraft/client/resources/model/ModelBakery loadSprites ()V j +MD net/minecraft/client/resources/model/ModelBakery getItemsTextureLocations ()Ljava/util/Set; k +MD net/minecraft/client/resources/model/ModelBakery bakeItemModels ()V l +MD net/minecraft/client/resources/model/ModelBakery$1 compare (Lnet/minecraft/client/resources/model/ModelResourceLocation;Lnet/minecraft/client/resources/model/ModelResourceLocation;)I a +MD net/minecraft/client/resources/model/ModelBakery$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/resources/model/ModelManager getMissingModel ()Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/resources/model/ModelManager getModel (Lnet/minecraft/client/resources/model/ModelResourceLocation;)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/resources/model/ModelManager getTextureMap ()Lnet/minecraft/client/renderer/texture/TextureMap; b +MD net/minecraft/client/resources/model/ModelManager getBlockModelShapes ()Lnet/minecraft/client/renderer/BlockModelShapes; c +MD net/minecraft/client/resources/model/ModelResourceLocation parsePathString (Ljava/lang/String;)[Ljava/lang/String; b +MD net/minecraft/client/resources/model/ModelResourceLocation getVariant ()Ljava/lang/String; c +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addGeneralQuad (Lnet/minecraft/client/renderer/block/model/BakedQuad;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder setTexture (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addGeneralBreakingFours (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addFaceBreakingFours (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;)V a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addFaceQuad (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BakedQuad;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder makeBakedModel ()Lnet/minecraft/client/resources/model/IBakedModel; b +MD net/minecraft/client/resources/model/WeightedBakedModel getAlternativeModel (J)Lnet/minecraft/client/resources/model/IBakedModel; a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder build ()Lnet/minecraft/client/resources/model/WeightedBakedModel; a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder add (Lnet/minecraft/client/resources/model/IBakedModel;I)Lnet/minecraft/client/resources/model/WeightedBakedModel$Builder; a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder first ()Lnet/minecraft/client/resources/model/IBakedModel; b +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem getCountQuads ()I a +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem compareTo (Lnet/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem;)I a +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem toString ()Ljava/lang/String; toString +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/audio/PositionedSoundRecord; a +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;F)Lnet/minecraft/client/audio/PositionedSoundRecord; a +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;FFF)Lnet/minecraft/client/audio/PositionedSoundRecord; a +MD net/minecraft/client/audio/SoundCategory getCategoryName ()Ljava/lang/String; a +MD net/minecraft/client/audio/SoundCategory getCategory (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundCategory; a +MD net/minecraft/client/audio/SoundCategory getCategoryId ()I b +MD net/minecraft/client/audio/SoundCategory valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundCategory; valueOf +MD net/minecraft/client/audio/SoundCategory values ()[Lnet/minecraft/client/audio/SoundCategory; values +MD net/minecraft/client/audio/SoundList getSoundList ()Ljava/util/List; a +MD net/minecraft/client/audio/SoundList setSoundCategory (Lnet/minecraft/client/audio/SoundCategory;)V a +MD net/minecraft/client/audio/SoundList setReplaceExisting (Z)V a +MD net/minecraft/client/audio/SoundList canReplaceExisting ()Z b +MD net/minecraft/client/audio/SoundList getSoundCategory ()Lnet/minecraft/client/audio/SoundCategory; c +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryName ()Ljava/lang/String; a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryVolume (F)V a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryWeight (I)V a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryType (Lnet/minecraft/client/audio/SoundList$SoundEntry$Type;)V a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryName (Ljava/lang/String;)V a +MD net/minecraft/client/audio/SoundList$SoundEntry setStreaming (Z)V a +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryVolume ()F b +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryPitch (F)V b +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryPitch ()F c +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryWeight ()I d +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryType ()Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; e +MD net/minecraft/client/audio/SoundList$SoundEntry isStreaming ()Z f +MD net/minecraft/client/audio/SoundList$SoundEntry$Type getType (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; a +MD net/minecraft/client/audio/SoundList$SoundEntry$Type valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; valueOf +MD net/minecraft/client/audio/SoundList$SoundEntry$Type values ()[Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; values +MD net/minecraft/client/audio/SoundListSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/audio/SoundList; a +MD net/minecraft/client/audio/SoundListSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/audio/ISound getSoundLocation ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/audio/ISound canRepeat ()Z b +MD net/minecraft/client/audio/ISound getRepeatDelay ()I d +MD net/minecraft/client/audio/ISound getVolume ()F e +MD net/minecraft/client/audio/ISound getPitch ()F f +MD net/minecraft/client/audio/ISound getXPosF ()F g +MD net/minecraft/client/audio/ISound getYPosF ()F h +MD net/minecraft/client/audio/ISound getZPosF ()F i +MD net/minecraft/client/audio/ISound getAttenuationType ()Lnet/minecraft/client/audio/ISound$AttenuationType; j +MD net/minecraft/client/audio/ISound$AttenuationType getTypeInt ()I a +MD net/minecraft/client/audio/ISound$AttenuationType valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/ISound$AttenuationType; valueOf +MD net/minecraft/client/audio/ISound$AttenuationType values ()[Lnet/minecraft/client/audio/ISound$AttenuationType; values +MD net/minecraft/client/audio/ITickableSound isDonePlaying ()Z k +MD net/minecraft/server/integrated/IntegratedPlayerList getServerInstance ()Lnet/minecraft/server/integrated/IntegratedServer; b +MD net/minecraft/server/integrated/IntegratedServer setStaticInstance ()V a +MD net/minecraft/server/integrated/IntegratedServer getPublic ()Z b +MD net/minecraft/server/integrated/IntegratedServer$1 call ()Ljava/lang/String; a +MD net/minecraft/server/integrated/IntegratedServer$1 call ()Ljava/lang/Object; call +MD net/minecraft/server/integrated/IntegratedServer$2 call ()Ljava/lang/String; a +MD net/minecraft/server/integrated/IntegratedServer$2 call ()Ljava/lang/Object; call +MD net/minecraft/server/integrated/IntegratedServer$3 run ()V run +MD net/minecraft/client/network/LanServerDetector access$000 ()Ljava/util/concurrent/atomic/AtomicInteger; a +MD net/minecraft/client/network/LanServerDetector access$100 ()Lorg/apache/logging/log4j/Logger; b +MD net/minecraft/client/network/LanServerDetector$LanServer getServerMotd ()Ljava/lang/String; a +MD net/minecraft/client/network/LanServerDetector$LanServer getServerIpPort ()Ljava/lang/String; b +MD net/minecraft/client/network/LanServerDetector$LanServer updateLastSeen ()V c +MD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind run ()V run +MD net/minecraft/client/network/LanServerDetector$LanServerList getWasUpdated ()Z a +MD net/minecraft/client/network/LanServerDetector$LanServerList func_77551_a (Ljava/lang/String;Ljava/net/InetAddress;)V a +MD net/minecraft/client/network/LanServerDetector$LanServerList setWasNotUpdated ()V b +MD net/minecraft/client/network/LanServerDetector$LanServerList getLanServers ()Ljava/util/List; c +MD net/minecraft/client/multiplayer/ThreadLanServerPing getMotdFromPingResponse (Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/client/multiplayer/ThreadLanServerPing getPingResponse (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; a +MD net/minecraft/client/multiplayer/ThreadLanServerPing getAdFromPingResponse (Ljava/lang/String;)Ljava/lang/String; b +MD net/minecraft/client/multiplayer/ThreadLanServerPing interrupt ()V interrupt +MD net/minecraft/client/multiplayer/ThreadLanServerPing run ()V run +MD net/minecraft/client/audio/MusicTicker func_181557_a ()V a +MD net/minecraft/client/audio/MusicTicker func_181558_a (Lnet/minecraft/client/audio/MusicTicker$MusicType;)V a +MD net/minecraft/client/audio/MusicTicker$MusicType getMusicLocation ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/audio/MusicTicker$MusicType getMinDelay ()I b +MD net/minecraft/client/audio/MusicTicker$MusicType getMaxDelay ()I c +MD net/minecraft/client/audio/MusicTicker$MusicType valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/MusicTicker$MusicType; valueOf +MD net/minecraft/client/audio/MusicTicker$MusicType values ()[Lnet/minecraft/client/audio/MusicTicker$MusicType; values +MD net/minecraft/client/audio/SoundPoolEntry getSoundPoolEntryLocation ()Lnet/minecraft/util/ResourceLocation; a +MD net/minecraft/client/audio/SoundPoolEntry setPitch (D)V a +MD net/minecraft/client/audio/SoundPoolEntry getPitch ()D b +MD net/minecraft/client/audio/SoundPoolEntry setVolume (D)V b +MD net/minecraft/client/audio/SoundPoolEntry getVolume ()D c +MD net/minecraft/client/audio/SoundPoolEntry isStreamingSound ()Z d +MD net/minecraft/client/audio/SoundManager reloadSoundSystem ()V a +MD net/minecraft/client/audio/SoundManager getSoundCategoryVolume (Lnet/minecraft/client/audio/SoundCategory;)F a +MD net/minecraft/client/audio/SoundManager setSoundCategoryVolume (Lnet/minecraft/client/audio/SoundCategory;F)V a +MD net/minecraft/client/audio/SoundManager isSoundPlaying (Lnet/minecraft/client/audio/ISound;)Z a +MD net/minecraft/client/audio/SoundManager playDelayedSound (Lnet/minecraft/client/audio/ISound;I)V a +MD net/minecraft/client/audio/SoundManager getNormalizedPitch (Lnet/minecraft/client/audio/ISound;Lnet/minecraft/client/audio/SoundPoolEntry;)F a +MD net/minecraft/client/audio/SoundManager getNormalizedVolume (Lnet/minecraft/client/audio/ISound;Lnet/minecraft/client/audio/SoundPoolEntry;Lnet/minecraft/client/audio/SoundCategory;)F a +MD net/minecraft/client/audio/SoundManager access$400 (Lnet/minecraft/client/audio/SoundManager;)Lnet/minecraft/client/settings/GameSettings; a +MD net/minecraft/client/audio/SoundManager access$102 (Lnet/minecraft/client/audio/SoundManager;Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread;)Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread; a +MD net/minecraft/client/audio/SoundManager access$302 (Lnet/minecraft/client/audio/SoundManager;Z)Z a +MD net/minecraft/client/audio/SoundManager getURLForSoundResource (Lnet/minecraft/util/ResourceLocation;)Ljava/net/URL; a +MD net/minecraft/client/audio/SoundManager setListener (Lnet/minecraft/entity/player/EntityPlayer;F)V a +MD net/minecraft/client/audio/SoundManager unloadSoundSystem ()V b +MD net/minecraft/client/audio/SoundManager stopSound (Lnet/minecraft/client/audio/ISound;)V b +MD net/minecraft/client/audio/SoundManager access$100 (Lnet/minecraft/client/audio/SoundManager;)Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread; b +MD net/minecraft/client/audio/SoundManager stopAllSounds ()V c +MD net/minecraft/client/audio/SoundManager playSound (Lnet/minecraft/client/audio/ISound;)V c +MD net/minecraft/client/audio/SoundManager updateAllSounds ()V d +MD net/minecraft/client/audio/SoundManager pauseAllSounds ()V e +MD net/minecraft/client/audio/SoundManager resumeAllSounds ()V f +MD net/minecraft/client/audio/SoundManager access$000 ()Lorg/apache/logging/log4j/Logger; g +MD net/minecraft/client/audio/SoundManager access$500 ()Lorg/apache/logging/log4j/Marker; h +MD net/minecraft/client/audio/SoundManager loadSoundSystem ()V i +MD net/minecraft/client/audio/SoundManager$1 run ()V run +MD net/minecraft/client/audio/SoundManager$1$1 errorMessage (Ljava/lang/String;Ljava/lang/String;I)V errorMessage +MD net/minecraft/client/audio/SoundManager$1$1 importantMessage (Ljava/lang/String;I)V importantMessage +MD net/minecraft/client/audio/SoundManager$1$1 message (Ljava/lang/String;I)V message +MD net/minecraft/client/audio/SoundManager$2 openConnection (Ljava/net/URL;)Ljava/net/URLConnection; openConnection +MD net/minecraft/client/audio/SoundManager$2$1 connect ()V connect +MD net/minecraft/client/audio/SoundManager$2$1 getInputStream ()Ljava/io/InputStream; getInputStream +MD net/minecraft/client/audio/SoundManager$SoundSystemStarterThread playing (Ljava/lang/String;)Z playing +MD net/minecraft/client/audio/SoundEventAccessorComposite addSoundToEventPool (Lnet/minecraft/client/audio/ISoundEventAccessor;)V a +MD net/minecraft/client/audio/SoundEventAccessorComposite cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; b +MD net/minecraft/client/audio/SoundEventAccessorComposite getSoundEventLocation ()Lnet/minecraft/util/ResourceLocation; c +MD net/minecraft/client/audio/SoundEventAccessorComposite getSoundCategory ()Lnet/minecraft/client/audio/SoundCategory; d +MD net/minecraft/client/audio/SoundHandler pauseSounds ()V a +MD net/minecraft/client/audio/SoundHandler setSoundLevel (Lnet/minecraft/client/audio/SoundCategory;F)V a +MD net/minecraft/client/audio/SoundHandler playSound (Lnet/minecraft/client/audio/ISound;)V a +MD net/minecraft/client/audio/SoundHandler playDelayedSound (Lnet/minecraft/client/audio/ISound;I)V a +MD net/minecraft/client/audio/SoundHandler access$000 (Lnet/minecraft/client/audio/SoundHandler;)Lnet/minecraft/client/audio/SoundRegistry; a +MD net/minecraft/client/audio/SoundHandler getSoundMap (Ljava/io/InputStream;)Ljava/util/Map; a +MD net/minecraft/client/audio/SoundHandler getSound (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/audio/SoundEventAccessorComposite; a +MD net/minecraft/client/audio/SoundHandler loadSoundResource (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/audio/SoundList;)V a +MD net/minecraft/client/audio/SoundHandler setListener (Lnet/minecraft/entity/player/EntityPlayer;F)V a +MD net/minecraft/client/audio/SoundHandler getRandomSoundFromCategories ([Lnet/minecraft/client/audio/SoundCategory;)Lnet/minecraft/client/audio/SoundEventAccessorComposite; a +MD net/minecraft/client/audio/SoundHandler stopSounds ()V b +MD net/minecraft/client/audio/SoundHandler stopSound (Lnet/minecraft/client/audio/ISound;)V b +MD net/minecraft/client/audio/SoundHandler isSoundPlaying (Lnet/minecraft/client/audio/ISound;)Z c +MD net/minecraft/client/audio/SoundHandler unloadSounds ()V d +MD net/minecraft/client/audio/SoundHandler resumeSounds ()V e +MD net/minecraft/client/audio/SoundHandler$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/client/audio/SoundHandler$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/client/audio/SoundHandler$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/client/audio/SoundHandler$2 cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; b +MD net/minecraft/client/audio/SoundRegistry clearMap ()V a +MD net/minecraft/client/audio/SoundRegistry registerSound (Lnet/minecraft/client/audio/SoundEventAccessorComposite;)V a +MD net/minecraft/client/audio/ISoundEventAccessor getWeight ()I a +MD net/minecraft/client/audio/ISoundEventAccessor cloneEntry ()Ljava/lang/Object; g +MD net/minecraft/client/audio/SoundEventAccessor cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; b +MD net/minecraft/client/stream/Metadata func_152809_a ()Ljava/lang/String; a +MD net/minecraft/client/stream/Metadata func_152807_a (Ljava/lang/String;)V a +MD net/minecraft/client/stream/Metadata func_152808_a (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/client/stream/Metadata func_152806_b ()Ljava/lang/String; b +MD net/minecraft/client/stream/Metadata func_152810_c ()Ljava/lang/String; c +MD net/minecraft/client/stream/Metadata toString ()Ljava/lang/String; toString +MD net/minecraft/client/stream/BroadcastController getErrorCode ()Ltv/twitch/ErrorCode; A +MD net/minecraft/client/stream/BroadcastController getPixelFormat ()Ltv/twitch/broadcast/PixelFormat; B +MD net/minecraft/client/stream/BroadcastController func_152817_A ()Z C +MD net/minecraft/client/stream/BroadcastController func_152851_B ()Z D +MD net/minecraft/client/stream/BroadcastController statCallback ()V E +MD net/minecraft/client/stream/BroadcastController func_152845_C ()Z F +MD net/minecraft/client/stream/BroadcastController requestCommercial ()Z G +MD net/minecraft/client/stream/BroadcastController stopBroadcasting ()Z H +MD net/minecraft/client/stream/BroadcastController func_152847_F ()Z I +MD net/minecraft/client/stream/BroadcastController func_152854_G ()Z J +MD net/minecraft/client/stream/BroadcastController func_152821_H ()V K +MD net/minecraft/client/stream/BroadcastController func_152835_I ()V L +MD net/minecraft/client/stream/BroadcastController func_152838_J ()Lnet/minecraft/client/stream/IngestServerTester; M +MD net/minecraft/client/stream/BroadcastController func_152823_L ()Z O +MD net/minecraft/client/stream/BroadcastController func_152831_M ()V P +MD net/minecraft/client/stream/BroadcastController func_152822_N ()Ltv/twitch/broadcast/FrameBuffer; Q +MD net/minecraft/client/stream/BroadcastController setRecordingDeviceVolume (F)V a +MD net/minecraft/client/stream/BroadcastController func_152834_a (IIFF)Ltv/twitch/broadcast/VideoParams; a +MD net/minecraft/client/stream/BroadcastController func_152827_a (Lnet/minecraft/client/stream/BroadcastController$BroadcastState;)V a +MD net/minecraft/client/stream/BroadcastController setBroadcastListener (Lnet/minecraft/client/stream/BroadcastController$BroadcastListener;)V a +MD net/minecraft/client/stream/BroadcastController func_152842_a (Ljava/lang/String;)V a +MD net/minecraft/client/stream/BroadcastController func_177947_a (Ljava/lang/String;JJLjava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/client/stream/BroadcastController func_152840_a (Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/client/stream/BroadcastController func_152828_a (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/client/stream/BroadcastController func_152818_a (Ljava/lang/String;Ltv/twitch/AuthToken;)Z a +MD net/minecraft/client/stream/BroadcastController func_152853_a (Ltv/twitch/ErrorCode;)Z a +MD net/minecraft/client/stream/BroadcastController captureFramebuffer (Ltv/twitch/broadcast/FrameBuffer;)V a +MD net/minecraft/client/stream/BroadcastController setIngestServer (Ltv/twitch/broadcast/IngestServer;)V a +MD net/minecraft/client/stream/BroadcastController func_152836_a (Ltv/twitch/broadcast/VideoParams;)Z a +MD net/minecraft/client/stream/BroadcastController func_152858_b ()Z b +MD net/minecraft/client/stream/BroadcastController setPlaybackDeviceVolume (F)V b +MD net/minecraft/client/stream/BroadcastController func_177946_b (Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)J b +MD net/minecraft/client/stream/BroadcastController submitStreamFrame (Ltv/twitch/broadcast/FrameBuffer;)Ltv/twitch/ErrorCode; b +MD net/minecraft/client/stream/BroadcastController logError (Ljava/lang/String;)V d +MD net/minecraft/client/stream/BroadcastController logWarning (Ljava/lang/String;)V e +MD net/minecraft/client/stream/BroadcastController getStreamInfo ()Ltv/twitch/broadcast/StreamInfo; j +MD net/minecraft/client/stream/BroadcastController getChannelInfo ()Ltv/twitch/broadcast/ChannelInfo; l +MD net/minecraft/client/stream/BroadcastController isBroadcasting ()Z m +MD net/minecraft/client/stream/BroadcastController isReadyToBroadcast ()Z n +MD net/minecraft/client/stream/BroadcastController isIngestTesting ()Z o +MD net/minecraft/client/stream/BroadcastController isBroadcastPaused ()Z p +MD net/minecraft/client/stream/BroadcastController func_152849_q ()Z q +MD net/minecraft/client/stream/BroadcastController getIngestServer ()Ltv/twitch/broadcast/IngestServer; s +MD net/minecraft/client/stream/BroadcastController getIngestList ()Ltv/twitch/broadcast/IngestList; t +MD net/minecraft/client/stream/BroadcastController isReady ()Lnet/minecraft/client/stream/IngestServerTester; w +MD net/minecraft/client/stream/BroadcastController getStreamTime ()J x +MD net/minecraft/client/stream/BroadcastController func_152848_y ()Z y +MD net/minecraft/client/stream/BroadcastController$1 bufferUnlockCallback (J)V bufferUnlockCallback +MD net/minecraft/client/stream/BroadcastController$1 getArchivingStateCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ArchivingState;)V getArchivingStateCallback +MD net/minecraft/client/stream/BroadcastController$1 getGameNameListCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/GameInfoList;)V getGameNameListCallback +MD net/minecraft/client/stream/BroadcastController$1 getIngestServersCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/IngestList;)V getIngestServersCallback +MD net/minecraft/client/stream/BroadcastController$1 getStreamInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/StreamInfo;)V getStreamInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 getUserInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/UserInfo;)V getUserInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 loginCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ChannelInfo;)V loginCallback +MD net/minecraft/client/stream/BroadcastController$1 requestAuthTokenCallback (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V requestAuthTokenCallback +MD net/minecraft/client/stream/BroadcastController$1 runCommercialCallback (Ltv/twitch/ErrorCode;)V runCommercialCallback +MD net/minecraft/client/stream/BroadcastController$1 sendActionMetaDataCallback (Ltv/twitch/ErrorCode;)V sendActionMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 sendEndSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendEndSpanMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 sendStartSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendStartSpanMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 setStreamInfoCallback (Ltv/twitch/ErrorCode;)V setStreamInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 startCallback (Ltv/twitch/ErrorCode;)V startCallback +MD net/minecraft/client/stream/BroadcastController$1 stopCallback (Ltv/twitch/ErrorCode;)V stopCallback +MD net/minecraft/client/stream/BroadcastController$2 statCallback (Ltv/twitch/broadcast/StatType;J)V statCallback +MD net/minecraft/client/stream/BroadcastController$BroadcastState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/BroadcastController$BroadcastState; valueOf +MD net/minecraft/client/stream/BroadcastController$BroadcastState values ()[Lnet/minecraft/client/stream/BroadcastController$BroadcastState; values +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152895_a ()V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152891_a (Lnet/minecraft/client/stream/BroadcastController$BroadcastState;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152897_a (Ltv/twitch/ErrorCode;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152900_a (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152898_a (Ltv/twitch/ErrorCode;[Ltv/twitch/broadcast/GameInfo;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152896_a (Ltv/twitch/broadcast/IngestList;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152894_a (Ltv/twitch/broadcast/StreamInfo;)V a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152899_b ()V b +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152893_b (Ltv/twitch/ErrorCode;)V b +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152901_c ()V c +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152892_c (Ltv/twitch/ErrorCode;)V c +MD net/minecraft/client/stream/ChatController func_175985_a (Lnet/minecraft/client/stream/ChatController$ChatState;)V a +MD net/minecraft/client/stream/ChatController func_152990_a (Lnet/minecraft/client/stream/ChatController$ChatListener;)V a +MD net/minecraft/client/stream/ChatController func_152984_a (Ljava/lang/String;)V a +MD net/minecraft/client/stream/ChatController func_175986_a (Ljava/lang/String;Ljava/lang/String;)Z a +MD net/minecraft/client/stream/ChatController func_175987_a (Ljava/lang/String;Z)Z a +MD net/minecraft/client/stream/ChatController func_152994_a (Ltv/twitch/AuthToken;)V a +MD net/minecraft/client/stream/ChatController func_152998_c (Ljava/lang/String;)V c +MD net/minecraft/client/stream/ChatController func_175990_d (Ljava/lang/String;)Z d +MD net/minecraft/client/stream/ChatController func_175989_e (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumChannelState; e +MD net/minecraft/client/stream/ChatController func_153000_j ()Lnet/minecraft/client/stream/ChatController$ChatState; h +MD net/minecraft/client/stream/ChatController func_152986_d (Ljava/lang/String;)Z j +MD net/minecraft/client/stream/ChatController func_175991_l (Ljava/lang/String;)Z l +MD net/minecraft/client/stream/ChatController func_175984_n ()Z n +MD net/minecraft/client/stream/ChatController func_152995_h (Ljava/lang/String;)V n +MD net/minecraft/client/stream/ChatController func_152993_m ()Z o +MD net/minecraft/client/stream/ChatController func_175988_p ()V p +MD net/minecraft/client/stream/ChatController func_152997_n ()V q +MD net/minecraft/client/stream/ChatController func_153001_r ()V r +MD net/minecraft/client/stream/ChatController func_152988_s ()V s +MD net/minecraft/client/stream/ChatController func_152996_t ()V t +MD net/minecraft/client/stream/ChatController$1 chatEmoticonDataDownloadCallback (Ltv/twitch/ErrorCode;)V chatEmoticonDataDownloadCallback +MD net/minecraft/client/stream/ChatController$1 chatInitializationCallback (Ltv/twitch/ErrorCode;)V chatInitializationCallback +MD net/minecraft/client/stream/ChatController$1 chatShutdownCallback (Ltv/twitch/ErrorCode;)V chatShutdownCallback +MD net/minecraft/client/stream/ChatController$EnumChannelState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumChannelState; valueOf +MD net/minecraft/client/stream/ChatController$EnumChannelState values ()[Lnet/minecraft/client/stream/ChatController$EnumChannelState; values +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176040_a ()Lnet/minecraft/client/stream/ChatController$EnumChannelState; a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176035_a (Lnet/minecraft/client/stream/ChatController$EnumChannelState;)V a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176032_a (Ljava/lang/String;)V a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176038_a (Z)Z a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176037_b (Ljava/lang/String;)Z b +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176031_c (Ljava/lang/String;)V c +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176036_d (Ljava/lang/String;)V d +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176034_g ()Z g +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176041_h ()V h +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176039_i ()V i +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176033_j ()V j +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176030_k ()V k +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatBadgeDataDownloadCallback (Ljava/lang/String;Ltv/twitch/ErrorCode;)V chatBadgeDataDownloadCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelMembershipCallback (Ljava/lang/String;Ltv/twitch/chat/ChatEvent;Ltv/twitch/chat/ChatChannelInfo;)V chatChannelMembershipCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelRawMessageCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatRawMessage;)V chatChannelRawMessageCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelTokenizedMessageCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatTokenizedMessage;)V chatChannelTokenizedMessageCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelUserChangeCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;)V chatChannelUserChangeCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatClearCallback (Ljava/lang/String;Ljava/lang/String;)V chatClearCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatStatusCallback (Ljava/lang/String;Ltv/twitch/ErrorCode;)V chatStatusCallback +MD net/minecraft/client/stream/ChatController$ChatState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$ChatState; valueOf +MD net/minecraft/client/stream/ChatController$ChatState values ()[Lnet/minecraft/client/stream/ChatController$ChatState; values +MD net/minecraft/client/stream/ChatController$EnumEmoticonMode valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumEmoticonMode; valueOf +MD net/minecraft/client/stream/ChatController$EnumEmoticonMode values ()[Lnet/minecraft/client/stream/ChatController$EnumEmoticonMode; values +MD net/minecraft/client/stream/ChatController$ChatListener func_176017_a (Lnet/minecraft/client/stream/ChatController$ChatState;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_180606_a (Ljava/lang/String;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_176019_a (Ljava/lang/String;Ljava/lang/String;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_180605_a (Ljava/lang/String;[Ltv/twitch/chat/ChatRawMessage;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_176025_a (Ljava/lang/String;[Ltv/twitch/chat/ChatTokenizedMessage;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_176018_a (Ljava/lang/String;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;)V a +MD net/minecraft/client/stream/ChatController$ChatListener func_180607_b (Ljava/lang/String;)V b +MD net/minecraft/client/stream/ChatController$ChatListener func_176016_c (Ljava/lang/String;)V c +MD net/minecraft/client/stream/ChatController$ChatListener func_176021_d ()V d +MD net/minecraft/client/stream/ChatController$ChatListener func_176020_d (Ljava/lang/String;)V d +MD net/minecraft/client/stream/ChatController$ChatListener func_176023_d (Ltv/twitch/ErrorCode;)V d +MD net/minecraft/client/stream/ChatController$ChatListener func_176024_e ()V e +MD net/minecraft/client/stream/ChatController$ChatListener func_176022_e (Ltv/twitch/ErrorCode;)V e +MD net/minecraft/client/stream/IngestServerTester func_153042_a (Lnet/minecraft/client/stream/IngestServerTester$IngestTestListener;)V a +MD net/minecraft/client/stream/IngestServerTester func_153034_a (Lnet/minecraft/client/stream/IngestServerTester$IngestTestState;)V a +MD net/minecraft/client/stream/IngestServerTester func_153036_a (Ltv/twitch/broadcast/IngestServer;)Z a +MD net/minecraft/client/stream/IngestServerTester func_153035_b (Ltv/twitch/broadcast/IngestServer;)V b +MD net/minecraft/client/stream/IngestServerTester func_153040_c ()Ltv/twitch/broadcast/IngestServer; c +MD net/minecraft/client/stream/IngestServerTester func_153029_c (Ltv/twitch/broadcast/IngestServer;)Z c +MD net/minecraft/client/stream/IngestServerTester func_153028_p ()I d +MD net/minecraft/client/stream/IngestServerTester func_153032_e ()Z f +MD net/minecraft/client/stream/IngestServerTester func_153030_h ()F i +MD net/minecraft/client/stream/IngestServerTester func_176004_j ()V j +MD net/minecraft/client/stream/IngestServerTester func_153041_j ()V k +MD net/minecraft/client/stream/IngestServerTester func_153039_l ()V m +MD net/minecraft/client/stream/IngestServerTester func_153037_m ()J n +MD net/minecraft/client/stream/IngestServerTester func_153038_n ()V o +MD net/minecraft/client/stream/IngestServerTester func_153031_o ()V p +MD net/minecraft/client/stream/IngestServerTester$1 bufferUnlockCallback (J)V bufferUnlockCallback +MD net/minecraft/client/stream/IngestServerTester$1 getArchivingStateCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ArchivingState;)V getArchivingStateCallback +MD net/minecraft/client/stream/IngestServerTester$1 getGameNameListCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/GameInfoList;)V getGameNameListCallback +MD net/minecraft/client/stream/IngestServerTester$1 getIngestServersCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/IngestList;)V getIngestServersCallback +MD net/minecraft/client/stream/IngestServerTester$1 getStreamInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/StreamInfo;)V getStreamInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 getUserInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/UserInfo;)V getUserInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 loginCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ChannelInfo;)V loginCallback +MD net/minecraft/client/stream/IngestServerTester$1 requestAuthTokenCallback (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V requestAuthTokenCallback +MD net/minecraft/client/stream/IngestServerTester$1 runCommercialCallback (Ltv/twitch/ErrorCode;)V runCommercialCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendActionMetaDataCallback (Ltv/twitch/ErrorCode;)V sendActionMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendEndSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendEndSpanMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendStartSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendStartSpanMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 setStreamInfoCallback (Ltv/twitch/ErrorCode;)V setStreamInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 startCallback (Ltv/twitch/ErrorCode;)V startCallback +MD net/minecraft/client/stream/IngestServerTester$1 stopCallback (Ltv/twitch/ErrorCode;)V stopCallback +MD net/minecraft/client/stream/IngestServerTester$2 statCallback (Ltv/twitch/broadcast/StatType;J)V statCallback +MD net/minecraft/client/stream/IngestServerTester$IngestTestListener func_152907_a (Lnet/minecraft/client/stream/IngestServerTester;Lnet/minecraft/client/stream/IngestServerTester$IngestTestState;)V a +MD net/minecraft/client/stream/IngestServerTester$IngestTestState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/IngestServerTester$IngestTestState; valueOf +MD net/minecraft/client/stream/IngestServerTester$IngestTestState values ()[Lnet/minecraft/client/stream/IngestServerTester$IngestTestState; values +MD net/minecraft/client/stream/IStream func_152928_D ()Z A +MD net/minecraft/client/stream/IStream func_152912_E ()Ltv/twitch/ErrorCode; B +MD net/minecraft/client/stream/IStream func_152913_F ()Z C +MD net/minecraft/client/stream/IStream func_152929_G ()Z D +MD net/minecraft/client/stream/IStream func_152918_H ()Lnet/minecraft/client/stream/IStream$AuthFailureReason; E +MD net/minecraft/client/stream/IStream func_152911_a (Lnet/minecraft/client/stream/Metadata;J)V a +MD net/minecraft/client/stream/IStream func_176026_a (Lnet/minecraft/client/stream/Metadata;JJ)V a +MD net/minecraft/client/stream/IStream muteMicrophone (Z)V a +MD net/minecraft/client/stream/IStream func_152926_a (Ljava/lang/String;)Ltv/twitch/chat/ChatUserInfo; e +MD net/minecraft/client/stream/IStream shutdownStream ()V f +MD net/minecraft/client/stream/IStream func_152917_b (Ljava/lang/String;)V f +MD net/minecraft/client/stream/IStream func_152935_j ()V g +MD net/minecraft/client/stream/IStream func_152922_k ()V h +MD net/minecraft/client/stream/IStream func_152936_l ()Z i +MD net/minecraft/client/stream/IStream isReadyToBroadcast ()Z j +MD net/minecraft/client/stream/IStream isBroadcasting ()Z k +MD net/minecraft/client/stream/IStream isPaused ()Z l +MD net/minecraft/client/stream/IStream requestCommercial ()V m +MD net/minecraft/client/stream/IStream pause ()V n +MD net/minecraft/client/stream/IStream unpause ()V o +MD net/minecraft/client/stream/IStream updateStreamVolume ()V p +MD net/minecraft/client/stream/IStream func_152930_t ()V q +MD net/minecraft/client/stream/IStream stopBroadcasting ()V r +MD net/minecraft/client/stream/IStream func_152925_v ()[Ltv/twitch/broadcast/IngestServer; s +MD net/minecraft/client/stream/IStream func_152909_x ()V u +MD net/minecraft/client/stream/IStream func_152932_y ()Lnet/minecraft/client/stream/IngestServerTester; v +MD net/minecraft/client/stream/IStream func_152908_z ()Z w +MD net/minecraft/client/stream/IStream func_152920_A ()I x +MD net/minecraft/client/stream/IStream func_152927_B ()Z y +MD net/minecraft/client/stream/IStream func_152921_C ()Ljava/lang/String; z +MD net/minecraft/client/stream/IStream$AuthFailureReason valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/IStream$AuthFailureReason; valueOf +MD net/minecraft/client/stream/IStream$AuthFailureReason values ()[Lnet/minecraft/client/stream/IStream$AuthFailureReason; values +MD net/minecraft/client/stream/TwitchStream func_152942_I ()V F +MD net/minecraft/client/stream/TwitchStream access$000 ()Lorg/apache/logging/log4j/Logger; G +MD net/minecraft/client/stream/TwitchStream formatStreamFps (F)I a +MD net/minecraft/client/stream/TwitchStream access$100 (Lnet/minecraft/client/stream/TwitchStream;)Lnet/minecraft/client/stream/BroadcastController; a +MD net/minecraft/client/stream/TwitchStream access$302 (Lnet/minecraft/client/stream/TwitchStream;Lnet/minecraft/client/stream/IStream$AuthFailureReason;)Lnet/minecraft/client/stream/IStream$AuthFailureReason; a +MD net/minecraft/client/stream/TwitchStream func_176027_a (Ljava/lang/String;Ltv/twitch/chat/ChatRawMessage;)V a +MD net/minecraft/client/stream/TwitchStream func_176028_a (Ljava/util/Set;Ljava/util/Set;I)Z a +MD net/minecraft/client/stream/TwitchStream formatStreamKbps (F)I b +MD net/minecraft/client/stream/TwitchStream access$200 (Lnet/minecraft/client/stream/TwitchStream;)Lnet/minecraft/client/stream/ChatController; b +MD net/minecraft/client/stream/TwitchStream formatStreamBps (F)F c +MD net/minecraft/client/stream/TwitchStream$1 run ()V run +MD net/minecraft/client/stream/TwitchStream$1$1 run ()V run +MD net/minecraft/client/stream/NullStream func_152937_a ()Ljava/lang/Throwable; a +MD net/minecraft/client/renderer/OpenGlHelper initializeTextures ()V a +MD net/minecraft/client/renderer/OpenGlHelper glDeleteShader (I)V a +MD net/minecraft/client/renderer/OpenGlHelper setLightmapTextureCoords (IFF)V a +MD net/minecraft/client/renderer/OpenGlHelper glGetProgrami (II)I a +MD net/minecraft/client/renderer/OpenGlHelper glRenderbufferStorage (IIII)V a +MD net/minecraft/client/renderer/OpenGlHelper glFramebufferTexture2D (IIIII)V a +MD net/minecraft/client/renderer/OpenGlHelper glGetUniformLocation (ILjava/lang/CharSequence;)I a +MD net/minecraft/client/renderer/OpenGlHelper glShaderSource (ILjava/nio/ByteBuffer;)V a +MD net/minecraft/client/renderer/OpenGlHelper glBufferData (ILjava/nio/ByteBuffer;I)V a +MD net/minecraft/client/renderer/OpenGlHelper glUniform1 (ILjava/nio/FloatBuffer;)V a +MD net/minecraft/client/renderer/OpenGlHelper glUniform1 (ILjava/nio/IntBuffer;)V a +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix2 (IZLjava/nio/FloatBuffer;)V a +MD net/minecraft/client/renderer/OpenGlHelper areShadersSupported ()Z b +MD net/minecraft/client/renderer/OpenGlHelper glCreateShader (I)I b +MD net/minecraft/client/renderer/OpenGlHelper glAttachShader (II)V b +MD net/minecraft/client/renderer/OpenGlHelper glFramebufferRenderbuffer (IIII)V b +MD net/minecraft/client/renderer/OpenGlHelper glGetAttribLocation (ILjava/lang/CharSequence;)I b +MD net/minecraft/client/renderer/OpenGlHelper glUniform2 (ILjava/nio/FloatBuffer;)V b +MD net/minecraft/client/renderer/OpenGlHelper glUniform2 (ILjava/nio/IntBuffer;)V b +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix3 (IZLjava/nio/FloatBuffer;)V b +MD net/minecraft/client/renderer/OpenGlHelper getLogText ()Ljava/lang/String; c +MD net/minecraft/client/renderer/OpenGlHelper glCompileShader (I)V c +MD net/minecraft/client/renderer/OpenGlHelper glGetShaderi (II)I c +MD net/minecraft/client/renderer/OpenGlHelper glBlendFunc (IIII)V c +MD net/minecraft/client/renderer/OpenGlHelper glUniform3 (ILjava/nio/FloatBuffer;)V c +MD net/minecraft/client/renderer/OpenGlHelper glUniform3 (ILjava/nio/IntBuffer;)V c +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix4 (IZLjava/nio/FloatBuffer;)V c +MD net/minecraft/client/renderer/OpenGlHelper glCreateProgram ()I d +MD net/minecraft/client/renderer/OpenGlHelper glUseProgram (I)V d +MD net/minecraft/client/renderer/OpenGlHelper glGetShaderInfoLog (II)Ljava/lang/String; d +MD net/minecraft/client/renderer/OpenGlHelper glUniform4 (ILjava/nio/FloatBuffer;)V d +MD net/minecraft/client/renderer/OpenGlHelper glUniform4 (ILjava/nio/IntBuffer;)V d +MD net/minecraft/client/renderer/OpenGlHelper glGenBuffers ()I e +MD net/minecraft/client/renderer/OpenGlHelper glDeleteProgram (I)V e +MD net/minecraft/client/renderer/OpenGlHelper glGetProgramInfoLog (II)Ljava/lang/String; e +MD net/minecraft/client/renderer/OpenGlHelper useVbo ()Z f +MD net/minecraft/client/renderer/OpenGlHelper glLinkProgram (I)V f +MD net/minecraft/client/renderer/OpenGlHelper glUniform1i (II)V f +MD net/minecraft/client/renderer/OpenGlHelper glGenFramebuffers ()I g +MD net/minecraft/client/renderer/OpenGlHelper glDeleteBuffers (I)V g +MD net/minecraft/client/renderer/OpenGlHelper glBindBuffer (II)V g +MD net/minecraft/client/renderer/OpenGlHelper glGenRenderbuffers ()I h +MD net/minecraft/client/renderer/OpenGlHelper glDeleteRenderbuffers (I)V h +MD net/minecraft/client/renderer/OpenGlHelper glBindFramebuffer (II)V h +MD net/minecraft/client/renderer/OpenGlHelper isFramebufferEnabled ()Z i +MD net/minecraft/client/renderer/OpenGlHelper glDeleteFramebuffers (I)V i +MD net/minecraft/client/renderer/OpenGlHelper glBindRenderbuffer (II)V i +MD net/minecraft/client/renderer/OpenGlHelper getCpu ()Ljava/lang/String; j +MD net/minecraft/client/renderer/OpenGlHelper glCheckFramebufferStatus (I)I j +MD net/minecraft/client/renderer/OpenGlHelper setActiveTexture (I)V k +MD net/minecraft/client/renderer/OpenGlHelper setClientActiveTexture (I)V l +MD net/minecraft/client/main/Main isNullOrEmpty (Ljava/lang/String;)Z a +MD net/minecraft/client/main/Main main ([Ljava/lang/String;)V main +MD net/minecraft/client/main/Main$1 getPasswordAuthentication ()Ljava/net/PasswordAuthentication; getPasswordAuthentication +MD net/minecraft/realms/RealmsConnect$1 run ()V run +MD net/minecraft/server/MinecraftServer tick ()V A +MD net/minecraft/server/MinecraftServer updateTimeLightAndEntities ()V B +MD net/minecraft/server/MinecraftServer getAllowNether ()Z C +MD net/minecraft/server/MinecraftServer startServerThread ()V D +MD net/minecraft/server/MinecraftServer getHostname ()Ljava/lang/String; E +MD net/minecraft/server/MinecraftServer getPort ()I F +MD net/minecraft/server/MinecraftServer getMotd ()Ljava/lang/String; G +MD net/minecraft/server/MinecraftServer getMinecraftVersion ()Ljava/lang/String; H +MD net/minecraft/server/MinecraftServer getCurrentPlayerCount ()I I +MD net/minecraft/server/MinecraftServer getMaxPlayers ()I J +MD net/minecraft/server/MinecraftServer getAllUsernames ()[Ljava/lang/String; K +MD net/minecraft/server/MinecraftServer getGameProfiles ()[Lcom/mojang/authlib/GameProfile; L +MD net/minecraft/server/MinecraftServer isDebuggingEnabled ()Z M +MD net/minecraft/server/MinecraftServer getServer ()Lnet/minecraft/server/MinecraftServer; N +MD net/minecraft/server/MinecraftServer isAnvilFileSet ()Z O +MD net/minecraft/server/MinecraftServer getCommandManager ()Lnet/minecraft/command/ICommandManager; P +MD net/minecraft/server/MinecraftServer getKeyPair ()Ljava/security/KeyPair; Q +MD net/minecraft/server/MinecraftServer getServerPort ()I R +MD net/minecraft/server/MinecraftServer getServerOwner ()Ljava/lang/String; S +MD net/minecraft/server/MinecraftServer isSinglePlayer ()Z T +MD net/minecraft/server/MinecraftServer getFolderName ()Ljava/lang/String; U +MD net/minecraft/server/MinecraftServer getWorldName ()Ljava/lang/String; V +MD net/minecraft/server/MinecraftServer allowSpawnMonsters ()Z W +MD net/minecraft/server/MinecraftServer isDemo ()Z X +MD net/minecraft/server/MinecraftServer getActiveAnvilConverter ()Lnet/minecraft/world/storage/ISaveFormat; Y +MD net/minecraft/server/MinecraftServer worldServerForDimension (I)Lnet/minecraft/world/WorldServer; a +MD net/minecraft/server/MinecraftServer isBlockProtected (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)Z a +MD net/minecraft/server/MinecraftServer setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V a +MD net/minecraft/server/MinecraftServer shareToLAN (Lnet/minecraft/world/WorldSettings$GameType;Z)Ljava/lang/String; a +MD net/minecraft/server/MinecraftServer finalTick (Lnet/minecraft/crash/CrashReport;)V a +MD net/minecraft/server/MinecraftServer convertMapIfNeeded (Ljava/lang/String;)V a +MD net/minecraft/server/MinecraftServer setResourcePackFromWorld (Ljava/lang/String;Lnet/minecraft/world/storage/ISaveHandler;)V a +MD net/minecraft/server/MinecraftServer loadAllWorlds (Ljava/lang/String;Ljava/lang/String;JLnet/minecraft/world/WorldType;Ljava/lang/String;)V a +MD net/minecraft/server/MinecraftServer setKeyPair (Ljava/security/KeyPair;)V a +MD net/minecraft/server/MinecraftServer getEntityFromUuid (Ljava/util/UUID;)Lnet/minecraft/entity/Entity; a +MD net/minecraft/server/MinecraftServer callFromMainThread (Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/ListenableFuture; a +MD net/minecraft/server/MinecraftServer addFaviconToStatusResponse (Lnet/minecraft/network/ServerStatusResponse;)V a +MD net/minecraft/server/MinecraftServer registerTickable (Lnet/minecraft/util/ITickable;)V a +MD net/minecraft/server/MinecraftServer setConfigManager (Lnet/minecraft/server/management/ServerConfigurationManager;)V a +MD net/minecraft/server/MinecraftServer getTabCompletions (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; a +MD net/minecraft/server/MinecraftServer access$100 (Lnet/minecraft/server/MinecraftServer;)Lnet/minecraft/server/management/ServerConfigurationManager; a +MD net/minecraft/server/MinecraftServer setDifficultyForAllWorlds (Lnet/minecraft/world/EnumDifficulty;)V a +MD net/minecraft/server/MinecraftServer saveAllWorlds (Z)V a +MD net/minecraft/server/MinecraftServer getMaxPlayerIdleMinutes ()I aA +MD net/minecraft/server/MinecraftServer isAnnouncingPlayerAchievements ()Z aB +MD net/minecraft/server/MinecraftServer getMinecraftSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; aD +MD net/minecraft/server/MinecraftServer getGameProfileRepository ()Lcom/mojang/authlib/GameProfileRepository; aE +MD net/minecraft/server/MinecraftServer getPlayerProfileCache ()Lnet/minecraft/server/management/PlayerProfileCache; aF +MD net/minecraft/server/MinecraftServer getServerStatusResponse ()Lnet/minecraft/network/ServerStatusResponse; aG +MD net/minecraft/server/MinecraftServer refreshStatusNextTick ()V aH +MD net/minecraft/server/MinecraftServer getMaxWorldSize ()I aI +MD net/minecraft/server/MinecraftServer getNetworkCompressionTreshold ()I aK +MD net/minecraft/server/MinecraftServer getCurrentTime ()J aL +MD net/minecraft/server/MinecraftServer getServerThread ()Ljava/lang/Thread; aM +MD net/minecraft/server/MinecraftServer access$000 ()Lorg/apache/logging/log4j/Logger; aN +MD net/minecraft/server/MinecraftServer outputPercentRemaining (Ljava/lang/String;I)V a_ +MD net/minecraft/server/MinecraftServer setResourcePack (Ljava/lang/String;Ljava/lang/String;)V a_ +MD net/minecraft/server/MinecraftServer deleteWorldAndStopServer ()V aa +MD net/minecraft/server/MinecraftServer getResourcePackUrl ()Ljava/lang/String; ab +MD net/minecraft/server/MinecraftServer getResourcePackHash ()Ljava/lang/String; ac +MD net/minecraft/server/MinecraftServer isDedicatedServer ()Z ae +MD net/minecraft/server/MinecraftServer isServerInOnlineMode ()Z af +MD net/minecraft/server/MinecraftServer getCanSpawnAnimals ()Z ag +MD net/minecraft/server/MinecraftServer getCanSpawnNPCs ()Z ah +MD net/minecraft/server/MinecraftServer shouldUseNativeTransport ()Z ai +MD net/minecraft/server/MinecraftServer isPVPEnabled ()Z aj +MD net/minecraft/server/MinecraftServer isFlightAllowed ()Z ak +MD net/minecraft/server/MinecraftServer isCommandBlockEnabled ()Z al +MD net/minecraft/server/MinecraftServer getMOTD ()Ljava/lang/String; am +MD net/minecraft/server/MinecraftServer getBuildLimit ()I an +MD net/minecraft/server/MinecraftServer isServerStopped ()Z ao +MD net/minecraft/server/MinecraftServer getConfigurationManager ()Lnet/minecraft/server/management/ServerConfigurationManager; ap +MD net/minecraft/server/MinecraftServer getNetworkSystem ()Lnet/minecraft/network/NetworkSystem; aq +MD net/minecraft/server/MinecraftServer serverIsInRunLoop ()Z ar +MD net/minecraft/server/MinecraftServer getGuiEnabled ()Z as +MD net/minecraft/server/MinecraftServer getTickCounter ()I at +MD net/minecraft/server/MinecraftServer enableProfiling ()V au +MD net/minecraft/server/MinecraftServer getPlayerUsageSnooper ()Lnet/minecraft/profiler/PlayerUsageSnooper; av +MD net/minecraft/server/MinecraftServer getSpawnProtectionSize ()I aw +MD net/minecraft/server/MinecraftServer getForceGamemode ()Z ax +MD net/minecraft/server/MinecraftServer getServerProxy ()Ljava/net/Proxy; ay +MD net/minecraft/server/MinecraftServer getCurrentTimeMillis ()J az +MD net/minecraft/server/MinecraftServer setServerPort (I)V b +MD net/minecraft/server/MinecraftServer addServerInfoToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReport; b +MD net/minecraft/server/MinecraftServer setUserMessage (Ljava/lang/String;)V b +MD net/minecraft/server/MinecraftServer setDemo (Z)V b +MD net/minecraft/server/MinecraftServer setBuildLimit (I)V c +MD net/minecraft/server/MinecraftServer setHostname (Ljava/lang/String;)V c +MD net/minecraft/server/MinecraftServer canCreateBonusChest (Z)V c +MD net/minecraft/server/MinecraftServer setPlayerIdleTimeout (I)V d +MD net/minecraft/server/MinecraftServer getFile (Ljava/lang/String;)Ljava/io/File; d +MD net/minecraft/server/MinecraftServer setOnlineMode (Z)V d +MD net/minecraft/server/MinecraftServer logInfo (Ljava/lang/String;)V e +MD net/minecraft/server/MinecraftServer setCanSpawnAnimals (Z)V e +MD net/minecraft/server/MinecraftServer logWarning (Ljava/lang/String;)V f +MD net/minecraft/server/MinecraftServer setCanSpawnNPCs (Z)V f +MD net/minecraft/server/MinecraftServer logSevere (Ljava/lang/String;)V g +MD net/minecraft/server/MinecraftServer setAllowPvp (Z)V g +MD net/minecraft/server/MinecraftServer createNewCommandManager ()Lnet/minecraft/command/ServerCommandManager; h +MD net/minecraft/server/MinecraftServer logDebug (Ljava/lang/String;)V h +MD net/minecraft/server/MinecraftServer setAllowFlight (Z)V h +MD net/minecraft/server/MinecraftServer startServer ()Z i +MD net/minecraft/server/MinecraftServer setServerOwner (Ljava/lang/String;)V i +MD net/minecraft/server/MinecraftServer setForceGamemode (Z)V i +MD net/minecraft/server/MinecraftServer getUserMessage ()Ljava/lang/String; j +MD net/minecraft/server/MinecraftServer setFolderName (Ljava/lang/String;)V j +MD net/minecraft/server/MinecraftServer initialWorldChunkLoad ()V k +MD net/minecraft/server/MinecraftServer setWorldName (Ljava/lang/String;)V k +MD net/minecraft/server/MinecraftServer canStructuresSpawn ()Z l +MD net/minecraft/server/MinecraftServer setMOTD (Ljava/lang/String;)V l +MD net/minecraft/server/MinecraftServer getGameType ()Lnet/minecraft/world/WorldSettings$GameType; m +MD net/minecraft/server/MinecraftServer getDifficulty ()Lnet/minecraft/world/EnumDifficulty; n +MD net/minecraft/server/MinecraftServer isHardcore ()Z o +MD net/minecraft/server/MinecraftServer getOpPermissionLevel ()I p +MD net/minecraft/server/MinecraftServer shouldBroadcastRconToOps ()Z q +MD net/minecraft/server/MinecraftServer shouldBroadcastConsoleToOps ()Z r +MD net/minecraft/server/MinecraftServer clearCurrentTask ()V s +MD net/minecraft/server/MinecraftServer stopServer ()V t +MD net/minecraft/server/MinecraftServer getServerHostname ()Ljava/lang/String; u +MD net/minecraft/server/MinecraftServer isServerRunning ()Z v +MD net/minecraft/server/MinecraftServer initiateShutdown ()V w +MD net/minecraft/server/MinecraftServer setInstance ()V x +MD net/minecraft/server/MinecraftServer getDataDirectory ()Ljava/io/File; y +MD net/minecraft/server/MinecraftServer systemExitNow ()V z +MD net/minecraft/server/MinecraftServer getServerModName ()Ljava/lang/String; getServerModName +MD net/minecraft/server/MinecraftServer main ([Ljava/lang/String;)V main +MD net/minecraft/server/MinecraftServer run ()V run +MD net/minecraft/server/MinecraftServer$2 run ()V run +MD net/minecraft/server/MinecraftServer$3 call ()Ljava/lang/String; a +MD net/minecraft/server/MinecraftServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/MinecraftServer$4 call ()Ljava/lang/String; a +MD net/minecraft/server/MinecraftServer$4 call ()Ljava/lang/Object; call diff --git a/SlinkyClient/mappings/srg.txt b/SlinkyClient/mappings/srg.txt new file mode 100644 index 0000000..89d61d0 --- /dev/null +++ b/SlinkyClient/mappings/srg.txt @@ -0,0 +1,20729 @@ +CL net/minecraft/util/EnumChatFormatting net/minecraft/util/EnumChatFormatting +CL net/minecraft/crash/CrashReport net/minecraft/crash/CrashReport +CL net/minecraft/crash/CrashReport$1 net/minecraft/crash/CrashReport$1 +CL net/minecraft/crash/CrashReport$2 net/minecraft/crash/CrashReport$2 +CL net/minecraft/crash/CrashReport$3 net/minecraft/crash/CrashReport$3 +CL net/minecraft/crash/CrashReport$4 net/minecraft/crash/CrashReport$4 +CL net/minecraft/crash/CrashReport$5 net/minecraft/crash/CrashReport$5 +CL net/minecraft/crash/CrashReport$6 net/minecraft/crash/CrashReport$6 +CL net/minecraft/crash/CrashReport$7 net/minecraft/crash/CrashReport$7 +CL net/minecraft/crash/CrashReportCategory net/minecraft/crash/CrashReportCategory +CL net/minecraft/crash/CrashReportCategory$1 net/minecraft/crash/CrashReportCategory$1 +CL net/minecraft/crash/CrashReportCategory$2 net/minecraft/crash/CrashReportCategory$2 +CL net/minecraft/crash/CrashReportCategory$3 net/minecraft/crash/CrashReportCategory$3 +CL net/minecraft/crash/CrashReportCategory$6 net/minecraft/crash/CrashReportCategory$6 +CL net/minecraft/crash/CrashReportCategory$7 net/minecraft/crash/CrashReportCategory$7 +CL net/minecraft/crash/CrashReportCategory$Entry net/minecraft/crash/CrashReportCategory$Entry +CL net/minecraft/util/ReportedException net/minecraft/util/ReportedException +CL net/minecraft/util/ChatAllowedCharacters net/minecraft/util/ChatAllowedCharacters +CL net/minecraft/util/Util net/minecraft/util/Util +CL net/minecraft/util/Util$EnumOS net/minecraft/util/Util$EnumOS +CL net/minecraft/command/IAdminCommand net/minecraft/command/IAdminCommand +CL net/minecraft/command/CommandBase net/minecraft/command/CommandBase +CL net/minecraft/command/CommandBase$CoordinateArg net/minecraft/command/CommandBase$CoordinateArg +CL net/minecraft/command/CommandHandler net/minecraft/command/CommandHandler +CL net/minecraft/command/ICommand net/minecraft/command/ICommand +CL net/minecraft/command/ICommandManager net/minecraft/command/ICommandManager +CL net/minecraft/command/ICommandSender net/minecraft/command/ICommandSender +CL net/minecraft/command/CommandResultStats net/minecraft/command/CommandResultStats +CL net/minecraft/command/CommandResultStats$1 net/minecraft/command/CommandResultStats$1 +CL net/minecraft/command/CommandResultStats$Type net/minecraft/command/CommandResultStats$Type +CL net/minecraft/command/PlayerSelector net/minecraft/command/PlayerSelector +CL net/minecraft/command/PlayerSelector$1 net/minecraft/command/PlayerSelector$1 +CL net/minecraft/command/PlayerSelector$2 net/minecraft/command/PlayerSelector$2 +CL net/minecraft/command/PlayerSelector$3 net/minecraft/command/PlayerSelector$3 +CL net/minecraft/command/PlayerSelector$4 net/minecraft/command/PlayerSelector$4 +CL net/minecraft/command/PlayerSelector$5 net/minecraft/command/PlayerSelector$5 +CL net/minecraft/command/PlayerSelector$6 net/minecraft/command/PlayerSelector$6 +CL net/minecraft/command/PlayerSelector$7 net/minecraft/command/PlayerSelector$7 +CL net/minecraft/command/PlayerSelector$8 net/minecraft/command/PlayerSelector$8 +CL net/minecraft/command/PlayerSelector$9 net/minecraft/command/PlayerSelector$9 +CL net/minecraft/command/PlayerSelector$10 net/minecraft/command/PlayerSelector$10 +CL net/minecraft/command/PlayerSelector$11 net/minecraft/command/PlayerSelector$11 +CL net/minecraft/command/PlayerSelector$12 net/minecraft/command/PlayerSelector$12 +CL net/minecraft/command/server/CommandAchievement net/minecraft/command/server/CommandAchievement +CL net/minecraft/command/server/CommandAchievement$1 net/minecraft/command/server/CommandAchievement$1 +CL net/minecraft/command/server/CommandBanIp net/minecraft/command/server/CommandBanIp +CL net/minecraft/command/server/CommandBanPlayer net/minecraft/command/server/CommandBanPlayer +CL net/minecraft/command/CommandBlockData net/minecraft/command/CommandBlockData +CL net/minecraft/command/CommandClearInventory net/minecraft/command/CommandClearInventory +CL net/minecraft/command/CommandClone net/minecraft/command/CommandClone +CL net/minecraft/command/CommandClone$StaticCloneData net/minecraft/command/CommandClone$StaticCloneData +CL net/minecraft/command/CommandCompare net/minecraft/command/CommandCompare +CL net/minecraft/command/server/CommandDeOp net/minecraft/command/server/CommandDeOp +CL net/minecraft/command/CommandDebug net/minecraft/command/CommandDebug +CL net/minecraft/command/CommandDefaultGameMode net/minecraft/command/CommandDefaultGameMode +CL net/minecraft/command/CommandEffect net/minecraft/command/CommandEffect +CL net/minecraft/command/server/CommandEmote net/minecraft/command/server/CommandEmote +CL net/minecraft/command/CommandEnchant net/minecraft/command/CommandEnchant +CL net/minecraft/command/CommandEntityData net/minecraft/command/CommandEntityData +CL net/minecraft/command/CommandExecuteAt net/minecraft/command/CommandExecuteAt +CL net/minecraft/command/CommandExecuteAt$1 net/minecraft/command/CommandExecuteAt$1 +CL net/minecraft/command/CommandXP net/minecraft/command/CommandXP +CL net/minecraft/command/CommandFill net/minecraft/command/CommandFill +CL net/minecraft/command/CommandDifficulty net/minecraft/command/CommandDifficulty +CL net/minecraft/command/CommandGameMode net/minecraft/command/CommandGameMode +CL net/minecraft/command/CommandGameRule net/minecraft/command/CommandGameRule +CL net/minecraft/command/CommandGive net/minecraft/command/CommandGive +CL net/minecraft/command/CommandHelp net/minecraft/command/CommandHelp +CL net/minecraft/command/CommandServerKick net/minecraft/command/CommandServerKick +CL net/minecraft/command/CommandKill net/minecraft/command/CommandKill +CL net/minecraft/command/server/CommandListBans net/minecraft/command/server/CommandListBans +CL net/minecraft/command/server/CommandListPlayers net/minecraft/command/server/CommandListPlayers +CL net/minecraft/command/server/CommandMessage net/minecraft/command/server/CommandMessage +CL net/minecraft/command/server/CommandMessageRaw net/minecraft/command/server/CommandMessageRaw +CL net/minecraft/command/server/CommandOp net/minecraft/command/server/CommandOp +CL net/minecraft/command/server/CommandPardonIp net/minecraft/command/server/CommandPardonIp +CL net/minecraft/command/server/CommandPardonPlayer net/minecraft/command/server/CommandPardonPlayer +CL net/minecraft/command/CommandParticle net/minecraft/command/CommandParticle +CL net/minecraft/command/CommandPlaySound net/minecraft/command/CommandPlaySound +CL net/minecraft/command/server/CommandPublishLocalServer net/minecraft/command/server/CommandPublishLocalServer +CL net/minecraft/command/CommandReplaceItem net/minecraft/command/CommandReplaceItem +CL net/minecraft/command/server/CommandSaveAll net/minecraft/command/server/CommandSaveAll +CL net/minecraft/command/server/CommandSaveOff net/minecraft/command/server/CommandSaveOff +CL net/minecraft/command/server/CommandSaveOn net/minecraft/command/server/CommandSaveOn +CL net/minecraft/command/server/CommandBroadcast net/minecraft/command/server/CommandBroadcast +CL net/minecraft/command/server/CommandScoreboard net/minecraft/command/server/CommandScoreboard +CL net/minecraft/command/ServerCommandManager net/minecraft/command/ServerCommandManager +CL net/minecraft/command/server/CommandSetBlock net/minecraft/command/server/CommandSetBlock +CL net/minecraft/command/server/CommandSetDefaultSpawnpoint net/minecraft/command/server/CommandSetDefaultSpawnpoint +CL net/minecraft/command/CommandSetPlayerTimeout net/minecraft/command/CommandSetPlayerTimeout +CL net/minecraft/command/CommandSetSpawnpoint net/minecraft/command/CommandSetSpawnpoint +CL net/minecraft/command/CommandShowSeed net/minecraft/command/CommandShowSeed +CL net/minecraft/command/CommandSpreadPlayers net/minecraft/command/CommandSpreadPlayers +CL net/minecraft/command/CommandSpreadPlayers$Position net/minecraft/command/CommandSpreadPlayers$Position +CL net/minecraft/command/CommandStats net/minecraft/command/CommandStats +CL net/minecraft/command/server/CommandStop net/minecraft/command/server/CommandStop +CL net/minecraft/command/server/CommandSummon net/minecraft/command/server/CommandSummon +CL net/minecraft/command/server/CommandTeleport net/minecraft/command/server/CommandTeleport +CL net/minecraft/command/server/CommandTestForBlock net/minecraft/command/server/CommandTestForBlock +CL net/minecraft/command/server/CommandTestFor net/minecraft/command/server/CommandTestFor +CL net/minecraft/command/CommandTime net/minecraft/command/CommandTime +CL net/minecraft/command/CommandTitle net/minecraft/command/CommandTitle +CL net/minecraft/command/CommandToggleDownfall net/minecraft/command/CommandToggleDownfall +CL net/minecraft/command/CommandTrigger net/minecraft/command/CommandTrigger +CL net/minecraft/command/CommandWeather net/minecraft/command/CommandWeather +CL net/minecraft/command/server/CommandWhitelist net/minecraft/command/server/CommandWhitelist +CL net/minecraft/command/CommandWorldBorder net/minecraft/command/CommandWorldBorder +CL net/minecraft/command/CommandException net/minecraft/command/CommandException +CL net/minecraft/command/EntityNotFoundException net/minecraft/command/EntityNotFoundException +CL net/minecraft/command/NumberInvalidException net/minecraft/command/NumberInvalidException +CL net/minecraft/command/SyntaxErrorException net/minecraft/command/SyntaxErrorException +CL net/minecraft/command/PlayerNotFoundException net/minecraft/command/PlayerNotFoundException +CL net/minecraft/command/CommandNotFoundException net/minecraft/command/CommandNotFoundException +CL net/minecraft/command/WrongUsageException net/minecraft/command/WrongUsageException +CL net/minecraft/util/BlockPos net/minecraft/util/BlockPos +CL net/minecraft/util/BlockPos$1 net/minecraft/util/BlockPos$1 +CL net/minecraft/util/BlockPos$1$1 net/minecraft/util/BlockPos$1$1 +CL net/minecraft/util/BlockPos$2 net/minecraft/util/BlockPos$2 +CL net/minecraft/util/BlockPos$2$1 net/minecraft/util/BlockPos$2$1 +CL net/minecraft/util/BlockPos$MutableBlockPos net/minecraft/util/BlockPos$MutableBlockPos +CL net/minecraft/dispenser/IBlockSource net/minecraft/dispenser/IBlockSource +CL net/minecraft/block/BlockSourceImpl net/minecraft/block/BlockSourceImpl +CL net/minecraft/util/Cartesian net/minecraft/util/Cartesian +CL net/minecraft/util/Cartesian$1 net/minecraft/util/Cartesian$1 +CL net/minecraft/util/Cartesian$GetList net/minecraft/util/Cartesian$GetList +CL net/minecraft/util/Cartesian$Product net/minecraft/util/Cartesian$Product +CL net/minecraft/util/Cartesian$Product$ProductIterator net/minecraft/util/Cartesian$Product$ProductIterator +CL net/minecraft/dispenser/BehaviorDefaultDispenseItem net/minecraft/dispenser/BehaviorDefaultDispenseItem +CL net/minecraft/util/RegistryNamespacedDefaultedByKey net/minecraft/util/RegistryNamespacedDefaultedByKey +CL net/minecraft/util/RegistryDefaulted net/minecraft/util/RegistryDefaulted +CL net/minecraft/util/EnumFacing net/minecraft/util/EnumFacing +CL net/minecraft/util/EnumFacing$1 net/minecraft/util/EnumFacing$1 +CL net/minecraft/util/EnumFacing$Axis net/minecraft/util/EnumFacing$Axis +CL net/minecraft/util/EnumFacing$AxisDirection net/minecraft/util/EnumFacing$AxisDirection +CL net/minecraft/util/EnumFacing$Plane net/minecraft/util/EnumFacing$Plane +CL net/minecraft/dispenser/IBehaviorDispenseItem net/minecraft/dispenser/IBehaviorDispenseItem +CL net/minecraft/dispenser/IBehaviorDispenseItem$1 net/minecraft/dispenser/IBehaviorDispenseItem$1 +CL net/minecraft/util/IObjectIntIterable net/minecraft/util/IObjectIntIterable +CL net/minecraft/util/ObjectIntIdentityMap net/minecraft/util/ObjectIntIdentityMap +CL net/minecraft/dispenser/ILocatableSource net/minecraft/dispenser/ILocatableSource +CL net/minecraft/dispenser/ILocation net/minecraft/dispenser/ILocation +CL net/minecraft/util/MapPopulator net/minecraft/util/MapPopulator +CL net/minecraft/util/RegistryNamespaced net/minecraft/util/RegistryNamespaced +CL net/minecraft/util/EnumParticleTypes net/minecraft/util/EnumParticleTypes +CL net/minecraft/dispenser/IPosition net/minecraft/dispenser/IPosition +CL net/minecraft/dispenser/PositionImpl net/minecraft/dispenser/PositionImpl +CL net/minecraft/util/IRegistry net/minecraft/util/IRegistry +CL net/minecraft/util/Rotations net/minecraft/util/Rotations +CL net/minecraft/util/RegistrySimple net/minecraft/util/RegistrySimple +CL net/minecraft/util/Vec3i net/minecraft/util/Vec3i +CL net/minecraft/util/StatCollector net/minecraft/util/StatCollector +CL net/minecraft/util/StringTranslate net/minecraft/util/StringTranslate +CL net/minecraft/nbt/NBTTagByteArray net/minecraft/nbt/NBTTagByteArray +CL net/minecraft/nbt/NBTTagByte net/minecraft/nbt/NBTTagByte +CL net/minecraft/nbt/NBTTagCompound net/minecraft/nbt/NBTTagCompound +CL net/minecraft/nbt/NBTTagCompound$1 net/minecraft/nbt/NBTTagCompound$1 +CL net/minecraft/nbt/NBTTagCompound$2 net/minecraft/nbt/NBTTagCompound$2 +CL net/minecraft/nbt/NBTTagDouble net/minecraft/nbt/NBTTagDouble +CL net/minecraft/nbt/NBTTagEnd net/minecraft/nbt/NBTTagEnd +CL net/minecraft/nbt/NBTTagFloat net/minecraft/nbt/NBTTagFloat +CL net/minecraft/nbt/NBTTagIntArray net/minecraft/nbt/NBTTagIntArray +CL net/minecraft/nbt/NBTTagInt net/minecraft/nbt/NBTTagInt +CL net/minecraft/nbt/NBTTagList net/minecraft/nbt/NBTTagList +CL net/minecraft/nbt/NBTTagLong net/minecraft/nbt/NBTTagLong +CL net/minecraft/nbt/NBTSizeTracker net/minecraft/nbt/NBTSizeTracker +CL net/minecraft/nbt/NBTSizeTracker$1 net/minecraft/nbt/NBTSizeTracker$1 +CL net/minecraft/nbt/CompressedStreamTools net/minecraft/nbt/CompressedStreamTools +CL net/minecraft/nbt/NBTUtil net/minecraft/nbt/NBTUtil +CL net/minecraft/nbt/NBTTagShort net/minecraft/nbt/NBTTagShort +CL net/minecraft/nbt/NBTTagString net/minecraft/nbt/NBTTagString +CL net/minecraft/nbt/NBTBase net/minecraft/nbt/NBTBase +CL net/minecraft/nbt/NBTBase$NBTPrimitive net/minecraft/nbt/NBTBase$NBTPrimitive +CL net/minecraft/nbt/NBTException net/minecraft/nbt/NBTException +CL net/minecraft/nbt/JsonToNBT net/minecraft/nbt/JsonToNBT +CL net/minecraft/nbt/JsonToNBT$Any net/minecraft/nbt/JsonToNBT$Any +CL net/minecraft/nbt/JsonToNBT$Compound net/minecraft/nbt/JsonToNBT$Compound +CL net/minecraft/nbt/JsonToNBT$List net/minecraft/nbt/JsonToNBT$List +CL net/minecraft/nbt/JsonToNBT$Primitive net/minecraft/nbt/JsonToNBT$Primitive +CL net/minecraft/network/NettyEncryptionTranslator net/minecraft/network/NettyEncryptionTranslator +CL net/minecraft/network/NettyEncryptingDecoder net/minecraft/network/NettyEncryptingDecoder +CL net/minecraft/network/NettyEncryptingEncoder net/minecraft/network/NettyEncryptingEncoder +CL net/minecraft/network/NettyCompressionDecoder net/minecraft/network/NettyCompressionDecoder +CL net/minecraft/network/NettyCompressionEncoder net/minecraft/network/NettyCompressionEncoder +CL net/minecraft/network/NetworkManager net/minecraft/network/NetworkManager +CL net/minecraft/network/NetworkManager$1 net/minecraft/network/NetworkManager$1 +CL net/minecraft/network/NetworkManager$2 net/minecraft/network/NetworkManager$2 +CL net/minecraft/network/NetworkManager$3 net/minecraft/network/NetworkManager$3 +CL net/minecraft/network/NetworkManager$4 net/minecraft/network/NetworkManager$4 +CL net/minecraft/network/NetworkManager$5 net/minecraft/network/NetworkManager$5 +CL net/minecraft/network/NetworkManager$6 net/minecraft/network/NetworkManager$6 +CL net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener +CL net/minecraft/network/EnumConnectionState net/minecraft/network/EnumConnectionState +CL net/minecraft/network/EnumConnectionState$1 net/minecraft/network/EnumConnectionState$1 +CL net/minecraft/network/EnumConnectionState$2 net/minecraft/network/EnumConnectionState$2 +CL net/minecraft/network/EnumConnectionState$3 net/minecraft/network/EnumConnectionState$3 +CL net/minecraft/network/EnumConnectionState$4 net/minecraft/network/EnumConnectionState$4 +CL net/minecraft/network/PacketBuffer net/minecraft/network/PacketBuffer +CL net/minecraft/util/MessageDeserializer net/minecraft/util/MessageDeserializer +CL net/minecraft/util/MessageSerializer net/minecraft/util/MessageSerializer +CL net/minecraft/network/INetHandler net/minecraft/network/INetHandler +CL net/minecraft/util/MessageDeserializer2 net/minecraft/util/MessageDeserializer2 +CL net/minecraft/util/MessageSerializer2 net/minecraft/util/MessageSerializer2 +CL net/minecraft/util/ChatComponentStyle net/minecraft/util/ChatComponentStyle +CL net/minecraft/util/ChatComponentStyle$1 net/minecraft/util/ChatComponentStyle$1 +CL net/minecraft/util/ChatComponentStyle$2 net/minecraft/util/ChatComponentStyle$2 +CL net/minecraft/event/ClickEvent net/minecraft/event/ClickEvent +CL net/minecraft/event/ClickEvent$Action net/minecraft/event/ClickEvent$Action +CL net/minecraft/util/IChatComponent net/minecraft/util/IChatComponent +CL net/minecraft/util/IChatComponent$Serializer net/minecraft/util/IChatComponent$Serializer +CL net/minecraft/util/ChatComponentProcessor net/minecraft/util/ChatComponentProcessor +CL net/minecraft/event/HoverEvent net/minecraft/event/HoverEvent +CL net/minecraft/event/HoverEvent$Action net/minecraft/event/HoverEvent$Action +CL net/minecraft/util/ChatComponentScore net/minecraft/util/ChatComponentScore +CL net/minecraft/util/ChatComponentSelector net/minecraft/util/ChatComponentSelector +CL net/minecraft/util/ChatStyle net/minecraft/util/ChatStyle +CL net/minecraft/util/ChatStyle$1 net/minecraft/util/ChatStyle$1 +CL net/minecraft/util/ChatStyle$Serializer net/minecraft/util/ChatStyle$Serializer +CL net/minecraft/util/ChatComponentText net/minecraft/util/ChatComponentText +CL net/minecraft/util/ChatComponentTranslation net/minecraft/util/ChatComponentTranslation +CL net/minecraft/util/ChatComponentTranslationFormatException net/minecraft/util/ChatComponentTranslationFormatException +CL net/minecraft/network/Packet net/minecraft/network/Packet +CL net/minecraft/network/EnumPacketDirection net/minecraft/network/EnumPacketDirection +CL net/minecraft/network/PacketThreadUtil net/minecraft/network/PacketThreadUtil +CL net/minecraft/network/PacketThreadUtil$1 net/minecraft/network/PacketThreadUtil$1 +CL net/minecraft/network/play/server/S08PacketPlayerPosLook net/minecraft/network/play/server/S08PacketPlayerPosLook +CL net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags +CL net/minecraft/network/play/INetHandlerPlayClient net/minecraft/network/play/INetHandlerPlayClient +CL net/minecraft/network/play/server/S0EPacketSpawnObject net/minecraft/network/play/server/S0EPacketSpawnObject +CL net/minecraft/network/play/server/S11PacketSpawnExperienceOrb net/minecraft/network/play/server/S11PacketSpawnExperienceOrb +CL net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity +CL net/minecraft/network/play/server/S0FPacketSpawnMob net/minecraft/network/play/server/S0FPacketSpawnMob +CL net/minecraft/network/play/server/S10PacketSpawnPainting net/minecraft/network/play/server/S10PacketSpawnPainting +CL net/minecraft/network/play/server/S0CPacketSpawnPlayer net/minecraft/network/play/server/S0CPacketSpawnPlayer +CL net/minecraft/network/play/server/S0BPacketAnimation net/minecraft/network/play/server/S0BPacketAnimation +CL net/minecraft/network/play/server/S37PacketStatistics net/minecraft/network/play/server/S37PacketStatistics +CL net/minecraft/network/play/server/S25PacketBlockBreakAnim net/minecraft/network/play/server/S25PacketBlockBreakAnim +CL net/minecraft/network/play/server/S35PacketUpdateTileEntity net/minecraft/network/play/server/S35PacketUpdateTileEntity +CL net/minecraft/network/play/server/S24PacketBlockAction net/minecraft/network/play/server/S24PacketBlockAction +CL net/minecraft/network/play/server/S23PacketBlockChange net/minecraft/network/play/server/S23PacketBlockChange +CL net/minecraft/network/play/server/S41PacketServerDifficulty net/minecraft/network/play/server/S41PacketServerDifficulty +CL net/minecraft/network/play/server/S3APacketTabComplete net/minecraft/network/play/server/S3APacketTabComplete +CL net/minecraft/network/play/server/S02PacketChat net/minecraft/network/play/server/S02PacketChat +CL net/minecraft/network/play/server/S22PacketMultiBlockChange net/minecraft/network/play/server/S22PacketMultiBlockChange +CL net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData +CL net/minecraft/network/play/server/S32PacketConfirmTransaction net/minecraft/network/play/server/S32PacketConfirmTransaction +CL net/minecraft/network/play/server/S2EPacketCloseWindow net/minecraft/network/play/server/S2EPacketCloseWindow +CL net/minecraft/network/play/server/S2DPacketOpenWindow net/minecraft/network/play/server/S2DPacketOpenWindow +CL net/minecraft/network/play/server/S30PacketWindowItems net/minecraft/network/play/server/S30PacketWindowItems +CL net/minecraft/network/play/server/S31PacketWindowProperty net/minecraft/network/play/server/S31PacketWindowProperty +CL net/minecraft/network/play/server/S2FPacketSetSlot net/minecraft/network/play/server/S2FPacketSetSlot +CL net/minecraft/network/play/server/S3FPacketCustomPayload net/minecraft/network/play/server/S3FPacketCustomPayload +CL net/minecraft/network/play/server/S40PacketDisconnect net/minecraft/network/play/server/S40PacketDisconnect +CL net/minecraft/network/play/server/S19PacketEntityStatus net/minecraft/network/play/server/S19PacketEntityStatus +CL net/minecraft/network/play/server/S49PacketUpdateEntityNBT net/minecraft/network/play/server/S49PacketUpdateEntityNBT +CL net/minecraft/network/play/server/S27PacketExplosion net/minecraft/network/play/server/S27PacketExplosion +CL net/minecraft/network/play/server/S46PacketSetCompressionLevel net/minecraft/network/play/server/S46PacketSetCompressionLevel +CL net/minecraft/network/play/server/S2BPacketChangeGameState net/minecraft/network/play/server/S2BPacketChangeGameState +CL net/minecraft/network/play/server/S00PacketKeepAlive net/minecraft/network/play/server/S00PacketKeepAlive +CL net/minecraft/network/play/server/S21PacketChunkData net/minecraft/network/play/server/S21PacketChunkData +CL net/minecraft/network/play/server/S21PacketChunkData$Extracted net/minecraft/network/play/server/S21PacketChunkData$Extracted +CL net/minecraft/network/play/server/S26PacketMapChunkBulk net/minecraft/network/play/server/S26PacketMapChunkBulk +CL net/minecraft/network/play/server/S28PacketEffect net/minecraft/network/play/server/S28PacketEffect +CL net/minecraft/network/play/server/S2APacketParticles net/minecraft/network/play/server/S2APacketParticles +CL net/minecraft/network/play/server/S29PacketSoundEffect net/minecraft/network/play/server/S29PacketSoundEffect +CL net/minecraft/network/play/server/S01PacketJoinGame net/minecraft/network/play/server/S01PacketJoinGame +CL net/minecraft/network/play/server/S34PacketMaps net/minecraft/network/play/server/S34PacketMaps +CL net/minecraft/network/play/server/S14PacketEntity net/minecraft/network/play/server/S14PacketEntity +CL net/minecraft/network/play/server/S14PacketEntity$S15PacketEntityRelMove net/minecraft/network/play/server/S14PacketEntity$S15PacketEntityRelMove +CL net/minecraft/network/play/server/S14PacketEntity$S17PacketEntityLookMove net/minecraft/network/play/server/S14PacketEntity$S17PacketEntityLookMove +CL net/minecraft/network/play/server/S14PacketEntity$S16PacketEntityLook net/minecraft/network/play/server/S14PacketEntity$S16PacketEntityLook +CL net/minecraft/network/play/server/S36PacketSignEditorOpen net/minecraft/network/play/server/S36PacketSignEditorOpen +CL net/minecraft/network/play/server/S39PacketPlayerAbilities net/minecraft/network/play/server/S39PacketPlayerAbilities +CL net/minecraft/network/play/server/S42PacketCombatEvent net/minecraft/network/play/server/S42PacketCombatEvent +CL net/minecraft/network/play/server/S42PacketCombatEvent$1 net/minecraft/network/play/server/S42PacketCombatEvent$1 +CL net/minecraft/network/play/server/S42PacketCombatEvent$Event net/minecraft/network/play/server/S42PacketCombatEvent$Event +CL net/minecraft/network/play/server/S38PacketPlayerListItem net/minecraft/network/play/server/S38PacketPlayerListItem +CL net/minecraft/network/play/server/S38PacketPlayerListItem$1 net/minecraft/network/play/server/S38PacketPlayerListItem$1 +CL net/minecraft/network/play/server/S38PacketPlayerListItem$Action net/minecraft/network/play/server/S38PacketPlayerListItem$Action +CL net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData +CL net/minecraft/network/play/server/S0APacketUseBed net/minecraft/network/play/server/S0APacketUseBed +CL net/minecraft/network/play/server/S13PacketDestroyEntities net/minecraft/network/play/server/S13PacketDestroyEntities +CL net/minecraft/network/play/server/S1EPacketRemoveEntityEffect net/minecraft/network/play/server/S1EPacketRemoveEntityEffect +CL net/minecraft/network/play/server/S48PacketResourcePackSend net/minecraft/network/play/server/S48PacketResourcePackSend +CL net/minecraft/network/play/server/S07PacketRespawn net/minecraft/network/play/server/S07PacketRespawn +CL net/minecraft/network/play/server/S19PacketEntityHeadLook net/minecraft/network/play/server/S19PacketEntityHeadLook +CL net/minecraft/network/play/server/S44PacketWorldBorder net/minecraft/network/play/server/S44PacketWorldBorder +CL net/minecraft/network/play/server/S44PacketWorldBorder$1 net/minecraft/network/play/server/S44PacketWorldBorder$1 +CL net/minecraft/network/play/server/S44PacketWorldBorder$Action net/minecraft/network/play/server/S44PacketWorldBorder$Action +CL net/minecraft/network/play/server/S43PacketCamera net/minecraft/network/play/server/S43PacketCamera +CL net/minecraft/network/play/server/S09PacketHeldItemChange net/minecraft/network/play/server/S09PacketHeldItemChange +CL net/minecraft/network/play/server/S3DPacketDisplayScoreboard net/minecraft/network/play/server/S3DPacketDisplayScoreboard +CL net/minecraft/network/play/server/S1CPacketEntityMetadata net/minecraft/network/play/server/S1CPacketEntityMetadata +CL net/minecraft/network/play/server/S1BPacketEntityAttach net/minecraft/network/play/server/S1BPacketEntityAttach +CL net/minecraft/network/play/server/S12PacketEntityVelocity net/minecraft/network/play/server/S12PacketEntityVelocity +CL net/minecraft/network/play/server/S04PacketEntityEquipment net/minecraft/network/play/server/S04PacketEntityEquipment +CL net/minecraft/network/play/server/S1FPacketSetExperience net/minecraft/network/play/server/S1FPacketSetExperience +CL net/minecraft/network/play/server/S06PacketUpdateHealth net/minecraft/network/play/server/S06PacketUpdateHealth +CL net/minecraft/network/play/server/S3BPacketScoreboardObjective net/minecraft/network/play/server/S3BPacketScoreboardObjective +CL net/minecraft/network/play/server/S3EPacketTeams net/minecraft/network/play/server/S3EPacketTeams +CL net/minecraft/network/play/server/S3CPacketUpdateScore net/minecraft/network/play/server/S3CPacketUpdateScore +CL net/minecraft/network/play/server/S3CPacketUpdateScore$Action net/minecraft/network/play/server/S3CPacketUpdateScore$Action +CL net/minecraft/network/play/server/S05PacketSpawnPosition net/minecraft/network/play/server/S05PacketSpawnPosition +CL net/minecraft/network/play/server/S03PacketTimeUpdate net/minecraft/network/play/server/S03PacketTimeUpdate +CL net/minecraft/network/play/server/S45PacketTitle net/minecraft/network/play/server/S45PacketTitle +CL net/minecraft/network/play/server/S45PacketTitle$Type net/minecraft/network/play/server/S45PacketTitle$Type +CL net/minecraft/network/play/server/S33PacketUpdateSign net/minecraft/network/play/server/S33PacketUpdateSign +CL net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter +CL net/minecraft/network/play/server/S0DPacketCollectItem net/minecraft/network/play/server/S0DPacketCollectItem +CL net/minecraft/network/play/server/S18PacketEntityTeleport net/minecraft/network/play/server/S18PacketEntityTeleport +CL net/minecraft/network/play/server/S20PacketEntityProperties net/minecraft/network/play/server/S20PacketEntityProperties +CL net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot +CL net/minecraft/network/play/server/S1DPacketEntityEffect net/minecraft/network/play/server/S1DPacketEntityEffect +CL net/minecraft/network/play/INetHandlerPlayServer net/minecraft/network/play/INetHandlerPlayServer +CL net/minecraft/network/play/client/C14PacketTabComplete net/minecraft/network/play/client/C14PacketTabComplete +CL net/minecraft/network/play/client/C01PacketChatMessage net/minecraft/network/play/client/C01PacketChatMessage +CL net/minecraft/network/play/client/C16PacketClientStatus net/minecraft/network/play/client/C16PacketClientStatus +CL net/minecraft/network/play/client/C16PacketClientStatus$EnumState net/minecraft/network/play/client/C16PacketClientStatus$EnumState +CL net/minecraft/network/play/client/C15PacketClientSettings net/minecraft/network/play/client/C15PacketClientSettings +CL net/minecraft/network/play/client/C0FPacketConfirmTransaction net/minecraft/network/play/client/C0FPacketConfirmTransaction +CL net/minecraft/network/play/client/C11PacketEnchantItem net/minecraft/network/play/client/C11PacketEnchantItem +CL net/minecraft/network/play/client/C0EPacketClickWindow net/minecraft/network/play/client/C0EPacketClickWindow +CL net/minecraft/network/play/client/C0DPacketCloseWindow net/minecraft/network/play/client/C0DPacketCloseWindow +CL net/minecraft/network/play/client/C17PacketCustomPayload net/minecraft/network/play/client/C17PacketCustomPayload +CL net/minecraft/network/play/client/C02PacketUseEntity net/minecraft/network/play/client/C02PacketUseEntity +CL net/minecraft/network/play/client/C02PacketUseEntity$Action net/minecraft/network/play/client/C02PacketUseEntity$Action +CL net/minecraft/network/play/client/C00PacketKeepAlive net/minecraft/network/play/client/C00PacketKeepAlive +CL net/minecraft/network/play/client/C03PacketPlayer net/minecraft/network/play/client/C03PacketPlayer +CL net/minecraft/network/play/client/C03PacketPlayer$C04PacketPlayerPosition net/minecraft/network/play/client/C03PacketPlayer$C04PacketPlayerPosition +CL net/minecraft/network/play/client/C03PacketPlayer$C06PacketPlayerPosLook net/minecraft/network/play/client/C03PacketPlayer$C06PacketPlayerPosLook +CL net/minecraft/network/play/client/C03PacketPlayer$C05PacketPlayerLook net/minecraft/network/play/client/C03PacketPlayer$C05PacketPlayerLook +CL net/minecraft/network/play/client/C13PacketPlayerAbilities net/minecraft/network/play/client/C13PacketPlayerAbilities +CL net/minecraft/network/play/client/C07PacketPlayerDigging net/minecraft/network/play/client/C07PacketPlayerDigging +CL net/minecraft/network/play/client/C07PacketPlayerDigging$Action net/minecraft/network/play/client/C07PacketPlayerDigging$Action +CL net/minecraft/network/play/client/C0BPacketEntityAction net/minecraft/network/play/client/C0BPacketEntityAction +CL net/minecraft/network/play/client/C0BPacketEntityAction$Action net/minecraft/network/play/client/C0BPacketEntityAction$Action +CL net/minecraft/network/play/client/C0CPacketInput net/minecraft/network/play/client/C0CPacketInput +CL net/minecraft/network/play/client/C19PacketResourcePackStatus net/minecraft/network/play/client/C19PacketResourcePackStatus +CL net/minecraft/network/play/client/C19PacketResourcePackStatus$Action net/minecraft/network/play/client/C19PacketResourcePackStatus$Action +CL net/minecraft/network/play/client/C09PacketHeldItemChange net/minecraft/network/play/client/C09PacketHeldItemChange +CL net/minecraft/network/play/client/C10PacketCreativeInventoryAction net/minecraft/network/play/client/C10PacketCreativeInventoryAction +CL net/minecraft/network/play/client/C12PacketUpdateSign net/minecraft/network/play/client/C12PacketUpdateSign +CL net/minecraft/network/play/client/C0APacketAnimation net/minecraft/network/play/client/C0APacketAnimation +CL net/minecraft/network/play/client/C18PacketSpectate net/minecraft/network/play/client/C18PacketSpectate +CL net/minecraft/network/play/client/C08PacketPlayerBlockPlacement net/minecraft/network/play/client/C08PacketPlayerBlockPlacement +CL net/minecraft/network/handshake/client/C00Handshake net/minecraft/network/handshake/client/C00Handshake +CL net/minecraft/network/handshake/INetHandlerHandshakeServer net/minecraft/network/handshake/INetHandlerHandshakeServer +CL net/minecraft/network/login/INetHandlerLoginClient net/minecraft/network/login/INetHandlerLoginClient +CL net/minecraft/network/login/server/S02PacketLoginSuccess net/minecraft/network/login/server/S02PacketLoginSuccess +CL net/minecraft/network/login/server/S01PacketEncryptionRequest net/minecraft/network/login/server/S01PacketEncryptionRequest +CL net/minecraft/network/login/server/S03PacketEnableCompression net/minecraft/network/login/server/S03PacketEnableCompression +CL net/minecraft/network/login/server/S00PacketDisconnect net/minecraft/network/login/server/S00PacketDisconnect +CL net/minecraft/network/login/INetHandlerLoginServer net/minecraft/network/login/INetHandlerLoginServer +CL net/minecraft/network/login/client/C00PacketLoginStart net/minecraft/network/login/client/C00PacketLoginStart +CL net/minecraft/network/login/client/C01PacketEncryptionResponse net/minecraft/network/login/client/C01PacketEncryptionResponse +CL net/minecraft/network/status/INetHandlerStatusClient net/minecraft/network/status/INetHandlerStatusClient +CL net/minecraft/network/status/server/S01PacketPong net/minecraft/network/status/server/S01PacketPong +CL net/minecraft/network/status/server/S00PacketServerInfo net/minecraft/network/status/server/S00PacketServerInfo +CL net/minecraft/network/ServerStatusResponse net/minecraft/network/ServerStatusResponse +CL net/minecraft/network/ServerStatusResponse$PlayerCountData net/minecraft/network/ServerStatusResponse$PlayerCountData +CL net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer +CL net/minecraft/network/ServerStatusResponse$Serializer net/minecraft/network/ServerStatusResponse$Serializer +CL net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier +CL net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer +CL net/minecraft/network/status/INetHandlerStatusServer net/minecraft/network/status/INetHandlerStatusServer +CL net/minecraft/network/status/client/C01PacketPing net/minecraft/network/status/client/C01PacketPing +CL net/minecraft/network/status/client/C00PacketServerQuery net/minecraft/network/status/client/C00PacketServerQuery +CL net/minecraft/util/ResourceLocation net/minecraft/util/ResourceLocation +CL net/minecraft/dispenser/BehaviorProjectileDispense net/minecraft/dispenser/BehaviorProjectileDispense +CL net/minecraft/init/Bootstrap net/minecraft/init/Bootstrap +CL net/minecraft/init/Bootstrap$1 net/minecraft/init/Bootstrap$1 +CL net/minecraft/init/Bootstrap$2 net/minecraft/init/Bootstrap$2 +CL net/minecraft/init/Bootstrap$3 net/minecraft/init/Bootstrap$3 +CL net/minecraft/init/Bootstrap$4 net/minecraft/init/Bootstrap$4 +CL net/minecraft/init/Bootstrap$5 net/minecraft/init/Bootstrap$5 +CL net/minecraft/init/Bootstrap$6 net/minecraft/init/Bootstrap$6 +CL net/minecraft/init/Bootstrap$7 net/minecraft/init/Bootstrap$7 +CL net/minecraft/init/Bootstrap$8 net/minecraft/init/Bootstrap$8 +CL net/minecraft/init/Bootstrap$9 net/minecraft/init/Bootstrap$9 +CL net/minecraft/init/Bootstrap$10 net/minecraft/init/Bootstrap$10 +CL net/minecraft/init/Bootstrap$11 net/minecraft/init/Bootstrap$11 +CL net/minecraft/init/Bootstrap$12 net/minecraft/init/Bootstrap$12 +CL net/minecraft/init/Bootstrap$12$1 net/minecraft/init/Bootstrap$12$1 +CL net/minecraft/init/Bootstrap$13 net/minecraft/init/Bootstrap$13 +CL net/minecraft/init/Bootstrap$14 net/minecraft/init/Bootstrap$14 +CL net/minecraft/init/Bootstrap$15 net/minecraft/init/Bootstrap$15 +CL net/minecraft/init/Bootstrap$16 net/minecraft/init/Bootstrap$16 +CL net/minecraft/client/util/JsonException net/minecraft/client/util/JsonException +CL net/minecraft/client/util/JsonException$1 net/minecraft/client/util/JsonException$1 +CL net/minecraft/client/util/JsonException$Entry net/minecraft/client/util/JsonException$Entry +CL net/minecraft/command/ServerCommand net/minecraft/command/ServerCommand +CL net/minecraft/server/ServerEula net/minecraft/server/ServerEula +CL net/minecraft/util/LoggingPrintStream net/minecraft/util/LoggingPrintStream +CL net/minecraft/network/ThreadQuickExitException net/minecraft/network/ThreadQuickExitException +CL net/minecraft/network/rcon/IServer net/minecraft/network/rcon/IServer +CL net/minecraft/scoreboard/ServerScoreboard net/minecraft/scoreboard/ServerScoreboard +CL net/minecraft/server/dedicated/PropertyManager net/minecraft/server/dedicated/PropertyManager +CL net/minecraft/util/ITickable net/minecraft/util/ITickable +CL net/minecraft/server/dedicated/DedicatedPlayerList net/minecraft/server/dedicated/DedicatedPlayerList +CL net/minecraft/server/dedicated/DedicatedServer net/minecraft/server/dedicated/DedicatedServer +CL net/minecraft/server/dedicated/DedicatedServer$1 net/minecraft/server/dedicated/DedicatedServer$1 +CL net/minecraft/server/dedicated/DedicatedServer$2 net/minecraft/server/dedicated/DedicatedServer$2 +CL net/minecraft/server/dedicated/DedicatedServer$3 net/minecraft/server/dedicated/DedicatedServer$3 +CL net/minecraft/server/dedicated/DedicatedServer$4 net/minecraft/server/dedicated/DedicatedServer$4 +CL net/minecraft/server/dedicated/ServerHangWatchdog net/minecraft/server/dedicated/ServerHangWatchdog +CL net/minecraft/server/dedicated/ServerHangWatchdog$1 net/minecraft/server/dedicated/ServerHangWatchdog$1 +CL net/minecraft/server/gui/MinecraftServerGui net/minecraft/server/gui/MinecraftServerGui +CL net/minecraft/server/gui/MinecraftServerGui$1 net/minecraft/server/gui/MinecraftServerGui$1 +CL net/minecraft/server/gui/MinecraftServerGui$2 net/minecraft/server/gui/MinecraftServerGui$2 +CL net/minecraft/server/gui/MinecraftServerGui$3 net/minecraft/server/gui/MinecraftServerGui$3 +CL net/minecraft/server/gui/MinecraftServerGui$4 net/minecraft/server/gui/MinecraftServerGui$4 +CL net/minecraft/server/gui/MinecraftServerGui$5 net/minecraft/server/gui/MinecraftServerGui$5 +CL net/minecraft/server/gui/PlayerListComponent net/minecraft/server/gui/PlayerListComponent +CL net/minecraft/server/gui/StatsComponent net/minecraft/server/gui/StatsComponent +CL net/minecraft/server/gui/StatsComponent$1 net/minecraft/server/gui/StatsComponent$1 +CL net/minecraft/client/renderer/DestroyBlockProgress net/minecraft/client/renderer/DestroyBlockProgress +CL net/minecraft/world/demo/DemoWorldServer net/minecraft/world/demo/DemoWorldServer +CL net/minecraft/world/demo/DemoWorldManager net/minecraft/world/demo/DemoWorldManager +CL net/minecraft/world/WorldServerMulti net/minecraft/world/WorldServerMulti +CL net/minecraft/world/WorldServerMulti$1 net/minecraft/world/WorldServerMulti$1 +CL net/minecraft/entity/EntityTracker net/minecraft/entity/EntityTracker +CL net/minecraft/entity/EntityTracker$1 net/minecraft/entity/EntityTracker$1 +CL net/minecraft/world/WorldManager net/minecraft/world/WorldManager +CL net/minecraft/server/management/PlayerManager net/minecraft/server/management/PlayerManager +CL net/minecraft/server/management/PlayerManager$PlayerInstance net/minecraft/server/management/PlayerManager$PlayerInstance +CL net/minecraft/world/gen/ChunkProviderServer net/minecraft/world/gen/ChunkProviderServer +CL net/minecraft/world/WorldServer net/minecraft/world/WorldServer +CL net/minecraft/world/WorldServer$1 net/minecraft/world/WorldServer$1 +CL net/minecraft/world/WorldServer$ServerBlockEventList net/minecraft/world/WorldServer$ServerBlockEventList +CL net/minecraft/entity/player/EntityPlayerMP net/minecraft/entity/player/EntityPlayerMP +CL net/minecraft/server/management/ItemInWorldManager net/minecraft/server/management/ItemInWorldManager +CL net/minecraft/entity/EntityTrackerEntry net/minecraft/entity/EntityTrackerEntry +CL net/minecraft/network/PingResponseHandler net/minecraft/network/PingResponseHandler +CL net/minecraft/client/network/NetHandlerHandshakeMemory net/minecraft/client/network/NetHandlerHandshakeMemory +CL net/minecraft/network/NetworkSystem net/minecraft/network/NetworkSystem +CL net/minecraft/network/NetworkSystem$1 net/minecraft/network/NetworkSystem$1 +CL net/minecraft/network/NetworkSystem$2 net/minecraft/network/NetworkSystem$2 +CL net/minecraft/network/NetworkSystem$3 net/minecraft/network/NetworkSystem$3 +CL net/minecraft/network/NetworkSystem$4 net/minecraft/network/NetworkSystem$4 +CL net/minecraft/network/NetworkSystem$5 net/minecraft/network/NetworkSystem$5 +CL net/minecraft/network/NetworkSystem$6 net/minecraft/network/NetworkSystem$6 +CL net/minecraft/network/NetworkSystem$7 net/minecraft/network/NetworkSystem$7 +CL net/minecraft/network/NetHandlerPlayServer net/minecraft/network/NetHandlerPlayServer +CL net/minecraft/network/NetHandlerPlayServer$1 net/minecraft/network/NetHandlerPlayServer$1 +CL net/minecraft/network/NetHandlerPlayServer$2 net/minecraft/network/NetHandlerPlayServer$2 +CL net/minecraft/network/NetHandlerPlayServer$3 net/minecraft/network/NetHandlerPlayServer$3 +CL net/minecraft/network/NetHandlerPlayServer$4 net/minecraft/network/NetHandlerPlayServer$4 +CL net/minecraft/server/network/NetHandlerHandshakeTCP net/minecraft/server/network/NetHandlerHandshakeTCP +CL net/minecraft/server/network/NetHandlerHandshakeTCP$1 net/minecraft/server/network/NetHandlerHandshakeTCP$1 +CL net/minecraft/server/network/NetHandlerLoginServer net/minecraft/server/network/NetHandlerLoginServer +CL net/minecraft/server/network/NetHandlerLoginServer$1 net/minecraft/server/network/NetHandlerLoginServer$1 +CL net/minecraft/server/network/NetHandlerLoginServer$2 net/minecraft/server/network/NetHandlerLoginServer$2 +CL net/minecraft/server/network/NetHandlerLoginServer$LoginState net/minecraft/server/network/NetHandlerLoginServer$LoginState +CL net/minecraft/server/network/NetHandlerStatusServer net/minecraft/server/network/NetHandlerStatusServer +CL net/minecraft/server/management/BanEntry net/minecraft/server/management/BanEntry +CL net/minecraft/server/management/PlayerProfileCache net/minecraft/server/management/PlayerProfileCache +CL net/minecraft/server/management/PlayerProfileCache$1 net/minecraft/server/management/PlayerProfileCache$1 +CL net/minecraft/server/management/PlayerProfileCache$2 net/minecraft/server/management/PlayerProfileCache$2 +CL net/minecraft/server/management/PlayerProfileCache$ProfileEntry net/minecraft/server/management/PlayerProfileCache$ProfileEntry +CL net/minecraft/server/management/PlayerProfileCache$Serializer net/minecraft/server/management/PlayerProfileCache$Serializer +CL net/minecraft/server/management/BanList net/minecraft/server/management/BanList +CL net/minecraft/server/management/IPBanEntry net/minecraft/server/management/IPBanEntry +CL net/minecraft/server/management/PreYggdrasilConverter net/minecraft/server/management/PreYggdrasilConverter +CL net/minecraft/server/management/PreYggdrasilConverter$1 net/minecraft/server/management/PreYggdrasilConverter$1 +CL net/minecraft/server/management/PreYggdrasilConverter$2 net/minecraft/server/management/PreYggdrasilConverter$2 +CL net/minecraft/server/management/PreYggdrasilConverter$3 net/minecraft/server/management/PreYggdrasilConverter$3 +CL net/minecraft/server/management/PreYggdrasilConverter$4 net/minecraft/server/management/PreYggdrasilConverter$4 +CL net/minecraft/server/management/PreYggdrasilConverter$5 net/minecraft/server/management/PreYggdrasilConverter$5 +CL net/minecraft/server/management/PreYggdrasilConverter$6 net/minecraft/server/management/PreYggdrasilConverter$6 +CL net/minecraft/server/management/PreYggdrasilConverter$ConversionError net/minecraft/server/management/PreYggdrasilConverter$ConversionError +CL net/minecraft/server/management/ServerConfigurationManager net/minecraft/server/management/ServerConfigurationManager +CL net/minecraft/server/management/ServerConfigurationManager$1 net/minecraft/server/management/ServerConfigurationManager$1 +CL net/minecraft/server/management/UserListOps net/minecraft/server/management/UserListOps +CL net/minecraft/server/management/UserListOpsEntry net/minecraft/server/management/UserListOpsEntry +CL net/minecraft/server/management/UserListEntry net/minecraft/server/management/UserListEntry +CL net/minecraft/server/management/UserList net/minecraft/server/management/UserList +CL net/minecraft/server/management/UserList$1 net/minecraft/server/management/UserList$1 +CL net/minecraft/server/management/UserList$Serializer net/minecraft/server/management/UserList$Serializer +CL net/minecraft/server/management/UserListBans net/minecraft/server/management/UserListBans +CL net/minecraft/server/management/UserListBansEntry net/minecraft/server/management/UserListBansEntry +CL net/minecraft/server/management/UserListWhitelist net/minecraft/server/management/UserListWhitelist +CL net/minecraft/server/management/UserListWhitelistEntry net/minecraft/server/management/UserListWhitelistEntry +CL net/minecraft/network/rcon/RConOutputStream net/minecraft/network/rcon/RConOutputStream +CL net/minecraft/network/rcon/RConUtils net/minecraft/network/rcon/RConUtils +CL net/minecraft/network/rcon/RConConsoleSource net/minecraft/network/rcon/RConConsoleSource +CL net/minecraft/network/rcon/RConThreadBase net/minecraft/network/rcon/RConThreadBase +CL net/minecraft/network/rcon/RConThreadQuery net/minecraft/network/rcon/RConThreadQuery +CL net/minecraft/network/rcon/RConThreadQuery$Auth net/minecraft/network/rcon/RConThreadQuery$Auth +CL net/minecraft/network/rcon/RConThreadClient net/minecraft/network/rcon/RConThreadClient +CL net/minecraft/network/rcon/RConThreadMain net/minecraft/network/rcon/RConThreadMain +CL net/minecraft/stats/Achievement net/minecraft/stats/Achievement +CL net/minecraft/stats/AchievementList net/minecraft/stats/AchievementList +CL net/minecraft/stats/IStatStringFormat net/minecraft/stats/IStatStringFormat +CL net/minecraft/stats/StatBasic net/minecraft/stats/StatBasic +CL net/minecraft/stats/StatCrafting net/minecraft/stats/StatCrafting +CL net/minecraft/stats/StatisticsFile net/minecraft/stats/StatisticsFile +CL net/minecraft/stats/StatBase net/minecraft/stats/StatBase +CL net/minecraft/stats/StatBase$1 net/minecraft/stats/StatBase$1 +CL net/minecraft/stats/StatBase$2 net/minecraft/stats/StatBase$2 +CL net/minecraft/stats/StatBase$3 net/minecraft/stats/StatBase$3 +CL net/minecraft/stats/StatBase$4 net/minecraft/stats/StatBase$4 +CL net/minecraft/stats/IStatType net/minecraft/stats/IStatType +CL net/minecraft/util/TupleIntJsonSerializable net/minecraft/util/TupleIntJsonSerializable +CL net/minecraft/util/IJsonSerializable net/minecraft/util/IJsonSerializable +CL net/minecraft/stats/StatList net/minecraft/stats/StatList +CL net/minecraft/stats/StatFileWriter net/minecraft/stats/StatFileWriter +CL net/minecraft/util/JsonSerializableSet net/minecraft/util/JsonSerializableSet +CL net/minecraft/util/ClassInheritanceMultiMap net/minecraft/util/ClassInheritanceMultiMap +CL net/minecraft/util/ClassInheritanceMultiMap$1 net/minecraft/util/ClassInheritanceMultiMap$1 +CL net/minecraft/util/CryptManager net/minecraft/util/CryptManager +CL net/minecraft/util/FrameTimer net/minecraft/util/FrameTimer +CL net/minecraft/util/JsonUtils net/minecraft/util/JsonUtils +CL net/minecraft/util/HttpUtil net/minecraft/util/HttpUtil +CL net/minecraft/util/HttpUtil$1 net/minecraft/util/HttpUtil$1 +CL net/minecraft/server/management/LowerStringMap net/minecraft/server/management/LowerStringMap +CL net/minecraft/util/IntegerCache net/minecraft/util/IntegerCache +CL net/minecraft/util/IntHashMap net/minecraft/util/IntHashMap +CL net/minecraft/util/IntHashMap$Entry net/minecraft/util/IntHashMap$Entry +CL net/minecraft/util/LazyLoadBase net/minecraft/util/LazyLoadBase +CL net/minecraft/util/ThreadSafeBoundList net/minecraft/util/ThreadSafeBoundList +CL net/minecraft/util/LongHashMap net/minecraft/util/LongHashMap +CL net/minecraft/util/LongHashMap$Entry net/minecraft/util/LongHashMap$Entry +CL net/minecraft/util/EnumTypeAdapterFactory net/minecraft/util/EnumTypeAdapterFactory +CL net/minecraft/util/EnumTypeAdapterFactory$1 net/minecraft/util/EnumTypeAdapterFactory$1 +CL net/minecraft/util/MathHelper net/minecraft/util/MathHelper +CL net/minecraft/profiler/Profiler net/minecraft/profiler/Profiler +CL net/minecraft/profiler/Profiler$Result net/minecraft/profiler/Profiler$Result +CL net/minecraft/util/IProgressUpdate net/minecraft/util/IProgressUpdate +CL net/minecraft/util/MouseFilter net/minecraft/util/MouseFilter +CL net/minecraft/util/IStringSerializable net/minecraft/util/IStringSerializable +CL net/minecraft/util/StringUtils net/minecraft/util/StringUtils +CL net/minecraft/util/Tuple net/minecraft/util/Tuple +CL net/minecraft/util/WeightedRandom net/minecraft/util/WeightedRandom +CL net/minecraft/util/WeightedRandom$Item net/minecraft/util/WeightedRandom$Item +CL net/minecraft/util/WeightedRandomChestContent net/minecraft/util/WeightedRandomChestContent +CL net/minecraft/util/IThreadListener net/minecraft/util/IThreadListener +CL net/minecraft/inventory/InventoryLargeChest net/minecraft/inventory/InventoryLargeChest +CL net/minecraft/inventory/IInventory net/minecraft/inventory/IInventory +CL net/minecraft/inventory/IInvBasic net/minecraft/inventory/IInvBasic +CL net/minecraft/inventory/InventoryHelper net/minecraft/inventory/InventoryHelper +CL net/minecraft/world/EnumDifficulty net/minecraft/world/EnumDifficulty +CL net/minecraft/world/DifficultyInstance net/minecraft/world/DifficultyInstance +CL net/minecraft/world/IInteractionObject net/minecraft/world/IInteractionObject +CL net/minecraft/world/LockCode net/minecraft/world/LockCode +CL net/minecraft/world/ILockableContainer net/minecraft/world/ILockableContainer +CL net/minecraft/world/IWorldNameable net/minecraft/world/IWorldNameable +CL net/minecraft/inventory/InventoryBasic net/minecraft/inventory/InventoryBasic +CL net/minecraft/profiler/PlayerUsageSnooper net/minecraft/profiler/PlayerUsageSnooper +CL net/minecraft/profiler/PlayerUsageSnooper$1 net/minecraft/profiler/PlayerUsageSnooper$1 +CL net/minecraft/profiler/IPlayerUsage net/minecraft/profiler/IPlayerUsage +CL net/minecraft/inventory/ISidedInventory net/minecraft/inventory/ISidedInventory +CL net/minecraft/util/CombatEntry net/minecraft/util/CombatEntry +CL net/minecraft/util/CombatTracker net/minecraft/util/CombatTracker +CL net/minecraft/util/DamageSource net/minecraft/util/DamageSource +CL net/minecraft/util/EntityDamageSource net/minecraft/util/EntityDamageSource +CL net/minecraft/util/EntityDamageSourceIndirect net/minecraft/util/EntityDamageSourceIndirect +CL net/minecraft/potion/PotionAbsorption net/minecraft/potion/PotionAbsorption +CL net/minecraft/potion/PotionAttackDamage net/minecraft/potion/PotionAttackDamage +CL net/minecraft/potion/PotionHealthBoost net/minecraft/potion/PotionHealthBoost +CL net/minecraft/potion/PotionHealth net/minecraft/potion/PotionHealth +CL net/minecraft/potion/Potion net/minecraft/potion/Potion +CL net/minecraft/potion/PotionEffect net/minecraft/potion/PotionEffect +CL net/minecraft/entity/EntityAgeable net/minecraft/entity/EntityAgeable +CL net/minecraft/entity/passive/IAnimals net/minecraft/entity/passive/IAnimals +CL net/minecraft/entity/Entity net/minecraft/entity/Entity +CL net/minecraft/entity/Entity$1 net/minecraft/entity/Entity$1 +CL net/minecraft/entity/Entity$2 net/minecraft/entity/Entity$2 +CL net/minecraft/entity/Entity$3 net/minecraft/entity/Entity$3 +CL net/minecraft/entity/Entity$4 net/minecraft/entity/Entity$4 +CL net/minecraft/entity/EntityList net/minecraft/entity/EntityList +CL net/minecraft/entity/EntityList$EntityEggInfo net/minecraft/entity/EntityList$EntityEggInfo +CL net/minecraft/util/EntitySelectors net/minecraft/util/EntitySelectors +CL net/minecraft/util/EntitySelectors$1 net/minecraft/util/EntitySelectors$1 +CL net/minecraft/util/EntitySelectors$2 net/minecraft/util/EntitySelectors$2 +CL net/minecraft/util/EntitySelectors$3 net/minecraft/util/EntitySelectors$3 +CL net/minecraft/util/EntitySelectors$4 net/minecraft/util/EntitySelectors$4 +CL net/minecraft/util/EntitySelectors$ArmoredMob net/minecraft/util/EntitySelectors$ArmoredMob +CL net/minecraft/entity/item/EntityXPOrb net/minecraft/entity/item/EntityXPOrb +CL net/minecraft/entity/EntityFlying net/minecraft/entity/EntityFlying +CL net/minecraft/entity/EntityLivingBase net/minecraft/entity/EntityLivingBase +CL net/minecraft/entity/EntityLivingBase$1 net/minecraft/entity/EntityLivingBase$1 +CL net/minecraft/entity/EntityLiving net/minecraft/entity/EntityLiving +CL net/minecraft/entity/EntityLiving$SpawnPlacementType net/minecraft/entity/EntityLiving$SpawnPlacementType +CL net/minecraft/entity/EnumCreatureType net/minecraft/entity/EnumCreatureType +CL net/minecraft/entity/IEntityLivingData net/minecraft/entity/IEntityLivingData +CL net/minecraft/entity/EntitySpawnPlacementRegistry net/minecraft/entity/EntitySpawnPlacementRegistry +CL net/minecraft/entity/EnumCreatureAttribute net/minecraft/entity/EnumCreatureAttribute +CL net/minecraft/entity/IEntityOwnable net/minecraft/entity/IEntityOwnable +CL net/minecraft/entity/EntityCreature net/minecraft/entity/EntityCreature +CL net/minecraft/entity/DataWatcher net/minecraft/entity/DataWatcher +CL net/minecraft/entity/DataWatcher$WatchableObject net/minecraft/entity/DataWatcher$WatchableObject +CL net/minecraft/entity/passive/EntityTameable net/minecraft/entity/passive/EntityTameable +CL net/minecraft/entity/ai/attributes/IAttribute net/minecraft/entity/ai/attributes/IAttribute +CL net/minecraft/entity/ai/attributes/IAttributeInstance net/minecraft/entity/ai/attributes/IAttributeInstance +CL net/minecraft/entity/ai/attributes/AttributeModifier net/minecraft/entity/ai/attributes/AttributeModifier +CL net/minecraft/entity/ai/attributes/BaseAttribute net/minecraft/entity/ai/attributes/BaseAttribute +CL net/minecraft/entity/ai/attributes/BaseAttributeMap net/minecraft/entity/ai/attributes/BaseAttributeMap +CL net/minecraft/entity/ai/attributes/ModifiableAttributeInstance net/minecraft/entity/ai/attributes/ModifiableAttributeInstance +CL net/minecraft/entity/ai/attributes/ServersideAttributeMap net/minecraft/entity/ai/attributes/ServersideAttributeMap +CL net/minecraft/entity/ai/attributes/RangedAttribute net/minecraft/entity/ai/attributes/RangedAttribute +CL net/minecraft/entity/EntityBodyHelper net/minecraft/entity/EntityBodyHelper +CL net/minecraft/entity/ai/EntityJumpHelper net/minecraft/entity/ai/EntityJumpHelper +CL net/minecraft/entity/ai/EntityLookHelper net/minecraft/entity/ai/EntityLookHelper +CL net/minecraft/entity/ai/EntityMoveHelper net/minecraft/entity/ai/EntityMoveHelper +CL net/minecraft/entity/ai/EntityAIAvoidEntity net/minecraft/entity/ai/EntityAIAvoidEntity +CL net/minecraft/entity/ai/EntityAIAvoidEntity$1 net/minecraft/entity/ai/EntityAIAvoidEntity$1 +CL net/minecraft/entity/ai/EntityAIBeg net/minecraft/entity/ai/EntityAIBeg +CL net/minecraft/entity/ai/EntityAIBreakDoor net/minecraft/entity/ai/EntityAIBreakDoor +CL net/minecraft/entity/ai/EntityAIMate net/minecraft/entity/ai/EntityAIMate +CL net/minecraft/entity/ai/EntityAIControlledByPlayer net/minecraft/entity/ai/EntityAIControlledByPlayer +CL net/minecraft/entity/ai/EntityAIDoorInteract net/minecraft/entity/ai/EntityAIDoorInteract +CL net/minecraft/entity/ai/EntityAIEatGrass net/minecraft/entity/ai/EntityAIEatGrass +CL net/minecraft/entity/ai/EntityAIFleeSun net/minecraft/entity/ai/EntityAIFleeSun +CL net/minecraft/entity/ai/EntityAISwimming net/minecraft/entity/ai/EntityAISwimming +CL net/minecraft/entity/ai/EntityAIFollowOwner net/minecraft/entity/ai/EntityAIFollowOwner +CL net/minecraft/entity/ai/EntityAIFollowParent net/minecraft/entity/ai/EntityAIFollowParent +CL net/minecraft/entity/ai/EntityAIBase net/minecraft/entity/ai/EntityAIBase +CL net/minecraft/entity/ai/EntityAITasks net/minecraft/entity/ai/EntityAITasks +CL net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry +CL net/minecraft/entity/ai/EntityAIHarvestFarmland net/minecraft/entity/ai/EntityAIHarvestFarmland +CL net/minecraft/entity/ai/EntityAIWatchClosest2 net/minecraft/entity/ai/EntityAIWatchClosest2 +CL net/minecraft/entity/ai/EntityAILeapAtTarget net/minecraft/entity/ai/EntityAILeapAtTarget +CL net/minecraft/entity/ai/EntityAIWatchClosest net/minecraft/entity/ai/EntityAIWatchClosest +CL net/minecraft/entity/ai/EntityAILookAtTradePlayer net/minecraft/entity/ai/EntityAILookAtTradePlayer +CL net/minecraft/entity/ai/EntityAIVillagerMate net/minecraft/entity/ai/EntityAIVillagerMate +CL net/minecraft/entity/ai/EntityAIAttackOnCollide net/minecraft/entity/ai/EntityAIAttackOnCollide +CL net/minecraft/entity/ai/EntityAIMoveIndoors net/minecraft/entity/ai/EntityAIMoveIndoors +CL net/minecraft/entity/ai/EntityAIMoveThroughVillage net/minecraft/entity/ai/EntityAIMoveThroughVillage +CL net/minecraft/entity/ai/EntityAIMoveToBlock net/minecraft/entity/ai/EntityAIMoveToBlock +CL net/minecraft/entity/ai/EntityAIMoveTowardsRestriction net/minecraft/entity/ai/EntityAIMoveTowardsRestriction +CL net/minecraft/entity/ai/EntityAIMoveTowardsTarget net/minecraft/entity/ai/EntityAIMoveTowardsTarget +CL net/minecraft/entity/ai/EntityAIOcelotAttack net/minecraft/entity/ai/EntityAIOcelotAttack +CL net/minecraft/entity/ai/EntityAIOcelotSit net/minecraft/entity/ai/EntityAIOcelotSit +CL net/minecraft/entity/ai/EntityAILookAtVillager net/minecraft/entity/ai/EntityAILookAtVillager +CL net/minecraft/entity/ai/EntityAIOpenDoor net/minecraft/entity/ai/EntityAIOpenDoor +CL net/minecraft/entity/ai/EntityAIPanic net/minecraft/entity/ai/EntityAIPanic +CL net/minecraft/entity/ai/EntityAIPlay net/minecraft/entity/ai/EntityAIPlay +CL net/minecraft/entity/ai/EntityAILookIdle net/minecraft/entity/ai/EntityAILookIdle +CL net/minecraft/entity/ai/EntityAIWander net/minecraft/entity/ai/EntityAIWander +CL net/minecraft/entity/ai/EntityAIArrowAttack net/minecraft/entity/ai/EntityAIArrowAttack +CL net/minecraft/entity/ai/EntityAIRestrictOpenDoor net/minecraft/entity/ai/EntityAIRestrictOpenDoor +CL net/minecraft/entity/ai/EntityAIRestrictSun net/minecraft/entity/ai/EntityAIRestrictSun +CL net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy +CL net/minecraft/entity/ai/EntityAISit net/minecraft/entity/ai/EntityAISit +CL net/minecraft/entity/ai/EntityAICreeperSwell net/minecraft/entity/ai/EntityAICreeperSwell +CL net/minecraft/entity/ai/EntityAIFollowGolem net/minecraft/entity/ai/EntityAIFollowGolem +CL net/minecraft/entity/ai/EntityAITempt net/minecraft/entity/ai/EntityAITempt +CL net/minecraft/entity/ai/EntityAITradePlayer net/minecraft/entity/ai/EntityAITradePlayer +CL net/minecraft/entity/ai/EntityAIVillagerInteract net/minecraft/entity/ai/EntityAIVillagerInteract +CL net/minecraft/entity/ai/EntityAIDefendVillage net/minecraft/entity/ai/EntityAIDefendVillage +CL net/minecraft/entity/ai/EntityAIHurtByTarget net/minecraft/entity/ai/EntityAIHurtByTarget +CL net/minecraft/entity/ai/EntityAIFindEntityNearest net/minecraft/entity/ai/EntityAIFindEntityNearest +CL net/minecraft/entity/ai/EntityAIFindEntityNearest$1 net/minecraft/entity/ai/EntityAIFindEntityNearest$1 +CL net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer +CL net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget net/minecraft/entity/ai/EntityAINearestAttackableTarget +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 +CL net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter +CL net/minecraft/entity/ai/EntityAITargetNonTamed net/minecraft/entity/ai/EntityAITargetNonTamed +CL net/minecraft/entity/ai/EntityAIOwnerHurtByTarget net/minecraft/entity/ai/EntityAIOwnerHurtByTarget +CL net/minecraft/entity/ai/EntityAIOwnerHurtTarget net/minecraft/entity/ai/EntityAIOwnerHurtTarget +CL net/minecraft/entity/ai/EntityAITarget net/minecraft/entity/ai/EntityAITarget +CL net/minecraft/pathfinding/PathNavigateGround net/minecraft/pathfinding/PathNavigateGround +CL net/minecraft/pathfinding/PathNavigate net/minecraft/pathfinding/PathNavigate +CL net/minecraft/pathfinding/PathNavigateClimber net/minecraft/pathfinding/PathNavigateClimber +CL net/minecraft/pathfinding/PathNavigateSwimmer net/minecraft/pathfinding/PathNavigateSwimmer +CL net/minecraft/entity/ai/EntitySenses net/minecraft/entity/ai/EntitySenses +CL net/minecraft/entity/ai/RandomPositionGenerator net/minecraft/entity/ai/RandomPositionGenerator +CL net/minecraft/village/VillageDoorInfo net/minecraft/village/VillageDoorInfo +CL net/minecraft/village/Village net/minecraft/village/Village +CL net/minecraft/village/Village$VillageAggressor net/minecraft/village/Village$VillageAggressor +CL net/minecraft/village/VillageSiege net/minecraft/village/VillageSiege +CL net/minecraft/village/VillageCollection net/minecraft/village/VillageCollection +CL net/minecraft/entity/passive/EntityAmbientCreature net/minecraft/entity/passive/EntityAmbientCreature +CL net/minecraft/entity/passive/EntityBat net/minecraft/entity/passive/EntityBat +CL net/minecraft/entity/passive/EntityAnimal net/minecraft/entity/passive/EntityAnimal +CL net/minecraft/entity/passive/EntityChicken net/minecraft/entity/passive/EntityChicken +CL net/minecraft/entity/passive/EntityCow net/minecraft/entity/passive/EntityCow +CL net/minecraft/entity/passive/EntityHorse net/minecraft/entity/passive/EntityHorse +CL net/minecraft/entity/passive/EntityHorse$1 net/minecraft/entity/passive/EntityHorse$1 +CL net/minecraft/entity/passive/EntityHorse$GroupData net/minecraft/entity/passive/EntityHorse$GroupData +CL net/minecraft/entity/monster/EntityGolem net/minecraft/entity/monster/EntityGolem +CL net/minecraft/entity/passive/EntityMooshroom net/minecraft/entity/passive/EntityMooshroom +CL net/minecraft/entity/passive/EntityOcelot net/minecraft/entity/passive/EntityOcelot +CL net/minecraft/entity/passive/EntityPig net/minecraft/entity/passive/EntityPig +CL net/minecraft/entity/passive/EntityRabbit net/minecraft/entity/passive/EntityRabbit +CL net/minecraft/entity/passive/EntityRabbit$AIEvilAttack net/minecraft/entity/passive/EntityRabbit$AIEvilAttack +CL net/minecraft/entity/passive/EntityRabbit$EnumMoveType net/minecraft/entity/passive/EntityRabbit$EnumMoveType +CL net/minecraft/entity/passive/EntityRabbit$AIAvoidEntity net/minecraft/entity/passive/EntityRabbit$AIAvoidEntity +CL net/minecraft/entity/passive/EntityRabbit$RabbitTypeData net/minecraft/entity/passive/EntityRabbit$RabbitTypeData +CL net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper +CL net/minecraft/entity/passive/EntityRabbit$RabbitMoveHelper net/minecraft/entity/passive/EntityRabbit$RabbitMoveHelper +CL net/minecraft/entity/passive/EntityRabbit$AIPanic net/minecraft/entity/passive/EntityRabbit$AIPanic +CL net/minecraft/entity/passive/EntityRabbit$AIRaidFarm net/minecraft/entity/passive/EntityRabbit$AIRaidFarm +CL net/minecraft/entity/passive/EntitySheep net/minecraft/entity/passive/EntitySheep +CL net/minecraft/entity/passive/EntitySheep$1 net/minecraft/entity/passive/EntitySheep$1 +CL net/minecraft/entity/monster/EntitySnowman net/minecraft/entity/monster/EntitySnowman +CL net/minecraft/entity/passive/EntitySquid net/minecraft/entity/passive/EntitySquid +CL net/minecraft/entity/passive/EntitySquid$AIMoveRandom net/minecraft/entity/passive/EntitySquid$AIMoveRandom +CL net/minecraft/entity/monster/EntityIronGolem net/minecraft/entity/monster/EntityIronGolem +CL net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper +CL net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 +CL net/minecraft/entity/passive/EntityWaterMob net/minecraft/entity/passive/EntityWaterMob +CL net/minecraft/entity/passive/EntityWolf net/minecraft/entity/passive/EntityWolf +CL net/minecraft/entity/passive/EntityWolf$1 net/minecraft/entity/passive/EntityWolf$1 +CL net/minecraft/entity/boss/IBossDisplayData net/minecraft/entity/boss/IBossDisplayData +CL net/minecraft/entity/IEntityMultiPart net/minecraft/entity/IEntityMultiPart +CL net/minecraft/entity/boss/EntityDragonPart net/minecraft/entity/boss/EntityDragonPart +CL net/minecraft/entity/item/EntityEnderCrystal net/minecraft/entity/item/EntityEnderCrystal +CL net/minecraft/entity/boss/EntityDragon net/minecraft/entity/boss/EntityDragon +CL net/minecraft/entity/boss/EntityWither net/minecraft/entity/boss/EntityWither +CL net/minecraft/entity/boss/EntityWither$1 net/minecraft/entity/boss/EntityWither$1 +CL net/minecraft/entity/item/EntityArmorStand net/minecraft/entity/item/EntityArmorStand +CL net/minecraft/entity/EntityHanging net/minecraft/entity/EntityHanging +CL net/minecraft/entity/item/EntityItemFrame net/minecraft/entity/item/EntityItemFrame +CL net/minecraft/entity/EntityLeashKnot net/minecraft/entity/EntityLeashKnot +CL net/minecraft/entity/item/EntityPainting net/minecraft/entity/item/EntityPainting +CL net/minecraft/entity/item/EntityPainting$EnumArt net/minecraft/entity/item/EntityPainting$EnumArt +CL net/minecraft/entity/projectile/EntityFishHook net/minecraft/entity/projectile/EntityFishHook +CL net/minecraft/util/WeightedRandomFishable net/minecraft/util/WeightedRandomFishable +CL net/minecraft/entity/effect/EntityWeatherEffect net/minecraft/entity/effect/EntityWeatherEffect +CL net/minecraft/entity/effect/EntityLightningBolt net/minecraft/entity/effect/EntityLightningBolt +CL net/minecraft/entity/item/EntityBoat net/minecraft/entity/item/EntityBoat +CL net/minecraft/entity/item/EntityFallingBlock net/minecraft/entity/item/EntityFallingBlock +CL net/minecraft/entity/item/EntityItem net/minecraft/entity/item/EntityItem +CL net/minecraft/entity/item/EntityMinecart net/minecraft/entity/item/EntityMinecart +CL net/minecraft/entity/item/EntityMinecart$1 net/minecraft/entity/item/EntityMinecart$1 +CL net/minecraft/entity/item/EntityMinecart$EnumMinecartType net/minecraft/entity/item/EntityMinecart$EnumMinecartType +CL net/minecraft/entity/item/EntityMinecartChest net/minecraft/entity/item/EntityMinecartChest +CL net/minecraft/entity/EntityMinecartCommandBlock net/minecraft/entity/EntityMinecartCommandBlock +CL net/minecraft/entity/EntityMinecartCommandBlock$1 net/minecraft/entity/EntityMinecartCommandBlock$1 +CL net/minecraft/entity/item/EntityMinecartContainer net/minecraft/entity/item/EntityMinecartContainer +CL net/minecraft/entity/item/EntityMinecartFurnace net/minecraft/entity/item/EntityMinecartFurnace +CL net/minecraft/entity/item/EntityMinecartHopper net/minecraft/entity/item/EntityMinecartHopper +CL net/minecraft/entity/item/EntityMinecartEmpty net/minecraft/entity/item/EntityMinecartEmpty +CL net/minecraft/entity/ai/EntityMinecartMobSpawner net/minecraft/entity/ai/EntityMinecartMobSpawner +CL net/minecraft/entity/ai/EntityMinecartMobSpawner$1 net/minecraft/entity/ai/EntityMinecartMobSpawner$1 +CL net/minecraft/entity/item/EntityMinecartTNT net/minecraft/entity/item/EntityMinecartTNT +CL net/minecraft/entity/item/EntityTNTPrimed net/minecraft/entity/item/EntityTNTPrimed +CL net/minecraft/entity/monster/EntityBlaze net/minecraft/entity/monster/EntityBlaze +CL net/minecraft/entity/monster/EntityBlaze$AIFireballAttack net/minecraft/entity/monster/EntityBlaze$AIFireballAttack +CL net/minecraft/entity/monster/EntityCaveSpider net/minecraft/entity/monster/EntityCaveSpider +CL net/minecraft/entity/monster/EntityCreeper net/minecraft/entity/monster/EntityCreeper +CL net/minecraft/entity/monster/EntityEnderman net/minecraft/entity/monster/EntityEnderman +CL net/minecraft/entity/monster/EntityEnderman$1 net/minecraft/entity/monster/EntityEnderman$1 +CL net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock +CL net/minecraft/entity/monster/EntityEnderman$AIFindPlayer net/minecraft/entity/monster/EntityEnderman$AIFindPlayer +CL net/minecraft/entity/monster/EntityEnderman$AITakeBlock net/minecraft/entity/monster/EntityEnderman$AITakeBlock +CL net/minecraft/entity/monster/EntityEndermite net/minecraft/entity/monster/EntityEndermite +CL net/minecraft/entity/monster/IMob net/minecraft/entity/monster/IMob +CL net/minecraft/entity/monster/IMob$1 net/minecraft/entity/monster/IMob$1 +CL net/minecraft/entity/monster/IMob$2 net/minecraft/entity/monster/IMob$2 +CL net/minecraft/entity/monster/EntityGhast net/minecraft/entity/monster/EntityGhast +CL net/minecraft/entity/monster/EntityGhast$AILookAround net/minecraft/entity/monster/EntityGhast$AILookAround +CL net/minecraft/entity/monster/EntityGhast$GhastMoveHelper net/minecraft/entity/monster/EntityGhast$GhastMoveHelper +CL net/minecraft/entity/monster/EntityGhast$AIFireballAttack net/minecraft/entity/monster/EntityGhast$AIFireballAttack +CL net/minecraft/entity/monster/EntityGhast$AIRandomFly net/minecraft/entity/monster/EntityGhast$AIRandomFly +CL net/minecraft/entity/monster/EntityGiantZombie net/minecraft/entity/monster/EntityGiantZombie +CL net/minecraft/entity/monster/EntityGuardian net/minecraft/entity/monster/EntityGuardian +CL net/minecraft/entity/monster/EntityGuardian$1 net/minecraft/entity/monster/EntityGuardian$1 +CL net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack +CL net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector +CL net/minecraft/entity/monster/EntityGuardian$GuardianMoveHelper net/minecraft/entity/monster/EntityGuardian$GuardianMoveHelper +CL net/minecraft/entity/monster/EntityMagmaCube net/minecraft/entity/monster/EntityMagmaCube +CL net/minecraft/entity/monster/EntityMob net/minecraft/entity/monster/EntityMob +CL net/minecraft/entity/monster/EntityPigZombie net/minecraft/entity/monster/EntityPigZombie +CL net/minecraft/entity/monster/EntityPigZombie$AITargetAggressor net/minecraft/entity/monster/EntityPigZombie$AITargetAggressor +CL net/minecraft/entity/monster/EntityPigZombie$AIHurtByAggressor net/minecraft/entity/monster/EntityPigZombie$AIHurtByAggressor +CL net/minecraft/entity/IRangedAttackMob net/minecraft/entity/IRangedAttackMob +CL net/minecraft/entity/SharedMonsterAttributes net/minecraft/entity/SharedMonsterAttributes +CL net/minecraft/entity/monster/EntitySilverfish net/minecraft/entity/monster/EntitySilverfish +CL net/minecraft/entity/monster/EntitySilverfish$AIHideInStone net/minecraft/entity/monster/EntitySilverfish$AIHideInStone +CL net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish +CL net/minecraft/entity/monster/EntitySkeleton net/minecraft/entity/monster/EntitySkeleton +CL net/minecraft/entity/monster/EntitySlime net/minecraft/entity/monster/EntitySlime +CL net/minecraft/entity/monster/EntitySlime$AISlimeAttack net/minecraft/entity/monster/EntitySlime$AISlimeAttack +CL net/minecraft/entity/monster/EntitySlime$AISlimeFloat net/minecraft/entity/monster/EntitySlime$AISlimeFloat +CL net/minecraft/entity/monster/EntitySlime$AISlimeHop net/minecraft/entity/monster/EntitySlime$AISlimeHop +CL net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper +CL net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom +CL net/minecraft/entity/monster/EntitySpider net/minecraft/entity/monster/EntitySpider +CL net/minecraft/entity/monster/EntitySpider$AISpiderAttack net/minecraft/entity/monster/EntitySpider$AISpiderAttack +CL net/minecraft/entity/monster/EntitySpider$GroupData net/minecraft/entity/monster/EntitySpider$GroupData +CL net/minecraft/entity/monster/EntitySpider$AISpiderTarget net/minecraft/entity/monster/EntitySpider$AISpiderTarget +CL net/minecraft/entity/monster/EntityWitch net/minecraft/entity/monster/EntityWitch +CL net/minecraft/entity/monster/EntityZombie net/minecraft/entity/monster/EntityZombie +CL net/minecraft/entity/monster/EntityZombie$1 net/minecraft/entity/monster/EntityZombie$1 +CL net/minecraft/entity/monster/EntityZombie$GroupData net/minecraft/entity/monster/EntityZombie$GroupData +CL net/minecraft/entity/NpcMerchant net/minecraft/entity/NpcMerchant +CL net/minecraft/entity/INpc net/minecraft/entity/INpc +CL net/minecraft/entity/passive/EntityVillager net/minecraft/entity/passive/EntityVillager +CL net/minecraft/entity/passive/EntityVillager$EmeraldForItems net/minecraft/entity/passive/EntityVillager$EmeraldForItems +CL net/minecraft/entity/passive/EntityVillager$ListEnchantedBookForEmeralds net/minecraft/entity/passive/EntityVillager$ListEnchantedBookForEmeralds +CL net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds +CL net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem +CL net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds +CL net/minecraft/entity/passive/EntityVillager$ITradeList net/minecraft/entity/passive/EntityVillager$ITradeList +CL net/minecraft/entity/passive/EntityVillager$PriceInfo net/minecraft/entity/passive/EntityVillager$PriceInfo +CL net/minecraft/entity/player/PlayerCapabilities net/minecraft/entity/player/PlayerCapabilities +CL net/minecraft/entity/player/InventoryPlayer net/minecraft/entity/player/InventoryPlayer +CL net/minecraft/entity/player/InventoryPlayer$1 net/minecraft/entity/player/InventoryPlayer$1 +CL net/minecraft/entity/player/EntityPlayer net/minecraft/entity/player/EntityPlayer +CL net/minecraft/entity/player/EntityPlayer$1 net/minecraft/entity/player/EntityPlayer$1 +CL net/minecraft/entity/player/EntityPlayer$EnumStatus net/minecraft/entity/player/EntityPlayer$EnumStatus +CL net/minecraft/entity/player/EntityPlayer$EnumChatVisibility net/minecraft/entity/player/EntityPlayer$EnumChatVisibility +CL net/minecraft/entity/player/EnumPlayerModelParts net/minecraft/entity/player/EnumPlayerModelParts +CL net/minecraft/entity/projectile/EntityArrow net/minecraft/entity/projectile/EntityArrow +CL net/minecraft/entity/item/EntityEnderEye net/minecraft/entity/item/EntityEnderEye +CL net/minecraft/entity/projectile/EntityFireball net/minecraft/entity/projectile/EntityFireball +CL net/minecraft/entity/item/EntityFireworkRocket net/minecraft/entity/item/EntityFireworkRocket +CL net/minecraft/entity/projectile/EntityLargeFireball net/minecraft/entity/projectile/EntityLargeFireball +CL net/minecraft/entity/IProjectile net/minecraft/entity/IProjectile +CL net/minecraft/entity/projectile/EntitySmallFireball net/minecraft/entity/projectile/EntitySmallFireball +CL net/minecraft/entity/projectile/EntitySnowball net/minecraft/entity/projectile/EntitySnowball +CL net/minecraft/entity/projectile/EntityThrowable net/minecraft/entity/projectile/EntityThrowable +CL net/minecraft/entity/projectile/EntityEgg net/minecraft/entity/projectile/EntityEgg +CL net/minecraft/entity/item/EntityEnderPearl net/minecraft/entity/item/EntityEnderPearl +CL net/minecraft/entity/item/EntityExpBottle net/minecraft/entity/item/EntityExpBottle +CL net/minecraft/entity/projectile/EntityPotion net/minecraft/entity/projectile/EntityPotion +CL net/minecraft/entity/projectile/EntityWitherSkull net/minecraft/entity/projectile/EntityWitherSkull +CL net/minecraft/util/FoodStats net/minecraft/util/FoodStats +CL net/minecraft/inventory/Container net/minecraft/inventory/Container +CL net/minecraft/inventory/AnimalChest net/minecraft/inventory/AnimalChest +CL net/minecraft/inventory/ContainerRepair net/minecraft/inventory/ContainerRepair +CL net/minecraft/inventory/ContainerRepair$1 net/minecraft/inventory/ContainerRepair$1 +CL net/minecraft/inventory/ContainerRepair$2 net/minecraft/inventory/ContainerRepair$2 +CL net/minecraft/inventory/ContainerBeacon net/minecraft/inventory/ContainerBeacon +CL net/minecraft/inventory/ContainerBeacon$BeaconSlot net/minecraft/inventory/ContainerBeacon$BeaconSlot +CL net/minecraft/inventory/ContainerBrewingStand net/minecraft/inventory/ContainerBrewingStand +CL net/minecraft/inventory/ContainerBrewingStand$Ingredient net/minecraft/inventory/ContainerBrewingStand$Ingredient +CL net/minecraft/inventory/ContainerBrewingStand$Potion net/minecraft/inventory/ContainerBrewingStand$Potion +CL net/minecraft/inventory/ICrafting net/minecraft/inventory/ICrafting +CL net/minecraft/inventory/ContainerChest net/minecraft/inventory/ContainerChest +CL net/minecraft/inventory/InventoryCrafting net/minecraft/inventory/InventoryCrafting +CL net/minecraft/inventory/ContainerWorkbench net/minecraft/inventory/ContainerWorkbench +CL net/minecraft/inventory/ContainerDispenser net/minecraft/inventory/ContainerDispenser +CL net/minecraft/inventory/ContainerEnchantment net/minecraft/inventory/ContainerEnchantment +CL net/minecraft/inventory/ContainerEnchantment$1 net/minecraft/inventory/ContainerEnchantment$1 +CL net/minecraft/inventory/ContainerEnchantment$2 net/minecraft/inventory/ContainerEnchantment$2 +CL net/minecraft/inventory/ContainerEnchantment$3 net/minecraft/inventory/ContainerEnchantment$3 +CL net/minecraft/inventory/SlotFurnaceFuel net/minecraft/inventory/SlotFurnaceFuel +CL net/minecraft/inventory/ContainerFurnace net/minecraft/inventory/ContainerFurnace +CL net/minecraft/inventory/SlotFurnaceOutput net/minecraft/inventory/SlotFurnaceOutput +CL net/minecraft/inventory/ContainerHopper net/minecraft/inventory/ContainerHopper +CL net/minecraft/inventory/ContainerHorseInventory net/minecraft/inventory/ContainerHorseInventory +CL net/minecraft/inventory/ContainerHorseInventory$1 net/minecraft/inventory/ContainerHorseInventory$1 +CL net/minecraft/inventory/ContainerHorseInventory$2 net/minecraft/inventory/ContainerHorseInventory$2 +CL net/minecraft/inventory/ContainerPlayer net/minecraft/inventory/ContainerPlayer +CL net/minecraft/inventory/ContainerPlayer$1 net/minecraft/inventory/ContainerPlayer$1 +CL net/minecraft/inventory/InventoryMerchant net/minecraft/inventory/InventoryMerchant +CL net/minecraft/inventory/ContainerMerchant net/minecraft/inventory/ContainerMerchant +CL net/minecraft/inventory/SlotMerchantResult net/minecraft/inventory/SlotMerchantResult +CL net/minecraft/inventory/InventoryEnderChest net/minecraft/inventory/InventoryEnderChest +CL net/minecraft/inventory/InventoryCraftResult net/minecraft/inventory/InventoryCraftResult +CL net/minecraft/inventory/SlotCrafting net/minecraft/inventory/SlotCrafting +CL net/minecraft/inventory/Slot net/minecraft/inventory/Slot +CL net/minecraft/item/ItemAnvilBlock net/minecraft/item/ItemAnvilBlock +CL net/minecraft/item/ItemArmor net/minecraft/item/ItemArmor +CL net/minecraft/item/ItemArmor$1 net/minecraft/item/ItemArmor$1 +CL net/minecraft/item/ItemArmor$ArmorMaterial net/minecraft/item/ItemArmor$ArmorMaterial +CL net/minecraft/item/ItemArmorStand net/minecraft/item/ItemArmorStand +CL net/minecraft/item/ItemAxe net/minecraft/item/ItemAxe +CL net/minecraft/item/ItemBanner net/minecraft/item/ItemBanner +CL net/minecraft/item/ItemBed net/minecraft/item/ItemBed +CL net/minecraft/item/ItemBlock net/minecraft/item/ItemBlock +CL net/minecraft/item/ItemReed net/minecraft/item/ItemReed +CL net/minecraft/item/ItemBoat net/minecraft/item/ItemBoat +CL net/minecraft/item/ItemBook net/minecraft/item/ItemBook +CL net/minecraft/item/ItemGlassBottle net/minecraft/item/ItemGlassBottle +CL net/minecraft/item/ItemBow net/minecraft/item/ItemBow +CL net/minecraft/item/ItemSoup net/minecraft/item/ItemSoup +CL net/minecraft/item/ItemBucket net/minecraft/item/ItemBucket +CL net/minecraft/item/ItemCarrotOnAStick net/minecraft/item/ItemCarrotOnAStick +CL net/minecraft/item/ItemCoal net/minecraft/item/ItemCoal +CL net/minecraft/item/ItemMapBase net/minecraft/item/ItemMapBase +CL net/minecraft/creativetab/CreativeTabs net/minecraft/creativetab/CreativeTabs +CL net/minecraft/creativetab/CreativeTabs$1 net/minecraft/creativetab/CreativeTabs$1 +CL net/minecraft/creativetab/CreativeTabs$2 net/minecraft/creativetab/CreativeTabs$2 +CL net/minecraft/creativetab/CreativeTabs$3 net/minecraft/creativetab/CreativeTabs$3 +CL net/minecraft/creativetab/CreativeTabs$4 net/minecraft/creativetab/CreativeTabs$4 +CL net/minecraft/creativetab/CreativeTabs$5 net/minecraft/creativetab/CreativeTabs$5 +CL net/minecraft/creativetab/CreativeTabs$6 net/minecraft/creativetab/CreativeTabs$6 +CL net/minecraft/creativetab/CreativeTabs$7 net/minecraft/creativetab/CreativeTabs$7 +CL net/minecraft/creativetab/CreativeTabs$8 net/minecraft/creativetab/CreativeTabs$8 +CL net/minecraft/creativetab/CreativeTabs$9 net/minecraft/creativetab/CreativeTabs$9 +CL net/minecraft/creativetab/CreativeTabs$10 net/minecraft/creativetab/CreativeTabs$10 +CL net/minecraft/creativetab/CreativeTabs$11 net/minecraft/creativetab/CreativeTabs$11 +CL net/minecraft/creativetab/CreativeTabs$12 net/minecraft/creativetab/CreativeTabs$12 +CL net/minecraft/item/ItemTool net/minecraft/item/ItemTool +CL net/minecraft/item/ItemDoor net/minecraft/item/ItemDoor +CL net/minecraft/item/ItemDoublePlant net/minecraft/item/ItemDoublePlant +CL net/minecraft/item/EnumDyeColor net/minecraft/item/EnumDyeColor +CL net/minecraft/item/ItemDye net/minecraft/item/ItemDye +CL net/minecraft/item/ItemCloth net/minecraft/item/ItemCloth +CL net/minecraft/item/ItemEgg net/minecraft/item/ItemEgg +CL net/minecraft/item/ItemEmptyMap net/minecraft/item/ItemEmptyMap +CL net/minecraft/item/ItemEnchantedBook net/minecraft/item/ItemEnchantedBook +CL net/minecraft/item/ItemEnderEye net/minecraft/item/ItemEnderEye +CL net/minecraft/item/ItemEnderPearl net/minecraft/item/ItemEnderPearl +CL net/minecraft/item/ItemExpBottle net/minecraft/item/ItemExpBottle +CL net/minecraft/item/ItemFireball net/minecraft/item/ItemFireball +CL net/minecraft/item/ItemFireworkCharge net/minecraft/item/ItemFireworkCharge +CL net/minecraft/item/ItemFirework net/minecraft/item/ItemFirework +CL net/minecraft/item/ItemFishFood net/minecraft/item/ItemFishFood +CL net/minecraft/item/ItemFishFood$FishType net/minecraft/item/ItemFishFood$FishType +CL net/minecraft/item/ItemFishingRod net/minecraft/item/ItemFishingRod +CL net/minecraft/item/ItemFlintAndSteel net/minecraft/item/ItemFlintAndSteel +CL net/minecraft/item/ItemFood net/minecraft/item/ItemFood +CL net/minecraft/item/ItemAppleGold net/minecraft/item/ItemAppleGold +CL net/minecraft/item/ItemHangingEntity net/minecraft/item/ItemHangingEntity +CL net/minecraft/item/ItemHoe net/minecraft/item/ItemHoe +CL net/minecraft/item/ItemHoe$1 net/minecraft/item/ItemHoe$1 +CL net/minecraft/item/Item net/minecraft/item/Item +CL net/minecraft/item/Item$1 net/minecraft/item/Item$1 +CL net/minecraft/item/Item$2 net/minecraft/item/Item$2 +CL net/minecraft/item/Item$3 net/minecraft/item/Item$3 +CL net/minecraft/item/Item$4 net/minecraft/item/Item$4 +CL net/minecraft/item/Item$5 net/minecraft/item/Item$5 +CL net/minecraft/item/Item$6 net/minecraft/item/Item$6 +CL net/minecraft/item/Item$7 net/minecraft/item/Item$7 +CL net/minecraft/item/Item$8 net/minecraft/item/Item$8 +CL net/minecraft/item/Item$9 net/minecraft/item/Item$9 +CL net/minecraft/item/Item$ToolMaterial net/minecraft/item/Item$ToolMaterial +CL net/minecraft/item/Item$10 net/minecraft/item/Item$10 +CL net/minecraft/item/Item$11 net/minecraft/item/Item$11 +CL net/minecraft/item/Item$12 net/minecraft/item/Item$12 +CL net/minecraft/item/Item$13 net/minecraft/item/Item$13 +CL net/minecraft/item/Item$14 net/minecraft/item/Item$14 +CL net/minecraft/item/Item$15 net/minecraft/item/Item$15 +CL net/minecraft/item/Item$16 net/minecraft/item/Item$16 +CL net/minecraft/item/Item$17 net/minecraft/item/Item$17 +CL net/minecraft/item/ItemStack net/minecraft/item/ItemStack +CL net/minecraft/init/Items net/minecraft/init/Items +CL net/minecraft/item/ItemLead net/minecraft/item/ItemLead +CL net/minecraft/item/ItemLeaves net/minecraft/item/ItemLeaves +CL net/minecraft/item/ItemMap net/minecraft/item/ItemMap +CL net/minecraft/item/ItemBucketMilk net/minecraft/item/ItemBucketMilk +CL net/minecraft/item/ItemMinecart net/minecraft/item/ItemMinecart +CL net/minecraft/item/ItemMinecart$1 net/minecraft/item/ItemMinecart$1 +CL net/minecraft/item/ItemMultiTexture net/minecraft/item/ItemMultiTexture +CL net/minecraft/item/ItemMultiTexture$1 net/minecraft/item/ItemMultiTexture$1 +CL net/minecraft/item/ItemNameTag net/minecraft/item/ItemNameTag +CL net/minecraft/item/ItemPickaxe net/minecraft/item/ItemPickaxe +CL net/minecraft/item/ItemPiston net/minecraft/item/ItemPiston +CL net/minecraft/item/ItemPotion net/minecraft/item/ItemPotion +CL net/minecraft/item/EnumRarity net/minecraft/item/EnumRarity +CL net/minecraft/item/ItemRecord net/minecraft/item/ItemRecord +CL net/minecraft/item/ItemRedstone net/minecraft/item/ItemRedstone +CL net/minecraft/item/ItemSaddle net/minecraft/item/ItemSaddle +CL net/minecraft/item/ItemSeedFood net/minecraft/item/ItemSeedFood +CL net/minecraft/item/ItemSeeds net/minecraft/item/ItemSeeds +CL net/minecraft/item/ItemShears net/minecraft/item/ItemShears +CL net/minecraft/item/ItemSpade net/minecraft/item/ItemSpade +CL net/minecraft/item/ItemSign net/minecraft/item/ItemSign +CL net/minecraft/item/ItemSimpleFoiled net/minecraft/item/ItemSimpleFoiled +CL net/minecraft/item/ItemSkull net/minecraft/item/ItemSkull +CL net/minecraft/item/ItemSlab net/minecraft/item/ItemSlab +CL net/minecraft/item/ItemSnow net/minecraft/item/ItemSnow +CL net/minecraft/item/ItemSnowball net/minecraft/item/ItemSnowball +CL net/minecraft/item/ItemMonsterPlacer net/minecraft/item/ItemMonsterPlacer +CL net/minecraft/item/ItemSword net/minecraft/item/ItemSword +CL net/minecraft/item/ItemColored net/minecraft/item/ItemColored +CL net/minecraft/item/EnumAction net/minecraft/item/EnumAction +CL net/minecraft/item/ItemLilyPad net/minecraft/item/ItemLilyPad +CL net/minecraft/item/ItemWritableBook net/minecraft/item/ItemWritableBook +CL net/minecraft/item/ItemEditableBook net/minecraft/item/ItemEditableBook +CL net/minecraft/potion/PotionHelper net/minecraft/potion/PotionHelper +CL net/minecraft/item/crafting/RecipesArmorDyes net/minecraft/item/crafting/RecipesArmorDyes +CL net/minecraft/item/crafting/RecipesArmor net/minecraft/item/crafting/RecipesArmor +CL net/minecraft/item/crafting/RecipesBanners net/minecraft/item/crafting/RecipesBanners +CL net/minecraft/item/crafting/RecipesBanners$1 net/minecraft/item/crafting/RecipesBanners$1 +CL net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern +CL net/minecraft/item/crafting/RecipesBanners$RecipeDuplicatePattern net/minecraft/item/crafting/RecipesBanners$RecipeDuplicatePattern +CL net/minecraft/item/crafting/RecipeBookCloning net/minecraft/item/crafting/RecipeBookCloning +CL net/minecraft/item/crafting/RecipesDyes net/minecraft/item/crafting/RecipesDyes +CL net/minecraft/item/crafting/RecipeFireworks net/minecraft/item/crafting/RecipeFireworks +CL net/minecraft/item/crafting/RecipesFood net/minecraft/item/crafting/RecipesFood +CL net/minecraft/item/crafting/FurnaceRecipes net/minecraft/item/crafting/FurnaceRecipes +CL net/minecraft/item/crafting/RecipesMapCloning net/minecraft/item/crafting/RecipesMapCloning +CL net/minecraft/item/crafting/RecipesMapExtending net/minecraft/item/crafting/RecipesMapExtending +CL net/minecraft/item/crafting/RecipesIngots net/minecraft/item/crafting/RecipesIngots +CL net/minecraft/item/crafting/IRecipe net/minecraft/item/crafting/IRecipe +CL net/minecraft/item/crafting/CraftingManager net/minecraft/item/crafting/CraftingManager +CL net/minecraft/item/crafting/CraftingManager$1 net/minecraft/item/crafting/CraftingManager$1 +CL net/minecraft/item/crafting/RecipeRepairItem net/minecraft/item/crafting/RecipeRepairItem +CL net/minecraft/item/crafting/ShapedRecipes net/minecraft/item/crafting/ShapedRecipes +CL net/minecraft/item/crafting/ShapelessRecipes net/minecraft/item/crafting/ShapelessRecipes +CL net/minecraft/item/crafting/RecipesCrafting net/minecraft/item/crafting/RecipesCrafting +CL net/minecraft/item/crafting/RecipesTools net/minecraft/item/crafting/RecipesTools +CL net/minecraft/item/crafting/RecipesWeapons net/minecraft/item/crafting/RecipesWeapons +CL net/minecraft/enchantment/EnchantmentArrowDamage net/minecraft/enchantment/EnchantmentArrowDamage +CL net/minecraft/enchantment/EnchantmentArrowFire net/minecraft/enchantment/EnchantmentArrowFire +CL net/minecraft/enchantment/EnchantmentArrowInfinite net/minecraft/enchantment/EnchantmentArrowInfinite +CL net/minecraft/enchantment/EnchantmentArrowKnockback net/minecraft/enchantment/EnchantmentArrowKnockback +CL net/minecraft/enchantment/EnchantmentDamage net/minecraft/enchantment/EnchantmentDamage +CL net/minecraft/enchantment/EnchantmentDurability net/minecraft/enchantment/EnchantmentDurability +CL net/minecraft/enchantment/EnchantmentDigging net/minecraft/enchantment/EnchantmentDigging +CL net/minecraft/enchantment/Enchantment net/minecraft/enchantment/Enchantment +CL net/minecraft/enchantment/EnumEnchantmentType net/minecraft/enchantment/EnumEnchantmentType +CL net/minecraft/enchantment/EnchantmentHelper net/minecraft/enchantment/EnchantmentHelper +CL net/minecraft/enchantment/EnchantmentHelper$1 net/minecraft/enchantment/EnchantmentHelper$1 +CL net/minecraft/enchantment/EnchantmentHelper$DamageIterator net/minecraft/enchantment/EnchantmentHelper$DamageIterator +CL net/minecraft/enchantment/EnchantmentHelper$HurtIterator net/minecraft/enchantment/EnchantmentHelper$HurtIterator +CL net/minecraft/enchantment/EnchantmentHelper$IModifier net/minecraft/enchantment/EnchantmentHelper$IModifier +CL net/minecraft/enchantment/EnchantmentHelper$ModifierLiving net/minecraft/enchantment/EnchantmentHelper$ModifierLiving +CL net/minecraft/enchantment/EnchantmentHelper$ModifierDamage net/minecraft/enchantment/EnchantmentHelper$ModifierDamage +CL net/minecraft/enchantment/EnchantmentData net/minecraft/enchantment/EnchantmentData +CL net/minecraft/enchantment/EnchantmentFireAspect net/minecraft/enchantment/EnchantmentFireAspect +CL net/minecraft/enchantment/EnchantmentFishingSpeed net/minecraft/enchantment/EnchantmentFishingSpeed +CL net/minecraft/enchantment/EnchantmentKnockback net/minecraft/enchantment/EnchantmentKnockback +CL net/minecraft/enchantment/EnchantmentLootBonus net/minecraft/enchantment/EnchantmentLootBonus +CL net/minecraft/enchantment/EnchantmentOxygen net/minecraft/enchantment/EnchantmentOxygen +CL net/minecraft/enchantment/EnchantmentProtection net/minecraft/enchantment/EnchantmentProtection +CL net/minecraft/enchantment/EnchantmentThorns net/minecraft/enchantment/EnchantmentThorns +CL net/minecraft/enchantment/EnchantmentUntouching net/minecraft/enchantment/EnchantmentUntouching +CL net/minecraft/enchantment/EnchantmentWaterWalker net/minecraft/enchantment/EnchantmentWaterWalker +CL net/minecraft/enchantment/EnchantmentWaterWorker net/minecraft/enchantment/EnchantmentWaterWorker +CL net/minecraft/entity/IMerchant net/minecraft/entity/IMerchant +CL net/minecraft/village/MerchantRecipe net/minecraft/village/MerchantRecipe +CL net/minecraft/village/MerchantRecipeList net/minecraft/village/MerchantRecipeList +CL net/minecraft/command/server/CommandBlockLogic net/minecraft/command/server/CommandBlockLogic +CL net/minecraft/command/server/CommandBlockLogic$1 net/minecraft/command/server/CommandBlockLogic$1 +CL net/minecraft/command/server/CommandBlockLogic$2 net/minecraft/command/server/CommandBlockLogic$2 +CL net/minecraft/tileentity/MobSpawnerBaseLogic net/minecraft/tileentity/MobSpawnerBaseLogic +CL net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart +CL net/minecraft/block/BlockEventData net/minecraft/block/BlockEventData +CL net/minecraft/util/EnumWorldBlockLayer net/minecraft/util/EnumWorldBlockLayer +CL net/minecraft/world/ChunkCoordIntPair net/minecraft/world/ChunkCoordIntPair +CL net/minecraft/world/Explosion net/minecraft/world/Explosion +CL net/minecraft/world/ColorizerFoliage net/minecraft/world/ColorizerFoliage +CL net/minecraft/world/GameRules net/minecraft/world/GameRules +CL net/minecraft/world/GameRules$Value net/minecraft/world/GameRules$Value +CL net/minecraft/world/GameRules$ValueType net/minecraft/world/GameRules$ValueType +CL net/minecraft/world/ColorizerGrass net/minecraft/world/ColorizerGrass +CL net/minecraft/world/World net/minecraft/world/World +CL net/minecraft/world/World$1 net/minecraft/world/World$1 +CL net/minecraft/world/World$2 net/minecraft/world/World$2 +CL net/minecraft/world/World$3 net/minecraft/world/World$3 +CL net/minecraft/world/World$4 net/minecraft/world/World$4 +CL net/minecraft/world/MinecraftException net/minecraft/world/MinecraftException +CL net/minecraft/world/IWorldAccess net/minecraft/world/IWorldAccess +CL net/minecraft/world/WorldSettings net/minecraft/world/WorldSettings +CL net/minecraft/world/WorldSettings$GameType net/minecraft/world/WorldSettings$GameType +CL net/minecraft/world/IBlockAccess net/minecraft/world/IBlockAccess +CL net/minecraft/world/WorldType net/minecraft/world/WorldType +CL net/minecraft/world/EnumSkyBlock net/minecraft/world/EnumSkyBlock +CL net/minecraft/world/SpawnerAnimals net/minecraft/world/SpawnerAnimals +CL net/minecraft/world/Teleporter net/minecraft/world/Teleporter +CL net/minecraft/world/Teleporter$PortalPosition net/minecraft/world/Teleporter$PortalPosition +CL net/minecraft/world/ChunkCache net/minecraft/world/ChunkCache +CL net/minecraft/world/NextTickListEntry net/minecraft/world/NextTickListEntry +CL net/minecraft/world/biome/BiomeGenBeach net/minecraft/world/biome/BiomeGenBeach +CL net/minecraft/world/biome/BiomeGenBase net/minecraft/world/biome/BiomeGenBase +CL net/minecraft/world/biome/BiomeGenBase$1 net/minecraft/world/biome/BiomeGenBase$1 +CL net/minecraft/world/biome/BiomeGenBase$Height net/minecraft/world/biome/BiomeGenBase$Height +CL net/minecraft/world/biome/BiomeGenBase$TempCategory net/minecraft/world/biome/BiomeGenBase$TempCategory +CL net/minecraft/world/biome/BiomeGenBase$SpawnListEntry net/minecraft/world/biome/BiomeGenBase$SpawnListEntry +CL net/minecraft/world/biome/BiomeCache net/minecraft/world/biome/BiomeCache +CL net/minecraft/world/biome/BiomeCache$Block net/minecraft/world/biome/BiomeCache$Block +CL net/minecraft/world/biome/BiomeColorHelper net/minecraft/world/biome/BiomeColorHelper +CL net/minecraft/world/biome/BiomeColorHelper$1 net/minecraft/world/biome/BiomeColorHelper$1 +CL net/minecraft/world/biome/BiomeColorHelper$2 net/minecraft/world/biome/BiomeColorHelper$2 +CL net/minecraft/world/biome/BiomeColorHelper$3 net/minecraft/world/biome/BiomeColorHelper$3 +CL net/minecraft/world/biome/BiomeColorHelper$ColorResolver net/minecraft/world/biome/BiomeColorHelper$ColorResolver +CL net/minecraft/world/biome/BiomeDecorator net/minecraft/world/biome/BiomeDecorator +CL net/minecraft/world/biome/WorldChunkManager net/minecraft/world/biome/WorldChunkManager +CL net/minecraft/world/biome/BiomeGenDesert net/minecraft/world/biome/BiomeGenDesert +CL net/minecraft/world/biome/BiomeGenHills net/minecraft/world/biome/BiomeGenHills +CL net/minecraft/world/biome/WorldChunkManagerHell net/minecraft/world/biome/WorldChunkManagerHell +CL net/minecraft/world/biome/BiomeGenForest net/minecraft/world/biome/BiomeGenForest +CL net/minecraft/world/biome/BiomeGenForest$2 net/minecraft/world/biome/BiomeGenForest$2 +CL net/minecraft/world/biome/BiomeGenForest$1 net/minecraft/world/biome/BiomeGenForest$1 +CL net/minecraft/world/biome/BiomeGenHell net/minecraft/world/biome/BiomeGenHell +CL net/minecraft/world/biome/BiomeGenSnow net/minecraft/world/biome/BiomeGenSnow +CL net/minecraft/world/biome/BiomeGenJungle net/minecraft/world/biome/BiomeGenJungle +CL net/minecraft/world/biome/BiomeGenMesa net/minecraft/world/biome/BiomeGenMesa +CL net/minecraft/world/biome/BiomeGenMushroomIsland net/minecraft/world/biome/BiomeGenMushroomIsland +CL net/minecraft/world/biome/BiomeGenMutated net/minecraft/world/biome/BiomeGenMutated +CL net/minecraft/world/biome/BiomeGenOcean net/minecraft/world/biome/BiomeGenOcean +CL net/minecraft/world/biome/BiomeGenPlains net/minecraft/world/biome/BiomeGenPlains +CL net/minecraft/world/biome/BiomeGenRiver net/minecraft/world/biome/BiomeGenRiver +CL net/minecraft/world/biome/BiomeGenSavanna net/minecraft/world/biome/BiomeGenSavanna +CL net/minecraft/world/biome/BiomeGenSavanna$Mutated net/minecraft/world/biome/BiomeGenSavanna$Mutated +CL net/minecraft/world/biome/BiomeGenStoneBeach net/minecraft/world/biome/BiomeGenStoneBeach +CL net/minecraft/world/biome/BiomeGenSwamp net/minecraft/world/biome/BiomeGenSwamp +CL net/minecraft/world/biome/BiomeGenTaiga net/minecraft/world/biome/BiomeGenTaiga +CL net/minecraft/world/biome/BiomeGenEnd net/minecraft/world/biome/BiomeGenEnd +CL net/minecraft/world/biome/BiomeEndDecorator net/minecraft/world/biome/BiomeEndDecorator +CL net/minecraft/block/BlockAir net/minecraft/block/BlockAir +CL net/minecraft/block/BlockAnvil net/minecraft/block/BlockAnvil +CL net/minecraft/block/BlockAnvil$Anvil net/minecraft/block/BlockAnvil$Anvil +CL net/minecraft/block/BlockBanner net/minecraft/block/BlockBanner +CL net/minecraft/block/BlockBanner$1 net/minecraft/block/BlockBanner$1 +CL net/minecraft/block/BlockBanner$BlockBannerStanding net/minecraft/block/BlockBanner$BlockBannerStanding +CL net/minecraft/block/BlockBanner$BlockBannerHanging net/minecraft/block/BlockBanner$BlockBannerHanging +CL net/minecraft/block/BlockBarrier net/minecraft/block/BlockBarrier +CL net/minecraft/block/BlockContainer net/minecraft/block/BlockContainer +CL net/minecraft/block/BlockBasePressurePlate net/minecraft/block/BlockBasePressurePlate +CL net/minecraft/block/BlockRailBase net/minecraft/block/BlockRailBase +CL net/minecraft/block/BlockRailBase$1 net/minecraft/block/BlockRailBase$1 +CL net/minecraft/block/BlockRailBase$Rail net/minecraft/block/BlockRailBase$Rail +CL net/minecraft/block/BlockRailBase$EnumRailDirection net/minecraft/block/BlockRailBase$EnumRailDirection +CL net/minecraft/block/BlockBeacon net/minecraft/block/BlockBeacon +CL net/minecraft/block/BlockBeacon$1 net/minecraft/block/BlockBeacon$1 +CL net/minecraft/block/BlockBeacon$1$1 net/minecraft/block/BlockBeacon$1$1 +CL net/minecraft/block/BlockBed net/minecraft/block/BlockBed +CL net/minecraft/block/BlockBed$EnumPartType net/minecraft/block/BlockBed$EnumPartType +CL net/minecraft/block/Block net/minecraft/block/Block +CL net/minecraft/block/Block$1 net/minecraft/block/Block$1 +CL net/minecraft/block/Block$2 net/minecraft/block/Block$2 +CL net/minecraft/block/Block$3 net/minecraft/block/Block$3 +CL net/minecraft/block/Block$4 net/minecraft/block/Block$4 +CL net/minecraft/block/Block$EnumOffsetType net/minecraft/block/Block$EnumOffsetType +CL net/minecraft/block/Block$SoundType net/minecraft/block/Block$SoundType +CL net/minecraft/init/Blocks net/minecraft/init/Blocks +CL net/minecraft/block/IGrowable net/minecraft/block/IGrowable +CL net/minecraft/block/BlockBookshelf net/minecraft/block/BlockBookshelf +CL net/minecraft/block/BlockBrewingStand net/minecraft/block/BlockBrewingStand +CL net/minecraft/block/BlockBush net/minecraft/block/BlockBush +CL net/minecraft/block/BlockButton net/minecraft/block/BlockButton +CL net/minecraft/block/BlockButton$1 net/minecraft/block/BlockButton$1 +CL net/minecraft/block/BlockCactus net/minecraft/block/BlockCactus +CL net/minecraft/block/BlockCake net/minecraft/block/BlockCake +CL net/minecraft/block/BlockCarrot net/minecraft/block/BlockCarrot +CL net/minecraft/block/BlockCauldron net/minecraft/block/BlockCauldron +CL net/minecraft/block/BlockChest net/minecraft/block/BlockChest +CL net/minecraft/block/BlockClay net/minecraft/block/BlockClay +CL net/minecraft/block/BlockCocoa net/minecraft/block/BlockCocoa +CL net/minecraft/block/BlockCocoa$1 net/minecraft/block/BlockCocoa$1 +CL net/minecraft/block/BlockColored net/minecraft/block/BlockColored +CL net/minecraft/block/BlockCommandBlock net/minecraft/block/BlockCommandBlock +CL net/minecraft/block/BlockRedstoneComparator net/minecraft/block/BlockRedstoneComparator +CL net/minecraft/block/BlockRedstoneComparator$1 net/minecraft/block/BlockRedstoneComparator$1 +CL net/minecraft/block/BlockRedstoneComparator$Mode net/minecraft/block/BlockRedstoneComparator$Mode +CL net/minecraft/block/BlockWorkbench net/minecraft/block/BlockWorkbench +CL net/minecraft/block/BlockWorkbench$InterfaceCraftingTable net/minecraft/block/BlockWorkbench$InterfaceCraftingTable +CL net/minecraft/block/BlockCrops net/minecraft/block/BlockCrops +CL net/minecraft/block/BlockDaylightDetector net/minecraft/block/BlockDaylightDetector +CL net/minecraft/block/BlockDeadBush net/minecraft/block/BlockDeadBush +CL net/minecraft/block/BlockRailDetector net/minecraft/block/BlockRailDetector +CL net/minecraft/block/BlockRailDetector$1 net/minecraft/block/BlockRailDetector$1 +CL net/minecraft/block/BlockRedstoneDiode net/minecraft/block/BlockRedstoneDiode +CL net/minecraft/block/BlockDirectional net/minecraft/block/BlockDirectional +CL net/minecraft/block/BlockDirt net/minecraft/block/BlockDirt +CL net/minecraft/block/BlockDirt$DirtType net/minecraft/block/BlockDirt$DirtType +CL net/minecraft/block/BlockDispenser net/minecraft/block/BlockDispenser +CL net/minecraft/block/BlockDoor net/minecraft/block/BlockDoor +CL net/minecraft/block/BlockDoor$EnumDoorHalf net/minecraft/block/BlockDoor$EnumDoorHalf +CL net/minecraft/block/BlockDoor$EnumHingePosition net/minecraft/block/BlockDoor$EnumHingePosition +CL net/minecraft/block/BlockDoublePlant net/minecraft/block/BlockDoublePlant +CL net/minecraft/block/BlockDoublePlant$EnumBlockHalf net/minecraft/block/BlockDoublePlant$EnumBlockHalf +CL net/minecraft/block/BlockDoublePlant$EnumPlantType net/minecraft/block/BlockDoublePlant$EnumPlantType +CL net/minecraft/block/BlockDragonEgg net/minecraft/block/BlockDragonEgg +CL net/minecraft/block/BlockDropper net/minecraft/block/BlockDropper +CL net/minecraft/block/BlockDynamicLiquid net/minecraft/block/BlockDynamicLiquid +CL net/minecraft/block/BlockEnchantmentTable net/minecraft/block/BlockEnchantmentTable +CL net/minecraft/block/BlockEndPortal net/minecraft/block/BlockEndPortal +CL net/minecraft/block/BlockEndPortalFrame net/minecraft/block/BlockEndPortalFrame +CL net/minecraft/block/BlockEnderChest net/minecraft/block/BlockEnderChest +CL net/minecraft/block/ITileEntityProvider net/minecraft/block/ITileEntityProvider +CL net/minecraft/block/BlockFalling net/minecraft/block/BlockFalling +CL net/minecraft/block/BlockFarmland net/minecraft/block/BlockFarmland +CL net/minecraft/block/BlockFarmland$1 net/minecraft/block/BlockFarmland$1 +CL net/minecraft/block/BlockFence net/minecraft/block/BlockFence +CL net/minecraft/block/BlockFenceGate net/minecraft/block/BlockFenceGate +CL net/minecraft/block/BlockFire net/minecraft/block/BlockFire +CL net/minecraft/block/BlockFlower net/minecraft/block/BlockFlower +CL net/minecraft/block/BlockFlower$1 net/minecraft/block/BlockFlower$1 +CL net/minecraft/block/BlockFlower$EnumFlowerType net/minecraft/block/BlockFlower$EnumFlowerType +CL net/minecraft/block/BlockFlower$EnumFlowerType$1 net/minecraft/block/BlockFlower$EnumFlowerType$1 +CL net/minecraft/block/BlockFlower$EnumFlowerColor net/minecraft/block/BlockFlower$EnumFlowerColor +CL net/minecraft/block/BlockFlowerPot net/minecraft/block/BlockFlowerPot +CL net/minecraft/block/BlockFlowerPot$1 net/minecraft/block/BlockFlowerPot$1 +CL net/minecraft/block/BlockFlowerPot$EnumFlowerType net/minecraft/block/BlockFlowerPot$EnumFlowerType +CL net/minecraft/block/BlockDoubleStoneSlabNew net/minecraft/block/BlockDoubleStoneSlabNew +CL net/minecraft/block/BlockDoubleStoneSlab net/minecraft/block/BlockDoubleStoneSlab +CL net/minecraft/block/BlockDoubleWoodSlab net/minecraft/block/BlockDoubleWoodSlab +CL net/minecraft/block/BlockFurnace net/minecraft/block/BlockFurnace +CL net/minecraft/block/BlockFurnace$1 net/minecraft/block/BlockFurnace$1 +CL net/minecraft/block/BlockGlass net/minecraft/block/BlockGlass +CL net/minecraft/block/BlockGlowstone net/minecraft/block/BlockGlowstone +CL net/minecraft/block/BlockGrass net/minecraft/block/BlockGrass +CL net/minecraft/block/BlockGravel net/minecraft/block/BlockGravel +CL net/minecraft/block/BlockHalfStoneSlabNew net/minecraft/block/BlockHalfStoneSlabNew +CL net/minecraft/block/BlockSlab net/minecraft/block/BlockSlab +CL net/minecraft/block/BlockSlab$EnumBlockHalf net/minecraft/block/BlockSlab$EnumBlockHalf +CL net/minecraft/block/BlockHalfStoneSlab net/minecraft/block/BlockHalfStoneSlab +CL net/minecraft/block/BlockBreakable net/minecraft/block/BlockBreakable +CL net/minecraft/block/BlockHalfWoodSlab net/minecraft/block/BlockHalfWoodSlab +CL net/minecraft/block/BlockHardenedClay net/minecraft/block/BlockHardenedClay +CL net/minecraft/block/BlockHay net/minecraft/block/BlockHay +CL net/minecraft/block/BlockHopper net/minecraft/block/BlockHopper +CL net/minecraft/block/BlockHopper$1 net/minecraft/block/BlockHopper$1 +CL net/minecraft/block/BlockHugeMushroom net/minecraft/block/BlockHugeMushroom +CL net/minecraft/block/BlockHugeMushroom$1 net/minecraft/block/BlockHugeMushroom$1 +CL net/minecraft/block/BlockHugeMushroom$EnumType net/minecraft/block/BlockHugeMushroom$EnumType +CL net/minecraft/block/BlockIce net/minecraft/block/BlockIce +CL net/minecraft/block/BlockJukebox net/minecraft/block/BlockJukebox +CL net/minecraft/block/BlockJukebox$TileEntityJukebox net/minecraft/block/BlockJukebox$TileEntityJukebox +CL net/minecraft/block/BlockLadder net/minecraft/block/BlockLadder +CL net/minecraft/block/BlockLadder$1 net/minecraft/block/BlockLadder$1 +CL net/minecraft/block/BlockLeaves net/minecraft/block/BlockLeaves +CL net/minecraft/block/BlockLever net/minecraft/block/BlockLever +CL net/minecraft/block/BlockLever$1 net/minecraft/block/BlockLever$1 +CL net/minecraft/block/BlockLever$EnumOrientation net/minecraft/block/BlockLever$EnumOrientation +CL net/minecraft/block/BlockLiquid net/minecraft/block/BlockLiquid +CL net/minecraft/block/BlockLog net/minecraft/block/BlockLog +CL net/minecraft/block/BlockLog$1 net/minecraft/block/BlockLog$1 +CL net/minecraft/block/BlockLog$EnumAxis net/minecraft/block/BlockLog$EnumAxis +CL net/minecraft/block/BlockMelon net/minecraft/block/BlockMelon +CL net/minecraft/block/BlockMobSpawner net/minecraft/block/BlockMobSpawner +CL net/minecraft/block/BlockSilverfish net/minecraft/block/BlockSilverfish +CL net/minecraft/block/BlockSilverfish$1 net/minecraft/block/BlockSilverfish$1 +CL net/minecraft/block/BlockSilverfish$EnumType net/minecraft/block/BlockSilverfish$EnumType +CL net/minecraft/block/BlockSilverfish$EnumType$1 net/minecraft/block/BlockSilverfish$EnumType$1 +CL net/minecraft/block/BlockSilverfish$EnumType$2 net/minecraft/block/BlockSilverfish$EnumType$2 +CL net/minecraft/block/BlockSilverfish$EnumType$3 net/minecraft/block/BlockSilverfish$EnumType$3 +CL net/minecraft/block/BlockSilverfish$EnumType$4 net/minecraft/block/BlockSilverfish$EnumType$4 +CL net/minecraft/block/BlockSilverfish$EnumType$5 net/minecraft/block/BlockSilverfish$EnumType$5 +CL net/minecraft/block/BlockSilverfish$EnumType$6 net/minecraft/block/BlockSilverfish$EnumType$6 +CL net/minecraft/block/BlockMushroom net/minecraft/block/BlockMushroom +CL net/minecraft/block/BlockMycelium net/minecraft/block/BlockMycelium +CL net/minecraft/block/BlockNetherBrick net/minecraft/block/BlockNetherBrick +CL net/minecraft/block/BlockNetherWart net/minecraft/block/BlockNetherWart +CL net/minecraft/block/BlockNetherrack net/minecraft/block/BlockNetherrack +CL net/minecraft/block/BlockNewLeaf net/minecraft/block/BlockNewLeaf +CL net/minecraft/block/BlockNewLeaf$1 net/minecraft/block/BlockNewLeaf$1 +CL net/minecraft/block/BlockNewLog net/minecraft/block/BlockNewLog +CL net/minecraft/block/BlockNewLog$1 net/minecraft/block/BlockNewLog$1 +CL net/minecraft/block/BlockNewLog$2 net/minecraft/block/BlockNewLog$2 +CL net/minecraft/block/BlockStoneSlabNew net/minecraft/block/BlockStoneSlabNew +CL net/minecraft/block/BlockStoneSlabNew$EnumType net/minecraft/block/BlockStoneSlabNew$EnumType +CL net/minecraft/block/BlockNote net/minecraft/block/BlockNote +CL net/minecraft/block/BlockObsidian net/minecraft/block/BlockObsidian +CL net/minecraft/block/BlockOldLeaf net/minecraft/block/BlockOldLeaf +CL net/minecraft/block/BlockOldLeaf$1 net/minecraft/block/BlockOldLeaf$1 +CL net/minecraft/block/BlockOldLog net/minecraft/block/BlockOldLog +CL net/minecraft/block/BlockOldLog$1 net/minecraft/block/BlockOldLog$1 +CL net/minecraft/block/BlockOldLog$2 net/minecraft/block/BlockOldLog$2 +CL net/minecraft/block/BlockOre net/minecraft/block/BlockOre +CL net/minecraft/block/BlockPackedIce net/minecraft/block/BlockPackedIce +CL net/minecraft/block/BlockPlanks net/minecraft/block/BlockPlanks +CL net/minecraft/block/BlockPlanks$EnumType net/minecraft/block/BlockPlanks$EnumType +CL net/minecraft/block/BlockPortal net/minecraft/block/BlockPortal +CL net/minecraft/block/BlockPortal$Size net/minecraft/block/BlockPortal$Size +CL net/minecraft/block/BlockPotato net/minecraft/block/BlockPotato +CL net/minecraft/block/BlockCompressedPowered net/minecraft/block/BlockCompressedPowered +CL net/minecraft/block/BlockRailPowered net/minecraft/block/BlockRailPowered +CL net/minecraft/block/BlockRailPowered$1 net/minecraft/block/BlockRailPowered$1 +CL net/minecraft/block/BlockRailPowered$2 net/minecraft/block/BlockRailPowered$2 +CL net/minecraft/block/BlockPressurePlate net/minecraft/block/BlockPressurePlate +CL net/minecraft/block/BlockPressurePlate$1 net/minecraft/block/BlockPressurePlate$1 +CL net/minecraft/block/BlockPressurePlate$Sensitivity net/minecraft/block/BlockPressurePlate$Sensitivity +CL net/minecraft/block/BlockPrismarine net/minecraft/block/BlockPrismarine +CL net/minecraft/block/BlockPrismarine$EnumType net/minecraft/block/BlockPrismarine$EnumType +CL net/minecraft/block/BlockPumpkin net/minecraft/block/BlockPumpkin +CL net/minecraft/block/BlockPumpkin$1 net/minecraft/block/BlockPumpkin$1 +CL net/minecraft/block/BlockQuartz net/minecraft/block/BlockQuartz +CL net/minecraft/block/BlockQuartz$1 net/minecraft/block/BlockQuartz$1 +CL net/minecraft/block/BlockQuartz$EnumType net/minecraft/block/BlockQuartz$EnumType +CL net/minecraft/block/BlockRail net/minecraft/block/BlockRail +CL net/minecraft/block/BlockRedFlower net/minecraft/block/BlockRedFlower +CL net/minecraft/block/BlockRedSandstone net/minecraft/block/BlockRedSandstone +CL net/minecraft/block/BlockRedSandstone$EnumType net/minecraft/block/BlockRedSandstone$EnumType +CL net/minecraft/block/BlockRedstoneOre net/minecraft/block/BlockRedstoneOre +CL net/minecraft/block/BlockRedstoneWire net/minecraft/block/BlockRedstoneWire +CL net/minecraft/block/BlockRedstoneWire$EnumAttachPosition net/minecraft/block/BlockRedstoneWire$EnumAttachPosition +CL net/minecraft/block/BlockRedstoneLight net/minecraft/block/BlockRedstoneLight +CL net/minecraft/block/BlockRedstoneTorch net/minecraft/block/BlockRedstoneTorch +CL net/minecraft/block/BlockRedstoneTorch$Toggle net/minecraft/block/BlockRedstoneTorch$Toggle +CL net/minecraft/block/BlockReed net/minecraft/block/BlockReed +CL net/minecraft/block/BlockRedstoneRepeater net/minecraft/block/BlockRedstoneRepeater +CL net/minecraft/block/BlockRotatedPillar net/minecraft/block/BlockRotatedPillar +CL net/minecraft/block/BlockSand net/minecraft/block/BlockSand +CL net/minecraft/block/BlockSand$EnumType net/minecraft/block/BlockSand$EnumType +CL net/minecraft/block/BlockSandStone net/minecraft/block/BlockSandStone +CL net/minecraft/block/BlockSandStone$EnumType net/minecraft/block/BlockSandStone$EnumType +CL net/minecraft/block/BlockSapling net/minecraft/block/BlockSapling +CL net/minecraft/block/BlockSapling$1 net/minecraft/block/BlockSapling$1 +CL net/minecraft/block/BlockSeaLantern net/minecraft/block/BlockSeaLantern +CL net/minecraft/block/BlockSign net/minecraft/block/BlockSign +CL net/minecraft/block/BlockSkull net/minecraft/block/BlockSkull +CL net/minecraft/block/BlockSkull$1 net/minecraft/block/BlockSkull$1 +CL net/minecraft/block/BlockSkull$2 net/minecraft/block/BlockSkull$2 +CL net/minecraft/block/BlockSlime net/minecraft/block/BlockSlime +CL net/minecraft/block/BlockSnowBlock net/minecraft/block/BlockSnowBlock +CL net/minecraft/block/BlockSnow net/minecraft/block/BlockSnow +CL net/minecraft/block/BlockSoulSand net/minecraft/block/BlockSoulSand +CL net/minecraft/block/BlockSponge net/minecraft/block/BlockSponge +CL net/minecraft/block/BlockStainedGlass net/minecraft/block/BlockStainedGlass +CL net/minecraft/block/BlockStainedGlassPane net/minecraft/block/BlockStainedGlassPane +CL net/minecraft/block/BlockStairs net/minecraft/block/BlockStairs +CL net/minecraft/block/BlockStairs$EnumHalf net/minecraft/block/BlockStairs$EnumHalf +CL net/minecraft/block/BlockStairs$EnumShape net/minecraft/block/BlockStairs$EnumShape +CL net/minecraft/block/BlockStandingSign net/minecraft/block/BlockStandingSign +CL net/minecraft/block/BlockStaticLiquid net/minecraft/block/BlockStaticLiquid +CL net/minecraft/block/BlockStem net/minecraft/block/BlockStem +CL net/minecraft/block/BlockStem$1 net/minecraft/block/BlockStem$1 +CL net/minecraft/block/BlockStone net/minecraft/block/BlockStone +CL net/minecraft/block/BlockStone$EnumType net/minecraft/block/BlockStone$EnumType +CL net/minecraft/block/BlockStoneBrick net/minecraft/block/BlockStoneBrick +CL net/minecraft/block/BlockStoneBrick$EnumType net/minecraft/block/BlockStoneBrick$EnumType +CL net/minecraft/block/BlockButtonStone net/minecraft/block/BlockButtonStone +CL net/minecraft/block/BlockStoneSlab net/minecraft/block/BlockStoneSlab +CL net/minecraft/block/BlockStoneSlab$EnumType net/minecraft/block/BlockStoneSlab$EnumType +CL net/minecraft/block/BlockTallGrass net/minecraft/block/BlockTallGrass +CL net/minecraft/block/BlockTallGrass$EnumType net/minecraft/block/BlockTallGrass$EnumType +CL net/minecraft/block/BlockPane net/minecraft/block/BlockPane +CL net/minecraft/block/BlockTNT net/minecraft/block/BlockTNT +CL net/minecraft/block/BlockTorch net/minecraft/block/BlockTorch +CL net/minecraft/block/BlockTorch$1 net/minecraft/block/BlockTorch$1 +CL net/minecraft/block/BlockTorch$2 net/minecraft/block/BlockTorch$2 +CL net/minecraft/block/BlockLeavesBase net/minecraft/block/BlockLeavesBase +CL net/minecraft/block/BlockTrapDoor net/minecraft/block/BlockTrapDoor +CL net/minecraft/block/BlockTrapDoor$1 net/minecraft/block/BlockTrapDoor$1 +CL net/minecraft/block/BlockTrapDoor$DoorHalf net/minecraft/block/BlockTrapDoor$DoorHalf +CL net/minecraft/block/BlockTripWire net/minecraft/block/BlockTripWire +CL net/minecraft/block/BlockTripWireHook net/minecraft/block/BlockTripWireHook +CL net/minecraft/block/BlockTripWireHook$1 net/minecraft/block/BlockTripWireHook$1 +CL net/minecraft/block/BlockVine net/minecraft/block/BlockVine +CL net/minecraft/block/BlockVine$1 net/minecraft/block/BlockVine$1 +CL net/minecraft/block/BlockWall net/minecraft/block/BlockWall +CL net/minecraft/block/BlockWall$EnumType net/minecraft/block/BlockWall$EnumType +CL net/minecraft/block/BlockWallSign net/minecraft/block/BlockWallSign +CL net/minecraft/block/BlockWallSign$1 net/minecraft/block/BlockWallSign$1 +CL net/minecraft/block/BlockLilyPad net/minecraft/block/BlockLilyPad +CL net/minecraft/block/BlockWeb net/minecraft/block/BlockWeb +CL net/minecraft/block/BlockPressurePlateWeighted net/minecraft/block/BlockPressurePlateWeighted +CL net/minecraft/block/BlockButtonWood net/minecraft/block/BlockButtonWood +CL net/minecraft/block/BlockWoodSlab net/minecraft/block/BlockWoodSlab +CL net/minecraft/block/BlockCarpet net/minecraft/block/BlockCarpet +CL net/minecraft/block/BlockYellowFlower net/minecraft/block/BlockYellowFlower +CL net/minecraft/tileentity/TileEntityBanner net/minecraft/tileentity/TileEntityBanner +CL net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern +CL net/minecraft/tileentity/TileEntityBeacon net/minecraft/tileentity/TileEntityBeacon +CL net/minecraft/tileentity/TileEntityBeacon$BeamSegment net/minecraft/tileentity/TileEntityBeacon$BeamSegment +CL net/minecraft/tileentity/TileEntity net/minecraft/tileentity/TileEntity +CL net/minecraft/tileentity/TileEntity$1 net/minecraft/tileentity/TileEntity$1 +CL net/minecraft/tileentity/TileEntity$2 net/minecraft/tileentity/TileEntity$2 +CL net/minecraft/tileentity/TileEntity$3 net/minecraft/tileentity/TileEntity$3 +CL net/minecraft/tileentity/TileEntityBrewingStand net/minecraft/tileentity/TileEntityBrewingStand +CL net/minecraft/tileentity/TileEntityChest net/minecraft/tileentity/TileEntityChest +CL net/minecraft/tileentity/TileEntityChest$1 net/minecraft/tileentity/TileEntityChest$1 +CL net/minecraft/tileentity/TileEntityCommandBlock net/minecraft/tileentity/TileEntityCommandBlock +CL net/minecraft/tileentity/TileEntityCommandBlock$1 net/minecraft/tileentity/TileEntityCommandBlock$1 +CL net/minecraft/tileentity/TileEntityComparator net/minecraft/tileentity/TileEntityComparator +CL net/minecraft/tileentity/TileEntityDaylightDetector net/minecraft/tileentity/TileEntityDaylightDetector +CL net/minecraft/tileentity/TileEntityDispenser net/minecraft/tileentity/TileEntityDispenser +CL net/minecraft/tileentity/TileEntityDropper net/minecraft/tileentity/TileEntityDropper +CL net/minecraft/tileentity/TileEntityEnchantmentTable net/minecraft/tileentity/TileEntityEnchantmentTable +CL net/minecraft/tileentity/TileEntityEnderChest net/minecraft/tileentity/TileEntityEnderChest +CL net/minecraft/tileentity/TileEntityFlowerPot net/minecraft/tileentity/TileEntityFlowerPot +CL net/minecraft/tileentity/TileEntityFurnace net/minecraft/tileentity/TileEntityFurnace +CL net/minecraft/tileentity/IHopper net/minecraft/tileentity/IHopper +CL net/minecraft/tileentity/TileEntityHopper net/minecraft/tileentity/TileEntityHopper +CL net/minecraft/tileentity/TileEntityLockable net/minecraft/tileentity/TileEntityLockable +CL net/minecraft/tileentity/TileEntityMobSpawner net/minecraft/tileentity/TileEntityMobSpawner +CL net/minecraft/tileentity/TileEntityMobSpawner$1 net/minecraft/tileentity/TileEntityMobSpawner$1 +CL net/minecraft/tileentity/TileEntityNote net/minecraft/tileentity/TileEntityNote +CL net/minecraft/tileentity/TileEntitySign net/minecraft/tileentity/TileEntitySign +CL net/minecraft/tileentity/TileEntitySign$1 net/minecraft/tileentity/TileEntitySign$1 +CL net/minecraft/tileentity/TileEntitySign$2 net/minecraft/tileentity/TileEntitySign$2 +CL net/minecraft/tileentity/TileEntitySkull net/minecraft/tileentity/TileEntitySkull +CL net/minecraft/tileentity/TileEntityEndPortal net/minecraft/tileentity/TileEntityEndPortal +CL net/minecraft/block/BlockPistonBase net/minecraft/block/BlockPistonBase +CL net/minecraft/block/BlockPistonBase$1 net/minecraft/block/BlockPistonBase$1 +CL net/minecraft/block/BlockPistonExtension net/minecraft/block/BlockPistonExtension +CL net/minecraft/block/BlockPistonExtension$1 net/minecraft/block/BlockPistonExtension$1 +CL net/minecraft/block/BlockPistonExtension$EnumPistonType net/minecraft/block/BlockPistonExtension$EnumPistonType +CL net/minecraft/tileentity/TileEntityPiston net/minecraft/tileentity/TileEntityPiston +CL net/minecraft/tileentity/TileEntityPiston$1 net/minecraft/tileentity/TileEntityPiston$1 +CL net/minecraft/block/BlockPistonMoving net/minecraft/block/BlockPistonMoving +CL net/minecraft/block/state/BlockPistonStructureHelper net/minecraft/block/state/BlockPistonStructureHelper +CL net/minecraft/block/state/BlockStateBase net/minecraft/block/state/BlockStateBase +CL net/minecraft/block/state/BlockStateBase$1 net/minecraft/block/state/BlockStateBase$1 +CL net/minecraft/block/state/IBlockState net/minecraft/block/state/IBlockState +CL net/minecraft/block/state/BlockState net/minecraft/block/state/BlockState +CL net/minecraft/block/state/BlockState$1 net/minecraft/block/state/BlockState$1 +CL net/minecraft/block/state/BlockState$2 net/minecraft/block/state/BlockState$2 +CL net/minecraft/block/state/BlockState$StateImplementation net/minecraft/block/state/BlockState$StateImplementation +CL net/minecraft/block/state/BlockWorldState net/minecraft/block/state/BlockWorldState +CL net/minecraft/block/state/BlockWorldState$1 net/minecraft/block/state/BlockWorldState$1 +CL net/minecraft/block/state/pattern/BlockPattern net/minecraft/block/state/pattern/BlockPattern +CL net/minecraft/block/state/pattern/BlockPattern$CacheLoader net/minecraft/block/state/pattern/BlockPattern$CacheLoader +CL net/minecraft/block/state/pattern/BlockPattern$PatternHelper net/minecraft/block/state/pattern/BlockPattern$PatternHelper +CL net/minecraft/block/state/pattern/FactoryBlockPattern net/minecraft/block/state/pattern/FactoryBlockPattern +CL net/minecraft/block/state/pattern/BlockHelper net/minecraft/block/state/pattern/BlockHelper +CL net/minecraft/block/state/pattern/BlockStateHelper net/minecraft/block/state/pattern/BlockStateHelper +CL net/minecraft/block/properties/PropertyHelper net/minecraft/block/properties/PropertyHelper +CL net/minecraft/block/properties/PropertyBool net/minecraft/block/properties/PropertyBool +CL net/minecraft/block/properties/PropertyDirection net/minecraft/block/properties/PropertyDirection +CL net/minecraft/block/properties/PropertyEnum net/minecraft/block/properties/PropertyEnum +CL net/minecraft/block/properties/PropertyInteger net/minecraft/block/properties/PropertyInteger +CL net/minecraft/block/properties/IProperty net/minecraft/block/properties/IProperty +CL net/minecraft/world/border/IBorderListener net/minecraft/world/border/IBorderListener +CL net/minecraft/world/border/EnumBorderStatus net/minecraft/world/border/EnumBorderStatus +CL net/minecraft/world/border/WorldBorder net/minecraft/world/border/WorldBorder +CL net/minecraft/world/chunk/IChunkProvider net/minecraft/world/chunk/IChunkProvider +CL net/minecraft/world/chunk/NibbleArray net/minecraft/world/chunk/NibbleArray +CL net/minecraft/world/chunk/EmptyChunk net/minecraft/world/chunk/EmptyChunk +CL net/minecraft/world/chunk/Chunk net/minecraft/world/chunk/Chunk +CL net/minecraft/world/chunk/Chunk$1 net/minecraft/world/chunk/Chunk$1 +CL net/minecraft/world/chunk/Chunk$2 net/minecraft/world/chunk/Chunk$2 +CL net/minecraft/world/chunk/Chunk$3 net/minecraft/world/chunk/Chunk$3 +CL net/minecraft/world/chunk/Chunk$EnumCreateEntityType net/minecraft/world/chunk/Chunk$EnumCreateEntityType +CL net/minecraft/world/chunk/storage/ExtendedBlockStorage net/minecraft/world/chunk/storage/ExtendedBlockStorage +CL net/minecraft/world/chunk/storage/NibbleArrayReader net/minecraft/world/chunk/storage/NibbleArrayReader +CL net/minecraft/world/chunk/storage/IChunkLoader net/minecraft/world/chunk/storage/IChunkLoader +CL net/minecraft/world/chunk/storage/ChunkLoader net/minecraft/world/chunk/storage/ChunkLoader +CL net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData +CL net/minecraft/world/chunk/storage/RegionFile net/minecraft/world/chunk/storage/RegionFile +CL net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer +CL net/minecraft/world/chunk/storage/RegionFileCache net/minecraft/world/chunk/storage/RegionFileCache +CL net/minecraft/world/chunk/storage/AnvilChunkLoader net/minecraft/world/chunk/storage/AnvilChunkLoader +CL net/minecraft/world/WorldProvider net/minecraft/world/WorldProvider +CL net/minecraft/world/WorldProviderHell net/minecraft/world/WorldProviderHell +CL net/minecraft/world/WorldProviderHell$1 net/minecraft/world/WorldProviderHell$1 +CL net/minecraft/world/WorldProviderSurface net/minecraft/world/WorldProviderSurface +CL net/minecraft/world/WorldProviderEnd net/minecraft/world/WorldProviderEnd +CL net/minecraft/world/gen/MapGenRavine net/minecraft/world/gen/MapGenRavine +CL net/minecraft/world/chunk/ChunkPrimer net/minecraft/world/chunk/ChunkPrimer +CL net/minecraft/world/gen/ChunkProviderSettings net/minecraft/world/gen/ChunkProviderSettings +CL net/minecraft/world/gen/ChunkProviderSettings$1 net/minecraft/world/gen/ChunkProviderSettings$1 +CL net/minecraft/world/gen/ChunkProviderSettings$Factory net/minecraft/world/gen/ChunkProviderSettings$Factory +CL net/minecraft/world/gen/ChunkProviderSettings$Serializer net/minecraft/world/gen/ChunkProviderSettings$Serializer +CL net/minecraft/world/gen/ChunkProviderDebug net/minecraft/world/gen/ChunkProviderDebug +CL net/minecraft/world/gen/ChunkProviderFlat net/minecraft/world/gen/ChunkProviderFlat +CL net/minecraft/world/gen/ChunkProviderHell net/minecraft/world/gen/ChunkProviderHell +CL net/minecraft/world/gen/MapGenCaves net/minecraft/world/gen/MapGenCaves +CL net/minecraft/world/gen/MapGenBase net/minecraft/world/gen/MapGenBase +CL net/minecraft/world/gen/MapGenCavesHell net/minecraft/world/gen/MapGenCavesHell +CL net/minecraft/world/gen/ChunkProviderGenerate net/minecraft/world/gen/ChunkProviderGenerate +CL net/minecraft/world/gen/ChunkProviderEnd net/minecraft/world/gen/ChunkProviderEnd +CL net/minecraft/world/gen/feature/WorldGenAbstractTree net/minecraft/world/gen/feature/WorldGenAbstractTree +CL net/minecraft/world/gen/feature/WorldGenBigTree net/minecraft/world/gen/feature/WorldGenBigTree +CL net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates +CL net/minecraft/world/gen/feature/WorldGenForest net/minecraft/world/gen/feature/WorldGenForest +CL net/minecraft/world/gen/feature/WorldGenBlockBlob net/minecraft/world/gen/feature/WorldGenBlockBlob +CL net/minecraft/world/gen/feature/WorldGeneratorBonusChest net/minecraft/world/gen/feature/WorldGeneratorBonusChest +CL net/minecraft/world/gen/GeneratorBushFeature net/minecraft/world/gen/GeneratorBushFeature +CL net/minecraft/world/gen/feature/WorldGenCactus net/minecraft/world/gen/feature/WorldGenCactus +CL net/minecraft/world/gen/feature/WorldGenClay net/minecraft/world/gen/feature/WorldGenClay +CL net/minecraft/world/gen/feature/WorldGenDeadBush net/minecraft/world/gen/feature/WorldGenDeadBush +CL net/minecraft/world/gen/feature/WorldGenDesertWells net/minecraft/world/gen/feature/WorldGenDesertWells +CL net/minecraft/world/gen/feature/WorldGenDoublePlant net/minecraft/world/gen/feature/WorldGenDoublePlant +CL net/minecraft/world/gen/feature/WorldGenerator net/minecraft/world/gen/feature/WorldGenerator +CL net/minecraft/world/gen/feature/WorldGenFlowers net/minecraft/world/gen/feature/WorldGenFlowers +CL net/minecraft/world/gen/feature/WorldGenShrub net/minecraft/world/gen/feature/WorldGenShrub +CL net/minecraft/world/gen/feature/WorldGenFire net/minecraft/world/gen/feature/WorldGenFire +CL net/minecraft/world/gen/feature/WorldGenGlowStone2 net/minecraft/world/gen/feature/WorldGenGlowStone2 +CL net/minecraft/world/gen/feature/WorldGenHellLava net/minecraft/world/gen/feature/WorldGenHellLava +CL net/minecraft/world/gen/feature/WorldGenBigMushroom net/minecraft/world/gen/feature/WorldGenBigMushroom +CL net/minecraft/world/gen/feature/WorldGenIcePath net/minecraft/world/gen/feature/WorldGenIcePath +CL net/minecraft/world/gen/feature/WorldGenIceSpike net/minecraft/world/gen/feature/WorldGenIceSpike +CL net/minecraft/world/gen/feature/WorldGenLakes net/minecraft/world/gen/feature/WorldGenLakes +CL net/minecraft/world/gen/feature/WorldGenGlowStone1 net/minecraft/world/gen/feature/WorldGenGlowStone1 +CL net/minecraft/world/gen/feature/WorldGenMegaJungle net/minecraft/world/gen/feature/WorldGenMegaJungle +CL net/minecraft/world/gen/feature/WorldGenMegaPineTree net/minecraft/world/gen/feature/WorldGenMegaPineTree +CL net/minecraft/world/gen/feature/WorldGenHugeTrees net/minecraft/world/gen/feature/WorldGenHugeTrees +CL net/minecraft/world/gen/feature/WorldGenMelon net/minecraft/world/gen/feature/WorldGenMelon +CL net/minecraft/world/gen/feature/WorldGenDungeons net/minecraft/world/gen/feature/WorldGenDungeons +CL net/minecraft/world/gen/feature/WorldGenMinable net/minecraft/world/gen/feature/WorldGenMinable +CL net/minecraft/world/gen/feature/WorldGenTaiga1 net/minecraft/world/gen/feature/WorldGenTaiga1 +CL net/minecraft/world/gen/feature/WorldGenPumpkin net/minecraft/world/gen/feature/WorldGenPumpkin +CL net/minecraft/world/gen/feature/WorldGenReed net/minecraft/world/gen/feature/WorldGenReed +CL net/minecraft/world/gen/feature/WorldGenCanopyTree net/minecraft/world/gen/feature/WorldGenCanopyTree +CL net/minecraft/world/gen/feature/WorldGenSand net/minecraft/world/gen/feature/WorldGenSand +CL net/minecraft/world/gen/feature/WorldGenSavannaTree net/minecraft/world/gen/feature/WorldGenSavannaTree +CL net/minecraft/world/gen/feature/WorldGenSpikes net/minecraft/world/gen/feature/WorldGenSpikes +CL net/minecraft/world/gen/feature/WorldGenLiquids net/minecraft/world/gen/feature/WorldGenLiquids +CL net/minecraft/world/gen/feature/WorldGenTaiga2 net/minecraft/world/gen/feature/WorldGenTaiga2 +CL net/minecraft/world/gen/feature/WorldGenSwamp net/minecraft/world/gen/feature/WorldGenSwamp +CL net/minecraft/world/gen/feature/WorldGenTallGrass net/minecraft/world/gen/feature/WorldGenTallGrass +CL net/minecraft/world/gen/feature/WorldGenTrees net/minecraft/world/gen/feature/WorldGenTrees +CL net/minecraft/world/gen/feature/WorldGenVines net/minecraft/world/gen/feature/WorldGenVines +CL net/minecraft/world/gen/feature/WorldGenWaterlily net/minecraft/world/gen/feature/WorldGenWaterlily +CL net/minecraft/world/gen/FlatGeneratorInfo net/minecraft/world/gen/FlatGeneratorInfo +CL net/minecraft/world/gen/FlatLayerInfo net/minecraft/world/gen/FlatLayerInfo +CL net/minecraft/world/gen/structure/StructureBoundingBox net/minecraft/world/gen/structure/StructureBoundingBox +CL net/minecraft/world/gen/structure/StructureBoundingBox$1 net/minecraft/world/gen/structure/StructureBoundingBox$1 +CL net/minecraft/world/gen/structure/MapGenMineshaft net/minecraft/world/gen/structure/MapGenMineshaft +CL net/minecraft/world/gen/structure/StructureMineshaftPieces net/minecraft/world/gen/structure/StructureMineshaftPieces +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$1 net/minecraft/world/gen/structure/StructureMineshaftPieces$1 +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Room net/minecraft/world/gen/structure/StructureMineshaftPieces$Room +CL net/minecraft/world/gen/structure/StructureMineshaftPieces$Stairs net/minecraft/world/gen/structure/StructureMineshaftPieces$Stairs +CL net/minecraft/world/gen/structure/StructureMineshaftStart net/minecraft/world/gen/structure/StructureMineshaftStart +CL net/minecraft/world/gen/structure/MapGenNetherBridge net/minecraft/world/gen/structure/MapGenNetherBridge +CL net/minecraft/world/gen/structure/MapGenNetherBridge$Start net/minecraft/world/gen/structure/MapGenNetherBridge$Start +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces net/minecraft/world/gen/structure/StructureNetherBridgePieces +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$1 net/minecraft/world/gen/structure/StructureNetherBridgePieces$1 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$End net/minecraft/world/gen/structure/StructureNetherBridgePieces$End +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight net/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance net/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom net/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs net/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs +CL net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start +CL net/minecraft/world/gen/structure/StructureOceanMonument net/minecraft/world/gen/structure/StructureOceanMonument +CL net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces net/minecraft/world/gen/structure/StructureOceanMonumentPieces +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$1 net/minecraft/world/gen/structure/StructureOceanMonumentPieces$1 +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XDoubleRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XDoubleRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XYDoubleRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$XYDoubleRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YDoubleRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YDoubleRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YZDoubleRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$YZDoubleRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$ZDoubleRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$ZDoubleRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomTopHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$FitSimpleRoomTopHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentCoreRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentCoreRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXYRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleXYRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYZRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleYZRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleZRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$DoubleZRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$EntryRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$EntryRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Penthouse net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Penthouse +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleTopRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleTopRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$WingRoom net/minecraft/world/gen/structure/StructureOceanMonumentPieces$WingRoom +CL net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition +CL net/minecraft/world/gen/structure/MapGenScatteredFeature net/minecraft/world/gen/structure/MapGenScatteredFeature +CL net/minecraft/world/gen/structure/MapGenScatteredFeature$Start net/minecraft/world/gen/structure/MapGenScatteredFeature$Start +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$1 net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$1 +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid$Stones net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid$Stones +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature +CL net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$SwampHut net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$SwampHut +CL net/minecraft/world/gen/structure/MapGenStronghold net/minecraft/world/gen/structure/MapGenStronghold +CL net/minecraft/world/gen/structure/MapGenStronghold$Start net/minecraft/world/gen/structure/MapGenStronghold$Start +CL net/minecraft/world/gen/structure/StructureStrongholdPieces net/minecraft/world/gen/structure/StructureStrongholdPieces +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$1 net/minecraft/world/gen/structure/StructureStrongholdPieces$1 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$2 net/minecraft/world/gen/structure/StructureStrongholdPieces$2 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$3 net/minecraft/world/gen/structure/StructureStrongholdPieces$3 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn net/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Library net/minecraft/world/gen/structure/StructureStrongholdPieces$Library +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Prison net/minecraft/world/gen/structure/StructureStrongholdPieces$Prison +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$RightTurn net/minecraft/world/gen/structure/StructureStrongholdPieces$RightTurn +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stones net/minecraft/world/gen/structure/StructureStrongholdPieces$Stones +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight net/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold +CL net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door +CL net/minecraft/world/gen/structure/MapGenStructure net/minecraft/world/gen/structure/MapGenStructure +CL net/minecraft/world/gen/structure/MapGenStructure$1 net/minecraft/world/gen/structure/MapGenStructure$1 +CL net/minecraft/world/gen/structure/MapGenStructure$2 net/minecraft/world/gen/structure/MapGenStructure$2 +CL net/minecraft/world/gen/structure/MapGenStructure$3 net/minecraft/world/gen/structure/MapGenStructure$3 +CL net/minecraft/world/gen/structure/MapGenStructureIO net/minecraft/world/gen/structure/MapGenStructureIO +CL net/minecraft/world/gen/structure/MapGenStructureData net/minecraft/world/gen/structure/MapGenStructureData +CL net/minecraft/world/gen/structure/StructureComponent net/minecraft/world/gen/structure/StructureComponent +CL net/minecraft/world/gen/structure/StructureComponent$1 net/minecraft/world/gen/structure/StructureComponent$1 +CL net/minecraft/world/gen/structure/StructureComponent$BlockSelector net/minecraft/world/gen/structure/StructureComponent$BlockSelector +CL net/minecraft/world/gen/structure/StructureStart net/minecraft/world/gen/structure/StructureStart +CL net/minecraft/world/gen/structure/MapGenVillage net/minecraft/world/gen/structure/MapGenVillage +CL net/minecraft/world/gen/structure/MapGenVillage$Start net/minecraft/world/gen/structure/MapGenVillage$Start +CL net/minecraft/world/gen/structure/StructureVillagePieces net/minecraft/world/gen/structure/StructureVillagePieces +CL net/minecraft/world/gen/structure/StructureVillagePieces$1 net/minecraft/world/gen/structure/StructureVillagePieces$1 +CL net/minecraft/world/gen/structure/StructureVillagePieces$House1 net/minecraft/world/gen/structure/StructureVillagePieces$House1 +CL net/minecraft/world/gen/structure/StructureVillagePieces$Field1 net/minecraft/world/gen/structure/StructureVillagePieces$Field1 +CL net/minecraft/world/gen/structure/StructureVillagePieces$Field2 net/minecraft/world/gen/structure/StructureVillagePieces$Field2 +CL net/minecraft/world/gen/structure/StructureVillagePieces$Torch net/minecraft/world/gen/structure/StructureVillagePieces$Torch +CL net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight +CL net/minecraft/world/gen/structure/StructureVillagePieces$Hall net/minecraft/world/gen/structure/StructureVillagePieces$Hall +CL net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden +CL net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut +CL net/minecraft/world/gen/structure/StructureVillagePieces$Church net/minecraft/world/gen/structure/StructureVillagePieces$Church +CL net/minecraft/world/gen/structure/StructureVillagePieces$House2 net/minecraft/world/gen/structure/StructureVillagePieces$House2 +CL net/minecraft/world/gen/structure/StructureVillagePieces$Start net/minecraft/world/gen/structure/StructureVillagePieces$Start +CL net/minecraft/world/gen/structure/StructureVillagePieces$Path net/minecraft/world/gen/structure/StructureVillagePieces$Path +CL net/minecraft/world/gen/structure/StructureVillagePieces$House3 net/minecraft/world/gen/structure/StructureVillagePieces$House3 +CL net/minecraft/world/gen/structure/StructureVillagePieces$Village net/minecraft/world/gen/structure/StructureVillagePieces$Village +CL net/minecraft/world/gen/structure/StructureVillagePieces$Road net/minecraft/world/gen/structure/StructureVillagePieces$Road +CL net/minecraft/world/gen/structure/StructureVillagePieces$Well net/minecraft/world/gen/structure/StructureVillagePieces$Well +CL net/minecraft/world/gen/NoiseGeneratorImproved net/minecraft/world/gen/NoiseGeneratorImproved +CL net/minecraft/world/gen/NoiseGeneratorOctaves net/minecraft/world/gen/NoiseGeneratorOctaves +CL net/minecraft/world/gen/NoiseGeneratorPerlin net/minecraft/world/gen/NoiseGeneratorPerlin +CL net/minecraft/world/gen/NoiseGeneratorSimplex net/minecraft/world/gen/NoiseGeneratorSimplex +CL net/minecraft/world/gen/NoiseGenerator net/minecraft/world/gen/NoiseGenerator +CL net/minecraft/block/material/MaterialLogic net/minecraft/block/material/MaterialLogic +CL net/minecraft/block/material/MaterialTransparent net/minecraft/block/material/MaterialTransparent +CL net/minecraft/block/material/MaterialLiquid net/minecraft/block/material/MaterialLiquid +CL net/minecraft/block/material/Material net/minecraft/block/material/Material +CL net/minecraft/block/material/Material$1 net/minecraft/block/material/Material$1 +CL net/minecraft/block/material/MapColor net/minecraft/block/material/MapColor +CL net/minecraft/block/material/MaterialPortal net/minecraft/block/material/MaterialPortal +CL net/minecraft/world/gen/layer/GenLayerDeepOcean net/minecraft/world/gen/layer/GenLayerDeepOcean +CL net/minecraft/world/gen/layer/GenLayerEdge net/minecraft/world/gen/layer/GenLayerEdge +CL net/minecraft/world/gen/layer/GenLayerEdge$1 net/minecraft/world/gen/layer/GenLayerEdge$1 +CL net/minecraft/world/gen/layer/GenLayerEdge$Mode net/minecraft/world/gen/layer/GenLayerEdge$Mode +CL net/minecraft/world/gen/layer/GenLayerAddIsland net/minecraft/world/gen/layer/GenLayerAddIsland +CL net/minecraft/world/gen/layer/GenLayerAddMushroomIsland net/minecraft/world/gen/layer/GenLayerAddMushroomIsland +CL net/minecraft/world/gen/layer/GenLayerAddSnow net/minecraft/world/gen/layer/GenLayerAddSnow +CL net/minecraft/world/gen/layer/GenLayerBiomeEdge net/minecraft/world/gen/layer/GenLayerBiomeEdge +CL net/minecraft/world/gen/layer/GenLayerBiome net/minecraft/world/gen/layer/GenLayerBiome +CL net/minecraft/world/gen/layer/GenLayerFuzzyZoom net/minecraft/world/gen/layer/GenLayerFuzzyZoom +CL net/minecraft/world/gen/layer/IntCache net/minecraft/world/gen/layer/IntCache +CL net/minecraft/world/gen/layer/GenLayerIsland net/minecraft/world/gen/layer/GenLayerIsland +CL net/minecraft/world/gen/layer/GenLayer net/minecraft/world/gen/layer/GenLayer +CL net/minecraft/world/gen/layer/GenLayer$1 net/minecraft/world/gen/layer/GenLayer$1 +CL net/minecraft/world/gen/layer/GenLayer$2 net/minecraft/world/gen/layer/GenLayer$2 +CL net/minecraft/world/gen/layer/GenLayerRareBiome net/minecraft/world/gen/layer/GenLayerRareBiome +CL net/minecraft/world/gen/layer/GenLayerHills net/minecraft/world/gen/layer/GenLayerHills +CL net/minecraft/world/gen/layer/GenLayerRemoveTooMuchOcean net/minecraft/world/gen/layer/GenLayerRemoveTooMuchOcean +CL net/minecraft/world/gen/layer/GenLayerRiverInit net/minecraft/world/gen/layer/GenLayerRiverInit +CL net/minecraft/world/gen/layer/GenLayerRiver net/minecraft/world/gen/layer/GenLayerRiver +CL net/minecraft/world/gen/layer/GenLayerRiverMix net/minecraft/world/gen/layer/GenLayerRiverMix +CL net/minecraft/world/gen/layer/GenLayerShore net/minecraft/world/gen/layer/GenLayerShore +CL net/minecraft/world/gen/layer/GenLayerSmooth net/minecraft/world/gen/layer/GenLayerSmooth +CL net/minecraft/world/gen/layer/GenLayerVoronoiZoom net/minecraft/world/gen/layer/GenLayerVoronoiZoom +CL net/minecraft/world/gen/layer/GenLayerZoom net/minecraft/world/gen/layer/GenLayerZoom +CL net/minecraft/pathfinding/Path net/minecraft/pathfinding/Path +CL net/minecraft/pathfinding/PathPoint net/minecraft/pathfinding/PathPoint +CL net/minecraft/world/pathfinder/NodeProcessor net/minecraft/world/pathfinder/NodeProcessor +CL net/minecraft/pathfinding/PathEntity net/minecraft/pathfinding/PathEntity +CL net/minecraft/pathfinding/PathFinder net/minecraft/pathfinding/PathFinder +CL net/minecraft/world/pathfinder/SwimNodeProcessor net/minecraft/world/pathfinder/SwimNodeProcessor +CL net/minecraft/world/pathfinder/WalkNodeProcessor net/minecraft/world/pathfinder/WalkNodeProcessor +CL net/minecraft/world/WorldSavedData net/minecraft/world/WorldSavedData +CL net/minecraft/util/Vec4b net/minecraft/util/Vec4b +CL net/minecraft/world/storage/MapData net/minecraft/world/storage/MapData +CL net/minecraft/world/storage/MapData$MapInfo net/minecraft/world/storage/MapData$MapInfo +CL net/minecraft/world/chunk/storage/AnvilSaveHandler net/minecraft/world/chunk/storage/AnvilSaveHandler +CL net/minecraft/world/chunk/storage/AnvilSaveConverter net/minecraft/world/chunk/storage/AnvilSaveConverter +CL net/minecraft/world/chunk/storage/AnvilSaveConverter$1 net/minecraft/world/chunk/storage/AnvilSaveConverter$1 +CL net/minecraft/world/storage/DerivedWorldInfo net/minecraft/world/storage/DerivedWorldInfo +CL net/minecraft/world/storage/SaveHandler net/minecraft/world/storage/SaveHandler +CL net/minecraft/world/storage/SaveFormatOld net/minecraft/world/storage/SaveFormatOld +CL net/minecraft/world/storage/WorldInfo net/minecraft/world/storage/WorldInfo +CL net/minecraft/world/storage/WorldInfo$1 net/minecraft/world/storage/WorldInfo$1 +CL net/minecraft/world/storage/WorldInfo$2 net/minecraft/world/storage/WorldInfo$2 +CL net/minecraft/world/storage/WorldInfo$3 net/minecraft/world/storage/WorldInfo$3 +CL net/minecraft/world/storage/WorldInfo$4 net/minecraft/world/storage/WorldInfo$4 +CL net/minecraft/world/storage/WorldInfo$5 net/minecraft/world/storage/WorldInfo$5 +CL net/minecraft/world/storage/WorldInfo$6 net/minecraft/world/storage/WorldInfo$6 +CL net/minecraft/world/storage/WorldInfo$7 net/minecraft/world/storage/WorldInfo$7 +CL net/minecraft/world/storage/WorldInfo$8 net/minecraft/world/storage/WorldInfo$8 +CL net/minecraft/world/storage/WorldInfo$9 net/minecraft/world/storage/WorldInfo$9 +CL net/minecraft/world/storage/ISaveHandler net/minecraft/world/storage/ISaveHandler +CL net/minecraft/client/AnvilConverterException net/minecraft/client/AnvilConverterException +CL net/minecraft/world/storage/ISaveFormat net/minecraft/world/storage/ISaveFormat +CL net/minecraft/world/storage/SaveFormatComparator net/minecraft/world/storage/SaveFormatComparator +CL net/minecraft/world/storage/SaveHandlerMP net/minecraft/world/storage/SaveHandlerMP +CL net/minecraft/world/storage/IPlayerFileData net/minecraft/world/storage/IPlayerFileData +CL net/minecraft/world/storage/SaveDataMemoryStorage net/minecraft/world/storage/SaveDataMemoryStorage +CL net/minecraft/world/storage/MapStorage net/minecraft/world/storage/MapStorage +CL net/minecraft/world/storage/ThreadedFileIOBase net/minecraft/world/storage/ThreadedFileIOBase +CL net/minecraft/world/storage/IThreadedFileIO net/minecraft/world/storage/IThreadedFileIO +CL net/minecraft/util/AxisAlignedBB net/minecraft/util/AxisAlignedBB +CL net/minecraft/util/MovingObjectPosition net/minecraft/util/MovingObjectPosition +CL net/minecraft/util/MovingObjectPosition$MovingObjectType net/minecraft/util/MovingObjectPosition$MovingObjectType +CL net/minecraft/util/Vec3 net/minecraft/util/Vec3 +CL net/minecraft/scoreboard/ScoreObjective net/minecraft/scoreboard/ScoreObjective +CL net/minecraft/scoreboard/ScorePlayerTeam net/minecraft/scoreboard/ScorePlayerTeam +CL net/minecraft/scoreboard/Score net/minecraft/scoreboard/Score +CL net/minecraft/scoreboard/Score$1 net/minecraft/scoreboard/Score$1 +CL net/minecraft/scoreboard/Scoreboard net/minecraft/scoreboard/Scoreboard +CL net/minecraft/scoreboard/ScoreboardSaveData net/minecraft/scoreboard/ScoreboardSaveData +CL net/minecraft/scoreboard/Team net/minecraft/scoreboard/Team +CL net/minecraft/scoreboard/Team$EnumVisible net/minecraft/scoreboard/Team$EnumVisible +CL net/minecraft/scoreboard/GoalColor net/minecraft/scoreboard/GoalColor +CL net/minecraft/scoreboard/ScoreDummyCriteria net/minecraft/scoreboard/ScoreDummyCriteria +CL net/minecraft/scoreboard/ScoreHealthCriteria net/minecraft/scoreboard/ScoreHealthCriteria +CL net/minecraft/scoreboard/IScoreObjectiveCriteria net/minecraft/scoreboard/IScoreObjectiveCriteria +CL net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType +CL net/minecraft/stats/ObjectiveStat net/minecraft/stats/ObjectiveStat +CL net/minecraft/client/renderer/ActiveRenderInfo net/minecraft/client/renderer/ActiveRenderInfo +CL net/minecraft/client/gui/ChatLine net/minecraft/client/gui/ChatLine +CL net/minecraft/client/settings/KeyBinding net/minecraft/client/settings/KeyBinding +CL net/minecraft/client/renderer/RenderHelper net/minecraft/client/renderer/RenderHelper +CL net/minecraft/client/renderer/GLAllocation net/minecraft/client/renderer/GLAllocation +CL net/minecraft/client/Minecraft net/minecraft/client/Minecraft +CL net/minecraft/client/Minecraft$1 net/minecraft/client/Minecraft$1 +CL net/minecraft/client/Minecraft$2 net/minecraft/client/Minecraft$2 +CL net/minecraft/client/Minecraft$3 net/minecraft/client/Minecraft$3 +CL net/minecraft/client/Minecraft$4 net/minecraft/client/Minecraft$4 +CL net/minecraft/client/Minecraft$5 net/minecraft/client/Minecraft$5 +CL net/minecraft/client/Minecraft$6 net/minecraft/client/Minecraft$6 +CL net/minecraft/client/Minecraft$7 net/minecraft/client/Minecraft$7 +CL net/minecraft/client/Minecraft$8 net/minecraft/client/Minecraft$8 +CL net/minecraft/client/Minecraft$9 net/minecraft/client/Minecraft$9 +CL net/minecraft/client/Minecraft$10 net/minecraft/client/Minecraft$10 +CL net/minecraft/client/Minecraft$11 net/minecraft/client/Minecraft$11 +CL net/minecraft/client/Minecraft$12 net/minecraft/client/Minecraft$12 +CL net/minecraft/client/Minecraft$13 net/minecraft/client/Minecraft$13 +CL net/minecraft/client/Minecraft$14 net/minecraft/client/Minecraft$14 +CL net/minecraft/client/Minecraft$15 net/minecraft/client/Minecraft$15 +CL net/minecraft/client/Minecraft$16 net/minecraft/client/Minecraft$16 +CL net/minecraft/client/Minecraft$17 net/minecraft/client/Minecraft$17 +CL net/minecraft/client/Minecraft$18 net/minecraft/client/Minecraft$18 +CL net/minecraft/util/MouseHelper net/minecraft/util/MouseHelper +CL net/minecraft/client/settings/GameSettings net/minecraft/client/settings/GameSettings +CL net/minecraft/client/settings/GameSettings$1 net/minecraft/client/settings/GameSettings$1 +CL net/minecraft/client/settings/GameSettings$2 net/minecraft/client/settings/GameSettings$2 +CL net/minecraft/client/settings/GameSettings$Options net/minecraft/client/settings/GameSettings$Options +CL net/minecraft/client/LoadingScreenRenderer net/minecraft/client/LoadingScreenRenderer +CL net/minecraft/util/ScreenShotHelper net/minecraft/util/ScreenShotHelper +CL net/minecraft/util/MinecraftError net/minecraft/util/MinecraftError +CL net/minecraft/util/Timer net/minecraft/util/Timer +CL net/minecraft/util/Session net/minecraft/util/Session +CL net/minecraft/util/Session$Type net/minecraft/util/Session$Type +CL net/minecraft/client/gui/FontRenderer net/minecraft/client/gui/FontRenderer +CL net/minecraft/client/gui/GuiIngame net/minecraft/client/gui/GuiIngame +CL net/minecraft/client/gui/GuiIngame$1 net/minecraft/client/gui/GuiIngame$1 +CL net/minecraft/client/gui/Gui net/minecraft/client/gui/Gui +CL net/minecraft/client/gui/MapItemRenderer net/minecraft/client/gui/MapItemRenderer +CL net/minecraft/client/gui/MapItemRenderer$1 net/minecraft/client/gui/MapItemRenderer$1 +CL net/minecraft/client/gui/MapItemRenderer$Instance net/minecraft/client/gui/MapItemRenderer$Instance +CL net/minecraft/client/gui/ScaledResolution net/minecraft/client/gui/ScaledResolution +CL net/minecraft/client/gui/GuiButton net/minecraft/client/gui/GuiButton +CL net/minecraft/client/gui/GuiNewChat net/minecraft/client/gui/GuiNewChat +CL net/minecraft/client/gui/GuiUtilRenderComponents net/minecraft/client/gui/GuiUtilRenderComponents +CL net/minecraft/client/gui/GuiOverlayDebug net/minecraft/client/gui/GuiOverlayDebug +CL net/minecraft/client/gui/GuiOverlayDebug$1 net/minecraft/client/gui/GuiOverlayDebug$1 +CL net/minecraft/client/gui/GuiTextField net/minecraft/client/gui/GuiTextField +CL net/minecraft/client/gui/GuiSlider net/minecraft/client/gui/GuiSlider +CL net/minecraft/client/gui/GuiSlider$FormatHelper net/minecraft/client/gui/GuiSlider$FormatHelper +CL net/minecraft/client/gui/GuiLabel net/minecraft/client/gui/GuiLabel +CL net/minecraft/client/gui/GuiButtonLanguage net/minecraft/client/gui/GuiButtonLanguage +CL net/minecraft/client/gui/GuiListButton net/minecraft/client/gui/GuiListButton +CL net/minecraft/client/gui/GuiLockIconButton net/minecraft/client/gui/GuiLockIconButton +CL net/minecraft/client/gui/GuiLockIconButton$Icon net/minecraft/client/gui/GuiLockIconButton$Icon +CL net/minecraft/client/gui/GuiListExtended net/minecraft/client/gui/GuiListExtended +CL net/minecraft/client/gui/GuiListExtended$IGuiListEntry net/minecraft/client/gui/GuiListExtended$IGuiListEntry +CL net/minecraft/client/gui/GuiOptionButton net/minecraft/client/gui/GuiOptionButton +CL net/minecraft/client/gui/GuiOptionsRowList net/minecraft/client/gui/GuiOptionsRowList +CL net/minecraft/client/gui/GuiOptionsRowList$Row net/minecraft/client/gui/GuiOptionsRowList$Row +CL net/minecraft/client/gui/GuiPageButtonList net/minecraft/client/gui/GuiPageButtonList +CL net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry +CL net/minecraft/client/gui/GuiPageButtonList$GuiResponder net/minecraft/client/gui/GuiPageButtonList$GuiResponder +CL net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry +CL net/minecraft/client/gui/GuiPageButtonList$GuiEntry net/minecraft/client/gui/GuiPageButtonList$GuiEntry +CL net/minecraft/client/gui/GuiPageButtonList$GuiLabelEntry net/minecraft/client/gui/GuiPageButtonList$GuiLabelEntry +CL net/minecraft/client/gui/GuiPageButtonList$GuiListEntry net/minecraft/client/gui/GuiPageButtonList$GuiListEntry +CL net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry +CL net/minecraft/client/gui/GuiPlayerTabOverlay net/minecraft/client/gui/GuiPlayerTabOverlay +CL net/minecraft/client/gui/GuiPlayerTabOverlay$1 net/minecraft/client/gui/GuiPlayerTabOverlay$1 +CL net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator +CL net/minecraft/client/gui/GuiSlot net/minecraft/client/gui/GuiSlot +CL net/minecraft/client/gui/GuiOptionSlider net/minecraft/client/gui/GuiOptionSlider +CL net/minecraft/client/gui/GuiStreamIndicator net/minecraft/client/gui/GuiStreamIndicator +CL net/minecraft/client/gui/GuiSpectator net/minecraft/client/gui/GuiSpectator +CL net/minecraft/client/gui/GuiButtonRealmsProxy net/minecraft/client/gui/GuiButtonRealmsProxy +CL net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy +CL net/minecraft/client/gui/GuiScreenRealmsProxy net/minecraft/client/gui/GuiScreenRealmsProxy +CL net/minecraft/client/gui/GuiSlotRealmsProxy net/minecraft/client/gui/GuiSlotRealmsProxy +CL net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy +CL net/minecraft/client/gui/ScreenChatOptions net/minecraft/client/gui/ScreenChatOptions +CL net/minecraft/client/gui/GuiChat net/minecraft/client/gui/GuiChat +CL net/minecraft/client/gui/GuiConfirmOpenLink net/minecraft/client/gui/GuiConfirmOpenLink +CL net/minecraft/client/gui/GuiYesNoCallback net/minecraft/client/gui/GuiYesNoCallback +CL net/minecraft/client/gui/GuiYesNo net/minecraft/client/gui/GuiYesNo +CL net/minecraft/client/multiplayer/GuiConnecting net/minecraft/client/multiplayer/GuiConnecting +CL net/minecraft/client/multiplayer/GuiConnecting$1 net/minecraft/client/multiplayer/GuiConnecting$1 +CL net/minecraft/client/gui/GuiCreateFlatWorld net/minecraft/client/gui/GuiCreateFlatWorld +CL net/minecraft/client/gui/GuiCreateFlatWorld$Details net/minecraft/client/gui/GuiCreateFlatWorld$Details +CL net/minecraft/client/gui/GuiCreateWorld net/minecraft/client/gui/GuiCreateWorld +CL net/minecraft/client/gui/GuiScreenCustomizePresets net/minecraft/client/gui/GuiScreenCustomizePresets +CL net/minecraft/client/gui/GuiScreenCustomizePresets$Info net/minecraft/client/gui/GuiScreenCustomizePresets$Info +CL net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset +CL net/minecraft/client/gui/GuiCustomizeWorldScreen net/minecraft/client/gui/GuiCustomizeWorldScreen +CL net/minecraft/client/gui/GuiCustomizeWorldScreen$1 net/minecraft/client/gui/GuiCustomizeWorldScreen$1 +CL net/minecraft/client/gui/GuiGameOver net/minecraft/client/gui/GuiGameOver +CL net/minecraft/client/gui/GuiScreenDemo net/minecraft/client/gui/GuiScreenDemo +CL net/minecraft/client/gui/GuiScreenServerList net/minecraft/client/gui/GuiScreenServerList +CL net/minecraft/client/gui/GuiDisconnected net/minecraft/client/gui/GuiDisconnected +CL net/minecraft/client/gui/GuiScreenAddServer net/minecraft/client/gui/GuiScreenAddServer +CL net/minecraft/client/gui/GuiScreenAddServer$1 net/minecraft/client/gui/GuiScreenAddServer$1 +CL net/minecraft/client/gui/GuiErrorScreen net/minecraft/client/gui/GuiErrorScreen +CL net/minecraft/client/gui/GuiSleepMP net/minecraft/client/gui/GuiSleepMP +CL net/minecraft/client/gui/GuiLanguage net/minecraft/client/gui/GuiLanguage +CL net/minecraft/client/gui/GuiLanguage$List net/minecraft/client/gui/GuiLanguage$List +CL net/minecraft/client/gui/GuiOptions net/minecraft/client/gui/GuiOptions +CL net/minecraft/client/gui/GuiOptions$1 net/minecraft/client/gui/GuiOptions$1 +CL net/minecraft/client/gui/GuiMemoryErrorScreen net/minecraft/client/gui/GuiMemoryErrorScreen +CL net/minecraft/client/gui/GuiIngameMenu net/minecraft/client/gui/GuiIngameMenu +CL net/minecraft/client/gui/GuiFlatPresets net/minecraft/client/gui/GuiFlatPresets +CL net/minecraft/client/gui/GuiFlatPresets$LayerItem net/minecraft/client/gui/GuiFlatPresets$LayerItem +CL net/minecraft/client/gui/GuiFlatPresets$ListSlot net/minecraft/client/gui/GuiFlatPresets$ListSlot +CL net/minecraft/client/gui/GuiScreenWorking net/minecraft/client/gui/GuiScreenWorking +CL net/minecraft/client/gui/GuiDownloadTerrain net/minecraft/client/gui/GuiDownloadTerrain +CL net/minecraft/client/gui/GuiRenameWorld net/minecraft/client/gui/GuiRenameWorld +CL net/minecraft/client/gui/GuiScreen net/minecraft/client/gui/GuiScreen +CL net/minecraft/client/gui/GuiSelectWorld net/minecraft/client/gui/GuiSelectWorld +CL net/minecraft/client/gui/GuiSelectWorld$List net/minecraft/client/gui/GuiSelectWorld$List +CL net/minecraft/client/gui/GuiShareToLan net/minecraft/client/gui/GuiShareToLan +CL net/minecraft/client/gui/GuiCustomizeSkin net/minecraft/client/gui/GuiCustomizeSkin +CL net/minecraft/client/gui/GuiCustomizeSkin$1 net/minecraft/client/gui/GuiCustomizeSkin$1 +CL net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart +CL net/minecraft/client/gui/GuiSnooper net/minecraft/client/gui/GuiSnooper +CL net/minecraft/client/gui/GuiSnooper$List net/minecraft/client/gui/GuiSnooper$List +CL net/minecraft/client/gui/GuiScreenOptionsSounds net/minecraft/client/gui/GuiScreenOptionsSounds +CL net/minecraft/client/gui/GuiScreenOptionsSounds$Button net/minecraft/client/gui/GuiScreenOptionsSounds$Button +CL net/minecraft/client/gui/GuiMainMenu net/minecraft/client/gui/GuiMainMenu +CL net/minecraft/client/gui/GuiVideoSettings net/minecraft/client/gui/GuiVideoSettings +CL net/minecraft/client/gui/GuiWinGame net/minecraft/client/gui/GuiWinGame +CL net/minecraft/client/gui/achievement/GuiAchievement net/minecraft/client/gui/achievement/GuiAchievement +CL net/minecraft/client/gui/achievement/GuiAchievements net/minecraft/client/gui/achievement/GuiAchievements +CL net/minecraft/client/gui/achievement/GuiStats net/minecraft/client/gui/achievement/GuiStats +CL net/minecraft/client/gui/achievement/GuiStats$StatsBlock net/minecraft/client/gui/achievement/GuiStats$StatsBlock +CL net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 +CL net/minecraft/client/gui/achievement/GuiStats$StatsGeneral net/minecraft/client/gui/achievement/GuiStats$StatsGeneral +CL net/minecraft/client/gui/achievement/GuiStats$StatsItem net/minecraft/client/gui/achievement/GuiStats$StatsItem +CL net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 +CL net/minecraft/client/gui/achievement/GuiStats$StatsMobsList net/minecraft/client/gui/achievement/GuiStats$StatsMobsList +CL net/minecraft/client/gui/achievement/GuiStats$Stats net/minecraft/client/gui/achievement/GuiStats$Stats +CL net/minecraft/client/gui/IProgressMeter net/minecraft/client/gui/IProgressMeter +CL net/minecraft/client/gui/GuiKeyBindingList net/minecraft/client/gui/GuiKeyBindingList +CL net/minecraft/client/gui/GuiKeyBindingList$1 net/minecraft/client/gui/GuiKeyBindingList$1 +CL net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry +CL net/minecraft/client/gui/GuiKeyBindingList$KeyEntry net/minecraft/client/gui/GuiKeyBindingList$KeyEntry +CL net/minecraft/client/gui/GuiControls net/minecraft/client/gui/GuiControls +CL net/minecraft/client/gui/inventory/GuiContainer net/minecraft/client/gui/inventory/GuiContainer +CL net/minecraft/client/gui/GuiRepair net/minecraft/client/gui/GuiRepair +CL net/minecraft/client/gui/inventory/GuiBeacon net/minecraft/client/gui/inventory/GuiBeacon +CL net/minecraft/client/gui/inventory/GuiBeacon$CancelButton net/minecraft/client/gui/inventory/GuiBeacon$CancelButton +CL net/minecraft/client/gui/inventory/GuiBeacon$ConfirmButton net/minecraft/client/gui/inventory/GuiBeacon$ConfirmButton +CL net/minecraft/client/gui/inventory/GuiBeacon$PowerButton net/minecraft/client/gui/inventory/GuiBeacon$PowerButton +CL net/minecraft/client/gui/inventory/GuiBeacon$Button net/minecraft/client/gui/inventory/GuiBeacon$Button +CL net/minecraft/client/gui/GuiScreenBook net/minecraft/client/gui/GuiScreenBook +CL net/minecraft/client/gui/GuiScreenBook$NextPageButton net/minecraft/client/gui/GuiScreenBook$NextPageButton +CL net/minecraft/client/gui/inventory/GuiBrewingStand net/minecraft/client/gui/inventory/GuiBrewingStand +CL net/minecraft/client/gui/GuiCommandBlock net/minecraft/client/gui/GuiCommandBlock +CL net/minecraft/client/gui/inventory/GuiChest net/minecraft/client/gui/inventory/GuiChest +CL net/minecraft/client/gui/inventory/GuiCrafting net/minecraft/client/gui/inventory/GuiCrafting +CL net/minecraft/client/gui/inventory/CreativeCrafting net/minecraft/client/gui/inventory/CreativeCrafting +CL net/minecraft/client/gui/inventory/GuiContainerCreative net/minecraft/client/gui/inventory/GuiContainerCreative +CL net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative +CL net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot +CL net/minecraft/client/gui/inventory/GuiDispenser net/minecraft/client/gui/inventory/GuiDispenser +CL net/minecraft/client/renderer/InventoryEffectRenderer net/minecraft/client/renderer/InventoryEffectRenderer +CL net/minecraft/util/EnchantmentNameParts net/minecraft/util/EnchantmentNameParts +CL net/minecraft/client/gui/GuiEnchantment net/minecraft/client/gui/GuiEnchantment +CL net/minecraft/client/gui/inventory/GuiFurnace net/minecraft/client/gui/inventory/GuiFurnace +CL net/minecraft/client/gui/GuiHopper net/minecraft/client/gui/GuiHopper +CL net/minecraft/client/gui/inventory/GuiScreenHorseInventory net/minecraft/client/gui/inventory/GuiScreenHorseInventory +CL net/minecraft/client/gui/inventory/GuiInventory net/minecraft/client/gui/inventory/GuiInventory +CL net/minecraft/client/gui/GuiMerchant net/minecraft/client/gui/GuiMerchant +CL net/minecraft/client/gui/GuiMerchant$MerchantButton net/minecraft/client/gui/GuiMerchant$MerchantButton +CL net/minecraft/client/gui/inventory/GuiEditSign net/minecraft/client/gui/inventory/GuiEditSign +CL net/minecraft/client/gui/GuiMultiplayer net/minecraft/client/gui/GuiMultiplayer +CL net/minecraft/client/gui/ServerListEntryLanScan net/minecraft/client/gui/ServerListEntryLanScan +CL net/minecraft/client/gui/ServerListEntryLanDetected net/minecraft/client/gui/ServerListEntryLanDetected +CL net/minecraft/client/gui/ServerListEntryNormal net/minecraft/client/gui/ServerListEntryNormal +CL net/minecraft/client/gui/ServerListEntryNormal$1 net/minecraft/client/gui/ServerListEntryNormal$1 +CL net/minecraft/client/gui/ServerSelectionList net/minecraft/client/gui/ServerSelectionList +CL net/minecraft/client/gui/GuiScreenResourcePacks net/minecraft/client/gui/GuiScreenResourcePacks +CL net/minecraft/client/resources/ResourcePackListEntry net/minecraft/client/resources/ResourcePackListEntry +CL net/minecraft/client/resources/ResourcePackListEntry$1 net/minecraft/client/resources/ResourcePackListEntry$1 +CL net/minecraft/client/resources/ResourcePackListEntryDefault net/minecraft/client/resources/ResourcePackListEntryDefault +CL net/minecraft/client/resources/ResourcePackListEntryFound net/minecraft/client/resources/ResourcePackListEntryFound +CL net/minecraft/client/gui/GuiResourcePackAvailable net/minecraft/client/gui/GuiResourcePackAvailable +CL net/minecraft/client/gui/GuiResourcePackList net/minecraft/client/gui/GuiResourcePackList +CL net/minecraft/client/gui/GuiResourcePackSelected net/minecraft/client/gui/GuiResourcePackSelected +CL net/minecraft/client/gui/stream/GuiIngestServers net/minecraft/client/gui/stream/GuiIngestServers +CL net/minecraft/client/gui/stream/GuiIngestServers$ServerList net/minecraft/client/gui/stream/GuiIngestServers$ServerList +CL net/minecraft/client/gui/stream/GuiStreamOptions net/minecraft/client/gui/stream/GuiStreamOptions +CL net/minecraft/client/gui/stream/GuiStreamUnavailable net/minecraft/client/gui/stream/GuiStreamUnavailable +CL net/minecraft/client/gui/stream/GuiStreamUnavailable$1 net/minecraft/client/gui/stream/GuiStreamUnavailable$1 +CL net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason +CL net/minecraft/client/gui/stream/GuiTwitchUserMode net/minecraft/client/gui/stream/GuiTwitchUserMode +CL net/minecraft/client/gui/spectator/PlayerMenuObject net/minecraft/client/gui/spectator/PlayerMenuObject +CL net/minecraft/client/gui/spectator/BaseSpectatorGroup net/minecraft/client/gui/spectator/BaseSpectatorGroup +CL net/minecraft/client/gui/spectator/SpectatorMenu net/minecraft/client/gui/spectator/SpectatorMenu +CL net/minecraft/client/gui/spectator/SpectatorMenu$1 net/minecraft/client/gui/spectator/SpectatorMenu$1 +CL net/minecraft/client/gui/spectator/SpectatorMenu$EndSpectatorObject net/minecraft/client/gui/spectator/SpectatorMenu$EndSpectatorObject +CL net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject +CL net/minecraft/client/gui/spectator/ISpectatorMenuView net/minecraft/client/gui/spectator/ISpectatorMenuView +CL net/minecraft/client/gui/spectator/ISpectatorMenuObject net/minecraft/client/gui/spectator/ISpectatorMenuObject +CL net/minecraft/client/gui/spectator/ISpectatorMenuRecipient net/minecraft/client/gui/spectator/ISpectatorMenuRecipient +CL net/minecraft/client/gui/spectator/categories/SpectatorDetails net/minecraft/client/gui/spectator/categories/SpectatorDetails +CL net/minecraft/client/gui/spectator/categories/TeleportToPlayer net/minecraft/client/gui/spectator/categories/TeleportToPlayer +CL net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 +CL net/minecraft/client/gui/spectator/categories/TeleportToTeam net/minecraft/client/gui/spectator/categories/TeleportToTeam +CL net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject +CL net/minecraft/client/main/GameConfiguration net/minecraft/client/main/GameConfiguration +CL net/minecraft/client/main/GameConfiguration$DisplayInformation net/minecraft/client/main/GameConfiguration$DisplayInformation +CL net/minecraft/client/main/GameConfiguration$FolderInformation net/minecraft/client/main/GameConfiguration$FolderInformation +CL net/minecraft/client/main/GameConfiguration$GameInformation net/minecraft/client/main/GameConfiguration$GameInformation +CL net/minecraft/client/main/GameConfiguration$ServerInformation net/minecraft/client/main/GameConfiguration$ServerInformation +CL net/minecraft/client/main/GameConfiguration$UserInformation net/minecraft/client/main/GameConfiguration$UserInformation +CL net/minecraft/client/model/ModelArmorStandArmor net/minecraft/client/model/ModelArmorStandArmor +CL net/minecraft/client/model/ModelArmorStand net/minecraft/client/model/ModelArmorStand +CL net/minecraft/client/model/ModelBanner net/minecraft/client/model/ModelBanner +CL net/minecraft/client/model/ModelBat net/minecraft/client/model/ModelBat +CL net/minecraft/client/model/ModelBlaze net/minecraft/client/model/ModelBlaze +CL net/minecraft/client/model/ModelBoat net/minecraft/client/model/ModelBoat +CL net/minecraft/client/model/ModelBook net/minecraft/client/model/ModelBook +CL net/minecraft/client/model/ModelChest net/minecraft/client/model/ModelChest +CL net/minecraft/client/model/ModelChicken net/minecraft/client/model/ModelChicken +CL net/minecraft/client/model/ModelCow net/minecraft/client/model/ModelCow +CL net/minecraft/client/model/ModelCreeper net/minecraft/client/model/ModelCreeper +CL net/minecraft/client/model/ModelEnderman net/minecraft/client/model/ModelEnderman +CL net/minecraft/client/model/ModelEnderMite net/minecraft/client/model/ModelEnderMite +CL net/minecraft/client/model/ModelGhast net/minecraft/client/model/ModelGhast +CL net/minecraft/client/model/ModelGuardian net/minecraft/client/model/ModelGuardian +CL net/minecraft/client/model/ModelHorse net/minecraft/client/model/ModelHorse +CL net/minecraft/client/model/ModelHumanoidHead net/minecraft/client/model/ModelHumanoidHead +CL net/minecraft/client/model/ModelBiped net/minecraft/client/model/ModelBiped +CL net/minecraft/client/model/ModelLargeChest net/minecraft/client/model/ModelLargeChest +CL net/minecraft/client/model/ModelMagmaCube net/minecraft/client/model/ModelMagmaCube +CL net/minecraft/client/model/ModelLeashKnot net/minecraft/client/model/ModelLeashKnot +CL net/minecraft/client/model/ModelMinecart net/minecraft/client/model/ModelMinecart +CL net/minecraft/client/model/ModelBase net/minecraft/client/model/ModelBase +CL net/minecraft/client/model/ModelOcelot net/minecraft/client/model/ModelOcelot +CL net/minecraft/client/model/ModelPig net/minecraft/client/model/ModelPig +CL net/minecraft/client/model/ModelPlayer net/minecraft/client/model/ModelPlayer +CL net/minecraft/client/model/TexturedQuad net/minecraft/client/model/TexturedQuad +CL net/minecraft/client/model/ModelQuadruped net/minecraft/client/model/ModelQuadruped +CL net/minecraft/client/model/ModelRabbit net/minecraft/client/model/ModelRabbit +CL net/minecraft/client/model/ModelSheep1 net/minecraft/client/model/ModelSheep1 +CL net/minecraft/client/model/ModelSheep2 net/minecraft/client/model/ModelSheep2 +CL net/minecraft/client/model/ModelSign net/minecraft/client/model/ModelSign +CL net/minecraft/client/model/ModelSilverfish net/minecraft/client/model/ModelSilverfish +CL net/minecraft/client/model/ModelSkeletonHead net/minecraft/client/model/ModelSkeletonHead +CL net/minecraft/client/model/ModelSkeleton net/minecraft/client/model/ModelSkeleton +CL net/minecraft/client/model/ModelSlime net/minecraft/client/model/ModelSlime +CL net/minecraft/client/model/ModelSnowMan net/minecraft/client/model/ModelSnowMan +CL net/minecraft/client/model/ModelSpider net/minecraft/client/model/ModelSpider +CL net/minecraft/client/model/ModelSquid net/minecraft/client/model/ModelSquid +CL net/minecraft/client/model/PositionTextureVertex net/minecraft/client/model/PositionTextureVertex +CL net/minecraft/client/model/ModelIronGolem net/minecraft/client/model/ModelIronGolem +CL net/minecraft/client/model/ModelVillager net/minecraft/client/model/ModelVillager +CL net/minecraft/client/model/ModelZombieVillager net/minecraft/client/model/ModelZombieVillager +CL net/minecraft/client/model/ModelWitch net/minecraft/client/model/ModelWitch +CL net/minecraft/client/model/ModelWither net/minecraft/client/model/ModelWither +CL net/minecraft/client/model/ModelWolf net/minecraft/client/model/ModelWolf +CL net/minecraft/client/model/ModelZombie net/minecraft/client/model/ModelZombie +CL net/minecraft/client/model/ModelDragon net/minecraft/client/model/ModelDragon +CL net/minecraft/client/model/ModelEnderCrystal net/minecraft/client/model/ModelEnderCrystal +CL net/minecraft/client/model/ModelBox net/minecraft/client/model/ModelBox +CL net/minecraft/client/model/ModelRenderer net/minecraft/client/model/ModelRenderer +CL net/minecraft/client/model/TextureOffset net/minecraft/client/model/TextureOffset +CL net/minecraft/client/network/NetHandlerLoginClient net/minecraft/client/network/NetHandlerLoginClient +CL net/minecraft/client/network/NetHandlerLoginClient$1 net/minecraft/client/network/NetHandlerLoginClient$1 +CL net/minecraft/client/network/NetHandlerPlayClient net/minecraft/client/network/NetHandlerPlayClient +CL net/minecraft/client/network/NetHandlerPlayClient$1 net/minecraft/client/network/NetHandlerPlayClient$1 +CL net/minecraft/client/network/NetHandlerPlayClient$2 net/minecraft/client/network/NetHandlerPlayClient$2 +CL net/minecraft/client/network/NetHandlerPlayClient$3 net/minecraft/client/network/NetHandlerPlayClient$3 +CL net/minecraft/client/network/NetHandlerPlayClient$3$1 net/minecraft/client/network/NetHandlerPlayClient$3$1 +CL net/minecraft/client/network/NetHandlerPlayClient$3$1$1 net/minecraft/client/network/NetHandlerPlayClient$3$1$1 +CL net/minecraft/client/network/NetHandlerPlayClient$4 net/minecraft/client/network/NetHandlerPlayClient$4 +CL net/minecraft/client/multiplayer/ChunkProviderClient net/minecraft/client/multiplayer/ChunkProviderClient +CL net/minecraft/client/multiplayer/PlayerControllerMP net/minecraft/client/multiplayer/PlayerControllerMP +CL net/minecraft/client/multiplayer/WorldClient net/minecraft/client/multiplayer/WorldClient +CL net/minecraft/client/multiplayer/WorldClient$1 net/minecraft/client/multiplayer/WorldClient$1 +CL net/minecraft/client/multiplayer/WorldClient$2 net/minecraft/client/multiplayer/WorldClient$2 +CL net/minecraft/client/multiplayer/WorldClient$3 net/minecraft/client/multiplayer/WorldClient$3 +CL net/minecraft/client/multiplayer/WorldClient$4 net/minecraft/client/multiplayer/WorldClient$4 +CL net/minecraft/client/network/NetworkPlayerInfo net/minecraft/client/network/NetworkPlayerInfo +CL net/minecraft/client/network/NetworkPlayerInfo$1 net/minecraft/client/network/NetworkPlayerInfo$1 +CL net/minecraft/client/network/NetworkPlayerInfo$2 net/minecraft/client/network/NetworkPlayerInfo$2 +CL net/minecraft/client/multiplayer/ServerAddress net/minecraft/client/multiplayer/ServerAddress +CL net/minecraft/client/multiplayer/ServerData net/minecraft/client/multiplayer/ServerData +CL net/minecraft/client/multiplayer/ServerData$ServerResourceMode net/minecraft/client/multiplayer/ServerData$ServerResourceMode +CL net/minecraft/client/multiplayer/ServerList net/minecraft/client/multiplayer/ServerList +CL net/minecraft/client/network/OldServerPinger net/minecraft/client/network/OldServerPinger +CL net/minecraft/client/network/OldServerPinger$1 net/minecraft/client/network/OldServerPinger$1 +CL net/minecraft/client/network/OldServerPinger$2 net/minecraft/client/network/OldServerPinger$2 +CL net/minecraft/client/network/OldServerPinger$2$1 net/minecraft/client/network/OldServerPinger$2$1 +CL net/minecraft/client/particle/Barrier net/minecraft/client/particle/Barrier +CL net/minecraft/client/particle/Barrier$Factory net/minecraft/client/particle/Barrier$Factory +CL net/minecraft/client/particle/EntityBreakingFX net/minecraft/client/particle/EntityBreakingFX +CL net/minecraft/client/particle/EntityBreakingFX$Factory net/minecraft/client/particle/EntityBreakingFX$Factory +CL net/minecraft/client/particle/EntityBreakingFX$SlimeFactory net/minecraft/client/particle/EntityBreakingFX$SlimeFactory +CL net/minecraft/client/particle/EntityBreakingFX$SnowballFactory net/minecraft/client/particle/EntityBreakingFX$SnowballFactory +CL net/minecraft/client/particle/EntityBubbleFX net/minecraft/client/particle/EntityBubbleFX +CL net/minecraft/client/particle/EntityBubbleFX$Factory net/minecraft/client/particle/EntityBubbleFX$Factory +CL net/minecraft/client/particle/EntityCrit2FX net/minecraft/client/particle/EntityCrit2FX +CL net/minecraft/client/particle/EntityCrit2FX$MagicFactory net/minecraft/client/particle/EntityCrit2FX$MagicFactory +CL net/minecraft/client/particle/EntityCrit2FX$Factory net/minecraft/client/particle/EntityCrit2FX$Factory +CL net/minecraft/client/particle/EntityDropParticleFX net/minecraft/client/particle/EntityDropParticleFX +CL net/minecraft/client/particle/EntityDropParticleFX$LavaFactory net/minecraft/client/particle/EntityDropParticleFX$LavaFactory +CL net/minecraft/client/particle/EntityDropParticleFX$WaterFactory net/minecraft/client/particle/EntityDropParticleFX$WaterFactory +CL net/minecraft/client/particle/EntityEnchantmentTableParticleFX net/minecraft/client/particle/EntityEnchantmentTableParticleFX +CL net/minecraft/client/particle/EntityEnchantmentTableParticleFX$EnchantmentTable net/minecraft/client/particle/EntityEnchantmentTableParticleFX$EnchantmentTable +CL net/minecraft/client/particle/EntityExplodeFX net/minecraft/client/particle/EntityExplodeFX +CL net/minecraft/client/particle/EntityExplodeFX$Factory net/minecraft/client/particle/EntityExplodeFX$Factory +CL net/minecraft/client/particle/EntityFirework net/minecraft/client/particle/EntityFirework +CL net/minecraft/client/particle/EntityFirework$OverlayFX net/minecraft/client/particle/EntityFirework$OverlayFX +CL net/minecraft/client/particle/EntityFirework$SparkFX net/minecraft/client/particle/EntityFirework$SparkFX +CL net/minecraft/client/particle/EntityFirework$StarterFX net/minecraft/client/particle/EntityFirework$StarterFX +CL net/minecraft/client/particle/EntityFirework$Factory net/minecraft/client/particle/EntityFirework$Factory +CL net/minecraft/client/particle/EntityFlameFX net/minecraft/client/particle/EntityFlameFX +CL net/minecraft/client/particle/EntityFlameFX$Factory net/minecraft/client/particle/EntityFlameFX$Factory +CL net/minecraft/client/particle/EntityFootStepFX net/minecraft/client/particle/EntityFootStepFX +CL net/minecraft/client/particle/EntityFootStepFX$Factory net/minecraft/client/particle/EntityFootStepFX$Factory +CL net/minecraft/client/particle/EntityHeartFX net/minecraft/client/particle/EntityHeartFX +CL net/minecraft/client/particle/EntityHeartFX$AngryVillagerFactory net/minecraft/client/particle/EntityHeartFX$AngryVillagerFactory +CL net/minecraft/client/particle/EntityHeartFX$Factory net/minecraft/client/particle/EntityHeartFX$Factory +CL net/minecraft/client/particle/EntityLargeExplodeFX net/minecraft/client/particle/EntityLargeExplodeFX +CL net/minecraft/client/particle/EntityLargeExplodeFX$Factory net/minecraft/client/particle/EntityLargeExplodeFX$Factory +CL net/minecraft/client/particle/EntityHugeExplodeFX net/minecraft/client/particle/EntityHugeExplodeFX +CL net/minecraft/client/particle/EntityHugeExplodeFX$Factory net/minecraft/client/particle/EntityHugeExplodeFX$Factory +CL net/minecraft/client/particle/EntityPickupFX net/minecraft/client/particle/EntityPickupFX +CL net/minecraft/client/particle/EntityCritFX net/minecraft/client/particle/EntityCritFX +CL net/minecraft/client/particle/EntityCritFX$Factory net/minecraft/client/particle/EntityCritFX$Factory +CL net/minecraft/client/particle/EntityLavaFX net/minecraft/client/particle/EntityLavaFX +CL net/minecraft/client/particle/EntityLavaFX$Factory net/minecraft/client/particle/EntityLavaFX$Factory +CL net/minecraft/client/particle/MobAppearance net/minecraft/client/particle/MobAppearance +CL net/minecraft/client/particle/MobAppearance$Factory net/minecraft/client/particle/MobAppearance$Factory +CL net/minecraft/client/particle/EntityNoteFX net/minecraft/client/particle/EntityNoteFX +CL net/minecraft/client/particle/EntityNoteFX$Factory net/minecraft/client/particle/EntityNoteFX$Factory +CL net/minecraft/client/particle/EntityFX net/minecraft/client/particle/EntityFX +CL net/minecraft/client/particle/EffectRenderer net/minecraft/client/particle/EffectRenderer +CL net/minecraft/client/particle/EffectRenderer$1 net/minecraft/client/particle/EffectRenderer$1 +CL net/minecraft/client/particle/EffectRenderer$2 net/minecraft/client/particle/EffectRenderer$2 +CL net/minecraft/client/particle/EffectRenderer$3 net/minecraft/client/particle/EffectRenderer$3 +CL net/minecraft/client/particle/EffectRenderer$4 net/minecraft/client/particle/EffectRenderer$4 +CL net/minecraft/client/particle/IParticleFactory net/minecraft/client/particle/IParticleFactory +CL net/minecraft/client/particle/EntityCloudFX net/minecraft/client/particle/EntityCloudFX +CL net/minecraft/client/particle/EntityCloudFX$Factory net/minecraft/client/particle/EntityCloudFX$Factory +CL net/minecraft/client/particle/EntityPortalFX net/minecraft/client/particle/EntityPortalFX +CL net/minecraft/client/particle/EntityPortalFX$Factory net/minecraft/client/particle/EntityPortalFX$Factory +CL net/minecraft/client/particle/EntityReddustFX net/minecraft/client/particle/EntityReddustFX +CL net/minecraft/client/particle/EntityReddustFX$Factory net/minecraft/client/particle/EntityReddustFX$Factory +CL net/minecraft/client/particle/EntitySmokeFX net/minecraft/client/particle/EntitySmokeFX +CL net/minecraft/client/particle/EntitySmokeFX$1 net/minecraft/client/particle/EntitySmokeFX$1 +CL net/minecraft/client/particle/EntitySmokeFX$Factory net/minecraft/client/particle/EntitySmokeFX$Factory +CL net/minecraft/client/particle/EntitySnowShovelFX net/minecraft/client/particle/EntitySnowShovelFX +CL net/minecraft/client/particle/EntitySnowShovelFX$Factory net/minecraft/client/particle/EntitySnowShovelFX$Factory +CL net/minecraft/client/particle/EntitySpellParticleFX net/minecraft/client/particle/EntitySpellParticleFX +CL net/minecraft/client/particle/EntitySpellParticleFX$AmbientMobFactory net/minecraft/client/particle/EntitySpellParticleFX$AmbientMobFactory +CL net/minecraft/client/particle/EntitySpellParticleFX$InstantFactory net/minecraft/client/particle/EntitySpellParticleFX$InstantFactory +CL net/minecraft/client/particle/EntitySpellParticleFX$MobFactory net/minecraft/client/particle/EntitySpellParticleFX$MobFactory +CL net/minecraft/client/particle/EntitySpellParticleFX$Factory net/minecraft/client/particle/EntitySpellParticleFX$Factory +CL net/minecraft/client/particle/EntitySpellParticleFX$WitchFactory net/minecraft/client/particle/EntitySpellParticleFX$WitchFactory +CL net/minecraft/client/particle/EntitySplashFX net/minecraft/client/particle/EntitySplashFX +CL net/minecraft/client/particle/EntitySplashFX$Factory net/minecraft/client/particle/EntitySplashFX$Factory +CL net/minecraft/client/particle/EntitySuspendFX net/minecraft/client/particle/EntitySuspendFX +CL net/minecraft/client/particle/EntitySuspendFX$Factory net/minecraft/client/particle/EntitySuspendFX$Factory +CL net/minecraft/client/particle/EntityAuraFX net/minecraft/client/particle/EntityAuraFX +CL net/minecraft/client/particle/EntityAuraFX$HappyVillagerFactory net/minecraft/client/particle/EntityAuraFX$HappyVillagerFactory +CL net/minecraft/client/particle/EntityAuraFX$Factory net/minecraft/client/particle/EntityAuraFX$Factory +CL net/minecraft/client/particle/EntityBlockDustFX net/minecraft/client/particle/EntityBlockDustFX +CL net/minecraft/client/particle/EntityBlockDustFX$Factory net/minecraft/client/particle/EntityBlockDustFX$Factory +CL net/minecraft/client/particle/EntityDiggingFX net/minecraft/client/particle/EntityDiggingFX +CL net/minecraft/client/particle/EntityDiggingFX$Factory net/minecraft/client/particle/EntityDiggingFX$Factory +CL net/minecraft/client/particle/EntityParticleEmitter net/minecraft/client/particle/EntityParticleEmitter +CL net/minecraft/client/particle/EntityFishWakeFX net/minecraft/client/particle/EntityFishWakeFX +CL net/minecraft/client/particle/EntityFishWakeFX$Factory net/minecraft/client/particle/EntityFishWakeFX$Factory +CL net/minecraft/client/particle/EntityRainFX net/minecraft/client/particle/EntityRainFX +CL net/minecraft/client/particle/EntityRainFX$Factory net/minecraft/client/particle/EntityRainFX$Factory +CL net/minecraft/client/entity/AbstractClientPlayer net/minecraft/client/entity/AbstractClientPlayer +CL net/minecraft/util/MovementInput net/minecraft/util/MovementInput +CL net/minecraft/util/MovementInputFromOptions net/minecraft/util/MovementInputFromOptions +CL net/minecraft/client/entity/EntityPlayerSP net/minecraft/client/entity/EntityPlayerSP +CL net/minecraft/client/entity/EntityOtherPlayerMP net/minecraft/client/entity/EntityOtherPlayerMP +CL net/minecraft/client/player/inventory/LocalBlockIntercommunication net/minecraft/client/player/inventory/LocalBlockIntercommunication +CL net/minecraft/client/player/inventory/ContainerLocalMenu net/minecraft/client/player/inventory/ContainerLocalMenu +CL net/minecraft/entity/boss/BossStatus net/minecraft/entity/boss/BossStatus +CL net/minecraft/client/renderer/WorldRenderer net/minecraft/client/renderer/WorldRenderer +CL net/minecraft/client/renderer/WorldRenderer$1 net/minecraft/client/renderer/WorldRenderer$1 +CL net/minecraft/client/renderer/WorldRenderer$2 net/minecraft/client/renderer/WorldRenderer$2 +CL net/minecraft/client/renderer/WorldRenderer$State net/minecraft/client/renderer/WorldRenderer$State +CL net/minecraft/client/renderer/WorldVertexBufferUploader net/minecraft/client/renderer/WorldVertexBufferUploader +CL net/minecraft/client/renderer/WorldVertexBufferUploader$1 net/minecraft/client/renderer/WorldVertexBufferUploader$1 +CL net/minecraft/client/renderer/RegionRenderCache net/minecraft/client/renderer/RegionRenderCache +CL net/minecraft/client/renderer/RegionRenderCacheBuilder net/minecraft/client/renderer/RegionRenderCacheBuilder +CL net/minecraft/client/renderer/ChunkRenderContainer net/minecraft/client/renderer/ChunkRenderContainer +CL net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer +CL net/minecraft/client/renderer/EnumFaceDirection net/minecraft/client/renderer/EnumFaceDirection +CL net/minecraft/client/renderer/EnumFaceDirection$1 net/minecraft/client/renderer/EnumFaceDirection$1 +CL net/minecraft/client/renderer/EnumFaceDirection$Constants net/minecraft/client/renderer/EnumFaceDirection$Constants +CL net/minecraft/client/renderer/EnumFaceDirection$VertexInformation net/minecraft/client/renderer/EnumFaceDirection$VertexInformation +CL net/minecraft/client/renderer/EntityRenderer net/minecraft/client/renderer/EntityRenderer +CL net/minecraft/client/renderer/EntityRenderer$1 net/minecraft/client/renderer/EntityRenderer$1 +CL net/minecraft/client/renderer/EntityRenderer$2 net/minecraft/client/renderer/EntityRenderer$2 +CL net/minecraft/client/renderer/EntityRenderer$3 net/minecraft/client/renderer/EntityRenderer$3 +CL net/minecraft/client/renderer/EntityRenderer$4 net/minecraft/client/renderer/EntityRenderer$4 +CL net/minecraft/client/renderer/GlStateManager net/minecraft/client/renderer/GlStateManager +CL net/minecraft/client/renderer/GlStateManager$1 net/minecraft/client/renderer/GlStateManager$1 +CL net/minecraft/client/renderer/GlStateManager$AlphaState net/minecraft/client/renderer/GlStateManager$AlphaState +CL net/minecraft/client/renderer/GlStateManager$BlendState net/minecraft/client/renderer/GlStateManager$BlendState +CL net/minecraft/client/renderer/GlStateManager$BooleanState net/minecraft/client/renderer/GlStateManager$BooleanState +CL net/minecraft/client/renderer/GlStateManager$ClearState net/minecraft/client/renderer/GlStateManager$ClearState +CL net/minecraft/client/renderer/GlStateManager$Color net/minecraft/client/renderer/GlStateManager$Color +CL net/minecraft/client/renderer/GlStateManager$ColorLogicState net/minecraft/client/renderer/GlStateManager$ColorLogicState +CL net/minecraft/client/renderer/GlStateManager$ColorMask net/minecraft/client/renderer/GlStateManager$ColorMask +CL net/minecraft/client/renderer/GlStateManager$ColorMaterialState net/minecraft/client/renderer/GlStateManager$ColorMaterialState +CL net/minecraft/client/renderer/GlStateManager$CullState net/minecraft/client/renderer/GlStateManager$CullState +CL net/minecraft/client/renderer/GlStateManager$DepthState net/minecraft/client/renderer/GlStateManager$DepthState +CL net/minecraft/client/renderer/GlStateManager$FogState net/minecraft/client/renderer/GlStateManager$FogState +CL net/minecraft/client/renderer/GlStateManager$PolygonOffsetState net/minecraft/client/renderer/GlStateManager$PolygonOffsetState +CL net/minecraft/client/renderer/GlStateManager$StencilFunc net/minecraft/client/renderer/GlStateManager$StencilFunc +CL net/minecraft/client/renderer/GlStateManager$StencilState net/minecraft/client/renderer/GlStateManager$StencilState +CL net/minecraft/client/renderer/GlStateManager$TexGen net/minecraft/client/renderer/GlStateManager$TexGen +CL net/minecraft/client/renderer/GlStateManager$TexGenCoord net/minecraft/client/renderer/GlStateManager$TexGenCoord +CL net/minecraft/client/renderer/GlStateManager$TexGenState net/minecraft/client/renderer/GlStateManager$TexGenState +CL net/minecraft/client/renderer/GlStateManager$TextureState net/minecraft/client/renderer/GlStateManager$TextureState +CL net/minecraft/client/renderer/IImageBuffer net/minecraft/client/renderer/IImageBuffer +CL net/minecraft/client/renderer/ItemRenderer net/minecraft/client/renderer/ItemRenderer +CL net/minecraft/client/renderer/ItemRenderer$1 net/minecraft/client/renderer/ItemRenderer$1 +CL net/minecraft/client/renderer/ItemModelMesher net/minecraft/client/renderer/ItemModelMesher +CL net/minecraft/client/renderer/ItemMeshDefinition net/minecraft/client/renderer/ItemMeshDefinition +CL net/minecraft/client/renderer/RenderGlobal net/minecraft/client/renderer/RenderGlobal +CL net/minecraft/client/renderer/RenderGlobal$1 net/minecraft/client/renderer/RenderGlobal$1 +CL net/minecraft/client/renderer/RenderGlobal$2 net/minecraft/client/renderer/RenderGlobal$2 +CL net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation +CL net/minecraft/client/renderer/ImageBufferDownload net/minecraft/client/renderer/ImageBufferDownload +CL net/minecraft/client/renderer/RenderList net/minecraft/client/renderer/RenderList +CL net/minecraft/client/shader/Framebuffer net/minecraft/client/shader/Framebuffer +CL net/minecraft/client/renderer/Tessellator net/minecraft/client/renderer/Tessellator +CL net/minecraft/client/renderer/VboRenderList net/minecraft/client/renderer/VboRenderList +CL net/minecraft/client/renderer/VertexBufferUploader net/minecraft/client/renderer/VertexBufferUploader +CL net/minecraft/client/renderer/ViewFrustum net/minecraft/client/renderer/ViewFrustum +CL net/minecraft/client/renderer/ChestRenderer net/minecraft/client/renderer/ChestRenderer +CL net/minecraft/client/renderer/BlockModelShapes net/minecraft/client/renderer/BlockModelShapes +CL net/minecraft/client/renderer/BlockModelShapes$1 net/minecraft/client/renderer/BlockModelShapes$1 +CL net/minecraft/client/renderer/BlockModelShapes$2 net/minecraft/client/renderer/BlockModelShapes$2 +CL net/minecraft/client/renderer/BlockModelShapes$3 net/minecraft/client/renderer/BlockModelShapes$3 +CL net/minecraft/client/renderer/BlockModelShapes$4 net/minecraft/client/renderer/BlockModelShapes$4 +CL net/minecraft/client/renderer/BlockModelShapes$5 net/minecraft/client/renderer/BlockModelShapes$5 +CL net/minecraft/client/renderer/BlockModelShapes$6 net/minecraft/client/renderer/BlockModelShapes$6 +CL net/minecraft/client/renderer/BlockModelShapes$7 net/minecraft/client/renderer/BlockModelShapes$7 +CL net/minecraft/client/renderer/BlockModelShapes$8 net/minecraft/client/renderer/BlockModelShapes$8 +CL net/minecraft/client/renderer/BlockRendererDispatcher net/minecraft/client/renderer/BlockRendererDispatcher +CL net/minecraft/client/renderer/BlockFluidRenderer net/minecraft/client/renderer/BlockFluidRenderer +CL net/minecraft/client/renderer/BlockModelRenderer net/minecraft/client/renderer/BlockModelRenderer +CL net/minecraft/client/renderer/BlockModelRenderer$1 net/minecraft/client/renderer/BlockModelRenderer$1 +CL net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo +CL net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace +CL net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations +CL net/minecraft/client/renderer/BlockModelRenderer$Orientation net/minecraft/client/renderer/BlockModelRenderer$Orientation +CL net/minecraft/client/renderer/block/model/BakedQuad net/minecraft/client/renderer/block/model/BakedQuad +CL net/minecraft/client/renderer/block/model/BlockPart net/minecraft/client/renderer/block/model/BlockPart +CL net/minecraft/client/renderer/block/model/BlockPart$1 net/minecraft/client/renderer/block/model/BlockPart$1 +CL net/minecraft/client/renderer/block/model/BlockPart$Deserializer net/minecraft/client/renderer/block/model/BlockPart$Deserializer +CL net/minecraft/client/renderer/block/model/BlockPartFace net/minecraft/client/renderer/block/model/BlockPartFace +CL net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer +CL net/minecraft/client/renderer/block/model/BlockPartRotation net/minecraft/client/renderer/block/model/BlockPartRotation +CL net/minecraft/client/renderer/block/model/BlockFaceUV net/minecraft/client/renderer/block/model/BlockFaceUV +CL net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer +CL net/minecraft/client/renderer/block/model/ModelBlock net/minecraft/client/renderer/block/model/ModelBlock +CL net/minecraft/client/renderer/block/model/ModelBlock$1 net/minecraft/client/renderer/block/model/ModelBlock$1 +CL net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep +CL net/minecraft/client/renderer/block/model/ModelBlock$Deserializer net/minecraft/client/renderer/block/model/ModelBlock$Deserializer +CL net/minecraft/client/renderer/block/model/ModelBlock$LoopException net/minecraft/client/renderer/block/model/ModelBlock$LoopException +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition net/minecraft/client/renderer/block/model/ModelBlockDefinition +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$MissingVariantException net/minecraft/client/renderer/block/model/ModelBlockDefinition$MissingVariantException +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer +CL net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants +CL net/minecraft/client/renderer/block/model/BreakingFour net/minecraft/client/renderer/block/model/BreakingFour +CL net/minecraft/client/renderer/block/model/BreakingFour$1 net/minecraft/client/renderer/block/model/BreakingFour$1 +CL net/minecraft/client/renderer/block/model/FaceBakery net/minecraft/client/renderer/block/model/FaceBakery +CL net/minecraft/client/renderer/block/model/FaceBakery$1 net/minecraft/client/renderer/block/model/FaceBakery$1 +CL net/minecraft/client/renderer/block/model/ItemModelGenerator net/minecraft/client/renderer/block/model/ItemModelGenerator +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$1 net/minecraft/client/renderer/block/model/ItemModelGenerator$1 +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$Span net/minecraft/client/renderer/block/model/ItemModelGenerator$Span +CL net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing +CL net/minecraft/client/renderer/block/model/ItemTransformVec3f net/minecraft/client/renderer/block/model/ItemTransformVec3f +CL net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms net/minecraft/client/renderer/block/model/ItemCameraTransforms +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$1 net/minecraft/client/renderer/block/model/ItemCameraTransforms$1 +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer +CL net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType +CL net/minecraft/client/renderer/block/statemap/StateMapperBase net/minecraft/client/renderer/block/statemap/StateMapperBase +CL net/minecraft/client/renderer/block/statemap/BlockStateMapper net/minecraft/client/renderer/block/statemap/BlockStateMapper +CL net/minecraft/client/renderer/block/statemap/DefaultStateMapper net/minecraft/client/renderer/block/statemap/DefaultStateMapper +CL net/minecraft/client/renderer/block/statemap/StateMap net/minecraft/client/renderer/block/statemap/StateMap +CL net/minecraft/client/renderer/block/statemap/StateMap$1 net/minecraft/client/renderer/block/statemap/StateMap$1 +CL net/minecraft/client/renderer/block/statemap/StateMap$Builder net/minecraft/client/renderer/block/statemap/StateMap$Builder +CL net/minecraft/client/renderer/block/statemap/IStateMapper net/minecraft/client/renderer/block/statemap/IStateMapper +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$1 net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$1 +CL net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture +CL net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher +CL net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityChestRenderer net/minecraft/client/renderer/tileentity/TileEntityChestRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer +CL net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer +CL net/minecraft/client/renderer/tileentity/TileEntitySignRenderer net/minecraft/client/renderer/tileentity/TileEntitySignRenderer +CL net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer +CL net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer$1 net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer$1 +CL net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status +CL net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher net/minecraft/client/renderer/chunk/ChunkRenderDispatcher +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 +CL net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker net/minecraft/client/renderer/chunk/ChunkRenderWorker +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 +CL net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 +CL net/minecraft/client/renderer/chunk/CompiledChunk net/minecraft/client/renderer/chunk/CompiledChunk +CL net/minecraft/client/renderer/chunk/CompiledChunk$1 net/minecraft/client/renderer/chunk/CompiledChunk$1 +CL net/minecraft/client/renderer/chunk/ListChunkFactory net/minecraft/client/renderer/chunk/ListChunkFactory +CL net/minecraft/client/renderer/chunk/ListedRenderChunk net/minecraft/client/renderer/chunk/ListedRenderChunk +CL net/minecraft/client/renderer/chunk/RenderChunk net/minecraft/client/renderer/chunk/RenderChunk +CL net/minecraft/client/renderer/chunk/IRenderChunkFactory net/minecraft/client/renderer/chunk/IRenderChunkFactory +CL net/minecraft/client/renderer/chunk/VboChunkFactory net/minecraft/client/renderer/chunk/VboChunkFactory +CL net/minecraft/client/renderer/chunk/VisGraph net/minecraft/client/renderer/chunk/VisGraph +CL net/minecraft/client/renderer/chunk/VisGraph$1 net/minecraft/client/renderer/chunk/VisGraph$1 +CL net/minecraft/client/renderer/chunk/SetVisibility net/minecraft/client/renderer/chunk/SetVisibility +CL net/minecraft/client/renderer/culling/ICamera net/minecraft/client/renderer/culling/ICamera +CL net/minecraft/client/renderer/culling/ClippingHelperImpl net/minecraft/client/renderer/culling/ClippingHelperImpl +CL net/minecraft/client/renderer/culling/Frustum net/minecraft/client/renderer/culling/Frustum +CL net/minecraft/client/renderer/culling/ClippingHelper net/minecraft/client/renderer/culling/ClippingHelper +CL net/minecraft/client/renderer/entity/ArmorStandRenderer net/minecraft/client/renderer/entity/ArmorStandRenderer +CL net/minecraft/client/renderer/entity/ArmorStandRenderer$1 net/minecraft/client/renderer/entity/ArmorStandRenderer$1 +CL net/minecraft/client/renderer/entity/RenderArrow net/minecraft/client/renderer/entity/RenderArrow +CL net/minecraft/client/renderer/entity/RenderBat net/minecraft/client/renderer/entity/RenderBat +CL net/minecraft/client/renderer/entity/RenderBlaze net/minecraft/client/renderer/entity/RenderBlaze +CL net/minecraft/client/renderer/entity/RenderBoat net/minecraft/client/renderer/entity/RenderBoat +CL net/minecraft/client/renderer/entity/RenderCaveSpider net/minecraft/client/renderer/entity/RenderCaveSpider +CL net/minecraft/client/renderer/entity/RenderChicken net/minecraft/client/renderer/entity/RenderChicken +CL net/minecraft/client/renderer/entity/RenderCow net/minecraft/client/renderer/entity/RenderCow +CL net/minecraft/client/renderer/entity/RenderCreeper net/minecraft/client/renderer/entity/RenderCreeper +CL net/minecraft/client/renderer/entity/RenderEntity net/minecraft/client/renderer/entity/RenderEntity +CL net/minecraft/client/renderer/tileentity/RenderEnderCrystal net/minecraft/client/renderer/tileentity/RenderEnderCrystal +CL net/minecraft/client/renderer/entity/RenderDragon net/minecraft/client/renderer/entity/RenderDragon +CL net/minecraft/client/renderer/entity/RenderEnderman net/minecraft/client/renderer/entity/RenderEnderman +CL net/minecraft/client/renderer/entity/RenderEndermite net/minecraft/client/renderer/entity/RenderEndermite +CL net/minecraft/client/renderer/entity/RenderManager net/minecraft/client/renderer/entity/RenderManager +CL net/minecraft/client/renderer/entity/Render net/minecraft/client/renderer/entity/Render +CL net/minecraft/client/renderer/entity/RenderXPOrb net/minecraft/client/renderer/entity/RenderXPOrb +CL net/minecraft/client/renderer/entity/RenderFallingBlock net/minecraft/client/renderer/entity/RenderFallingBlock +CL net/minecraft/client/renderer/entity/RenderFireball net/minecraft/client/renderer/entity/RenderFireball +CL net/minecraft/client/renderer/entity/RenderFish net/minecraft/client/renderer/entity/RenderFish +CL net/minecraft/client/renderer/entity/RenderGhast net/minecraft/client/renderer/entity/RenderGhast +CL net/minecraft/client/renderer/entity/RenderGiantZombie net/minecraft/client/renderer/entity/RenderGiantZombie +CL net/minecraft/client/renderer/entity/RenderGiantZombie$1 net/minecraft/client/renderer/entity/RenderGiantZombie$1 +CL net/minecraft/client/renderer/entity/RenderGuardian net/minecraft/client/renderer/entity/RenderGuardian +CL net/minecraft/client/renderer/entity/RenderHorse net/minecraft/client/renderer/entity/RenderHorse +CL net/minecraft/client/renderer/entity/RenderBiped net/minecraft/client/renderer/entity/RenderBiped +CL net/minecraft/client/renderer/entity/RenderEntityItem net/minecraft/client/renderer/entity/RenderEntityItem +CL net/minecraft/client/renderer/tileentity/RenderItemFrame net/minecraft/client/renderer/tileentity/RenderItemFrame +CL net/minecraft/client/renderer/entity/RenderItem net/minecraft/client/renderer/entity/RenderItem +CL net/minecraft/client/renderer/entity/RenderItem$1 net/minecraft/client/renderer/entity/RenderItem$1 +CL net/minecraft/client/renderer/entity/RenderItem$2 net/minecraft/client/renderer/entity/RenderItem$2 +CL net/minecraft/client/renderer/entity/RenderItem$3 net/minecraft/client/renderer/entity/RenderItem$3 +CL net/minecraft/client/renderer/entity/RenderItem$4 net/minecraft/client/renderer/entity/RenderItem$4 +CL net/minecraft/client/renderer/entity/RenderItem$5 net/minecraft/client/renderer/entity/RenderItem$5 +CL net/minecraft/client/renderer/entity/RenderItem$6 net/minecraft/client/renderer/entity/RenderItem$6 +CL net/minecraft/client/renderer/entity/RenderItem$7 net/minecraft/client/renderer/entity/RenderItem$7 +CL net/minecraft/client/renderer/entity/RenderItem$8 net/minecraft/client/renderer/entity/RenderItem$8 +CL net/minecraft/client/renderer/entity/RenderItem$9 net/minecraft/client/renderer/entity/RenderItem$9 +CL net/minecraft/client/renderer/entity/RenderMagmaCube net/minecraft/client/renderer/entity/RenderMagmaCube +CL net/minecraft/client/renderer/entity/RenderLeashKnot net/minecraft/client/renderer/entity/RenderLeashKnot +CL net/minecraft/client/renderer/entity/RenderLightningBolt net/minecraft/client/renderer/entity/RenderLightningBolt +CL net/minecraft/client/renderer/entity/RendererLivingEntity net/minecraft/client/renderer/entity/RendererLivingEntity +CL net/minecraft/client/renderer/entity/RendererLivingEntity$1 net/minecraft/client/renderer/entity/RendererLivingEntity$1 +CL net/minecraft/client/renderer/entity/RenderMinecart net/minecraft/client/renderer/entity/RenderMinecart +CL net/minecraft/client/renderer/entity/RenderMinecartMobSpawner net/minecraft/client/renderer/entity/RenderMinecartMobSpawner +CL net/minecraft/client/renderer/entity/RenderLiving net/minecraft/client/renderer/entity/RenderLiving +CL net/minecraft/client/renderer/entity/RenderMooshroom net/minecraft/client/renderer/entity/RenderMooshroom +CL net/minecraft/client/renderer/entity/RenderOcelot net/minecraft/client/renderer/entity/RenderOcelot +CL net/minecraft/client/renderer/entity/RenderPainting net/minecraft/client/renderer/entity/RenderPainting +CL net/minecraft/client/renderer/entity/RenderPig net/minecraft/client/renderer/entity/RenderPig +CL net/minecraft/client/renderer/entity/RenderPigZombie net/minecraft/client/renderer/entity/RenderPigZombie +CL net/minecraft/client/renderer/entity/RenderPigZombie$1 net/minecraft/client/renderer/entity/RenderPigZombie$1 +CL net/minecraft/client/renderer/entity/RenderRabbit net/minecraft/client/renderer/entity/RenderRabbit +CL net/minecraft/client/renderer/entity/RenderSheep net/minecraft/client/renderer/entity/RenderSheep +CL net/minecraft/client/renderer/entity/RenderSilverfish net/minecraft/client/renderer/entity/RenderSilverfish +CL net/minecraft/client/renderer/entity/RenderSkeleton net/minecraft/client/renderer/entity/RenderSkeleton +CL net/minecraft/client/renderer/entity/RenderSkeleton$1 net/minecraft/client/renderer/entity/RenderSkeleton$1 +CL net/minecraft/client/renderer/entity/RenderSlime net/minecraft/client/renderer/entity/RenderSlime +CL net/minecraft/client/renderer/entity/RenderSnowMan net/minecraft/client/renderer/entity/RenderSnowMan +CL net/minecraft/client/renderer/entity/RenderSpider net/minecraft/client/renderer/entity/RenderSpider +CL net/minecraft/client/renderer/entity/RenderSquid net/minecraft/client/renderer/entity/RenderSquid +CL net/minecraft/client/renderer/entity/RenderSnowball net/minecraft/client/renderer/entity/RenderSnowball +CL net/minecraft/client/renderer/entity/RenderPotion net/minecraft/client/renderer/entity/RenderPotion +CL net/minecraft/client/renderer/entity/RenderTntMinecart net/minecraft/client/renderer/entity/RenderTntMinecart +CL net/minecraft/client/renderer/entity/RenderTNTPrimed net/minecraft/client/renderer/entity/RenderTNTPrimed +CL net/minecraft/client/renderer/entity/RenderIronGolem net/minecraft/client/renderer/entity/RenderIronGolem +CL net/minecraft/client/renderer/entity/RenderVillager net/minecraft/client/renderer/entity/RenderVillager +CL net/minecraft/client/renderer/entity/RenderWitch net/minecraft/client/renderer/entity/RenderWitch +CL net/minecraft/client/renderer/entity/RenderWither net/minecraft/client/renderer/entity/RenderWither +CL net/minecraft/client/renderer/tileentity/RenderWitherSkull net/minecraft/client/renderer/tileentity/RenderWitherSkull +CL net/minecraft/client/renderer/entity/RenderWolf net/minecraft/client/renderer/entity/RenderWolf +CL net/minecraft/client/renderer/entity/RenderZombie net/minecraft/client/renderer/entity/RenderZombie +CL net/minecraft/client/renderer/entity/RenderZombie$1 net/minecraft/client/renderer/entity/RenderZombie$1 +CL net/minecraft/client/renderer/entity/layers/LayerArmorBase net/minecraft/client/renderer/entity/layers/LayerArmorBase +CL net/minecraft/client/renderer/entity/layers/LayerArmorBase$1 net/minecraft/client/renderer/entity/layers/LayerArmorBase$1 +CL net/minecraft/client/renderer/entity/layers/LayerArrow net/minecraft/client/renderer/entity/layers/LayerArrow +CL net/minecraft/client/renderer/entity/layers/LayerCape net/minecraft/client/renderer/entity/layers/LayerCape +CL net/minecraft/client/renderer/entity/layers/LayerHeldBlock net/minecraft/client/renderer/entity/layers/LayerHeldBlock +CL net/minecraft/client/renderer/entity/layers/LayerCreeperCharge net/minecraft/client/renderer/entity/layers/LayerCreeperCharge +CL net/minecraft/client/renderer/entity/layers/LayerCustomHead net/minecraft/client/renderer/entity/layers/LayerCustomHead +CL net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head +CL net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath +CL net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes +CL net/minecraft/client/renderer/entity/layers/LayerEndermanEyes net/minecraft/client/renderer/entity/layers/LayerEndermanEyes +CL net/minecraft/client/renderer/entity/layers/LayerBipedArmor net/minecraft/client/renderer/entity/layers/LayerBipedArmor +CL net/minecraft/client/renderer/entity/layers/LayerHeldItem net/minecraft/client/renderer/entity/layers/LayerHeldItem +CL net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom +CL net/minecraft/client/renderer/entity/layers/LayerSaddle net/minecraft/client/renderer/entity/layers/LayerSaddle +CL net/minecraft/client/renderer/entity/layers/LayerRenderer net/minecraft/client/renderer/entity/layers/LayerRenderer +CL net/minecraft/client/renderer/entity/layers/LayerSheepWool net/minecraft/client/renderer/entity/layers/LayerSheepWool +CL net/minecraft/client/renderer/entity/layers/LayerSlimeGel net/minecraft/client/renderer/entity/layers/LayerSlimeGel +CL net/minecraft/client/renderer/entity/layers/LayerSnowmanHead net/minecraft/client/renderer/entity/layers/LayerSnowmanHead +CL net/minecraft/client/renderer/entity/layers/LayerSpiderEyes net/minecraft/client/renderer/entity/layers/LayerSpiderEyes +CL net/minecraft/client/renderer/entity/layers/LayerVillagerArmor net/minecraft/client/renderer/entity/layers/LayerVillagerArmor +CL net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower +CL net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch +CL net/minecraft/client/renderer/entity/layers/LayerWitherAura net/minecraft/client/renderer/entity/layers/LayerWitherAura +CL net/minecraft/client/renderer/entity/layers/LayerWolfCollar net/minecraft/client/renderer/entity/layers/LayerWolfCollar +CL net/minecraft/client/renderer/entity/RenderPlayer net/minecraft/client/renderer/entity/RenderPlayer +CL net/minecraft/client/util/JsonBlendingMode net/minecraft/client/util/JsonBlendingMode +CL net/minecraft/client/shader/ShaderDefault net/minecraft/client/shader/ShaderDefault +CL net/minecraft/client/shader/ShaderManager net/minecraft/client/shader/ShaderManager +CL net/minecraft/client/shader/ShaderGroup net/minecraft/client/shader/ShaderGroup +CL net/minecraft/client/shader/Shader net/minecraft/client/shader/Shader +CL net/minecraft/client/shader/ShaderLoader net/minecraft/client/shader/ShaderLoader +CL net/minecraft/client/shader/ShaderLoader$ShaderType net/minecraft/client/shader/ShaderLoader$ShaderType +CL net/minecraft/client/shader/ShaderLinkHelper net/minecraft/client/shader/ShaderLinkHelper +CL net/minecraft/client/shader/ShaderUniform net/minecraft/client/shader/ShaderUniform +CL net/minecraft/client/renderer/texture/AbstractTexture net/minecraft/client/renderer/texture/AbstractTexture +CL net/minecraft/client/renderer/texture/DynamicTexture net/minecraft/client/renderer/texture/DynamicTexture +CL net/minecraft/client/renderer/ThreadDownloadImageData net/minecraft/client/renderer/ThreadDownloadImageData +CL net/minecraft/client/renderer/ThreadDownloadImageData$1 net/minecraft/client/renderer/ThreadDownloadImageData$1 +CL net/minecraft/client/renderer/texture/IIconCreator net/minecraft/client/renderer/texture/IIconCreator +CL net/minecraft/client/renderer/texture/LayeredColorMaskTexture net/minecraft/client/renderer/texture/LayeredColorMaskTexture +CL net/minecraft/client/renderer/texture/LayeredTexture net/minecraft/client/renderer/texture/LayeredTexture +CL net/minecraft/client/renderer/texture/SimpleTexture net/minecraft/client/renderer/texture/SimpleTexture +CL net/minecraft/client/renderer/texture/Stitcher net/minecraft/client/renderer/texture/Stitcher +CL net/minecraft/client/renderer/texture/Stitcher$Holder net/minecraft/client/renderer/texture/Stitcher$Holder +CL net/minecraft/client/renderer/texture/Stitcher$Slot net/minecraft/client/renderer/texture/Stitcher$Slot +CL net/minecraft/client/renderer/StitcherException net/minecraft/client/renderer/StitcherException +CL net/minecraft/client/renderer/texture/TextureMap net/minecraft/client/renderer/texture/TextureMap +CL net/minecraft/client/renderer/texture/TextureMap$1 net/minecraft/client/renderer/texture/TextureMap$1 +CL net/minecraft/client/renderer/texture/TextureMap$2 net/minecraft/client/renderer/texture/TextureMap$2 +CL net/minecraft/client/renderer/texture/TextureMap$3 net/minecraft/client/renderer/texture/TextureMap$3 +CL net/minecraft/client/renderer/texture/TextureAtlasSprite net/minecraft/client/renderer/texture/TextureAtlasSprite +CL net/minecraft/client/renderer/texture/TextureAtlasSprite$1 net/minecraft/client/renderer/texture/TextureAtlasSprite$1 +CL net/minecraft/client/renderer/texture/TextureManager net/minecraft/client/renderer/texture/TextureManager +CL net/minecraft/client/renderer/texture/TextureManager$1 net/minecraft/client/renderer/texture/TextureManager$1 +CL net/minecraft/client/renderer/texture/ITextureObject net/minecraft/client/renderer/texture/ITextureObject +CL net/minecraft/client/renderer/texture/TextureUtil net/minecraft/client/renderer/texture/TextureUtil +CL net/minecraft/client/renderer/texture/ITickable net/minecraft/client/renderer/texture/ITickable +CL net/minecraft/client/renderer/texture/ITickableTextureObject net/minecraft/client/renderer/texture/ITickableTextureObject +CL net/minecraft/client/renderer/texture/TextureClock net/minecraft/client/renderer/texture/TextureClock +CL net/minecraft/client/renderer/texture/TextureCompass net/minecraft/client/renderer/texture/TextureCompass +CL net/minecraft/client/renderer/vertex/DefaultVertexFormats net/minecraft/client/renderer/vertex/DefaultVertexFormats +CL net/minecraft/client/renderer/vertex/VertexBuffer net/minecraft/client/renderer/vertex/VertexBuffer +CL net/minecraft/client/renderer/vertex/VertexFormat net/minecraft/client/renderer/vertex/VertexFormat +CL net/minecraft/client/renderer/vertex/VertexFormat$1 net/minecraft/client/renderer/vertex/VertexFormat$1 +CL net/minecraft/client/renderer/vertex/VertexFormatElement net/minecraft/client/renderer/vertex/VertexFormatElement +CL net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType +CL net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage +CL net/minecraft/client/resources/AbstractResourcePack net/minecraft/client/resources/AbstractResourcePack +CL net/minecraft/client/resources/ResourceIndex net/minecraft/client/resources/ResourceIndex +CL net/minecraft/client/resources/DefaultPlayerSkin net/minecraft/client/resources/DefaultPlayerSkin +CL net/minecraft/client/resources/DefaultResourcePack net/minecraft/client/resources/DefaultResourcePack +CL net/minecraft/client/resources/FallbackResourceManager net/minecraft/client/resources/FallbackResourceManager +CL net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger +CL net/minecraft/client/resources/FileResourcePack net/minecraft/client/resources/FileResourcePack +CL net/minecraft/client/resources/FolderResourcePack net/minecraft/client/resources/FolderResourcePack +CL net/minecraft/client/resources/FoliageColorReloadListener net/minecraft/client/resources/FoliageColorReloadListener +CL net/minecraft/client/resources/GrassColorReloadListener net/minecraft/client/resources/GrassColorReloadListener +CL net/minecraft/client/resources/IReloadableResourceManager net/minecraft/client/resources/IReloadableResourceManager +CL net/minecraft/client/resources/IResource net/minecraft/client/resources/IResource +CL net/minecraft/client/resources/IResourceManager net/minecraft/client/resources/IResourceManager +CL net/minecraft/client/resources/IResourceManagerReloadListener net/minecraft/client/resources/IResourceManagerReloadListener +CL net/minecraft/client/resources/IResourcePack net/minecraft/client/resources/IResourcePack +CL net/minecraft/client/resources/ResourcePackFileNotFoundException net/minecraft/client/resources/ResourcePackFileNotFoundException +CL net/minecraft/client/resources/ResourcePackRepository net/minecraft/client/resources/ResourcePackRepository +CL net/minecraft/client/resources/ResourcePackRepository$1 net/minecraft/client/resources/ResourcePackRepository$1 +CL net/minecraft/client/resources/ResourcePackRepository$2 net/minecraft/client/resources/ResourcePackRepository$2 +CL net/minecraft/client/resources/ResourcePackRepository$3 net/minecraft/client/resources/ResourcePackRepository$3 +CL net/minecraft/client/resources/ResourcePackRepository$Entry net/minecraft/client/resources/ResourcePackRepository$Entry +CL net/minecraft/client/resources/SimpleReloadableResourceManager net/minecraft/client/resources/SimpleReloadableResourceManager +CL net/minecraft/client/resources/SimpleReloadableResourceManager$1 net/minecraft/client/resources/SimpleReloadableResourceManager$1 +CL net/minecraft/client/resources/SimpleResource net/minecraft/client/resources/SimpleResource +CL net/minecraft/client/resources/SkinManager net/minecraft/client/resources/SkinManager +CL net/minecraft/client/resources/SkinManager$1 net/minecraft/client/resources/SkinManager$1 +CL net/minecraft/client/resources/SkinManager$2 net/minecraft/client/resources/SkinManager$2 +CL net/minecraft/client/resources/SkinManager$3 net/minecraft/client/resources/SkinManager$3 +CL net/minecraft/client/resources/SkinManager$3$1 net/minecraft/client/resources/SkinManager$3$1 +CL net/minecraft/client/resources/SkinManager$SkinAvailableCallback net/minecraft/client/resources/SkinManager$SkinAvailableCallback +CL net/minecraft/client/resources/I18n net/minecraft/client/resources/I18n +CL net/minecraft/client/resources/Language net/minecraft/client/resources/Language +CL net/minecraft/client/resources/LanguageManager net/minecraft/client/resources/LanguageManager +CL net/minecraft/client/resources/Locale net/minecraft/client/resources/Locale +CL net/minecraft/client/resources/data/BaseMetadataSectionSerializer net/minecraft/client/resources/data/BaseMetadataSectionSerializer +CL net/minecraft/client/resources/data/IMetadataSection net/minecraft/client/resources/data/IMetadataSection +CL net/minecraft/client/resources/data/IMetadataSectionSerializer net/minecraft/client/resources/data/IMetadataSectionSerializer +CL net/minecraft/client/resources/data/IMetadataSerializer net/minecraft/client/resources/data/IMetadataSerializer +CL net/minecraft/client/resources/data/IMetadataSerializer$1 net/minecraft/client/resources/data/IMetadataSerializer$1 +CL net/minecraft/client/resources/data/IMetadataSerializer$Registration net/minecraft/client/resources/data/IMetadataSerializer$Registration +CL net/minecraft/client/resources/data/AnimationFrame net/minecraft/client/resources/data/AnimationFrame +CL net/minecraft/client/resources/data/AnimationMetadataSection net/minecraft/client/resources/data/AnimationMetadataSection +CL net/minecraft/client/resources/data/AnimationMetadataSectionSerializer net/minecraft/client/resources/data/AnimationMetadataSectionSerializer +CL net/minecraft/client/resources/data/FontMetadataSection net/minecraft/client/resources/data/FontMetadataSection +CL net/minecraft/client/resources/data/FontMetadataSectionSerializer net/minecraft/client/resources/data/FontMetadataSectionSerializer +CL net/minecraft/client/resources/data/LanguageMetadataSection net/minecraft/client/resources/data/LanguageMetadataSection +CL net/minecraft/client/resources/data/LanguageMetadataSectionSerializer net/minecraft/client/resources/data/LanguageMetadataSectionSerializer +CL net/minecraft/client/resources/data/PackMetadataSection net/minecraft/client/resources/data/PackMetadataSection +CL net/minecraft/client/resources/data/PackMetadataSectionSerializer net/minecraft/client/resources/data/PackMetadataSectionSerializer +CL net/minecraft/client/resources/data/TextureMetadataSection net/minecraft/client/resources/data/TextureMetadataSection +CL net/minecraft/client/resources/data/TextureMetadataSectionSerializer net/minecraft/client/resources/data/TextureMetadataSectionSerializer +CL net/minecraft/client/resources/model/IBakedModel net/minecraft/client/resources/model/IBakedModel +CL net/minecraft/client/resources/model/ModelRotation net/minecraft/client/resources/model/ModelRotation +CL net/minecraft/client/resources/model/BuiltInModel net/minecraft/client/resources/model/BuiltInModel +CL net/minecraft/client/resources/model/ModelBakery net/minecraft/client/resources/model/ModelBakery +CL net/minecraft/client/resources/model/ModelBakery$1 net/minecraft/client/resources/model/ModelBakery$1 +CL net/minecraft/client/resources/model/ModelBakery$2 net/minecraft/client/resources/model/ModelBakery$2 +CL net/minecraft/client/resources/model/ModelManager net/minecraft/client/resources/model/ModelManager +CL net/minecraft/client/resources/model/ModelResourceLocation net/minecraft/client/resources/model/ModelResourceLocation +CL net/minecraft/client/resources/model/SimpleBakedModel net/minecraft/client/resources/model/SimpleBakedModel +CL net/minecraft/client/resources/model/SimpleBakedModel$Builder net/minecraft/client/resources/model/SimpleBakedModel$Builder +CL net/minecraft/client/resources/model/WeightedBakedModel net/minecraft/client/resources/model/WeightedBakedModel +CL net/minecraft/client/resources/model/WeightedBakedModel$Builder net/minecraft/client/resources/model/WeightedBakedModel$Builder +CL net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem +CL net/minecraft/client/audio/PositionedSound net/minecraft/client/audio/PositionedSound +CL net/minecraft/client/audio/MovingSound net/minecraft/client/audio/MovingSound +CL net/minecraft/client/audio/GuardianSound net/minecraft/client/audio/GuardianSound +CL net/minecraft/client/audio/MovingSoundMinecart net/minecraft/client/audio/MovingSoundMinecart +CL net/minecraft/client/audio/MovingSoundMinecartRiding net/minecraft/client/audio/MovingSoundMinecartRiding +CL net/minecraft/client/audio/PositionedSoundRecord net/minecraft/client/audio/PositionedSoundRecord +CL net/minecraft/client/audio/SoundCategory net/minecraft/client/audio/SoundCategory +CL net/minecraft/client/audio/SoundList net/minecraft/client/audio/SoundList +CL net/minecraft/client/audio/SoundList$SoundEntry net/minecraft/client/audio/SoundList$SoundEntry +CL net/minecraft/client/audio/SoundList$SoundEntry$Type net/minecraft/client/audio/SoundList$SoundEntry$Type +CL net/minecraft/client/audio/SoundListSerializer net/minecraft/client/audio/SoundListSerializer +CL net/minecraft/client/audio/ISound net/minecraft/client/audio/ISound +CL net/minecraft/client/audio/ISound$AttenuationType net/minecraft/client/audio/ISound$AttenuationType +CL net/minecraft/client/audio/ITickableSound net/minecraft/client/audio/ITickableSound +CL net/minecraft/server/integrated/IntegratedPlayerList net/minecraft/server/integrated/IntegratedPlayerList +CL net/minecraft/server/integrated/IntegratedServer net/minecraft/server/integrated/IntegratedServer +CL net/minecraft/server/integrated/IntegratedServer$1 net/minecraft/server/integrated/IntegratedServer$1 +CL net/minecraft/server/integrated/IntegratedServer$2 net/minecraft/server/integrated/IntegratedServer$2 +CL net/minecraft/server/integrated/IntegratedServer$3 net/minecraft/server/integrated/IntegratedServer$3 +CL net/minecraft/server/integrated/IntegratedServerCommandManager net/minecraft/server/integrated/IntegratedServerCommandManager +CL net/minecraft/client/network/LanServerDetector net/minecraft/client/network/LanServerDetector +CL net/minecraft/client/network/LanServerDetector$LanServer net/minecraft/client/network/LanServerDetector$LanServer +CL net/minecraft/client/network/LanServerDetector$ThreadLanServerFind net/minecraft/client/network/LanServerDetector$ThreadLanServerFind +CL net/minecraft/client/network/LanServerDetector$LanServerList net/minecraft/client/network/LanServerDetector$LanServerList +CL net/minecraft/client/multiplayer/ThreadLanServerPing net/minecraft/client/multiplayer/ThreadLanServerPing +CL net/minecraft/client/audio/MusicTicker net/minecraft/client/audio/MusicTicker +CL net/minecraft/client/audio/MusicTicker$MusicType net/minecraft/client/audio/MusicTicker$MusicType +CL net/minecraft/client/audio/SoundPoolEntry net/minecraft/client/audio/SoundPoolEntry +CL net/minecraft/client/audio/SoundManager net/minecraft/client/audio/SoundManager +CL net/minecraft/client/audio/SoundManager$1 net/minecraft/client/audio/SoundManager$1 +CL net/minecraft/client/audio/SoundManager$1$1 net/minecraft/client/audio/SoundManager$1$1 +CL net/minecraft/client/audio/SoundManager$2 net/minecraft/client/audio/SoundManager$2 +CL net/minecraft/client/audio/SoundManager$2$1 net/minecraft/client/audio/SoundManager$2$1 +CL net/minecraft/client/audio/SoundManager$SoundSystemStarterThread net/minecraft/client/audio/SoundManager$SoundSystemStarterThread +CL net/minecraft/client/audio/SoundEventAccessorComposite net/minecraft/client/audio/SoundEventAccessorComposite +CL net/minecraft/client/audio/SoundHandler net/minecraft/client/audio/SoundHandler +CL net/minecraft/client/audio/SoundHandler$1 net/minecraft/client/audio/SoundHandler$1 +CL net/minecraft/client/audio/SoundHandler$2 net/minecraft/client/audio/SoundHandler$2 +CL net/minecraft/client/audio/SoundHandler$3 net/minecraft/client/audio/SoundHandler$3 +CL net/minecraft/client/audio/SoundRegistry net/minecraft/client/audio/SoundRegistry +CL net/minecraft/client/audio/ISoundEventAccessor net/minecraft/client/audio/ISoundEventAccessor +CL net/minecraft/client/audio/SoundEventAccessor net/minecraft/client/audio/SoundEventAccessor +CL net/minecraft/client/stream/MetadataAchievement net/minecraft/client/stream/MetadataAchievement +CL net/minecraft/client/stream/MetadataCombat net/minecraft/client/stream/MetadataCombat +CL net/minecraft/client/stream/MetadataPlayerDeath net/minecraft/client/stream/MetadataPlayerDeath +CL net/minecraft/client/stream/Metadata net/minecraft/client/stream/Metadata +CL net/minecraft/client/stream/BroadcastController net/minecraft/client/stream/BroadcastController +CL net/minecraft/client/stream/BroadcastController$1 net/minecraft/client/stream/BroadcastController$1 +CL net/minecraft/client/stream/BroadcastController$2 net/minecraft/client/stream/BroadcastController$2 +CL net/minecraft/client/stream/BroadcastController$3 net/minecraft/client/stream/BroadcastController$3 +CL net/minecraft/client/stream/BroadcastController$BroadcastState net/minecraft/client/stream/BroadcastController$BroadcastState +CL net/minecraft/client/stream/BroadcastController$BroadcastListener net/minecraft/client/stream/BroadcastController$BroadcastListener +CL net/minecraft/client/stream/ChatController net/minecraft/client/stream/ChatController +CL net/minecraft/client/stream/ChatController$1 net/minecraft/client/stream/ChatController$1 +CL net/minecraft/client/stream/ChatController$2 net/minecraft/client/stream/ChatController$2 +CL net/minecraft/client/stream/ChatController$EnumChannelState net/minecraft/client/stream/ChatController$EnumChannelState +CL net/minecraft/client/stream/ChatController$ChatChannelListener net/minecraft/client/stream/ChatController$ChatChannelListener +CL net/minecraft/client/stream/ChatController$ChatState net/minecraft/client/stream/ChatController$ChatState +CL net/minecraft/client/stream/ChatController$EnumEmoticonMode net/minecraft/client/stream/ChatController$EnumEmoticonMode +CL net/minecraft/client/stream/ChatController$ChatListener net/minecraft/client/stream/ChatController$ChatListener +CL net/minecraft/client/stream/IngestServerTester net/minecraft/client/stream/IngestServerTester +CL net/minecraft/client/stream/IngestServerTester$1 net/minecraft/client/stream/IngestServerTester$1 +CL net/minecraft/client/stream/IngestServerTester$2 net/minecraft/client/stream/IngestServerTester$2 +CL net/minecraft/client/stream/IngestServerTester$3 net/minecraft/client/stream/IngestServerTester$3 +CL net/minecraft/client/stream/IngestServerTester$IngestTestListener net/minecraft/client/stream/IngestServerTester$IngestTestListener +CL net/minecraft/client/stream/IngestServerTester$IngestTestState net/minecraft/client/stream/IngestServerTester$IngestTestState +CL net/minecraft/client/stream/IStream net/minecraft/client/stream/IStream +CL net/minecraft/client/stream/IStream$AuthFailureReason net/minecraft/client/stream/IStream$AuthFailureReason +CL net/minecraft/client/stream/TwitchStream net/minecraft/client/stream/TwitchStream +CL net/minecraft/client/stream/TwitchStream$1 net/minecraft/client/stream/TwitchStream$1 +CL net/minecraft/client/stream/TwitchStream$1$1 net/minecraft/client/stream/TwitchStream$1$1 +CL net/minecraft/client/stream/NullStream net/minecraft/client/stream/NullStream +CL net/minecraft/util/Matrix4f net/minecraft/util/Matrix4f +CL net/minecraft/util/Vector3d net/minecraft/util/Vector3d +CL net/minecraft/client/renderer/OpenGlHelper net/minecraft/client/renderer/OpenGlHelper +CL net/minecraft/client/main/Main net/minecraft/client/main/Main +CL net/minecraft/client/main/Main$1 net/minecraft/client/main/Main$1 +CL net/minecraft/realms/RealmsConnect$1 net/minecraft/realms/RealmsConnect$1 +CL net/minecraft/server/MinecraftServer net/minecraft/server/MinecraftServer +CL net/minecraft/server/MinecraftServer$1 net/minecraft/server/MinecraftServer$1 +CL net/minecraft/server/MinecraftServer$2 net/minecraft/server/MinecraftServer$2 +CL net/minecraft/server/MinecraftServer$3 net/minecraft/server/MinecraftServer$3 +CL net/minecraft/server/MinecraftServer$4 net/minecraft/server/MinecraftServer$4 +CL net/minecraft/realms/RealmsServerStatusPinger$1 net/minecraft/realms/RealmsServerStatusPinger$1 +FD net/minecraft/util/EnumChatFormatting fancyStyling field_96303_A +FD net/minecraft/util/EnumChatFormatting controlString field_96304_B +FD net/minecraft/util/EnumChatFormatting colorIndex field_175747_C +FD net/minecraft/util/EnumChatFormatting $VALUES $VALUES +FD net/minecraft/util/EnumChatFormatting BLACK BLACK +FD net/minecraft/util/EnumChatFormatting DARK_BLUE DARK_BLUE +FD net/minecraft/util/EnumChatFormatting DARK_GREEN DARK_GREEN +FD net/minecraft/util/EnumChatFormatting DARK_AQUA DARK_AQUA +FD net/minecraft/util/EnumChatFormatting DARK_RED DARK_RED +FD net/minecraft/util/EnumChatFormatting DARK_PURPLE DARK_PURPLE +FD net/minecraft/util/EnumChatFormatting GOLD GOLD +FD net/minecraft/util/EnumChatFormatting GRAY GRAY +FD net/minecraft/util/EnumChatFormatting DARK_GRAY DARK_GRAY +FD net/minecraft/util/EnumChatFormatting BLUE BLUE +FD net/minecraft/util/EnumChatFormatting GREEN GREEN +FD net/minecraft/util/EnumChatFormatting AQUA AQUA +FD net/minecraft/util/EnumChatFormatting RED RED +FD net/minecraft/util/EnumChatFormatting LIGHT_PURPLE LIGHT_PURPLE +FD net/minecraft/util/EnumChatFormatting YELLOW YELLOW +FD net/minecraft/util/EnumChatFormatting WHITE WHITE +FD net/minecraft/util/EnumChatFormatting OBFUSCATED OBFUSCATED +FD net/minecraft/util/EnumChatFormatting BOLD BOLD +FD net/minecraft/util/EnumChatFormatting STRIKETHROUGH STRIKETHROUGH +FD net/minecraft/util/EnumChatFormatting UNDERLINE UNDERLINE +FD net/minecraft/util/EnumChatFormatting ITALIC ITALIC +FD net/minecraft/util/EnumChatFormatting RESET RESET +FD net/minecraft/util/EnumChatFormatting nameMapping field_96331_x +FD net/minecraft/util/EnumChatFormatting formattingCodePattern field_96330_y +FD net/minecraft/util/EnumChatFormatting name field_175748_y +FD net/minecraft/util/EnumChatFormatting formattingCode field_96329_z +FD net/minecraft/crash/CrashReport logger field_147150_a +FD net/minecraft/crash/CrashReport description field_71513_a +FD net/minecraft/crash/CrashReport cause field_71511_b +FD net/minecraft/crash/CrashReport theReportCategory field_85061_c +FD net/minecraft/crash/CrashReport crashReportSections field_71512_c +FD net/minecraft/crash/CrashReport crashReportFile field_71510_d +FD net/minecraft/crash/CrashReport firstCategoryInCrashReport field_85059_f +FD net/minecraft/crash/CrashReport stacktrace field_85060_g +FD net/minecraft/crash/CrashReport$1 field_71494_a field_71494_a +FD net/minecraft/crash/CrashReport$2 field_71496_a field_71496_a +FD net/minecraft/crash/CrashReport$3 field_71490_a field_71490_a +FD net/minecraft/crash/CrashReport$4 field_71492_a field_71492_a +FD net/minecraft/crash/CrashReport$5 field_71486_a field_71486_a +FD net/minecraft/crash/CrashReport$6 field_71488_a field_71488_a +FD net/minecraft/crash/CrashReport$7 field_83004_a field_83004_a +FD net/minecraft/crash/CrashReportCategory crashReport field_85078_a +FD net/minecraft/crash/CrashReportCategory name field_85076_b +FD net/minecraft/crash/CrashReportCategory children field_85077_c +FD net/minecraft/crash/CrashReportCategory stackTrace field_85075_d +FD net/minecraft/crash/CrashReportCategory$1 field_85080_a field_85080_a +FD net/minecraft/crash/CrashReportCategory$1 field_147151_b field_147151_b +FD net/minecraft/crash/CrashReportCategory$2 field_85063_a field_85063_a +FD net/minecraft/crash/CrashReportCategory$3 field_175749_a field_175749_a +FD net/minecraft/crash/CrashReportCategory$6 field_175754_a field_175754_a +FD net/minecraft/crash/CrashReportCategory$7 field_175752_a field_175752_a +FD net/minecraft/crash/CrashReportCategory$Entry key field_85092_a +FD net/minecraft/crash/CrashReportCategory$Entry value field_85091_b +FD net/minecraft/util/ReportedException theReportedExceptionCrashReport field_71576_a +FD net/minecraft/util/ChatAllowedCharacters allowedCharactersArray field_71567_b +FD net/minecraft/util/Util$EnumOS LINUX LINUX +FD net/minecraft/util/Util$EnumOS SOLARIS SOLARIS +FD net/minecraft/util/Util$EnumOS WINDOWS WINDOWS +FD net/minecraft/util/Util$EnumOS OSX OSX +FD net/minecraft/util/Util$EnumOS UNKNOWN UNKNOWN +FD net/minecraft/util/Util$EnumOS $VALUES $VALUES +FD net/minecraft/command/CommandBase theAdmin field_71533_a +FD net/minecraft/command/CommandBase$CoordinateArg field_179633_a field_179633_a +FD net/minecraft/command/CommandBase$CoordinateArg field_179631_b field_179631_b +FD net/minecraft/command/CommandBase$CoordinateArg field_179632_c field_179632_c +FD net/minecraft/command/CommandHandler logger field_147175_a +FD net/minecraft/command/CommandHandler commandMap field_71562_a +FD net/minecraft/command/CommandHandler commandSet field_71561_b +FD net/minecraft/command/CommandResultStats NUM_RESULT_TYPES field_179676_a +FD net/minecraft/command/CommandResultStats STRING_RESULT_TYPES field_179674_b +FD net/minecraft/command/CommandResultStats entitiesID field_179675_c +FD net/minecraft/command/CommandResultStats objectives field_179673_d +FD net/minecraft/command/CommandResultStats$1 field_181547_a field_181547_a +FD net/minecraft/command/CommandResultStats$1 field_181548_b field_181548_b +FD net/minecraft/command/CommandResultStats$Type SUCCESS_COUNT SUCCESS_COUNT +FD net/minecraft/command/CommandResultStats$Type AFFECTED_BLOCKS AFFECTED_BLOCKS +FD net/minecraft/command/CommandResultStats$Type AFFECTED_ENTITIES AFFECTED_ENTITIES +FD net/minecraft/command/CommandResultStats$Type AFFECTED_ITEMS AFFECTED_ITEMS +FD net/minecraft/command/CommandResultStats$Type QUERY_RESULT QUERY_RESULT +FD net/minecraft/command/CommandResultStats$Type typeID field_179639_f +FD net/minecraft/command/CommandResultStats$Type typeName field_179640_g +FD net/minecraft/command/CommandResultStats$Type $VALUES $VALUES +FD net/minecraft/command/PlayerSelector tokenPattern field_82389_a +FD net/minecraft/command/PlayerSelector intListPattern field_82387_b +FD net/minecraft/command/PlayerSelector keyValueListPattern field_82388_c +FD net/minecraft/command/PlayerSelector WORLD_BINDING_ARGS field_179666_d +FD net/minecraft/command/PlayerSelector$1 field_179615_a field_179615_a +FD net/minecraft/command/PlayerSelector$1 field_179614_b field_179614_b +FD net/minecraft/command/PlayerSelector$2 field_179618_a field_179618_a +FD net/minecraft/command/PlayerSelector$2 field_179617_b field_179617_b +FD net/minecraft/command/PlayerSelector$3 field_179610_a field_179610_a +FD net/minecraft/command/PlayerSelector$4 field_179612_a field_179612_a +FD net/minecraft/command/PlayerSelector$6 field_179627_a field_179627_a +FD net/minecraft/command/PlayerSelector$6 field_179626_b field_179626_b +FD net/minecraft/command/PlayerSelector$7 field_179620_a field_179620_a +FD net/minecraft/command/PlayerSelector$8 field_179623_a field_179623_a +FD net/minecraft/command/PlayerSelector$8 field_179622_b field_179622_b +FD net/minecraft/command/PlayerSelector$9 field_179604_a field_179604_a +FD net/minecraft/command/PlayerSelector$10 field_179602_a field_179602_a +FD net/minecraft/command/PlayerSelector$10 field_179601_b field_179601_b +FD net/minecraft/command/PlayerSelector$11 field_179599_a field_179599_a +FD net/minecraft/command/PlayerSelector$11 field_179597_b field_179597_b +FD net/minecraft/command/PlayerSelector$11 field_179598_c field_179598_c +FD net/minecraft/command/PlayerSelector$11 field_179595_d field_179595_d +FD net/minecraft/command/PlayerSelector$11 field_179596_e field_179596_e +FD net/minecraft/command/PlayerSelector$12 field_179593_a field_179593_a +FD net/minecraft/command/PlayerSelector$12 field_179592_b field_179592_b +FD net/minecraft/command/server/CommandAchievement$1 field_179608_a field_179608_a +FD net/minecraft/command/server/CommandAchievement$1 field_179606_b field_179606_b +FD net/minecraft/command/server/CommandAchievement$1 field_179607_c field_179607_c +FD net/minecraft/command/server/CommandBanIp field_147211_a field_147211_a +FD net/minecraft/command/CommandClone$StaticCloneData pos field_179537_a +FD net/minecraft/command/CommandClone$StaticCloneData blockState field_179535_b +FD net/minecraft/command/CommandClone$StaticCloneData compound field_179536_c +FD net/minecraft/command/CommandDebug logger field_147208_a +FD net/minecraft/command/CommandDebug profileStartTime field_147206_b +FD net/minecraft/command/CommandDebug profileStartTick field_147207_c +FD net/minecraft/command/CommandExecuteAt$1 field_174804_a field_174804_a +FD net/minecraft/command/CommandExecuteAt$1 field_174802_b field_174802_b +FD net/minecraft/command/CommandExecuteAt$1 field_174803_c field_174803_c +FD net/minecraft/command/CommandExecuteAt$1 field_174800_d field_174800_d +FD net/minecraft/command/CommandExecuteAt$1 field_174801_e field_174801_e +FD net/minecraft/command/CommandExecuteAt$1 field_174798_f field_174798_f +FD net/minecraft/command/CommandExecuteAt$1 field_174799_g field_174799_g +FD net/minecraft/command/CommandReplaceItem SHORTCUTS field_175785_a +FD net/minecraft/command/CommandSpreadPlayers$Position field_111101_a field_111101_a +FD net/minecraft/command/CommandSpreadPlayers$Position field_111100_b field_111100_b +FD net/minecraft/command/CommandTitle LOGGER field_175774_a +FD net/minecraft/command/CommandException errorObjects field_74845_a +FD net/minecraft/util/BlockPos ORIGIN field_177992_a +FD net/minecraft/util/BlockPos NUM_X_BITS field_177990_b +FD net/minecraft/util/BlockPos NUM_Z_BITS field_177991_c +FD net/minecraft/util/BlockPos NUM_Y_BITS field_177989_d +FD net/minecraft/util/BlockPos Y_SHIFT field_177987_f +FD net/minecraft/util/BlockPos X_SHIFT field_177988_g +FD net/minecraft/util/BlockPos X_MASK field_177994_h +FD net/minecraft/util/BlockPos Y_MASK field_177995_i +FD net/minecraft/util/BlockPos Z_MASK field_177993_j +FD net/minecraft/util/BlockPos$1 field_179307_a field_179307_a +FD net/minecraft/util/BlockPos$1 field_179306_b field_179306_b +FD net/minecraft/util/BlockPos$1$1 field_179310_a field_179310_a +FD net/minecraft/util/BlockPos$1$1 lastReturned field_179309_b +FD net/minecraft/util/BlockPos$2 field_179312_a field_179312_a +FD net/minecraft/util/BlockPos$2 field_179311_b field_179311_b +FD net/minecraft/util/BlockPos$2$1 field_179315_a field_179315_a +FD net/minecraft/util/BlockPos$2$1 theBlockPos field_179314_b +FD net/minecraft/util/BlockPos$MutableBlockPos x field_177997_b +FD net/minecraft/util/BlockPos$MutableBlockPos y field_177998_c +FD net/minecraft/util/BlockPos$MutableBlockPos z field_177996_d +FD net/minecraft/block/BlockSourceImpl worldObj field_82627_a +FD net/minecraft/block/BlockSourceImpl pos field_179317_b +FD net/minecraft/util/Cartesian$Product clazz field_179429_a +FD net/minecraft/util/Cartesian$Product iterables field_179428_b +FD net/minecraft/util/Cartesian$Product$ProductIterator index field_179426_a +FD net/minecraft/util/Cartesian$Product$ProductIterator iterables field_179424_b +FD net/minecraft/util/Cartesian$Product$ProductIterator iterators field_179425_c +FD net/minecraft/util/Cartesian$Product$ProductIterator results field_179423_d +FD net/minecraft/util/RegistryNamespacedDefaultedByKey defaultValueKey field_148760_d +FD net/minecraft/util/RegistryNamespacedDefaultedByKey defaultValue field_148761_e +FD net/minecraft/util/RegistryDefaulted defaultObject field_82597_b +FD net/minecraft/util/EnumFacing DOWN DOWN +FD net/minecraft/util/EnumFacing UP UP +FD net/minecraft/util/EnumFacing NORTH NORTH +FD net/minecraft/util/EnumFacing SOUTH SOUTH +FD net/minecraft/util/EnumFacing WEST WEST +FD net/minecraft/util/EnumFacing EAST EAST +FD net/minecraft/util/EnumFacing index field_176748_g +FD net/minecraft/util/EnumFacing opposite field_176759_h +FD net/minecraft/util/EnumFacing horizontalIndex field_176760_i +FD net/minecraft/util/EnumFacing name field_176757_j +FD net/minecraft/util/EnumFacing axis field_176758_k +FD net/minecraft/util/EnumFacing axisDirection field_176755_l +FD net/minecraft/util/EnumFacing directionVec field_176756_m +FD net/minecraft/util/EnumFacing VALUES field_82609_l +FD net/minecraft/util/EnumFacing HORIZONTALS field_176754_o +FD net/minecraft/util/EnumFacing NAME_LOOKUP field_176761_p +FD net/minecraft/util/EnumFacing $VALUES $VALUES +FD net/minecraft/util/EnumFacing$1 field_179515_a field_179515_a +FD net/minecraft/util/EnumFacing$1 field_179513_b field_179513_b +FD net/minecraft/util/EnumFacing$1 field_179514_c field_179514_c +FD net/minecraft/util/EnumFacing$Axis X X +FD net/minecraft/util/EnumFacing$Axis Y Y +FD net/minecraft/util/EnumFacing$Axis Z Z +FD net/minecraft/util/EnumFacing$Axis NAME_LOOKUP field_176725_d +FD net/minecraft/util/EnumFacing$Axis name field_176726_e +FD net/minecraft/util/EnumFacing$Axis plane field_176723_f +FD net/minecraft/util/EnumFacing$Axis $VALUES $VALUES +FD net/minecraft/util/EnumFacing$AxisDirection POSITIVE POSITIVE +FD net/minecraft/util/EnumFacing$AxisDirection NEGATIVE NEGATIVE +FD net/minecraft/util/EnumFacing$AxisDirection offset field_179528_c +FD net/minecraft/util/EnumFacing$AxisDirection description field_179525_d +FD net/minecraft/util/EnumFacing$AxisDirection $VALUES $VALUES +FD net/minecraft/util/EnumFacing$Plane HORIZONTAL HORIZONTAL +FD net/minecraft/util/EnumFacing$Plane VERTICAL VERTICAL +FD net/minecraft/util/EnumFacing$Plane $VALUES $VALUES +FD net/minecraft/dispenser/IBehaviorDispenseItem itemDispenseBehaviorProvider field_82483_a +FD net/minecraft/util/ObjectIntIdentityMap identityMap field_148749_a +FD net/minecraft/util/ObjectIntIdentityMap objectList field_148748_b +FD net/minecraft/util/RegistryNamespaced underlyingIntegerMap field_148759_a +FD net/minecraft/util/RegistryNamespaced inverseObjectRegistry field_148758_b +FD net/minecraft/util/EnumParticleTypes FLAME FLAME +FD net/minecraft/util/EnumParticleTypes LAVA LAVA +FD net/minecraft/util/EnumParticleTypes FOOTSTEP FOOTSTEP +FD net/minecraft/util/EnumParticleTypes CLOUD CLOUD +FD net/minecraft/util/EnumParticleTypes REDSTONE REDSTONE +FD net/minecraft/util/EnumParticleTypes SNOWBALL SNOWBALL +FD net/minecraft/util/EnumParticleTypes SNOW_SHOVEL SNOW_SHOVEL +FD net/minecraft/util/EnumParticleTypes SLIME SLIME +FD net/minecraft/util/EnumParticleTypes HEART HEART +FD net/minecraft/util/EnumParticleTypes BARRIER BARRIER +FD net/minecraft/util/EnumParticleTypes ITEM_CRACK ITEM_CRACK +FD net/minecraft/util/EnumParticleTypes BLOCK_CRACK BLOCK_CRACK +FD net/minecraft/util/EnumParticleTypes BLOCK_DUST BLOCK_DUST +FD net/minecraft/util/EnumParticleTypes WATER_DROP WATER_DROP +FD net/minecraft/util/EnumParticleTypes ITEM_TAKE ITEM_TAKE +FD net/minecraft/util/EnumParticleTypes MOB_APPEARANCE MOB_APPEARANCE +FD net/minecraft/util/EnumParticleTypes particleName field_179369_Q +FD net/minecraft/util/EnumParticleTypes particleID field_179372_R +FD net/minecraft/util/EnumParticleTypes shouldIgnoreRange field_179371_S +FD net/minecraft/util/EnumParticleTypes argumentCount field_179366_T +FD net/minecraft/util/EnumParticleTypes PARTICLES field_179365_U +FD net/minecraft/util/EnumParticleTypes PARTICLE_NAMES field_179368_V +FD net/minecraft/util/EnumParticleTypes $VALUES $VALUES +FD net/minecraft/util/EnumParticleTypes EXPLOSION_NORMAL EXPLOSION_NORMAL +FD net/minecraft/util/EnumParticleTypes EXPLOSION_LARGE EXPLOSION_LARGE +FD net/minecraft/util/EnumParticleTypes EXPLOSION_HUGE EXPLOSION_HUGE +FD net/minecraft/util/EnumParticleTypes FIREWORKS_SPARK FIREWORKS_SPARK +FD net/minecraft/util/EnumParticleTypes WATER_BUBBLE WATER_BUBBLE +FD net/minecraft/util/EnumParticleTypes WATER_SPLASH WATER_SPLASH +FD net/minecraft/util/EnumParticleTypes WATER_WAKE WATER_WAKE +FD net/minecraft/util/EnumParticleTypes SUSPENDED SUSPENDED +FD net/minecraft/util/EnumParticleTypes SUSPENDED_DEPTH SUSPENDED_DEPTH +FD net/minecraft/util/EnumParticleTypes CRIT CRIT +FD net/minecraft/util/EnumParticleTypes CRIT_MAGIC CRIT_MAGIC +FD net/minecraft/util/EnumParticleTypes SMOKE_NORMAL SMOKE_NORMAL +FD net/minecraft/util/EnumParticleTypes SMOKE_LARGE SMOKE_LARGE +FD net/minecraft/util/EnumParticleTypes SPELL SPELL +FD net/minecraft/util/EnumParticleTypes SPELL_INSTANT SPELL_INSTANT +FD net/minecraft/util/EnumParticleTypes SPELL_MOB SPELL_MOB +FD net/minecraft/util/EnumParticleTypes SPELL_MOB_AMBIENT SPELL_MOB_AMBIENT +FD net/minecraft/util/EnumParticleTypes SPELL_WITCH SPELL_WITCH +FD net/minecraft/util/EnumParticleTypes DRIP_WATER DRIP_WATER +FD net/minecraft/util/EnumParticleTypes DRIP_LAVA DRIP_LAVA +FD net/minecraft/util/EnumParticleTypes VILLAGER_ANGRY VILLAGER_ANGRY +FD net/minecraft/util/EnumParticleTypes VILLAGER_HAPPY VILLAGER_HAPPY +FD net/minecraft/util/EnumParticleTypes TOWN_AURA TOWN_AURA +FD net/minecraft/util/EnumParticleTypes NOTE NOTE +FD net/minecraft/util/EnumParticleTypes PORTAL PORTAL +FD net/minecraft/util/EnumParticleTypes ENCHANTMENT_TABLE ENCHANTMENT_TABLE +FD net/minecraft/dispenser/PositionImpl x field_82630_a +FD net/minecraft/dispenser/PositionImpl y field_82628_b +FD net/minecraft/dispenser/PositionImpl z field_82629_c +FD net/minecraft/util/Rotations x field_179419_a +FD net/minecraft/util/Rotations y field_179417_b +FD net/minecraft/util/Rotations z field_179418_c +FD net/minecraft/util/RegistrySimple logger field_148743_a +FD net/minecraft/util/RegistrySimple registryObjects field_82596_a +FD net/minecraft/util/Vec3i x field_177962_a +FD net/minecraft/util/Vec3i NULL_VECTOR field_177959_e +FD net/minecraft/util/Vec3i y field_177960_b +FD net/minecraft/util/Vec3i z field_177961_c +FD net/minecraft/util/StatCollector localizedName field_74839_a +FD net/minecraft/util/StatCollector fallbackTranslator field_150828_b +FD net/minecraft/util/StringTranslate numericVariablePattern field_111053_a +FD net/minecraft/util/StringTranslate equalSignSplitter field_135065_b +FD net/minecraft/util/StringTranslate instance field_74817_a +FD net/minecraft/util/StringTranslate languageList field_74816_c +FD net/minecraft/util/StringTranslate lastUpdateTimeInMilliseconds field_150511_e +FD net/minecraft/nbt/NBTTagByteArray data field_74754_a +FD net/minecraft/nbt/NBTTagByte data field_74756_a +FD net/minecraft/nbt/NBTTagCompound tagMap field_74784_a +FD net/minecraft/nbt/NBTTagCompound$1 field_82585_a field_82585_a +FD net/minecraft/nbt/NBTTagCompound$1 field_82584_b field_82584_b +FD net/minecraft/nbt/NBTTagCompound$2 field_82588_a field_82588_a +FD net/minecraft/nbt/NBTTagCompound$2 field_82587_b field_82587_b +FD net/minecraft/nbt/NBTTagDouble data field_74755_a +FD net/minecraft/nbt/NBTTagFloat data field_74750_a +FD net/minecraft/nbt/NBTTagIntArray intArray field_74749_a +FD net/minecraft/nbt/NBTTagInt data field_74748_a +FD net/minecraft/nbt/NBTTagList LOGGER field_179239_b +FD net/minecraft/nbt/NBTTagList tagList field_74747_a +FD net/minecraft/nbt/NBTTagList tagType field_74746_b +FD net/minecraft/nbt/NBTTagLong data field_74753_a +FD net/minecraft/nbt/NBTSizeTracker INFINITE field_152451_a +FD net/minecraft/nbt/NBTSizeTracker max field_152452_b +FD net/minecraft/nbt/NBTSizeTracker read field_152453_c +FD net/minecraft/nbt/NBTTagShort data field_74752_a +FD net/minecraft/nbt/NBTTagString data field_74751_a +FD net/minecraft/nbt/NBTBase NBT_TYPES field_82578_b +FD net/minecraft/nbt/JsonToNBT logger field_150317_a +FD net/minecraft/nbt/JsonToNBT field_179273_b field_179273_b +FD net/minecraft/nbt/JsonToNBT$Any json field_150490_a +FD net/minecraft/nbt/JsonToNBT$Compound field_150491_b field_150491_b +FD net/minecraft/nbt/JsonToNBT$List field_150492_b field_150492_b +FD net/minecraft/nbt/JsonToNBT$Primitive jsonValue field_150493_b +FD net/minecraft/nbt/JsonToNBT$Primitive DOUBLE field_179265_c +FD net/minecraft/nbt/JsonToNBT$Primitive FLOAT field_179263_d +FD net/minecraft/nbt/JsonToNBT$Primitive BYTE field_179264_e +FD net/minecraft/nbt/JsonToNBT$Primitive LONG field_179261_f +FD net/minecraft/nbt/JsonToNBT$Primitive SHORT field_179262_g +FD net/minecraft/nbt/JsonToNBT$Primitive INTEGER field_179267_h +FD net/minecraft/nbt/JsonToNBT$Primitive DOUBLE_UNTYPED field_179268_i +FD net/minecraft/nbt/JsonToNBT$Primitive SPLITTER field_179266_j +FD net/minecraft/network/NettyEncryptionTranslator cipher field_150507_a +FD net/minecraft/network/NettyEncryptionTranslator field_150505_b field_150505_b +FD net/minecraft/network/NettyEncryptionTranslator field_150506_c field_150506_c +FD net/minecraft/network/NettyEncryptingDecoder decryptionCodec field_150509_a +FD net/minecraft/network/NettyEncryptingEncoder encryptionCodec field_150750_a +FD net/minecraft/network/NettyCompressionDecoder inflater field_179305_a +FD net/minecraft/network/NettyCompressionDecoder treshold field_179304_b +FD net/minecraft/network/NettyCompressionEncoder buffer field_179302_a +FD net/minecraft/network/NettyCompressionEncoder deflater field_179300_b +FD net/minecraft/network/NettyCompressionEncoder treshold field_179301_c +FD net/minecraft/network/NetworkManager logMarkerNetwork field_150740_a +FD net/minecraft/network/NetworkManager logMarkerPackets field_150738_b +FD net/minecraft/network/NetworkManager attrKeyConnectionState field_150739_c +FD net/minecraft/network/NetworkManager CLIENT_NIO_EVENTLOOP field_179295_d +FD net/minecraft/network/NetworkManager CLIENT_EPOLL_EVENTLOOP field_181125_e +FD net/minecraft/network/NetworkManager CLIENT_LOCAL_EVENTLOOP field_179296_e +FD net/minecraft/network/NetworkManager logger field_150735_g +FD net/minecraft/network/NetworkManager direction field_179294_g +FD net/minecraft/network/NetworkManager outboundPacketsQueue field_150745_j +FD net/minecraft/network/NetworkManager readWriteLock field_181680_j +FD net/minecraft/network/NetworkManager channel field_150746_k +FD net/minecraft/network/NetworkManager socketAddress field_150743_l +FD net/minecraft/network/NetworkManager packetListener field_150744_m +FD net/minecraft/network/NetworkManager terminationReason field_150742_o +FD net/minecraft/network/NetworkManager isEncrypted field_152463_r +FD net/minecraft/network/NetworkManager disconnected field_179297_n +FD net/minecraft/network/NetworkManager$4 field_181130_a field_181130_a +FD net/minecraft/network/NetworkManager$4 field_181131_b field_181131_b +FD net/minecraft/network/NetworkManager$4 field_181132_c field_181132_c +FD net/minecraft/network/NetworkManager$4 field_181133_d field_181133_d +FD net/minecraft/network/NetworkManager$4 field_181134_e field_181134_e +FD net/minecraft/network/NetworkManager$5 field_179248_a field_179248_a +FD net/minecraft/network/NetworkManager$6 field_181135_a field_181135_a +FD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener packet field_150774_a +FD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener futureListeners field_150773_b +FD net/minecraft/network/EnumConnectionState HANDSHAKING HANDSHAKING +FD net/minecraft/network/EnumConnectionState PLAY PLAY +FD net/minecraft/network/EnumConnectionState STATUS STATUS +FD net/minecraft/network/EnumConnectionState LOGIN LOGIN +FD net/minecraft/network/EnumConnectionState field_181136_e field_181136_e +FD net/minecraft/network/EnumConnectionState field_181137_f field_181137_f +FD net/minecraft/network/EnumConnectionState STATES_BY_ID field_150764_e +FD net/minecraft/network/EnumConnectionState STATES_BY_CLASS field_150761_f +FD net/minecraft/network/EnumConnectionState id field_150762_g +FD net/minecraft/network/EnumConnectionState directionMaps field_179247_h +FD net/minecraft/network/EnumConnectionState $VALUES $VALUES +FD net/minecraft/network/PacketBuffer buf field_150794_a +FD net/minecraft/util/MessageDeserializer logger field_150800_a +FD net/minecraft/util/MessageDeserializer RECEIVED_PACKET_MARKER field_150799_b +FD net/minecraft/util/MessageDeserializer direction field_152499_c +FD net/minecraft/util/MessageSerializer logger field_150798_a +FD net/minecraft/util/MessageSerializer RECEIVED_PACKET_MARKER field_150797_b +FD net/minecraft/util/MessageSerializer direction field_152500_c +FD net/minecraft/util/ChatComponentStyle siblings field_150264_a +FD net/minecraft/util/ChatComponentStyle style field_150263_b +FD net/minecraft/event/ClickEvent action field_150671_a +FD net/minecraft/event/ClickEvent value field_150670_b +FD net/minecraft/event/ClickEvent$Action OPEN_URL OPEN_URL +FD net/minecraft/event/ClickEvent$Action OPEN_FILE OPEN_FILE +FD net/minecraft/event/ClickEvent$Action RUN_COMMAND RUN_COMMAND +FD net/minecraft/event/ClickEvent$Action TWITCH_USER_INFO TWITCH_USER_INFO +FD net/minecraft/event/ClickEvent$Action SUGGEST_COMMAND SUGGEST_COMMAND +FD net/minecraft/event/ClickEvent$Action CHANGE_PAGE CHANGE_PAGE +FD net/minecraft/event/ClickEvent$Action nameMapping field_150679_e +FD net/minecraft/event/ClickEvent$Action allowedInChat field_150676_f +FD net/minecraft/event/ClickEvent$Action canonicalName field_150677_g +FD net/minecraft/event/ClickEvent$Action $VALUES $VALUES +FD net/minecraft/util/IChatComponent$Serializer GSON field_150700_a +FD net/minecraft/event/HoverEvent action field_150704_a +FD net/minecraft/event/HoverEvent value field_150703_b +FD net/minecraft/event/HoverEvent$Action SHOW_TEXT SHOW_TEXT +FD net/minecraft/event/HoverEvent$Action SHOW_ACHIEVEMENT SHOW_ACHIEVEMENT +FD net/minecraft/event/HoverEvent$Action SHOW_ITEM SHOW_ITEM +FD net/minecraft/event/HoverEvent$Action SHOW_ENTITY SHOW_ENTITY +FD net/minecraft/event/HoverEvent$Action nameMapping field_150690_d +FD net/minecraft/event/HoverEvent$Action allowedInChat field_150691_e +FD net/minecraft/event/HoverEvent$Action canonicalName field_150688_f +FD net/minecraft/event/HoverEvent$Action $VALUES $VALUES +FD net/minecraft/util/ChatComponentScore name field_179999_b +FD net/minecraft/util/ChatComponentScore objective field_180000_c +FD net/minecraft/util/ChatComponentScore value field_179998_d +FD net/minecraft/util/ChatComponentSelector selector field_179993_b +FD net/minecraft/util/ChatStyle parentStyle field_150249_a +FD net/minecraft/util/ChatStyle color field_150247_b +FD net/minecraft/util/ChatStyle bold field_150248_c +FD net/minecraft/util/ChatStyle italic field_150245_d +FD net/minecraft/util/ChatStyle underlined field_150246_e +FD net/minecraft/util/ChatStyle strikethrough field_150243_f +FD net/minecraft/util/ChatStyle obfuscated field_150244_g +FD net/minecraft/util/ChatStyle chatClickEvent field_150251_h +FD net/minecraft/util/ChatStyle chatHoverEvent field_150252_i +FD net/minecraft/util/ChatStyle insertion field_179990_j +FD net/minecraft/util/ChatStyle rootStyle field_150250_j +FD net/minecraft/util/ChatComponentText text field_150267_b +FD net/minecraft/util/ChatComponentTranslation children field_150278_b +FD net/minecraft/util/ChatComponentTranslation stringVariablePattern field_150279_c +FD net/minecraft/util/ChatComponentTranslation key field_150276_d +FD net/minecraft/util/ChatComponentTranslation formatArgs field_150277_e +FD net/minecraft/util/ChatComponentTranslation syncLock field_150274_f +FD net/minecraft/util/ChatComponentTranslation lastTranslationUpdateTimeInMilliseconds field_150275_g +FD net/minecraft/network/EnumPacketDirection SERVERBOUND SERVERBOUND +FD net/minecraft/network/EnumPacketDirection CLIENTBOUND CLIENTBOUND +FD net/minecraft/network/EnumPacketDirection $VALUES $VALUES +FD net/minecraft/network/PacketThreadUtil$1 field_180030_a field_180030_a +FD net/minecraft/network/PacketThreadUtil$1 field_180029_b field_180029_b +FD net/minecraft/network/play/server/S08PacketPlayerPosLook x field_148940_a +FD net/minecraft/network/play/server/S08PacketPlayerPosLook y field_148938_b +FD net/minecraft/network/play/server/S08PacketPlayerPosLook z field_148939_c +FD net/minecraft/network/play/server/S08PacketPlayerPosLook yaw field_148936_d +FD net/minecraft/network/play/server/S08PacketPlayerPosLook pitch field_148937_e +FD net/minecraft/network/play/server/S08PacketPlayerPosLook field_179835_f field_179835_f +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags X X +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Y Y +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Z Z +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags Y_ROT Y_ROT +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags X_ROT X_ROT +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags field_180058_f field_180058_f +FD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags $VALUES $VALUES +FD net/minecraft/network/play/server/S0EPacketSpawnObject entityId field_149018_a +FD net/minecraft/network/play/server/S0EPacketSpawnObject x field_149016_b +FD net/minecraft/network/play/server/S0EPacketSpawnObject y field_149017_c +FD net/minecraft/network/play/server/S0EPacketSpawnObject z field_149014_d +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedX field_149015_e +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedY field_149012_f +FD net/minecraft/network/play/server/S0EPacketSpawnObject speedZ field_149013_g +FD net/minecraft/network/play/server/S0EPacketSpawnObject pitch field_149021_h +FD net/minecraft/network/play/server/S0EPacketSpawnObject yaw field_149022_i +FD net/minecraft/network/play/server/S0EPacketSpawnObject type field_149019_j +FD net/minecraft/network/play/server/S0EPacketSpawnObject field_149020_k field_149020_k +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb entityID field_148992_a +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posX field_148990_b +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posY field_148991_c +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb posZ field_148988_d +FD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb xpValue field_148989_e +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity entityId field_149059_a +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity x field_149057_b +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity y field_149058_c +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity z field_149055_d +FD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity type field_149056_e +FD net/minecraft/network/play/server/S0FPacketSpawnMob entityId field_149042_a +FD net/minecraft/network/play/server/S0FPacketSpawnMob type field_149040_b +FD net/minecraft/network/play/server/S0FPacketSpawnMob x field_149041_c +FD net/minecraft/network/play/server/S0FPacketSpawnMob y field_149038_d +FD net/minecraft/network/play/server/S0FPacketSpawnMob z field_149039_e +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityX field_149036_f +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityY field_149037_g +FD net/minecraft/network/play/server/S0FPacketSpawnMob velocityZ field_149047_h +FD net/minecraft/network/play/server/S0FPacketSpawnMob yaw field_149048_i +FD net/minecraft/network/play/server/S0FPacketSpawnMob pitch field_149045_j +FD net/minecraft/network/play/server/S0FPacketSpawnMob headPitch field_149046_k +FD net/minecraft/network/play/server/S0FPacketSpawnMob field_149043_l field_149043_l +FD net/minecraft/network/play/server/S0FPacketSpawnMob watcher field_149044_m +FD net/minecraft/network/play/server/S10PacketSpawnPainting entityID field_148973_a +FD net/minecraft/network/play/server/S10PacketSpawnPainting position field_179838_b +FD net/minecraft/network/play/server/S10PacketSpawnPainting facing field_179839_c +FD net/minecraft/network/play/server/S10PacketSpawnPainting title field_148968_f +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer entityId field_148957_a +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer playerId field_179820_b +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer x field_148956_c +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer y field_148953_d +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer z field_148954_e +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer yaw field_148951_f +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer pitch field_148952_g +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer currentItem field_148959_h +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer watcher field_148960_i +FD net/minecraft/network/play/server/S0CPacketSpawnPlayer field_148958_j field_148958_j +FD net/minecraft/network/play/server/S0BPacketAnimation entityId field_148981_a +FD net/minecraft/network/play/server/S0BPacketAnimation type field_148980_b +FD net/minecraft/network/play/server/S37PacketStatistics field_148976_a field_148976_a +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim breakerId field_148852_a +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim position field_179822_b +FD net/minecraft/network/play/server/S25PacketBlockBreakAnim progress field_148849_e +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity blockPos field_179824_a +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity metadata field_148859_d +FD net/minecraft/network/play/server/S35PacketUpdateTileEntity nbt field_148860_e +FD net/minecraft/network/play/server/S24PacketBlockAction blockPosition field_179826_a +FD net/minecraft/network/play/server/S24PacketBlockAction instrument field_148872_d +FD net/minecraft/network/play/server/S24PacketBlockAction pitch field_148873_e +FD net/minecraft/network/play/server/S24PacketBlockAction block field_148871_f +FD net/minecraft/network/play/server/S23PacketBlockChange blockPosition field_179828_a +FD net/minecraft/network/play/server/S23PacketBlockChange blockState field_148883_d +FD net/minecraft/network/play/server/S41PacketServerDifficulty difficulty field_179833_a +FD net/minecraft/network/play/server/S41PacketServerDifficulty difficultyLocked field_179832_b +FD net/minecraft/network/play/server/S3APacketTabComplete matches field_149632_a +FD net/minecraft/network/play/server/S02PacketChat chatComponent field_148919_a +FD net/minecraft/network/play/server/S02PacketChat type field_179842_b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange chunkPosCoord field_148925_b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange changedBlocks field_179845_b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData field_180093_a field_180093_a +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData chunkPosCrammed field_180091_b +FD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData blockState field_180092_c +FD net/minecraft/network/play/server/S32PacketConfirmTransaction windowId field_148894_a +FD net/minecraft/network/play/server/S32PacketConfirmTransaction actionNumber field_148892_b +FD net/minecraft/network/play/server/S32PacketConfirmTransaction field_148893_c field_148893_c +FD net/minecraft/network/play/server/S2EPacketCloseWindow windowId field_148896_a +FD net/minecraft/network/play/server/S2DPacketOpenWindow windowId field_148909_a +FD net/minecraft/network/play/server/S2DPacketOpenWindow inventoryType field_148907_b +FD net/minecraft/network/play/server/S2DPacketOpenWindow windowTitle field_148908_c +FD net/minecraft/network/play/server/S2DPacketOpenWindow slotCount field_148905_d +FD net/minecraft/network/play/server/S2DPacketOpenWindow entityId field_148904_f +FD net/minecraft/network/play/server/S30PacketWindowItems windowId field_148914_a +FD net/minecraft/network/play/server/S30PacketWindowItems itemStacks field_148913_b +FD net/minecraft/network/play/server/S31PacketWindowProperty windowId field_149186_a +FD net/minecraft/network/play/server/S31PacketWindowProperty varIndex field_149184_b +FD net/minecraft/network/play/server/S31PacketWindowProperty varValue field_149185_c +FD net/minecraft/network/play/server/S2FPacketSetSlot windowId field_149179_a +FD net/minecraft/network/play/server/S2FPacketSetSlot slot field_149177_b +FD net/minecraft/network/play/server/S2FPacketSetSlot item field_149178_c +FD net/minecraft/network/play/server/S3FPacketCustomPayload channel field_149172_a +FD net/minecraft/network/play/server/S3FPacketCustomPayload data field_149171_b +FD net/minecraft/network/play/server/S40PacketDisconnect reason field_149167_a +FD net/minecraft/network/play/server/S19PacketEntityStatus entityId field_149164_a +FD net/minecraft/network/play/server/S19PacketEntityStatus logicOpcode field_149163_b +FD net/minecraft/network/play/server/S49PacketUpdateEntityNBT entityId field_179766_a +FD net/minecraft/network/play/server/S49PacketUpdateEntityNBT tagCompound field_179765_b +FD net/minecraft/network/play/server/S27PacketExplosion posX field_149158_a +FD net/minecraft/network/play/server/S27PacketExplosion posY field_149156_b +FD net/minecraft/network/play/server/S27PacketExplosion posZ field_149157_c +FD net/minecraft/network/play/server/S27PacketExplosion strength field_149154_d +FD net/minecraft/network/play/server/S27PacketExplosion affectedBlockPositions field_149155_e +FD net/minecraft/network/play/server/S27PacketExplosion field_149152_f field_149152_f +FD net/minecraft/network/play/server/S27PacketExplosion field_149153_g field_149153_g +FD net/minecraft/network/play/server/S27PacketExplosion field_149159_h field_149159_h +FD net/minecraft/network/play/server/S46PacketSetCompressionLevel threshold field_179761_a +FD net/minecraft/network/play/server/S2BPacketChangeGameState MESSAGE_NAMES field_149142_a +FD net/minecraft/network/play/server/S2BPacketChangeGameState state field_149140_b +FD net/minecraft/network/play/server/S2BPacketChangeGameState field_149141_c field_149141_c +FD net/minecraft/network/play/server/S00PacketKeepAlive id field_149136_a +FD net/minecraft/network/play/server/S21PacketChunkData chunkX field_149284_a +FD net/minecraft/network/play/server/S21PacketChunkData chunkZ field_149282_b +FD net/minecraft/network/play/server/S21PacketChunkData extractedData field_179758_c +FD net/minecraft/network/play/server/S21PacketChunkData field_149279_g field_149279_g +FD net/minecraft/network/play/server/S21PacketChunkData$Extracted data field_150282_a +FD net/minecraft/network/play/server/S21PacketChunkData$Extracted dataSize field_150280_b +FD net/minecraft/network/play/server/S26PacketMapChunkBulk xPositions field_149266_a +FD net/minecraft/network/play/server/S26PacketMapChunkBulk zPositions field_149264_b +FD net/minecraft/network/play/server/S26PacketMapChunkBulk chunksData field_179755_c +FD net/minecraft/network/play/server/S26PacketMapChunkBulk isOverworld field_149267_h +FD net/minecraft/network/play/server/S28PacketEffect soundType field_149251_a +FD net/minecraft/network/play/server/S28PacketEffect soundPos field_179747_b +FD net/minecraft/network/play/server/S28PacketEffect soundData field_149249_b +FD net/minecraft/network/play/server/S28PacketEffect serverWide field_149246_f +FD net/minecraft/network/play/server/S2APacketParticles particleType field_179751_a +FD net/minecraft/network/play/server/S2APacketParticles xCoord field_149234_b +FD net/minecraft/network/play/server/S2APacketParticles yCoord field_149235_c +FD net/minecraft/network/play/server/S2APacketParticles zCoord field_149232_d +FD net/minecraft/network/play/server/S2APacketParticles xOffset field_149233_e +FD net/minecraft/network/play/server/S2APacketParticles yOffset field_149230_f +FD net/minecraft/network/play/server/S2APacketParticles zOffset field_149231_g +FD net/minecraft/network/play/server/S2APacketParticles particleSpeed field_149237_h +FD net/minecraft/network/play/server/S2APacketParticles particleCount field_149238_i +FD net/minecraft/network/play/server/S2APacketParticles longDistance field_179752_j +FD net/minecraft/network/play/server/S2APacketParticles particleArguments field_179753_k +FD net/minecraft/network/play/server/S29PacketSoundEffect soundName field_149219_a +FD net/minecraft/network/play/server/S29PacketSoundEffect posX field_149217_b +FD net/minecraft/network/play/server/S29PacketSoundEffect posY field_149218_c +FD net/minecraft/network/play/server/S29PacketSoundEffect posZ field_149215_d +FD net/minecraft/network/play/server/S29PacketSoundEffect soundVolume field_149216_e +FD net/minecraft/network/play/server/S29PacketSoundEffect soundPitch field_149214_f +FD net/minecraft/network/play/server/S01PacketJoinGame entityId field_149206_a +FD net/minecraft/network/play/server/S01PacketJoinGame hardcoreMode field_149204_b +FD net/minecraft/network/play/server/S01PacketJoinGame gameType field_149205_c +FD net/minecraft/network/play/server/S01PacketJoinGame dimension field_149202_d +FD net/minecraft/network/play/server/S01PacketJoinGame difficulty field_149203_e +FD net/minecraft/network/play/server/S01PacketJoinGame maxPlayers field_149200_f +FD net/minecraft/network/play/server/S01PacketJoinGame worldType field_149201_g +FD net/minecraft/network/play/server/S01PacketJoinGame reducedDebugInfo field_179745_h +FD net/minecraft/network/play/server/S34PacketMaps mapId field_149191_a +FD net/minecraft/network/play/server/S34PacketMaps mapScale field_179739_b +FD net/minecraft/network/play/server/S34PacketMaps mapVisiblePlayersVec4b field_179740_c +FD net/minecraft/network/play/server/S34PacketMaps mapMinX field_179737_d +FD net/minecraft/network/play/server/S34PacketMaps mapMinY field_179738_e +FD net/minecraft/network/play/server/S34PacketMaps mapMaxX field_179735_f +FD net/minecraft/network/play/server/S34PacketMaps mapMaxY field_179736_g +FD net/minecraft/network/play/server/S34PacketMaps mapDataBytes field_179741_h +FD net/minecraft/network/play/server/S14PacketEntity entityId field_149074_a +FD net/minecraft/network/play/server/S14PacketEntity posX field_149072_b +FD net/minecraft/network/play/server/S14PacketEntity posY field_149073_c +FD net/minecraft/network/play/server/S14PacketEntity posZ field_149070_d +FD net/minecraft/network/play/server/S14PacketEntity yaw field_149071_e +FD net/minecraft/network/play/server/S14PacketEntity pitch field_149068_f +FD net/minecraft/network/play/server/S14PacketEntity onGround field_179743_g +FD net/minecraft/network/play/server/S14PacketEntity field_149069_g field_149069_g +FD net/minecraft/network/play/server/S36PacketSignEditorOpen signPosition field_179778_a +FD net/minecraft/network/play/server/S39PacketPlayerAbilities invulnerable field_149119_a +FD net/minecraft/network/play/server/S39PacketPlayerAbilities flying field_149117_b +FD net/minecraft/network/play/server/S39PacketPlayerAbilities allowFlying field_149118_c +FD net/minecraft/network/play/server/S39PacketPlayerAbilities creativeMode field_149115_d +FD net/minecraft/network/play/server/S39PacketPlayerAbilities flySpeed field_149116_e +FD net/minecraft/network/play/server/S39PacketPlayerAbilities walkSpeed field_149114_f +FD net/minecraft/network/play/server/S42PacketCombatEvent eventType field_179776_a +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179774_b field_179774_b +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179775_c field_179775_c +FD net/minecraft/network/play/server/S42PacketCombatEvent field_179772_d field_179772_d +FD net/minecraft/network/play/server/S42PacketCombatEvent deathMessage field_179773_e +FD net/minecraft/network/play/server/S42PacketCombatEvent$1 field_179944_a field_179944_a +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event ENTER_COMBAT ENTER_COMBAT +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event END_COMBAT END_COMBAT +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event ENTITY_DIED ENTITY_DIED +FD net/minecraft/network/play/server/S42PacketCombatEvent$Event $VALUES $VALUES +FD net/minecraft/network/play/server/S38PacketPlayerListItem action field_179770_a +FD net/minecraft/network/play/server/S38PacketPlayerListItem players field_179769_b +FD net/minecraft/network/play/server/S38PacketPlayerListItem$1 field_179938_a field_179938_a +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action ADD_PLAYER ADD_PLAYER +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_GAME_MODE UPDATE_GAME_MODE +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_LATENCY UPDATE_LATENCY +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action UPDATE_DISPLAY_NAME UPDATE_DISPLAY_NAME +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action REMOVE_PLAYER REMOVE_PLAYER +FD net/minecraft/network/play/server/S38PacketPlayerListItem$Action $VALUES $VALUES +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData field_179968_a field_179968_a +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData ping field_179966_b +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData gamemode field_179967_c +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData profile field_179964_d +FD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData displayName field_179965_e +FD net/minecraft/network/play/server/S0APacketUseBed playerID field_149097_a +FD net/minecraft/network/play/server/S0APacketUseBed bedPos field_179799_b +FD net/minecraft/network/play/server/S13PacketDestroyEntities entityIDs field_149100_a +FD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect entityId field_149079_a +FD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect effectId field_149078_b +FD net/minecraft/network/play/server/S48PacketResourcePackSend url field_179786_a +FD net/minecraft/network/play/server/S48PacketResourcePackSend hash field_179785_b +FD net/minecraft/network/play/server/S07PacketRespawn dimensionID field_149088_a +FD net/minecraft/network/play/server/S07PacketRespawn difficulty field_149086_b +FD net/minecraft/network/play/server/S07PacketRespawn gameType field_149087_c +FD net/minecraft/network/play/server/S07PacketRespawn worldType field_149085_d +FD net/minecraft/network/play/server/S19PacketEntityHeadLook entityId field_149384_a +FD net/minecraft/network/play/server/S19PacketEntityHeadLook yaw field_149383_b +FD net/minecraft/network/play/server/S44PacketWorldBorder action field_179795_a +FD net/minecraft/network/play/server/S44PacketWorldBorder size field_179793_b +FD net/minecraft/network/play/server/S44PacketWorldBorder centerX field_179794_c +FD net/minecraft/network/play/server/S44PacketWorldBorder centerZ field_179791_d +FD net/minecraft/network/play/server/S44PacketWorldBorder targetSize field_179792_e +FD net/minecraft/network/play/server/S44PacketWorldBorder diameter field_179789_f +FD net/minecraft/network/play/server/S44PacketWorldBorder timeUntilTarget field_179790_g +FD net/minecraft/network/play/server/S44PacketWorldBorder warningTime field_179796_h +FD net/minecraft/network/play/server/S44PacketWorldBorder warningDistance field_179797_i +FD net/minecraft/network/play/server/S44PacketWorldBorder$1 field_179947_a field_179947_a +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_SIZE SET_SIZE +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action LERP_SIZE LERP_SIZE +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_CENTER SET_CENTER +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action INITIALIZE INITIALIZE +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_WARNING_TIME SET_WARNING_TIME +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action SET_WARNING_BLOCKS SET_WARNING_BLOCKS +FD net/minecraft/network/play/server/S44PacketWorldBorder$Action $VALUES $VALUES +FD net/minecraft/network/play/server/S43PacketCamera entityId field_179781_a +FD net/minecraft/network/play/server/S09PacketHeldItemChange heldItemHotbarIndex field_149387_a +FD net/minecraft/network/play/server/S3DPacketDisplayScoreboard position field_149374_a +FD net/minecraft/network/play/server/S3DPacketDisplayScoreboard scoreName field_149373_b +FD net/minecraft/network/play/server/S1CPacketEntityMetadata entityId field_149379_a +FD net/minecraft/network/play/server/S1CPacketEntityMetadata field_149378_b field_149378_b +FD net/minecraft/network/play/server/S1BPacketEntityAttach leash field_149408_a +FD net/minecraft/network/play/server/S1BPacketEntityAttach entityId field_149406_b +FD net/minecraft/network/play/server/S1BPacketEntityAttach vehicleEntityId field_149407_c +FD net/minecraft/network/play/server/S12PacketEntityVelocity entityID field_149417_a +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionX field_149415_b +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionY field_149416_c +FD net/minecraft/network/play/server/S12PacketEntityVelocity motionZ field_149414_d +FD net/minecraft/network/play/server/S04PacketEntityEquipment entityID field_149394_a +FD net/minecraft/network/play/server/S04PacketEntityEquipment equipmentSlot field_149392_b +FD net/minecraft/network/play/server/S04PacketEntityEquipment itemStack field_149393_c +FD net/minecraft/network/play/server/S1FPacketSetExperience field_149401_a field_149401_a +FD net/minecraft/network/play/server/S1FPacketSetExperience totalExperience field_149399_b +FD net/minecraft/network/play/server/S1FPacketSetExperience level field_149400_c +FD net/minecraft/network/play/server/S06PacketUpdateHealth health field_149336_a +FD net/minecraft/network/play/server/S06PacketUpdateHealth foodLevel field_149334_b +FD net/minecraft/network/play/server/S06PacketUpdateHealth saturationLevel field_149335_c +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective objectiveName field_149343_a +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective objectiveValue field_149341_b +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective type field_179818_c +FD net/minecraft/network/play/server/S3BPacketScoreboardObjective field_149342_c field_149342_c +FD net/minecraft/network/play/server/S3EPacketTeams name field_149320_a +FD net/minecraft/network/play/server/S3EPacketTeams displayName field_149318_b +FD net/minecraft/network/play/server/S3EPacketTeams prefix field_149319_c +FD net/minecraft/network/play/server/S3EPacketTeams suffix field_149316_d +FD net/minecraft/network/play/server/S3EPacketTeams nameTagVisibility field_179816_e +FD net/minecraft/network/play/server/S3EPacketTeams color field_179815_f +FD net/minecraft/network/play/server/S3EPacketTeams players field_149317_e +FD net/minecraft/network/play/server/S3EPacketTeams action field_149314_f +FD net/minecraft/network/play/server/S3EPacketTeams friendlyFlags field_149315_g +FD net/minecraft/network/play/server/S3CPacketUpdateScore name field_149329_a +FD net/minecraft/network/play/server/S3CPacketUpdateScore objective field_149327_b +FD net/minecraft/network/play/server/S3CPacketUpdateScore value field_149328_c +FD net/minecraft/network/play/server/S3CPacketUpdateScore action field_149326_d +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action CHANGE CHANGE +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action REMOVE REMOVE +FD net/minecraft/network/play/server/S3CPacketUpdateScore$Action $VALUES $VALUES +FD net/minecraft/network/play/server/S05PacketSpawnPosition spawnBlockPos field_179801_a +FD net/minecraft/network/play/server/S03PacketTimeUpdate totalWorldTime field_149369_a +FD net/minecraft/network/play/server/S03PacketTimeUpdate worldTime field_149368_b +FD net/minecraft/network/play/server/S45PacketTitle type field_179812_a +FD net/minecraft/network/play/server/S45PacketTitle message field_179810_b +FD net/minecraft/network/play/server/S45PacketTitle fadeInTime field_179811_c +FD net/minecraft/network/play/server/S45PacketTitle displayTime field_179808_d +FD net/minecraft/network/play/server/S45PacketTitle fadeOutTime field_179809_e +FD net/minecraft/network/play/server/S45PacketTitle$Type TITLE TITLE +FD net/minecraft/network/play/server/S45PacketTitle$Type SUBTITLE SUBTITLE +FD net/minecraft/network/play/server/S45PacketTitle$Type TIMES TIMES +FD net/minecraft/network/play/server/S45PacketTitle$Type CLEAR CLEAR +FD net/minecraft/network/play/server/S45PacketTitle$Type RESET RESET +FD net/minecraft/network/play/server/S45PacketTitle$Type $VALUES $VALUES +FD net/minecraft/network/play/server/S33PacketUpdateSign world field_179706_a +FD net/minecraft/network/play/server/S33PacketUpdateSign blockPos field_179705_b +FD net/minecraft/network/play/server/S33PacketUpdateSign lines field_149349_d +FD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter header field_179703_a +FD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter footer field_179702_b +FD net/minecraft/network/play/server/S0DPacketCollectItem collectedItemEntityId field_149357_a +FD net/minecraft/network/play/server/S0DPacketCollectItem entityId field_149356_b +FD net/minecraft/network/play/server/S18PacketEntityTeleport entityId field_149458_a +FD net/minecraft/network/play/server/S18PacketEntityTeleport posX field_149456_b +FD net/minecraft/network/play/server/S18PacketEntityTeleport posY field_149457_c +FD net/minecraft/network/play/server/S18PacketEntityTeleport posZ field_149454_d +FD net/minecraft/network/play/server/S18PacketEntityTeleport yaw field_149455_e +FD net/minecraft/network/play/server/S18PacketEntityTeleport pitch field_149453_f +FD net/minecraft/network/play/server/S18PacketEntityTeleport onGround field_179698_g +FD net/minecraft/network/play/server/S20PacketEntityProperties entityId field_149445_a +FD net/minecraft/network/play/server/S20PacketEntityProperties field_149444_b field_149444_b +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151414_a field_151414_a +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151412_b field_151412_b +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151413_c field_151413_c +FD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot field_151411_d field_151411_d +FD net/minecraft/network/play/server/S1DPacketEntityEffect entityId field_149434_a +FD net/minecraft/network/play/server/S1DPacketEntityEffect effectId field_149432_b +FD net/minecraft/network/play/server/S1DPacketEntityEffect amplifier field_149433_c +FD net/minecraft/network/play/server/S1DPacketEntityEffect duration field_149431_d +FD net/minecraft/network/play/server/S1DPacketEntityEffect hideParticles field_179708_e +FD net/minecraft/network/play/client/C14PacketTabComplete message field_149420_a +FD net/minecraft/network/play/client/C14PacketTabComplete targetBlock field_179710_b +FD net/minecraft/network/play/client/C01PacketChatMessage message field_149440_a +FD net/minecraft/network/play/client/C16PacketClientStatus status field_149437_a +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState PERFORM_RESPAWN PERFORM_RESPAWN +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState REQUEST_STATS REQUEST_STATS +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState OPEN_INVENTORY_ACHIEVEMENT OPEN_INVENTORY_ACHIEVEMENT +FD net/minecraft/network/play/client/C16PacketClientStatus$EnumState $VALUES $VALUES +FD net/minecraft/network/play/client/C15PacketClientSettings lang field_149530_a +FD net/minecraft/network/play/client/C15PacketClientSettings view field_149528_b +FD net/minecraft/network/play/client/C15PacketClientSettings chatVisibility field_149529_c +FD net/minecraft/network/play/client/C15PacketClientSettings enableColors field_149526_d +FD net/minecraft/network/play/client/C15PacketClientSettings modelPartFlags field_179711_e +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction windowId field_149536_a +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction uid field_149534_b +FD net/minecraft/network/play/client/C0FPacketConfirmTransaction accepted field_149535_c +FD net/minecraft/network/play/client/C11PacketEnchantItem windowId field_149541_a +FD net/minecraft/network/play/client/C11PacketEnchantItem button field_149540_b +FD net/minecraft/network/play/client/C0EPacketClickWindow windowId field_149554_a +FD net/minecraft/network/play/client/C0EPacketClickWindow slotId field_149552_b +FD net/minecraft/network/play/client/C0EPacketClickWindow usedButton field_149553_c +FD net/minecraft/network/play/client/C0EPacketClickWindow actionNumber field_149550_d +FD net/minecraft/network/play/client/C0EPacketClickWindow clickedItem field_149551_e +FD net/minecraft/network/play/client/C0EPacketClickWindow mode field_149549_f +FD net/minecraft/network/play/client/C0DPacketCloseWindow windowId field_149556_a +FD net/minecraft/network/play/client/C17PacketCustomPayload channel field_149562_a +FD net/minecraft/network/play/client/C17PacketCustomPayload data field_149561_c +FD net/minecraft/network/play/client/C02PacketUseEntity entityId field_149567_a +FD net/minecraft/network/play/client/C02PacketUseEntity action field_149566_b +FD net/minecraft/network/play/client/C02PacketUseEntity hitVec field_179713_c +FD net/minecraft/network/play/client/C02PacketUseEntity$Action INTERACT INTERACT +FD net/minecraft/network/play/client/C02PacketUseEntity$Action ATTACK ATTACK +FD net/minecraft/network/play/client/C02PacketUseEntity$Action INTERACT_AT INTERACT_AT +FD net/minecraft/network/play/client/C02PacketUseEntity$Action $VALUES $VALUES +FD net/minecraft/network/play/client/C00PacketKeepAlive key field_149461_a +FD net/minecraft/network/play/client/C03PacketPlayer x field_149479_a +FD net/minecraft/network/play/client/C03PacketPlayer y field_149477_b +FD net/minecraft/network/play/client/C03PacketPlayer z field_149478_c +FD net/minecraft/network/play/client/C03PacketPlayer yaw field_149476_e +FD net/minecraft/network/play/client/C03PacketPlayer pitch field_149473_f +FD net/minecraft/network/play/client/C03PacketPlayer onGround field_149474_g +FD net/minecraft/network/play/client/C03PacketPlayer moving field_149480_h +FD net/minecraft/network/play/client/C03PacketPlayer rotating field_149481_i +FD net/minecraft/network/play/client/C13PacketPlayerAbilities invulnerable field_149500_a +FD net/minecraft/network/play/client/C13PacketPlayerAbilities flying field_149498_b +FD net/minecraft/network/play/client/C13PacketPlayerAbilities allowFlying field_149499_c +FD net/minecraft/network/play/client/C13PacketPlayerAbilities creativeMode field_149496_d +FD net/minecraft/network/play/client/C13PacketPlayerAbilities flySpeed field_149497_e +FD net/minecraft/network/play/client/C13PacketPlayerAbilities walkSpeed field_149495_f +FD net/minecraft/network/play/client/C07PacketPlayerDigging position field_179717_a +FD net/minecraft/network/play/client/C07PacketPlayerDigging facing field_179716_b +FD net/minecraft/network/play/client/C07PacketPlayerDigging status field_149508_e +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action START_DESTROY_BLOCK START_DESTROY_BLOCK +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action ABORT_DESTROY_BLOCK ABORT_DESTROY_BLOCK +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action STOP_DESTROY_BLOCK STOP_DESTROY_BLOCK +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action DROP_ALL_ITEMS DROP_ALL_ITEMS +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action DROP_ITEM DROP_ITEM +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action RELEASE_USE_ITEM RELEASE_USE_ITEM +FD net/minecraft/network/play/client/C07PacketPlayerDigging$Action $VALUES $VALUES +FD net/minecraft/network/play/client/C0BPacketEntityAction entityID field_149517_a +FD net/minecraft/network/play/client/C0BPacketEntityAction action field_149515_b +FD net/minecraft/network/play/client/C0BPacketEntityAction auxData field_149516_c +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action START_SNEAKING START_SNEAKING +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SNEAKING STOP_SNEAKING +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SLEEPING STOP_SLEEPING +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action START_SPRINTING START_SPRINTING +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action STOP_SPRINTING STOP_SPRINTING +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action RIDING_JUMP RIDING_JUMP +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action OPEN_INVENTORY OPEN_INVENTORY +FD net/minecraft/network/play/client/C0BPacketEntityAction$Action $VALUES $VALUES +FD net/minecraft/network/play/client/C0CPacketInput strafeSpeed field_149624_a +FD net/minecraft/network/play/client/C0CPacketInput forwardSpeed field_149622_b +FD net/minecraft/network/play/client/C0CPacketInput jumping field_149623_c +FD net/minecraft/network/play/client/C0CPacketInput sneaking field_149621_d +FD net/minecraft/network/play/client/C19PacketResourcePackStatus hash field_179720_a +FD net/minecraft/network/play/client/C19PacketResourcePackStatus status field_179719_b +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action SUCCESSFULLY_LOADED SUCCESSFULLY_LOADED +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action DECLINED DECLINED +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action FAILED_DOWNLOAD FAILED_DOWNLOAD +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action ACCEPTED ACCEPTED +FD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action $VALUES $VALUES +FD net/minecraft/network/play/client/C09PacketHeldItemChange slotId field_149615_a +FD net/minecraft/network/play/client/C10PacketCreativeInventoryAction slotId field_149629_a +FD net/minecraft/network/play/client/C10PacketCreativeInventoryAction stack field_149628_b +FD net/minecraft/network/play/client/C12PacketUpdateSign pos field_179723_a +FD net/minecraft/network/play/client/C12PacketUpdateSign lines field_149590_d +FD net/minecraft/network/play/client/C18PacketSpectate id field_179729_a +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement field_179726_a field_179726_a +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement position field_179725_b +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement placedBlockDirection field_149579_d +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement stack field_149580_e +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingX field_149577_f +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingY field_149578_g +FD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement facingZ field_149584_h +FD net/minecraft/network/handshake/client/C00Handshake protocolVersion field_149600_a +FD net/minecraft/network/handshake/client/C00Handshake ip field_149598_b +FD net/minecraft/network/handshake/client/C00Handshake port field_149599_c +FD net/minecraft/network/handshake/client/C00Handshake requestedState field_149597_d +FD net/minecraft/network/login/server/S02PacketLoginSuccess profile field_149602_a +FD net/minecraft/network/login/server/S01PacketEncryptionRequest hashedServerId field_149612_a +FD net/minecraft/network/login/server/S01PacketEncryptionRequest publicKey field_149610_b +FD net/minecraft/network/login/server/S01PacketEncryptionRequest verifyToken field_149611_c +FD net/minecraft/network/login/server/S03PacketEnableCompression compressionTreshold field_179733_a +FD net/minecraft/network/login/server/S00PacketDisconnect reason field_149605_a +FD net/minecraft/network/login/client/C00PacketLoginStart profile field_149305_a +FD net/minecraft/network/login/client/C01PacketEncryptionResponse secretKeyEncrypted field_149302_a +FD net/minecraft/network/login/client/C01PacketEncryptionResponse verifyTokenEncrypted field_149301_b +FD net/minecraft/network/status/server/S01PacketPong clientTime field_149293_a +FD net/minecraft/network/status/server/S00PacketServerInfo GSON field_149297_a +FD net/minecraft/network/status/server/S00PacketServerInfo response field_149296_b +FD net/minecraft/network/ServerStatusResponse serverMotd field_151326_a +FD net/minecraft/network/ServerStatusResponse playerCount field_151324_b +FD net/minecraft/network/ServerStatusResponse protocolVersion field_151325_c +FD net/minecraft/network/ServerStatusResponse favicon field_151323_d +FD net/minecraft/network/ServerStatusResponse$PlayerCountData maxPlayers field_151336_a +FD net/minecraft/network/ServerStatusResponse$PlayerCountData onlinePlayerCount field_151334_b +FD net/minecraft/network/ServerStatusResponse$PlayerCountData players field_151335_c +FD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier name field_151306_a +FD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier protocol field_151305_b +FD net/minecraft/network/status/client/C01PacketPing clientTime field_149290_a +FD net/minecraft/util/ResourceLocation resourceDomain field_110626_a +FD net/minecraft/util/ResourceLocation resourcePath field_110625_b +FD net/minecraft/init/Bootstrap SYSOUT field_179872_a +FD net/minecraft/init/Bootstrap alreadyRegistered field_151355_a +FD net/minecraft/init/Bootstrap LOGGER field_179871_c +FD net/minecraft/init/Bootstrap$2 field_150841_b field_150841_b +FD net/minecraft/init/Bootstrap$3 field_150840_b field_150840_b +FD net/minecraft/init/Bootstrap$4 field_150839_b field_150839_b +FD net/minecraft/init/Bootstrap$5 field_150838_b field_150838_b +FD net/minecraft/init/Bootstrap$7 field_179240_b field_179240_b +FD net/minecraft/init/Bootstrap$8 field_179241_b field_179241_b +FD net/minecraft/init/Bootstrap$12 field_150843_b field_150843_b +FD net/minecraft/init/Bootstrap$12$1 field_150836_b field_150836_b +FD net/minecraft/init/Bootstrap$12$1 field_150837_c field_150837_c +FD net/minecraft/init/Bootstrap$16 field_150842_b field_150842_b +FD net/minecraft/client/util/JsonException field_151383_a field_151383_a +FD net/minecraft/client/util/JsonException exceptionMessage field_151382_b +FD net/minecraft/client/util/JsonException$Entry field_151376_a field_151376_a +FD net/minecraft/client/util/JsonException$Entry field_151375_b field_151375_b +FD net/minecraft/command/ServerCommand command field_73702_a +FD net/minecraft/command/ServerCommand sender field_73701_b +FD net/minecraft/server/ServerEula LOG field_154349_a +FD net/minecraft/server/ServerEula eulaFile field_154350_b +FD net/minecraft/server/ServerEula acceptedEULA field_154351_c +FD net/minecraft/util/LoggingPrintStream LOGGER field_179884_a +FD net/minecraft/util/LoggingPrintStream domain field_179883_b +FD net/minecraft/network/ThreadQuickExitException INSTANCE field_179886_a +FD net/minecraft/scoreboard/ServerScoreboard scoreboardMCServer field_96555_a +FD net/minecraft/scoreboard/ServerScoreboard field_96553_b field_96553_b +FD net/minecraft/scoreboard/ServerScoreboard scoreboardSaveData field_96554_c +FD net/minecraft/server/dedicated/PropertyManager LOGGER field_164440_a +FD net/minecraft/server/dedicated/PropertyManager serverProperties field_73672_b +FD net/minecraft/server/dedicated/PropertyManager serverPropertiesFile field_73673_c +FD net/minecraft/server/dedicated/DedicatedPlayerList LOGGER field_164439_d +FD net/minecraft/server/dedicated/DedicatedServer logger field_155771_h +FD net/minecraft/server/dedicated/DedicatedServer pendingCommandList field_71341_l +FD net/minecraft/server/dedicated/DedicatedServer theRConThreadQuery field_71342_m +FD net/minecraft/server/dedicated/DedicatedServer theRConThreadMain field_71339_n +FD net/minecraft/server/dedicated/DedicatedServer settings field_71340_o +FD net/minecraft/server/dedicated/DedicatedServer eula field_154332_n +FD net/minecraft/server/dedicated/DedicatedServer canSpawnStructures field_71338_p +FD net/minecraft/server/dedicated/DedicatedServer gameType field_71337_q +FD net/minecraft/server/dedicated/DedicatedServer guiIsEnabled field_71335_s +FD net/minecraft/server/dedicated/DedicatedServer$1 field_72451_a field_72451_a +FD net/minecraft/server/dedicated/DedicatedServer$2 field_72428_a field_72428_a +FD net/minecraft/server/dedicated/DedicatedServer$3 field_71743_a field_71743_a +FD net/minecraft/server/dedicated/DedicatedServer$4 field_85171_a field_85171_a +FD net/minecraft/server/dedicated/ServerHangWatchdog LOGGER field_180251_a +FD net/minecraft/server/dedicated/ServerHangWatchdog server field_180249_b +FD net/minecraft/server/dedicated/ServerHangWatchdog maxTickTime field_180250_c +FD net/minecraft/server/dedicated/ServerHangWatchdog$1 field_180252_a field_180252_a +FD net/minecraft/server/gui/MinecraftServerGui serverGuiFont field_164249_a +FD net/minecraft/server/gui/MinecraftServerGui LOGGER field_164248_b +FD net/minecraft/server/gui/MinecraftServerGui server field_120021_b +FD net/minecraft/server/gui/MinecraftServerGui$1 field_120023_a field_120023_a +FD net/minecraft/server/gui/MinecraftServerGui$2 field_120025_a field_120025_a +FD net/minecraft/server/gui/MinecraftServerGui$2 field_120024_b field_120024_b +FD net/minecraft/server/gui/MinecraftServerGui$3 field_120032_a field_120032_a +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164252_a field_164252_a +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164250_b field_164250_b +FD net/minecraft/server/gui/MinecraftServerGui$4 field_164251_c field_164251_c +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164256_a field_164256_a +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164254_b field_164254_b +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164255_c field_164255_c +FD net/minecraft/server/gui/MinecraftServerGui$5 field_164253_d field_164253_d +FD net/minecraft/server/gui/PlayerListComponent server field_120015_a +FD net/minecraft/server/gui/PlayerListComponent ticks field_120014_b +FD net/minecraft/server/gui/StatsComponent field_120040_a field_120040_a +FD net/minecraft/server/gui/StatsComponent field_120038_b field_120038_b +FD net/minecraft/server/gui/StatsComponent field_120039_c field_120039_c +FD net/minecraft/server/gui/StatsComponent field_120036_d field_120036_d +FD net/minecraft/server/gui/StatsComponent server field_120037_e +FD net/minecraft/server/gui/StatsComponent$1 field_120030_a field_120030_a +FD net/minecraft/client/renderer/DestroyBlockProgress miningPlayerEntId field_73115_a +FD net/minecraft/client/renderer/DestroyBlockProgress position field_180247_b +FD net/minecraft/client/renderer/DestroyBlockProgress partialBlockProgress field_73112_e +FD net/minecraft/client/renderer/DestroyBlockProgress createdAtCloudUpdateTick field_82745_f +FD net/minecraft/world/demo/DemoWorldServer demoWorldSeed field_73072_L +FD net/minecraft/world/demo/DemoWorldServer demoWorldSettings field_73071_a +FD net/minecraft/world/demo/DemoWorldManager field_73105_c field_73105_c +FD net/minecraft/world/demo/DemoWorldManager demoTimeExpired field_73103_d +FD net/minecraft/world/demo/DemoWorldManager field_73104_e field_73104_e +FD net/minecraft/world/demo/DemoWorldManager field_73102_f field_73102_f +FD net/minecraft/world/WorldServerMulti delegate field_175743_a +FD net/minecraft/world/WorldServerMulti$1 field_177698_a field_177698_a +FD net/minecraft/entity/EntityTracker logger field_151249_a +FD net/minecraft/entity/EntityTracker theWorld field_72795_a +FD net/minecraft/entity/EntityTracker trackedEntities field_72793_b +FD net/minecraft/entity/EntityTracker trackedEntityHashTable field_72794_c +FD net/minecraft/entity/EntityTracker maxTrackingDistanceThreshold field_72792_d +FD net/minecraft/entity/EntityTracker$1 field_96570_a field_96570_a +FD net/minecraft/entity/EntityTracker$1 field_96569_b field_96569_b +FD net/minecraft/world/WorldManager mcServer field_72783_a +FD net/minecraft/world/WorldManager theWorldServer field_72782_b +FD net/minecraft/server/management/PlayerManager pmLogger field_152627_a +FD net/minecraft/server/management/PlayerManager theWorldServer field_72701_a +FD net/minecraft/server/management/PlayerManager players field_72699_b +FD net/minecraft/server/management/PlayerManager playerInstances field_72700_c +FD net/minecraft/server/management/PlayerManager playerInstancesToUpdate field_72697_d +FD net/minecraft/server/management/PlayerManager playerInstanceList field_111193_e +FD net/minecraft/server/management/PlayerManager playerViewRadius field_72698_e +FD net/minecraft/server/management/PlayerManager previousTotalWorldTime field_111192_g +FD net/minecraft/server/management/PlayerManager xzDirectionsConst field_72696_f +FD net/minecraft/server/management/PlayerManager$PlayerInstance field_73265_a field_73265_a +FD net/minecraft/server/management/PlayerManager$PlayerInstance playersWatchingChunk field_73263_b +FD net/minecraft/server/management/PlayerManager$PlayerInstance chunkCoords field_73264_c +FD net/minecraft/server/management/PlayerManager$PlayerInstance locationOfBlockChange field_151254_d +FD net/minecraft/server/management/PlayerManager$PlayerInstance numBlocksToUpdate field_73262_e +FD net/minecraft/server/management/PlayerManager$PlayerInstance flagsYAreasToUpdate field_73260_f +FD net/minecraft/server/management/PlayerManager$PlayerInstance previousWorldTime field_111198_g +FD net/minecraft/world/gen/ChunkProviderServer chunkLoadOverride field_73250_a +FD net/minecraft/world/gen/ChunkProviderServer logger field_147417_b +FD net/minecraft/world/gen/ChunkProviderServer droppedChunksSet field_73248_b +FD net/minecraft/world/gen/ChunkProviderServer dummyChunk field_73249_c +FD net/minecraft/world/gen/ChunkProviderServer serverChunkGenerator field_73246_d +FD net/minecraft/world/gen/ChunkProviderServer chunkLoader field_73247_e +FD net/minecraft/world/gen/ChunkProviderServer id2ChunkMap field_73244_f +FD net/minecraft/world/gen/ChunkProviderServer loadedChunks field_73245_g +FD net/minecraft/world/gen/ChunkProviderServer worldObj field_73251_h +FD net/minecraft/world/WorldServer mcServer field_73061_a +FD net/minecraft/world/WorldServer theEntityTracker field_73062_L +FD net/minecraft/world/WorldServer thePlayerManager field_73063_M +FD net/minecraft/world/WorldServer pendingTickListEntriesHashSet field_73064_N +FD net/minecraft/world/WorldServer pendingTickListEntriesTreeSet field_73065_O +FD net/minecraft/world/WorldServer entitiesByUuid field_175741_N +FD net/minecraft/world/WorldServer allPlayersSleeping field_73068_P +FD net/minecraft/world/WorldServer updateEntityTick field_80004_Q +FD net/minecraft/world/WorldServer worldTeleporter field_85177_Q +FD net/minecraft/world/WorldServer mobSpawner field_175742_R +FD net/minecraft/world/WorldServer blockEventQueue field_147490_S +FD net/minecraft/world/WorldServer blockEventCacheIndex field_147489_T +FD net/minecraft/world/WorldServer bonusChestContent field_73069_S +FD net/minecraft/world/WorldServer pendingTickListEntriesThisTick field_94579_S +FD net/minecraft/world/WorldServer logger field_147491_a +FD net/minecraft/world/WorldServer theChunkProviderServer field_73059_b +FD net/minecraft/world/WorldServer disableLevelSaving field_73058_d +FD net/minecraft/world/WorldServer villageSiege field_175740_d +FD net/minecraft/world/WorldServer$1 field_180243_a field_180243_a +FD net/minecraft/entity/player/EntityPlayerMP playerNetServerHandler field_71135_a +FD net/minecraft/entity/player/EntityPlayerMP mcServer field_71133_b +FD net/minecraft/entity/player/EntityPlayerMP logger field_147102_bM +FD net/minecraft/entity/player/EntityPlayerMP translator field_71148_cg +FD net/minecraft/entity/player/EntityPlayerMP destroyedItemsNetCache field_71130_g +FD net/minecraft/entity/player/EntityPlayerMP statsFile field_147103_bO +FD net/minecraft/entity/player/EntityPlayerMP combinedHealth field_130068_bO +FD net/minecraft/entity/player/EntityPlayerMP lastHealth field_71149_ch +FD net/minecraft/entity/player/EntityPlayerMP lastFoodLevel field_71146_ci +FD net/minecraft/entity/player/EntityPlayerMP wasHungry field_71147_cj +FD net/minecraft/entity/player/EntityPlayerMP lastExperience field_71144_ck +FD net/minecraft/entity/player/EntityPlayerMP respawnInvulnerabilityTicks field_147101_bU +FD net/minecraft/entity/player/EntityPlayerMP chatVisibility field_71143_cn +FD net/minecraft/entity/player/EntityPlayerMP chatColours field_71140_co +FD net/minecraft/entity/player/EntityPlayerMP playerLastActiveTime field_143005_bX +FD net/minecraft/entity/player/EntityPlayerMP spectatingEntity field_175401_bS +FD net/minecraft/entity/player/EntityPlayerMP currentWindowId field_71139_cq +FD net/minecraft/entity/player/EntityPlayerMP theItemInWorldManager field_71134_c +FD net/minecraft/entity/player/EntityPlayerMP managedPosX field_71131_d +FD net/minecraft/entity/player/EntityPlayerMP managedPosZ field_71132_e +FD net/minecraft/entity/player/EntityPlayerMP loadedChunks field_71129_f +FD net/minecraft/entity/player/EntityPlayerMP isChangingQuantityOnly field_71137_h +FD net/minecraft/entity/player/EntityPlayerMP ping field_71138_i +FD net/minecraft/entity/player/EntityPlayerMP playerConqueredTheEnd field_71136_j +FD net/minecraft/server/management/ItemInWorldManager theWorld field_73092_a +FD net/minecraft/server/management/ItemInWorldManager thisPlayerMP field_73090_b +FD net/minecraft/server/management/ItemInWorldManager gameType field_73091_c +FD net/minecraft/server/management/ItemInWorldManager isDestroyingBlock field_73088_d +FD net/minecraft/server/management/ItemInWorldManager initialDamage field_73089_e +FD net/minecraft/server/management/ItemInWorldManager field_180240_f field_180240_f +FD net/minecraft/server/management/ItemInWorldManager curblockDamage field_73100_i +FD net/minecraft/server/management/ItemInWorldManager receivedFinishDiggingPacket field_73097_j +FD net/minecraft/server/management/ItemInWorldManager field_180241_i field_180241_i +FD net/minecraft/server/management/ItemInWorldManager initialBlockDamage field_73093_n +FD net/minecraft/server/management/ItemInWorldManager durabilityRemainingOnBlock field_73094_o +FD net/minecraft/entity/EntityTrackerEntry trackedEntity field_73132_a +FD net/minecraft/entity/EntityTrackerEntry trackingDistanceThreshold field_73130_b +FD net/minecraft/entity/EntityTrackerEntry updateFrequency field_73131_c +FD net/minecraft/entity/EntityTrackerEntry encodedPosX field_73128_d +FD net/minecraft/entity/EntityTrackerEntry encodedPosY field_73129_e +FD net/minecraft/entity/EntityTrackerEntry encodedPosZ field_73126_f +FD net/minecraft/entity/EntityTrackerEntry encodedRotationYaw field_73127_g +FD net/minecraft/entity/EntityTrackerEntry encodedRotationPitch field_73139_h +FD net/minecraft/entity/EntityTrackerEntry lastHeadMotion field_73140_i +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityMotionX field_73137_j +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityMotionY field_73138_k +FD net/minecraft/entity/EntityTrackerEntry motionZ field_73135_l +FD net/minecraft/entity/EntityTrackerEntry updateCounter field_73136_m +FD net/minecraft/entity/EntityTrackerEntry playerEntitiesUpdated field_73133_n +FD net/minecraft/entity/EntityTrackerEntry trackingPlayers field_73134_o +FD net/minecraft/entity/EntityTrackerEntry logger field_151262_p +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosX field_73147_p +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosY field_73146_q +FD net/minecraft/entity/EntityTrackerEntry lastTrackedEntityPosZ field_73145_r +FD net/minecraft/entity/EntityTrackerEntry firstUpdateDone field_73144_s +FD net/minecraft/entity/EntityTrackerEntry sendVelocityUpdates field_73143_t +FD net/minecraft/entity/EntityTrackerEntry ticksSinceLastForcedTeleport field_73142_u +FD net/minecraft/entity/EntityTrackerEntry field_85178_v field_85178_v +FD net/minecraft/entity/EntityTrackerEntry ridingEntity field_73141_v +FD net/minecraft/entity/EntityTrackerEntry onGround field_180234_y +FD net/minecraft/network/PingResponseHandler logger field_151258_a +FD net/minecraft/network/PingResponseHandler networkSystem field_151257_b +FD net/minecraft/client/network/NetHandlerHandshakeMemory mcServer field_147385_a +FD net/minecraft/client/network/NetHandlerHandshakeMemory networkManager field_147384_b +FD net/minecraft/network/NetworkSystem eventLoops field_151276_c +FD net/minecraft/network/NetworkSystem SERVER_EPOLL_EVENTLOOP field_181141_b +FD net/minecraft/network/NetworkSystem SERVER_LOCAL_EVENTLOOP field_180232_b +FD net/minecraft/network/NetworkSystem isAlive field_151277_a +FD net/minecraft/network/NetworkSystem logger field_151275_b +FD net/minecraft/network/NetworkSystem mcServer field_151273_d +FD net/minecraft/network/NetworkSystem endpoints field_151274_e +FD net/minecraft/network/NetworkSystem networkManagers field_151272_f +FD net/minecraft/network/NetworkSystem$4 field_151283_c field_151283_c +FD net/minecraft/network/NetworkSystem$5 field_180230_b field_180230_b +FD net/minecraft/network/NetworkSystem$6 field_151284_a field_151284_a +FD net/minecraft/network/NetworkSystem$6 field_180228_c field_180228_c +FD net/minecraft/network/NetworkSystem$7 field_181143_a field_181143_a +FD net/minecraft/network/NetworkSystem$7 field_181144_b field_181144_b +FD net/minecraft/network/NetworkSystem$7 field_181145_c field_181145_c +FD net/minecraft/network/NetHandlerPlayServer netManager field_147371_a +FD net/minecraft/network/NetHandlerPlayServer playerEntity field_147369_b +FD net/minecraft/network/NetHandlerPlayServer logger field_147370_c +FD net/minecraft/network/NetHandlerPlayServer serverController field_147367_d +FD net/minecraft/network/NetHandlerPlayServer networkTickCount field_147368_e +FD net/minecraft/network/NetHandlerPlayServer field_175090_f field_175090_f +FD net/minecraft/network/NetHandlerPlayServer floatingTickCount field_147365_f +FD net/minecraft/network/NetHandlerPlayServer field_147366_g field_147366_g +FD net/minecraft/network/NetHandlerPlayServer field_147378_h field_147378_h +FD net/minecraft/network/NetHandlerPlayServer lastPingTime field_147379_i +FD net/minecraft/network/NetHandlerPlayServer lastSentPingPacket field_147377_k +FD net/minecraft/network/NetHandlerPlayServer chatSpamThresholdCount field_147374_l +FD net/minecraft/network/NetHandlerPlayServer itemDropThreshold field_147375_m +FD net/minecraft/network/NetHandlerPlayServer field_147372_n field_147372_n +FD net/minecraft/network/NetHandlerPlayServer lastPosX field_147373_o +FD net/minecraft/network/NetHandlerPlayServer lastPosY field_147382_p +FD net/minecraft/network/NetHandlerPlayServer lastPosZ field_147381_q +FD net/minecraft/network/NetHandlerPlayServer hasMoved field_147380_r +FD net/minecraft/network/NetHandlerPlayServer$1 field_151289_a field_151289_a +FD net/minecraft/network/NetHandlerPlayServer$1 field_151288_b field_151288_b +FD net/minecraft/network/NetHandlerPlayServer$2 field_151286_b field_151286_b +FD net/minecraft/network/NetHandlerPlayServer$3 field_180227_a field_180227_a +FD net/minecraft/network/NetHandlerPlayServer$3 field_180226_b field_180226_b +FD net/minecraft/network/NetHandlerPlayServer$4 field_180224_a field_180224_a +FD net/minecraft/network/NetHandlerPlayServer$4 field_180222_b field_180222_b +FD net/minecraft/network/NetHandlerPlayServer$4 field_180223_c field_180223_c +FD net/minecraft/server/network/NetHandlerHandshakeTCP server field_147387_a +FD net/minecraft/server/network/NetHandlerHandshakeTCP networkManager field_147386_b +FD net/minecraft/server/network/NetHandlerHandshakeTCP$1 field_151291_a field_151291_a +FD net/minecraft/server/network/NetHandlerLoginServer networkManager field_147333_a +FD net/minecraft/server/network/NetHandlerLoginServer AUTHENTICATOR_THREAD_ID field_147331_b +FD net/minecraft/server/network/NetHandlerLoginServer logger field_147332_c +FD net/minecraft/server/network/NetHandlerLoginServer RANDOM field_147329_d +FD net/minecraft/server/network/NetHandlerLoginServer verifyToken field_147330_e +FD net/minecraft/server/network/NetHandlerLoginServer server field_147327_f +FD net/minecraft/server/network/NetHandlerLoginServer currentLoginState field_147328_g +FD net/minecraft/server/network/NetHandlerLoginServer connectionTimer field_147336_h +FD net/minecraft/server/network/NetHandlerLoginServer loginGameProfile field_147337_i +FD net/minecraft/server/network/NetHandlerLoginServer serverId field_147334_j +FD net/minecraft/server/network/NetHandlerLoginServer secretKey field_147335_k +FD net/minecraft/server/network/NetHandlerLoginServer player field_181025_l +FD net/minecraft/server/network/NetHandlerLoginServer$1 field_151292_a field_151292_a +FD net/minecraft/server/network/NetHandlerLoginServer$2 field_180221_a field_180221_a +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState HELLO HELLO +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState KEY KEY +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState AUTHENTICATING AUTHENTICATING +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState READY_TO_ACCEPT READY_TO_ACCEPT +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState DELAY_ACCEPT DELAY_ACCEPT +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState ACCEPTED ACCEPTED +FD net/minecraft/server/network/NetHandlerLoginServer$LoginState $VALUES $VALUES +FD net/minecraft/server/network/NetHandlerStatusServer EXIT_MESSAGE field_183007_a +FD net/minecraft/server/network/NetHandlerStatusServer server field_147314_a +FD net/minecraft/server/network/NetHandlerStatusServer networkManager field_147313_b +FD net/minecraft/server/network/NetHandlerStatusServer handled field_183008_d +FD net/minecraft/server/management/BanEntry dateFormat field_73698_a +FD net/minecraft/server/management/BanEntry banStartDate field_73694_d +FD net/minecraft/server/management/BanEntry bannedBy field_73695_e +FD net/minecraft/server/management/BanEntry banEndDate field_73692_f +FD net/minecraft/server/management/BanEntry reason field_73693_g +FD net/minecraft/server/management/PlayerProfileCache dateFormat field_152659_a +FD net/minecraft/server/management/PlayerProfileCache gson field_152660_b +FD net/minecraft/server/management/PlayerProfileCache usernameToProfileEntryMap field_152661_c +FD net/minecraft/server/management/PlayerProfileCache uuidToProfileEntryMap field_152662_d +FD net/minecraft/server/management/PlayerProfileCache gameProfiles field_152663_e +FD net/minecraft/server/management/PlayerProfileCache mcServer field_152664_f +FD net/minecraft/server/management/PlayerProfileCache usercacheFile field_152665_g +FD net/minecraft/server/management/PlayerProfileCache TYPE field_152666_h +FD net/minecraft/server/management/PlayerProfileCache$1 field_152667_a field_152667_a +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry field_152671_a field_152671_a +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry gameProfile field_152672_b +FD net/minecraft/server/management/PlayerProfileCache$ProfileEntry expirationDate field_152673_c +FD net/minecraft/server/management/PlayerProfileCache$Serializer field_152677_a field_152677_a +FD net/minecraft/server/management/PreYggdrasilConverter OLD_IPBAN_FILE field_152728_a +FD net/minecraft/server/management/PreYggdrasilConverter OLD_PLAYERBAN_FILE field_152729_b +FD net/minecraft/server/management/PreYggdrasilConverter OLD_OPS_FILE field_152730_c +FD net/minecraft/server/management/PreYggdrasilConverter OLD_WHITELIST_FILE field_152731_d +FD net/minecraft/server/management/PreYggdrasilConverter LOGGER field_152732_e +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152734_a field_152734_a +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152735_b field_152735_b +FD net/minecraft/server/management/PreYggdrasilConverter$2 field_152736_c field_152736_c +FD net/minecraft/server/management/PreYggdrasilConverter$3 field_152737_a field_152737_a +FD net/minecraft/server/management/PreYggdrasilConverter$3 field_152738_b field_152738_b +FD net/minecraft/server/management/PreYggdrasilConverter$4 field_152739_a field_152739_a +FD net/minecraft/server/management/PreYggdrasilConverter$4 field_152740_b field_152740_b +FD net/minecraft/server/management/PreYggdrasilConverter$5 field_152741_a field_152741_a +FD net/minecraft/server/management/PreYggdrasilConverter$5 field_152742_b field_152742_b +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152745_a field_152745_a +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152746_b field_152746_b +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152747_c field_152747_c +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152748_d field_152748_d +FD net/minecraft/server/management/PreYggdrasilConverter$6 field_152749_e field_152749_e +FD net/minecraft/server/management/ServerConfigurationManager FILE_PLAYERBANS field_152613_a +FD net/minecraft/server/management/ServerConfigurationManager FILE_IPBANS field_152614_b +FD net/minecraft/server/management/ServerConfigurationManager FILE_OPS field_152615_c +FD net/minecraft/server/management/ServerConfigurationManager FILE_WHITELIST field_152616_d +FD net/minecraft/server/management/ServerConfigurationManager maxPlayers field_72405_c +FD net/minecraft/server/management/ServerConfigurationManager logger field_148546_d +FD net/minecraft/server/management/ServerConfigurationManager dateFormat field_72403_e +FD net/minecraft/server/management/ServerConfigurationManager mcServer field_72400_f +FD net/minecraft/server/management/ServerConfigurationManager playerEntityList field_72404_b +FD net/minecraft/server/management/ServerConfigurationManager uuidToPlayerMap field_177454_f +FD net/minecraft/server/management/ServerConfigurationManager bannedPlayers field_72401_g +FD net/minecraft/server/management/ServerConfigurationManager bannedIPs field_72413_h +FD net/minecraft/server/management/ServerConfigurationManager ops field_72414_i +FD net/minecraft/server/management/ServerConfigurationManager whiteListedPlayers field_72411_j +FD net/minecraft/server/management/ServerConfigurationManager playerStatFiles field_148547_k +FD net/minecraft/server/management/ServerConfigurationManager playerNBTManagerObj field_72412_k +FD net/minecraft/server/management/ServerConfigurationManager whiteListEnforced field_72409_l +FD net/minecraft/server/management/ServerConfigurationManager viewDistance field_72402_d +FD net/minecraft/server/management/ServerConfigurationManager gameType field_72410_m +FD net/minecraft/server/management/ServerConfigurationManager commandsAllowedForAll field_72407_n +FD net/minecraft/server/management/ServerConfigurationManager playerPingIndex field_72408_o +FD net/minecraft/server/management/ServerConfigurationManager$1 field_177697_a field_177697_a +FD net/minecraft/server/management/UserListOpsEntry permissionLevel field_152645_a +FD net/minecraft/server/management/UserListOpsEntry bypassesPlayerLimit field_183025_b +FD net/minecraft/server/management/UserListEntry value field_152642_a +FD net/minecraft/server/management/UserList logger field_152693_a +FD net/minecraft/server/management/UserList gson field_152694_b +FD net/minecraft/server/management/UserList saveFile field_152695_c +FD net/minecraft/server/management/UserList values field_152696_d +FD net/minecraft/server/management/UserList lanServer field_152697_e +FD net/minecraft/server/management/UserList saveFileFormat field_152698_f +FD net/minecraft/server/management/UserList$Serializer field_152752_a field_152752_a +FD net/minecraft/network/rcon/RConOutputStream byteArrayOutput field_72674_a +FD net/minecraft/network/rcon/RConOutputStream output field_72673_b +FD net/minecraft/network/rcon/RConUtils hexDigits field_72666_a +FD net/minecraft/network/rcon/RConConsoleSource instance field_70010_a +FD net/minecraft/network/rcon/RConConsoleSource buffer field_70009_b +FD net/minecraft/network/rcon/RConThreadBase running field_72619_a +FD net/minecraft/network/rcon/RConThreadBase server field_72617_b +FD net/minecraft/network/rcon/RConThreadBase threadName field_164003_c +FD net/minecraft/network/rcon/RConThreadBase rconThread field_72618_c +FD net/minecraft/network/rcon/RConThreadBase field_72615_d field_72615_d +FD net/minecraft/network/rcon/RConThreadBase socketList field_72616_e +FD net/minecraft/network/rcon/RConThreadBase serverSocketList field_72614_f +FD net/minecraft/network/rcon/RConThreadBase THREAD_ID field_164004_h +FD net/minecraft/network/rcon/RConThreadQuery lastAuthCheckTime field_72629_g +FD net/minecraft/network/rcon/RConThreadQuery queryPort field_72636_h +FD net/minecraft/network/rcon/RConThreadQuery serverPort field_72637_i +FD net/minecraft/network/rcon/RConThreadQuery maxPlayers field_72634_j +FD net/minecraft/network/rcon/RConThreadQuery serverMotd field_72635_k +FD net/minecraft/network/rcon/RConThreadQuery worldName field_72632_l +FD net/minecraft/network/rcon/RConThreadQuery querySocket field_72633_m +FD net/minecraft/network/rcon/RConThreadQuery buffer field_72630_n +FD net/minecraft/network/rcon/RConThreadQuery incomingPacket field_72631_o +FD net/minecraft/network/rcon/RConThreadQuery field_72644_p field_72644_p +FD net/minecraft/network/rcon/RConThreadQuery queryHostname field_72643_q +FD net/minecraft/network/rcon/RConThreadQuery serverHostname field_72642_r +FD net/minecraft/network/rcon/RConThreadQuery queryClients field_72641_s +FD net/minecraft/network/rcon/RConThreadQuery time field_72640_t +FD net/minecraft/network/rcon/RConThreadQuery output field_72639_u +FD net/minecraft/network/rcon/RConThreadQuery lastQueryResponseTime field_72638_v +FD net/minecraft/network/rcon/RConThreadQuery$Auth field_72600_a field_72600_a +FD net/minecraft/network/rcon/RConThreadQuery$Auth timestamp field_72598_b +FD net/minecraft/network/rcon/RConThreadQuery$Auth randomChallenge field_72599_c +FD net/minecraft/network/rcon/RConThreadQuery$Auth requestId field_72596_d +FD net/minecraft/network/rcon/RConThreadQuery$Auth challengeValue field_72597_e +FD net/minecraft/network/rcon/RConThreadQuery$Auth requestIdAsString field_72595_f +FD net/minecraft/network/rcon/RConThreadClient LOGGER field_164005_h +FD net/minecraft/network/rcon/RConThreadClient loggedIn field_72657_g +FD net/minecraft/network/rcon/RConThreadClient clientSocket field_72659_h +FD net/minecraft/network/rcon/RConThreadClient buffer field_72660_i +FD net/minecraft/network/rcon/RConThreadClient rconPassword field_72658_j +FD net/minecraft/network/rcon/RConThreadMain rconPort field_72647_g +FD net/minecraft/network/rcon/RConThreadMain serverPort field_72651_h +FD net/minecraft/network/rcon/RConThreadMain hostname field_72652_i +FD net/minecraft/network/rcon/RConThreadMain serverSocket field_72649_j +FD net/minecraft/network/rcon/RConThreadMain rconPassword field_72650_k +FD net/minecraft/network/rcon/RConThreadMain clientThreads field_72648_l +FD net/minecraft/stats/Achievement displayColumn field_75993_a +FD net/minecraft/stats/Achievement displayRow field_75991_b +FD net/minecraft/stats/Achievement parentAchievement field_75992_c +FD net/minecraft/stats/Achievement theItemStack field_75990_d +FD net/minecraft/stats/Achievement achievementDescription field_75996_k +FD net/minecraft/stats/Achievement statStringFormatter field_75994_l +FD net/minecraft/stats/Achievement isSpecial field_75995_m +FD net/minecraft/stats/AchievementList blazeRod field_76027_z +FD net/minecraft/stats/AchievementList potion field_76001_A +FD net/minecraft/stats/AchievementList theEnd field_76002_B +FD net/minecraft/stats/AchievementList theEnd2 field_76003_C +FD net/minecraft/stats/AchievementList enchantments field_75998_D +FD net/minecraft/stats/AchievementList overkill field_75999_E +FD net/minecraft/stats/AchievementList bookcase field_76000_F +FD net/minecraft/stats/AchievementList breedCow field_150962_H +FD net/minecraft/stats/AchievementList spawnWither field_150963_I +FD net/minecraft/stats/AchievementList killWither field_150964_J +FD net/minecraft/stats/AchievementList fullBeacon field_150965_K +FD net/minecraft/stats/AchievementList exploreAllBiomes field_150961_L +FD net/minecraft/stats/AchievementList overpowered field_180219_M +FD net/minecraft/stats/AchievementList minDisplayColumn field_76010_a +FD net/minecraft/stats/AchievementList minDisplayRow field_76008_b +FD net/minecraft/stats/AchievementList maxDisplayColumn field_76009_c +FD net/minecraft/stats/AchievementList maxDisplayRow field_76006_d +FD net/minecraft/stats/AchievementList achievementList field_76007_e +FD net/minecraft/stats/AchievementList openInventory field_76004_f +FD net/minecraft/stats/AchievementList mineWood field_76005_g +FD net/minecraft/stats/AchievementList buildWorkBench field_76017_h +FD net/minecraft/stats/AchievementList buildPickaxe field_76018_i +FD net/minecraft/stats/AchievementList buildFurnace field_76015_j +FD net/minecraft/stats/AchievementList acquireIron field_76016_k +FD net/minecraft/stats/AchievementList buildHoe field_76013_l +FD net/minecraft/stats/AchievementList makeBread field_76014_m +FD net/minecraft/stats/AchievementList bakeCake field_76011_n +FD net/minecraft/stats/AchievementList buildBetterPickaxe field_76012_o +FD net/minecraft/stats/AchievementList cookFish field_76026_p +FD net/minecraft/stats/AchievementList onARail field_76025_q +FD net/minecraft/stats/AchievementList buildSword field_76024_r +FD net/minecraft/stats/AchievementList killEnemy field_76023_s +FD net/minecraft/stats/AchievementList killCow field_76022_t +FD net/minecraft/stats/AchievementList flyPig field_76021_u +FD net/minecraft/stats/AchievementList snipeSkeleton field_76020_v +FD net/minecraft/stats/AchievementList diamonds field_76019_w +FD net/minecraft/stats/AchievementList diamondsToYou field_150966_x +FD net/minecraft/stats/AchievementList portal field_76029_x +FD net/minecraft/stats/AchievementList ghast field_76028_y +FD net/minecraft/stats/StatCrafting field_150960_a field_150960_a +FD net/minecraft/stats/StatisticsFile logger field_150889_b +FD net/minecraft/stats/StatisticsFile mcServer field_150890_c +FD net/minecraft/stats/StatisticsFile statsFile field_150887_d +FD net/minecraft/stats/StatisticsFile field_150888_e field_150888_e +FD net/minecraft/stats/StatisticsFile field_150885_f field_150885_f +FD net/minecraft/stats/StatisticsFile field_150886_g field_150886_g +FD net/minecraft/stats/StatBase statName field_75978_a +FD net/minecraft/stats/StatBase type field_75976_b +FD net/minecraft/stats/StatBase objectiveCriteria field_150957_c +FD net/minecraft/stats/StatBase field_150956_d field_150956_d +FD net/minecraft/stats/StatBase statId field_75975_e +FD net/minecraft/stats/StatBase isIndependent field_75972_f +FD net/minecraft/stats/StatBase simpleStatType field_75980_h +FD net/minecraft/stats/StatBase timeStatType field_75981_i +FD net/minecraft/stats/StatBase distanceStatType field_75979_j +FD net/minecraft/stats/StatBase field_111202_k field_111202_k +FD net/minecraft/stats/StatBase numberFormat field_75977_c +FD net/minecraft/stats/StatBase decimalFormat field_75974_d +FD net/minecraft/util/TupleIntJsonSerializable integerValue field_151192_a +FD net/minecraft/util/TupleIntJsonSerializable jsonSerializableValue field_151191_b +FD net/minecraft/stats/StatList animalsBredStat field_151186_x +FD net/minecraft/stats/StatList playerKillsStat field_75932_A +FD net/minecraft/stats/StatList fishCaughtStat field_75933_B +FD net/minecraft/stats/StatList junkFishedStat field_151183_A +FD net/minecraft/stats/StatList treasureFishedStat field_151184_B +FD net/minecraft/stats/StatList timesTalkedToVillagerStat field_180205_F +FD net/minecraft/stats/StatList timesTradedWithVillagerStat field_180206_G +FD net/minecraft/stats/StatList field_181724_H field_181724_H +FD net/minecraft/stats/StatList field_181725_I field_181725_I +FD net/minecraft/stats/StatList field_181726_J field_181726_J +FD net/minecraft/stats/StatList field_181727_K field_181727_K +FD net/minecraft/stats/StatList field_181728_L field_181728_L +FD net/minecraft/stats/StatList field_181729_M field_181729_M +FD net/minecraft/stats/StatList field_181730_N field_181730_N +FD net/minecraft/stats/StatList field_181731_O field_181731_O +FD net/minecraft/stats/StatList field_181732_P field_181732_P +FD net/minecraft/stats/StatList field_181733_Q field_181733_Q +FD net/minecraft/stats/StatList field_181734_R field_181734_R +FD net/minecraft/stats/StatList field_181735_S field_181735_S +FD net/minecraft/stats/StatList field_181736_T field_181736_T +FD net/minecraft/stats/StatList field_181737_U field_181737_U +FD net/minecraft/stats/StatList field_181738_V field_181738_V +FD net/minecraft/stats/StatList field_181739_W field_181739_W +FD net/minecraft/stats/StatList field_181740_X field_181740_X +FD net/minecraft/stats/StatList field_181741_Y field_181741_Y +FD net/minecraft/stats/StatList field_181742_Z field_181742_Z +FD net/minecraft/stats/StatList oneShotStats field_75942_a +FD net/minecraft/stats/StatList field_181723_aa field_181723_aa +FD net/minecraft/stats/StatList mineBlockStatArray field_75934_C +FD net/minecraft/stats/StatList objectCraftStats field_75928_D +FD net/minecraft/stats/StatList objectUseStats field_75929_E +FD net/minecraft/stats/StatList objectBreakStats field_75930_F +FD net/minecraft/stats/StatList allStats field_75940_b +FD net/minecraft/stats/StatList generalStats field_75941_c +FD net/minecraft/stats/StatList itemStats field_75938_d +FD net/minecraft/stats/StatList objectMineStats field_75939_e +FD net/minecraft/stats/StatList leaveGameStat field_75947_j +FD net/minecraft/stats/StatList minutesPlayedStat field_75948_k +FD net/minecraft/stats/StatList timeSinceDeathStat field_180209_h +FD net/minecraft/stats/StatList distanceWalkedStat field_75945_l +FD net/minecraft/stats/StatList distanceCrouchedStat field_180207_j +FD net/minecraft/stats/StatList distanceSprintedStat field_180208_k +FD net/minecraft/stats/StatList distanceSwumStat field_75946_m +FD net/minecraft/stats/StatList distanceFallenStat field_75943_n +FD net/minecraft/stats/StatList distanceClimbedStat field_75944_o +FD net/minecraft/stats/StatList distanceFlownStat field_75958_p +FD net/minecraft/stats/StatList distanceDoveStat field_75957_q +FD net/minecraft/stats/StatList distanceByMinecartStat field_75956_r +FD net/minecraft/stats/StatList distanceByBoatStat field_75955_s +FD net/minecraft/stats/StatList distanceByPigStat field_75954_t +FD net/minecraft/stats/StatList distanceByHorseStat field_151185_q +FD net/minecraft/stats/StatList jumpStat field_75953_u +FD net/minecraft/stats/StatList dropStat field_75952_v +FD net/minecraft/stats/StatList damageDealtStat field_75951_w +FD net/minecraft/stats/StatList damageTakenStat field_75961_x +FD net/minecraft/stats/StatList deathsStat field_75960_y +FD net/minecraft/stats/StatList mobKillsStat field_75959_z +FD net/minecraft/stats/StatFileWriter statsData field_150875_a +FD net/minecraft/util/JsonSerializableSet underlyingSet field_151004_a +FD net/minecraft/util/ClassInheritanceMultiMap field_181158_a field_181158_a +FD net/minecraft/util/ClassInheritanceMultiMap map field_180218_a +FD net/minecraft/util/ClassInheritanceMultiMap knownKeys field_180216_b +FD net/minecraft/util/ClassInheritanceMultiMap baseClass field_180217_c +FD net/minecraft/util/ClassInheritanceMultiMap values field_181745_e +FD net/minecraft/util/ClassInheritanceMultiMap$1 field_180211_a field_180211_a +FD net/minecraft/util/ClassInheritanceMultiMap$1 field_180210_b field_180210_b +FD net/minecraft/util/CryptManager LOGGER field_180198_a +FD net/minecraft/util/FrameTimer frames field_181752_a +FD net/minecraft/util/FrameTimer lastIndex field_181753_b +FD net/minecraft/util/FrameTimer counter field_181754_c +FD net/minecraft/util/FrameTimer index field_181755_d +FD net/minecraft/util/HttpUtil field_180193_a field_180193_a +FD net/minecraft/util/HttpUtil downloadThreadsStarted field_151228_a +FD net/minecraft/util/HttpUtil logger field_151227_b +FD net/minecraft/util/HttpUtil$1 field_151199_a field_151199_a +FD net/minecraft/util/HttpUtil$1 field_151197_b field_151197_b +FD net/minecraft/util/HttpUtil$1 field_151198_c field_151198_c +FD net/minecraft/util/HttpUtil$1 field_151195_d field_151195_d +FD net/minecraft/util/HttpUtil$1 field_151196_e field_151196_e +FD net/minecraft/util/HttpUtil$1 field_151194_g field_151194_g +FD net/minecraft/server/management/LowerStringMap internalMap field_76117_a +FD net/minecraft/util/IntegerCache CACHE field_181757_a +FD net/minecraft/util/IntHashMap slots field_76055_a +FD net/minecraft/util/IntHashMap count field_76053_b +FD net/minecraft/util/IntHashMap threshold field_76054_c +FD net/minecraft/util/IntHashMap growFactor field_76051_d +FD net/minecraft/util/IntHashMap$Entry hashEntry field_76035_a +FD net/minecraft/util/IntHashMap$Entry valueEntry field_76033_b +FD net/minecraft/util/IntHashMap$Entry nextEntry field_76034_c +FD net/minecraft/util/IntHashMap$Entry slotHash field_76032_d +FD net/minecraft/util/LazyLoadBase value field_179283_a +FD net/minecraft/util/LazyLoadBase isLoaded field_179282_b +FD net/minecraft/util/ThreadSafeBoundList field_152759_a field_152759_a +FD net/minecraft/util/ThreadSafeBoundList field_152760_b field_152760_b +FD net/minecraft/util/ThreadSafeBoundList field_152761_c field_152761_c +FD net/minecraft/util/ThreadSafeBoundList field_152762_d field_152762_d +FD net/minecraft/util/ThreadSafeBoundList field_152763_e field_152763_e +FD net/minecraft/util/LongHashMap hashArray field_76169_a +FD net/minecraft/util/LongHashMap numHashElements field_76167_b +FD net/minecraft/util/LongHashMap mask field_180201_c +FD net/minecraft/util/LongHashMap capacity field_76168_c +FD net/minecraft/util/LongHashMap percentUseable field_76165_d +FD net/minecraft/util/LongHashMap modCount field_76166_e +FD net/minecraft/util/LongHashMap$Entry key field_76150_a +FD net/minecraft/util/LongHashMap$Entry value field_76148_b +FD net/minecraft/util/LongHashMap$Entry nextEntry field_76149_c +FD net/minecraft/util/LongHashMap$Entry hash field_76147_d +FD net/minecraft/util/EnumTypeAdapterFactory$1 field_151231_a field_151231_a +FD net/minecraft/util/EnumTypeAdapterFactory$1 field_151230_b field_151230_b +FD net/minecraft/util/MathHelper SQRT_2 field_180189_a +FD net/minecraft/util/MathHelper SIN_TABLE field_76144_a +FD net/minecraft/util/MathHelper multiplyDeBruijnBitPosition field_151242_b +FD net/minecraft/util/MathHelper field_181163_d field_181163_d +FD net/minecraft/util/MathHelper field_181164_e field_181164_e +FD net/minecraft/util/MathHelper field_181165_f field_181165_f +FD net/minecraft/profiler/Profiler profilingEnabled field_76327_a +FD net/minecraft/profiler/Profiler logger field_151234_b +FD net/minecraft/profiler/Profiler sectionList field_76325_b +FD net/minecraft/profiler/Profiler timestampList field_76326_c +FD net/minecraft/profiler/Profiler profilingSection field_76323_d +FD net/minecraft/profiler/Profiler profilingMap field_76324_e +FD net/minecraft/profiler/Profiler$Result field_76332_a field_76332_a +FD net/minecraft/profiler/Profiler$Result field_76330_b field_76330_b +FD net/minecraft/profiler/Profiler$Result field_76331_c field_76331_c +FD net/minecraft/util/MouseFilter field_76336_a field_76336_a +FD net/minecraft/util/MouseFilter field_76334_b field_76334_b +FD net/minecraft/util/MouseFilter field_76335_c field_76335_c +FD net/minecraft/util/StringUtils patternControlCode field_76339_a +FD net/minecraft/util/WeightedRandom$Item itemWeight field_76292_a +FD net/minecraft/util/WeightedRandomChestContent theItemId field_76297_b +FD net/minecraft/util/WeightedRandomChestContent minStackSize field_76295_d +FD net/minecraft/util/WeightedRandomChestContent maxStackSize field_76296_e +FD net/minecraft/inventory/InventoryLargeChest name field_70479_a +FD net/minecraft/inventory/InventoryLargeChest upperChest field_70477_b +FD net/minecraft/inventory/InventoryLargeChest lowerChest field_70478_c +FD net/minecraft/inventory/InventoryHelper RANDOM field_180177_a +FD net/minecraft/world/EnumDifficulty PEACEFUL PEACEFUL +FD net/minecraft/world/EnumDifficulty EASY EASY +FD net/minecraft/world/EnumDifficulty NORMAL NORMAL +FD net/minecraft/world/EnumDifficulty HARD HARD +FD net/minecraft/world/EnumDifficulty difficultyEnums field_151530_e +FD net/minecraft/world/EnumDifficulty difficultyId field_151527_f +FD net/minecraft/world/EnumDifficulty difficultyResourceKey field_151528_g +FD net/minecraft/world/EnumDifficulty $VALUES $VALUES +FD net/minecraft/world/DifficultyInstance worldDifficulty field_180172_a +FD net/minecraft/world/DifficultyInstance additionalDifficulty field_180171_b +FD net/minecraft/world/LockCode EMPTY_CODE field_180162_a +FD net/minecraft/world/LockCode lock field_180161_b +FD net/minecraft/inventory/InventoryBasic inventoryTitle field_70483_a +FD net/minecraft/inventory/InventoryBasic slotsCount field_70481_b +FD net/minecraft/inventory/InventoryBasic inventoryContents field_70482_c +FD net/minecraft/inventory/InventoryBasic changeListeners field_70480_d +FD net/minecraft/inventory/InventoryBasic hasCustomName field_94051_e +FD net/minecraft/profiler/PlayerUsageSnooper snooperStats field_152773_a +FD net/minecraft/profiler/PlayerUsageSnooper clientStats field_152774_b +FD net/minecraft/profiler/PlayerUsageSnooper uniqueID field_76480_b +FD net/minecraft/profiler/PlayerUsageSnooper serverUrl field_76481_c +FD net/minecraft/profiler/PlayerUsageSnooper playerStatsCollector field_76478_d +FD net/minecraft/profiler/PlayerUsageSnooper threadTrigger field_76479_e +FD net/minecraft/profiler/PlayerUsageSnooper syncLock field_76476_f +FD net/minecraft/profiler/PlayerUsageSnooper minecraftStartTimeMilis field_98224_g +FD net/minecraft/profiler/PlayerUsageSnooper isRunning field_76477_g +FD net/minecraft/profiler/PlayerUsageSnooper selfCounter field_76483_h +FD net/minecraft/profiler/PlayerUsageSnooper$1 field_76344_a field_76344_a +FD net/minecraft/util/CombatEntry damageSrc field_94569_a +FD net/minecraft/util/CombatEntry field_94567_b field_94567_b +FD net/minecraft/util/CombatEntry damage field_94568_c +FD net/minecraft/util/CombatEntry health field_94565_d +FD net/minecraft/util/CombatEntry field_94566_e field_94566_e +FD net/minecraft/util/CombatEntry fallDistance field_94564_f +FD net/minecraft/util/CombatTracker combatEntries field_94556_a +FD net/minecraft/util/CombatTracker fighter field_94554_b +FD net/minecraft/util/CombatTracker field_94555_c field_94555_c +FD net/minecraft/util/CombatTracker field_152775_d field_152775_d +FD net/minecraft/util/CombatTracker field_152776_e field_152776_e +FD net/minecraft/util/CombatTracker field_94552_d field_94552_d +FD net/minecraft/util/CombatTracker field_94553_e field_94553_e +FD net/minecraft/util/CombatTracker field_94551_f field_94551_f +FD net/minecraft/util/DamageSource inFire field_76372_a +FD net/minecraft/util/DamageSource lightningBolt field_180137_b +FD net/minecraft/util/DamageSource onFire field_76370_b +FD net/minecraft/util/DamageSource lava field_76371_c +FD net/minecraft/util/DamageSource inWall field_76368_d +FD net/minecraft/util/DamageSource drown field_76369_e +FD net/minecraft/util/DamageSource starve field_76366_f +FD net/minecraft/util/DamageSource cactus field_76367_g +FD net/minecraft/util/DamageSource fall field_76379_h +FD net/minecraft/util/DamageSource outOfWorld field_76380_i +FD net/minecraft/util/DamageSource generic field_76377_j +FD net/minecraft/util/DamageSource magic field_76376_m +FD net/minecraft/util/DamageSource wither field_82727_n +FD net/minecraft/util/DamageSource anvil field_82728_o +FD net/minecraft/util/DamageSource fallingBlock field_82729_p +FD net/minecraft/util/DamageSource damageType field_76373_n +FD net/minecraft/util/DamageSource isUnblockable field_76374_o +FD net/minecraft/util/DamageSource isDamageAllowedInCreativeMode field_76385_p +FD net/minecraft/util/DamageSource damageIsAbsolute field_151520_r +FD net/minecraft/util/DamageSource hungerDamage field_76384_q +FD net/minecraft/util/DamageSource fireDamage field_76383_r +FD net/minecraft/util/DamageSource projectile field_76382_s +FD net/minecraft/util/DamageSource difficultyScaled field_76381_t +FD net/minecraft/util/DamageSource magicDamage field_82730_x +FD net/minecraft/util/DamageSource explosion field_76378_k +FD net/minecraft/util/EntityDamageSource damageSourceEntity field_76386_o +FD net/minecraft/util/EntityDamageSource isThornsDamage field_180140_r +FD net/minecraft/util/EntityDamageSourceIndirect indirectEntity field_76387_p +FD net/minecraft/potion/Potion field_180147_A field_180147_A +FD net/minecraft/potion/Potion field_180148_B field_180148_B +FD net/minecraft/potion/Potion field_180149_C field_180149_C +FD net/minecraft/potion/Potion field_180143_D field_180143_D +FD net/minecraft/potion/Potion field_180144_E field_180144_E +FD net/minecraft/potion/Potion field_180145_F field_180145_F +FD net/minecraft/potion/Potion field_180146_G field_180146_G +FD net/minecraft/potion/Potion id field_76415_H +FD net/minecraft/potion/Potion field_180150_I field_180150_I +FD net/minecraft/potion/Potion attributeModifierMap field_111188_I +FD net/minecraft/potion/Potion isBadEffect field_76418_K +FD net/minecraft/potion/Potion liquidColor field_76414_N +FD net/minecraft/potion/Potion name field_76416_I +FD net/minecraft/potion/Potion statusIconIndex field_76417_J +FD net/minecraft/potion/Potion effectiveness field_76412_L +FD net/minecraft/potion/Potion usable field_76413_M +FD net/minecraft/potion/Potion potionTypes field_76425_a +FD net/minecraft/potion/Potion field_180151_b field_180151_b +FD net/minecraft/potion/Potion moveSpeed field_76424_c +FD net/minecraft/potion/Potion moveSlowdown field_76421_d +FD net/minecraft/potion/Potion digSpeed field_76422_e +FD net/minecraft/potion/Potion digSlowdown field_76419_f +FD net/minecraft/potion/Potion damageBoost field_76420_g +FD net/minecraft/potion/Potion heal field_76432_h +FD net/minecraft/potion/Potion harm field_76433_i +FD net/minecraft/potion/Potion jump field_76430_j +FD net/minecraft/potion/Potion confusion field_76431_k +FD net/minecraft/potion/Potion regeneration field_76428_l +FD net/minecraft/potion/Potion resistance field_76429_m +FD net/minecraft/potion/Potion fireResistance field_76426_n +FD net/minecraft/potion/Potion waterBreathing field_76427_o +FD net/minecraft/potion/Potion invisibility field_76441_p +FD net/minecraft/potion/Potion blindness field_76440_q +FD net/minecraft/potion/Potion nightVision field_76439_r +FD net/minecraft/potion/Potion hunger field_76438_s +FD net/minecraft/potion/Potion weakness field_76437_t +FD net/minecraft/potion/Potion poison field_76436_u +FD net/minecraft/potion/Potion wither field_82731_v +FD net/minecraft/potion/Potion healthBoost field_180152_w +FD net/minecraft/potion/Potion absorption field_76444_x +FD net/minecraft/potion/Potion saturation field_76443_y +FD net/minecraft/potion/Potion field_180153_z field_180153_z +FD net/minecraft/potion/PotionEffect LOGGER field_180155_a +FD net/minecraft/potion/PotionEffect potionID field_76462_a +FD net/minecraft/potion/PotionEffect duration field_76460_b +FD net/minecraft/potion/PotionEffect amplifier field_76461_c +FD net/minecraft/potion/PotionEffect isSplashPotion field_82723_d +FD net/minecraft/potion/PotionEffect isAmbient field_82724_e +FD net/minecraft/potion/PotionEffect isPotionDurationMax field_100013_f +FD net/minecraft/potion/PotionEffect showParticles field_180156_h +FD net/minecraft/entity/EntityAgeable growingAge field_175504_a +FD net/minecraft/entity/EntityAgeable field_175502_b field_175502_b +FD net/minecraft/entity/EntityAgeable ageWidth field_98056_d +FD net/minecraft/entity/EntityAgeable ageHeight field_98057_e +FD net/minecraft/entity/EntityAgeable field_175503_c field_175503_c +FD net/minecraft/entity/Entity prevRotationYaw field_70126_B +FD net/minecraft/entity/Entity prevRotationPitch field_70127_C +FD net/minecraft/entity/Entity onGround field_70122_E +FD net/minecraft/entity/Entity isCollidedHorizontally field_70123_F +FD net/minecraft/entity/Entity isCollidedVertically field_70124_G +FD net/minecraft/entity/Entity isCollided field_70132_H +FD net/minecraft/entity/Entity velocityChanged field_70133_I +FD net/minecraft/entity/Entity isInWeb field_70134_J +FD net/minecraft/entity/Entity isDead field_70128_L +FD net/minecraft/entity/Entity width field_70130_N +FD net/minecraft/entity/Entity height field_70131_O +FD net/minecraft/entity/Entity prevDistanceWalkedModified field_70141_P +FD net/minecraft/entity/Entity distanceWalkedModified field_70140_Q +FD net/minecraft/entity/Entity distanceWalkedOnStepModified field_82151_R +FD net/minecraft/entity/Entity fallDistance field_70143_R +FD net/minecraft/entity/Entity lastTickPosX field_70142_S +FD net/minecraft/entity/Entity lastTickPosY field_70137_T +FD net/minecraft/entity/Entity lastTickPosZ field_70136_U +FD net/minecraft/entity/Entity stepHeight field_70138_W +FD net/minecraft/entity/Entity noClip field_70145_X +FD net/minecraft/entity/Entity entityCollisionReduction field_70144_Y +FD net/minecraft/entity/Entity rand field_70146_Z +FD net/minecraft/entity/Entity ticksExisted field_70173_aa +FD net/minecraft/entity/Entity fireResistance field_70174_ab +FD net/minecraft/entity/Entity inWater field_70171_ac +FD net/minecraft/entity/Entity hurtResistantTime field_70172_ad +FD net/minecraft/entity/Entity ZERO_AABB field_174836_a +FD net/minecraft/entity/Entity firstUpdate field_70148_d +FD net/minecraft/entity/Entity isImmuneToFire field_70178_ae +FD net/minecraft/entity/Entity dataWatcher field_70180_af +FD net/minecraft/entity/Entity addedToChunk field_70175_ag +FD net/minecraft/entity/Entity chunkCoordX field_70176_ah +FD net/minecraft/entity/Entity chunkCoordY field_70162_ai +FD net/minecraft/entity/Entity chunkCoordZ field_70164_aj +FD net/minecraft/entity/Entity ignoreFrustumCheck field_70158_ak +FD net/minecraft/entity/Entity isAirBorne field_70160_al +FD net/minecraft/entity/Entity timeUntilPortal field_71088_bW +FD net/minecraft/entity/Entity inPortal field_71087_bX +FD net/minecraft/entity/Entity portalCounter field_82153_h +FD net/minecraft/entity/Entity dimension field_71093_bK +FD net/minecraft/entity/Entity lastPortalPos field_181016_an +FD net/minecraft/entity/Entity lastPortalVec field_181017_ao +FD net/minecraft/entity/Entity teleportDirection field_181018_ap +FD net/minecraft/entity/Entity entityUniqueID field_96093_i +FD net/minecraft/entity/Entity entityRiderPitchDelta field_70149_e +FD net/minecraft/entity/Entity entityRiderYawDelta field_70147_f +FD net/minecraft/entity/Entity invulnerable field_83001_bt +FD net/minecraft/entity/Entity cmdResultStats field_174837_as +FD net/minecraft/entity/Entity nextEntityID field_70152_a +FD net/minecraft/entity/Entity serverPosX field_70118_ct +FD net/minecraft/entity/Entity serverPosY field_70117_cu +FD net/minecraft/entity/Entity serverPosZ field_70116_cv +FD net/minecraft/entity/Entity entityId field_145783_c +FD net/minecraft/entity/Entity boundingBox field_70121_D +FD net/minecraft/entity/Entity isOutsideBorder field_174835_g +FD net/minecraft/entity/Entity nextStepDistance field_70150_b +FD net/minecraft/entity/Entity fire field_70151_c +FD net/minecraft/entity/Entity renderDistanceWeight field_70155_l +FD net/minecraft/entity/Entity preventEntitySpawning field_70156_m +FD net/minecraft/entity/Entity riddenByEntity field_70153_n +FD net/minecraft/entity/Entity ridingEntity field_70154_o +FD net/minecraft/entity/Entity forceSpawn field_98038_p +FD net/minecraft/entity/Entity worldObj field_70170_p +FD net/minecraft/entity/Entity prevPosX field_70169_q +FD net/minecraft/entity/Entity prevPosY field_70167_r +FD net/minecraft/entity/Entity prevPosZ field_70166_s +FD net/minecraft/entity/Entity posX field_70165_t +FD net/minecraft/entity/Entity posY field_70163_u +FD net/minecraft/entity/Entity posZ field_70161_v +FD net/minecraft/entity/Entity motionX field_70159_w +FD net/minecraft/entity/Entity motionY field_70181_x +FD net/minecraft/entity/Entity motionZ field_70179_y +FD net/minecraft/entity/Entity rotationYaw field_70177_z +FD net/minecraft/entity/Entity rotationPitch field_70125_A +FD net/minecraft/entity/Entity$1 field_85155_a field_85155_a +FD net/minecraft/entity/Entity$2 field_96564_a field_96564_a +FD net/minecraft/entity/Entity$3 field_180119_a field_180119_a +FD net/minecraft/entity/Entity$4 field_180117_a field_180117_a +FD net/minecraft/entity/EntityList entityEggs field_75627_a +FD net/minecraft/entity/EntityList logger field_151516_b +FD net/minecraft/entity/EntityList stringToClassMapping field_75625_b +FD net/minecraft/entity/EntityList classToStringMapping field_75626_c +FD net/minecraft/entity/EntityList idToClassMapping field_75623_d +FD net/minecraft/entity/EntityList classToIDMapping field_75624_e +FD net/minecraft/entity/EntityList stringToIDMapping field_180126_g +FD net/minecraft/entity/EntityList$EntityEggInfo spawnedID field_75613_a +FD net/minecraft/entity/EntityList$EntityEggInfo primaryColor field_75611_b +FD net/minecraft/entity/EntityList$EntityEggInfo secondaryColor field_75612_c +FD net/minecraft/entity/EntityList$EntityEggInfo field_151512_d field_151512_d +FD net/minecraft/entity/EntityList$EntityEggInfo field_151513_e field_151513_e +FD net/minecraft/util/EntitySelectors selectAnything field_94557_a +FD net/minecraft/util/EntitySelectors IS_STANDALONE field_152785_b +FD net/minecraft/util/EntitySelectors selectInventories field_96566_b +FD net/minecraft/util/EntitySelectors NOT_SPECTATING field_180132_d +FD net/minecraft/util/EntitySelectors$ArmoredMob armor field_96567_c +FD net/minecraft/entity/item/EntityXPOrb xpColor field_70533_a +FD net/minecraft/entity/item/EntityXPOrb xpOrbAge field_70531_b +FD net/minecraft/entity/item/EntityXPOrb delayBeforeCanPickup field_70532_c +FD net/minecraft/entity/item/EntityXPOrb xpOrbHealth field_70529_d +FD net/minecraft/entity/item/EntityXPOrb xpValue field_70530_e +FD net/minecraft/entity/item/EntityXPOrb closestPlayer field_80001_f +FD net/minecraft/entity/item/EntityXPOrb xpTargetColor field_80002_g +FD net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifierUUID field_110156_b +FD net/minecraft/entity/EntityLivingBase prevLimbSwingAmount field_70722_aY +FD net/minecraft/entity/EntityLivingBase limbSwingAmount field_70721_aZ +FD net/minecraft/entity/EntityLivingBase limbSwing field_70754_ba +FD net/minecraft/entity/EntityLivingBase maxHurtResistantTime field_70771_an +FD net/minecraft/entity/EntityLivingBase prevCameraPitch field_70727_aS +FD net/minecraft/entity/EntityLivingBase cameraPitch field_70726_aT +FD net/minecraft/entity/EntityLivingBase randomUnused2 field_70769_ao +FD net/minecraft/entity/EntityLivingBase randomUnused1 field_70770_ap +FD net/minecraft/entity/EntityLivingBase renderYawOffset field_70761_aq +FD net/minecraft/entity/EntityLivingBase prevRenderYawOffset field_70760_ar +FD net/minecraft/entity/EntityLivingBase rotationYawHead field_70759_as +FD net/minecraft/entity/EntityLivingBase prevRotationYawHead field_70758_at +FD net/minecraft/entity/EntityLivingBase jumpMovementFactor field_70747_aH +FD net/minecraft/entity/EntityLivingBase attackingPlayer field_70717_bb +FD net/minecraft/entity/EntityLivingBase recentlyHit field_70718_bc +FD net/minecraft/entity/EntityLivingBase dead field_70729_aU +FD net/minecraft/entity/EntityLivingBase entityAge field_70708_bq +FD net/minecraft/entity/EntityLivingBase prevOnGroundSpeedFactor field_70768_au +FD net/minecraft/entity/EntityLivingBase onGroundSpeedFactor field_110154_aX +FD net/minecraft/entity/EntityLivingBase movedDistance field_70764_aw +FD net/minecraft/entity/EntityLivingBase prevMovedDistance field_70763_ax +FD net/minecraft/entity/EntityLivingBase unused180 field_70741_aB +FD net/minecraft/entity/EntityLivingBase scoreValue field_70744_aE +FD net/minecraft/entity/EntityLivingBase lastDamage field_110153_bc +FD net/minecraft/entity/EntityLivingBase isJumping field_70703_bu +FD net/minecraft/entity/EntityLivingBase moveStrafing field_70702_br +FD net/minecraft/entity/EntityLivingBase isSwingInProgress field_82175_bq +FD net/minecraft/entity/EntityLivingBase swingProgressInt field_110158_av +FD net/minecraft/entity/EntityLivingBase arrowHitTimer field_70720_be +FD net/minecraft/entity/EntityLivingBase hurtTime field_70737_aN +FD net/minecraft/entity/EntityLivingBase maxHurtTime field_70738_aO +FD net/minecraft/entity/EntityLivingBase attackedAtYaw field_70739_aP +FD net/minecraft/entity/EntityLivingBase deathTime field_70725_aQ +FD net/minecraft/entity/EntityLivingBase prevSwingProgress field_70732_aI +FD net/minecraft/entity/EntityLivingBase swingProgress field_70733_aJ +FD net/minecraft/entity/EntityLivingBase sprintingSpeedBoostModifier field_110157_c +FD net/minecraft/entity/EntityLivingBase moveForward field_70701_bs +FD net/minecraft/entity/EntityLivingBase randomYawVelocity field_70704_bt +FD net/minecraft/entity/EntityLivingBase newPosRotationIncrements field_70716_bi +FD net/minecraft/entity/EntityLivingBase newPosX field_70709_bj +FD net/minecraft/entity/EntityLivingBase newPosY field_70710_bk +FD net/minecraft/entity/EntityLivingBase newPosZ field_110152_bk +FD net/minecraft/entity/EntityLivingBase newRotationYaw field_70712_bm +FD net/minecraft/entity/EntityLivingBase newRotationPitch field_70705_bn +FD net/minecraft/entity/EntityLivingBase entityLivingToAttack field_70755_b +FD net/minecraft/entity/EntityLivingBase revengeTimer field_70756_c +FD net/minecraft/entity/EntityLivingBase lastAttacker field_110150_bn +FD net/minecraft/entity/EntityLivingBase lastAttackerTime field_142016_bo +FD net/minecraft/entity/EntityLivingBase landMovementFactor field_70746_aG +FD net/minecraft/entity/EntityLivingBase jumpTicks field_70773_bE +FD net/minecraft/entity/EntityLivingBase absorptionAmount field_110151_bq +FD net/minecraft/entity/EntityLivingBase attributeMap field_110155_d +FD net/minecraft/entity/EntityLivingBase _combatTracker field_94063_bt +FD net/minecraft/entity/EntityLivingBase activePotionsMap field_70713_bf +FD net/minecraft/entity/EntityLivingBase previousEquipment field_82180_bT +FD net/minecraft/entity/EntityLivingBase potionsNeedUpdate field_70752_e +FD net/minecraft/entity/EntityLivingBase$1 field_181170_a field_181170_a +FD net/minecraft/entity/EntityLiving lookHelper field_70749_g +FD net/minecraft/entity/EntityLiving livingSoundTime field_70757_a +FD net/minecraft/entity/EntityLiving bodyHelper field_70762_j +FD net/minecraft/entity/EntityLiving experienceValue field_70728_aV +FD net/minecraft/entity/EntityLiving targetTasks field_70715_bh +FD net/minecraft/entity/EntityLiving equipmentDropChances field_82174_bp +FD net/minecraft/entity/EntityLiving senses field_70723_bA +FD net/minecraft/entity/EntityLiving equipment field_82182_bS +FD net/minecraft/entity/EntityLiving canPickUpLoot field_82172_bs +FD net/minecraft/entity/EntityLiving persistenceRequired field_82179_bU +FD net/minecraft/entity/EntityLiving isLeashed field_110169_bv +FD net/minecraft/entity/EntityLiving leashedToEntity field_110168_bw +FD net/minecraft/entity/EntityLiving leashNBTTag field_110170_bx +FD net/minecraft/entity/EntityLiving attackTarget field_70696_bz +FD net/minecraft/entity/EntityLiving moveHelper field_70765_h +FD net/minecraft/entity/EntityLiving jumpHelper field_70767_i +FD net/minecraft/entity/EntityLiving navigator field_70699_by +FD net/minecraft/entity/EntityLiving tasks field_70714_bg +FD net/minecraft/entity/EntityLiving$SpawnPlacementType ON_GROUND ON_GROUND +FD net/minecraft/entity/EntityLiving$SpawnPlacementType IN_AIR IN_AIR +FD net/minecraft/entity/EntityLiving$SpawnPlacementType IN_WATER IN_WATER +FD net/minecraft/entity/EntityLiving$SpawnPlacementType $VALUES $VALUES +FD net/minecraft/entity/EnumCreatureType MONSTER MONSTER +FD net/minecraft/entity/EnumCreatureType CREATURE CREATURE +FD net/minecraft/entity/EnumCreatureType AMBIENT AMBIENT +FD net/minecraft/entity/EnumCreatureType WATER_CREATURE WATER_CREATURE +FD net/minecraft/entity/EnumCreatureType creatureClass field_75605_d +FD net/minecraft/entity/EnumCreatureType maxNumberOfCreature field_75606_e +FD net/minecraft/entity/EnumCreatureType creatureMaterial field_75603_f +FD net/minecraft/entity/EnumCreatureType isPeacefulCreature field_75604_g +FD net/minecraft/entity/EnumCreatureType isAnimal field_82707_i +FD net/minecraft/entity/EnumCreatureType $VALUES $VALUES +FD net/minecraft/entity/EntitySpawnPlacementRegistry ENTITY_PLACEMENTS field_180110_a +FD net/minecraft/entity/EnumCreatureAttribute UNDEFINED UNDEFINED +FD net/minecraft/entity/EnumCreatureAttribute UNDEAD UNDEAD +FD net/minecraft/entity/EnumCreatureAttribute ARTHROPOD ARTHROPOD +FD net/minecraft/entity/EnumCreatureAttribute $VALUES $VALUES +FD net/minecraft/entity/EntityCreature homePosition field_70775_bC +FD net/minecraft/entity/EntityCreature maximumHomeDistance field_70772_bD +FD net/minecraft/entity/EntityCreature FLEEING_SPEED_MODIFIER_UUID field_110179_h +FD net/minecraft/entity/EntityCreature FLEEING_SPEED_MODIFIER field_110181_i +FD net/minecraft/entity/EntityCreature isMovementAITaskSet field_110180_bt +FD net/minecraft/entity/EntityCreature aiBase field_110178_bs +FD net/minecraft/entity/DataWatcher owner field_151511_a +FD net/minecraft/entity/DataWatcher isBlank field_92086_a +FD net/minecraft/entity/DataWatcher dataTypes field_75697_a +FD net/minecraft/entity/DataWatcher watchedObjects field_75695_b +FD net/minecraft/entity/DataWatcher objectChanged field_75696_c +FD net/minecraft/entity/DataWatcher lock field_75694_d +FD net/minecraft/entity/DataWatcher$WatchableObject objectType field_75678_a +FD net/minecraft/entity/DataWatcher$WatchableObject dataValueId field_75676_b +FD net/minecraft/entity/DataWatcher$WatchableObject watchedObject field_75677_c +FD net/minecraft/entity/DataWatcher$WatchableObject watched field_75675_d +FD net/minecraft/entity/passive/EntityTameable aiSit field_70911_d +FD net/minecraft/entity/ai/attributes/AttributeModifier amount field_111174_a +FD net/minecraft/entity/ai/attributes/AttributeModifier operation field_111172_b +FD net/minecraft/entity/ai/attributes/AttributeModifier name field_111173_c +FD net/minecraft/entity/ai/attributes/AttributeModifier id field_111170_d +FD net/minecraft/entity/ai/attributes/AttributeModifier isSaved field_111171_e +FD net/minecraft/entity/ai/attributes/BaseAttribute field_180373_a field_180373_a +FD net/minecraft/entity/ai/attributes/BaseAttribute unlocalizedName field_111115_a +FD net/minecraft/entity/ai/attributes/BaseAttribute defaultValue field_111113_b +FD net/minecraft/entity/ai/attributes/BaseAttribute shouldWatch field_111114_c +FD net/minecraft/entity/ai/attributes/BaseAttributeMap attributes field_111154_a +FD net/minecraft/entity/ai/attributes/BaseAttributeMap attributesByName field_111153_b +FD net/minecraft/entity/ai/attributes/BaseAttributeMap field_180377_c field_180377_c +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance attributeMap field_111138_a +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance genericAttribute field_111136_b +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByOperation field_111137_c +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByName field_111134_d +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance mapByUUID field_111135_e +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance baseValue field_111132_f +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance needsUpdate field_111133_g +FD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance cachedValue field_111139_h +FD net/minecraft/entity/ai/attributes/ServersideAttributeMap descriptionToAttributeInstanceMap field_111163_c +FD net/minecraft/entity/ai/attributes/ServersideAttributeMap attributeInstanceSet field_111162_d +FD net/minecraft/entity/ai/attributes/RangedAttribute minimumValue field_111120_a +FD net/minecraft/entity/ai/attributes/RangedAttribute maximumValue field_111118_b +FD net/minecraft/entity/ai/attributes/RangedAttribute description field_111119_c +FD net/minecraft/entity/EntityBodyHelper theLiving field_75668_a +FD net/minecraft/entity/EntityBodyHelper rotationTickCounter field_75666_b +FD net/minecraft/entity/EntityBodyHelper prevRenderYawHead field_75667_c +FD net/minecraft/entity/ai/EntityJumpHelper isJumping field_75662_b +FD net/minecraft/entity/ai/EntityJumpHelper entity field_75663_a +FD net/minecraft/entity/ai/EntityLookHelper entity field_75659_a +FD net/minecraft/entity/ai/EntityLookHelper deltaLookYaw field_75657_b +FD net/minecraft/entity/ai/EntityLookHelper deltaLookPitch field_75658_c +FD net/minecraft/entity/ai/EntityLookHelper isLooking field_75655_d +FD net/minecraft/entity/ai/EntityLookHelper posX field_75656_e +FD net/minecraft/entity/ai/EntityLookHelper posY field_75653_f +FD net/minecraft/entity/ai/EntityLookHelper posZ field_75654_g +FD net/minecraft/entity/ai/EntityMoveHelper entity field_75648_a +FD net/minecraft/entity/ai/EntityMoveHelper posX field_75646_b +FD net/minecraft/entity/ai/EntityMoveHelper posY field_75647_c +FD net/minecraft/entity/ai/EntityMoveHelper posZ field_75644_d +FD net/minecraft/entity/ai/EntityMoveHelper speed field_75645_e +FD net/minecraft/entity/ai/EntityMoveHelper update field_75643_f +FD net/minecraft/entity/ai/EntityAIAvoidEntity theEntity field_75380_a +FD net/minecraft/entity/ai/EntityAIAvoidEntity closestLivingEntity field_75376_d +FD net/minecraft/entity/ai/EntityAIAvoidEntity canBeSeenSelector field_179509_a +FD net/minecraft/entity/ai/EntityAIAvoidEntity farSpeed field_75378_b +FD net/minecraft/entity/ai/EntityAIAvoidEntity nearSpeed field_75379_c +FD net/minecraft/entity/ai/EntityAIAvoidEntity avoidDistance field_179508_f +FD net/minecraft/entity/ai/EntityAIAvoidEntity entityPathEntity field_75374_f +FD net/minecraft/entity/ai/EntityAIAvoidEntity entityPathNavigate field_75375_g +FD net/minecraft/entity/ai/EntityAIAvoidEntity classToAvoid field_181064_i +FD net/minecraft/entity/ai/EntityAIAvoidEntity avoidTargetSelector field_179510_i +FD net/minecraft/entity/ai/EntityAIAvoidEntity$1 field_98219_c field_98219_c +FD net/minecraft/entity/ai/EntityAIBeg theWolf field_75387_a +FD net/minecraft/entity/ai/EntityAIBeg thePlayer field_75385_b +FD net/minecraft/entity/ai/EntityAIBeg worldObject field_75386_c +FD net/minecraft/entity/ai/EntityAIBeg minPlayerDistance field_75383_d +FD net/minecraft/entity/ai/EntityAIBeg timeoutCounter field_75384_e +FD net/minecraft/entity/ai/EntityAIBreakDoor breakingTime field_75359_i +FD net/minecraft/entity/ai/EntityAIBreakDoor previousBreakProgress field_75358_j +FD net/minecraft/entity/ai/EntityAIMate theWorld field_75394_a +FD net/minecraft/entity/ai/EntityAIMate spawnBabyDelay field_75392_b +FD net/minecraft/entity/ai/EntityAIMate moveSpeed field_75393_c +FD net/minecraft/entity/ai/EntityAIMate theAnimal field_75390_d +FD net/minecraft/entity/ai/EntityAIMate targetMate field_75391_e +FD net/minecraft/entity/ai/EntityAIControlledByPlayer thisEntity field_82640_a +FD net/minecraft/entity/ai/EntityAIControlledByPlayer maxSpeed field_82638_b +FD net/minecraft/entity/ai/EntityAIControlledByPlayer currentSpeed field_82639_c +FD net/minecraft/entity/ai/EntityAIControlledByPlayer speedBoosted field_82636_d +FD net/minecraft/entity/ai/EntityAIControlledByPlayer speedBoostTime field_82637_e +FD net/minecraft/entity/ai/EntityAIControlledByPlayer maxSpeedBoostTime field_82635_f +FD net/minecraft/entity/ai/EntityAIDoorInteract theEntity field_75356_a +FD net/minecraft/entity/ai/EntityAIDoorInteract doorPosition field_179507_b +FD net/minecraft/entity/ai/EntityAIDoorInteract doorBlock field_151504_e +FD net/minecraft/entity/ai/EntityAIDoorInteract hasStoppedDoorInteraction field_75350_f +FD net/minecraft/entity/ai/EntityAIDoorInteract entityPositionX field_75351_g +FD net/minecraft/entity/ai/EntityAIDoorInteract entityPositionZ field_75357_h +FD net/minecraft/entity/ai/EntityAIEatGrass eatingGrassTimer field_151502_a +FD net/minecraft/entity/ai/EntityAIEatGrass field_179505_b field_179505_b +FD net/minecraft/entity/ai/EntityAIEatGrass grassEaterEntity field_151500_b +FD net/minecraft/entity/ai/EntityAIEatGrass entityWorld field_151501_c +FD net/minecraft/entity/ai/EntityAIFleeSun theCreature field_75372_a +FD net/minecraft/entity/ai/EntityAIFleeSun shelterX field_75370_b +FD net/minecraft/entity/ai/EntityAIFleeSun shelterY field_75371_c +FD net/minecraft/entity/ai/EntityAIFleeSun shelterZ field_75368_d +FD net/minecraft/entity/ai/EntityAIFleeSun movementSpeed field_75369_e +FD net/minecraft/entity/ai/EntityAIFleeSun theWorld field_75367_f +FD net/minecraft/entity/ai/EntityAISwimming theEntity field_75373_a +FD net/minecraft/entity/ai/EntityAIFollowOwner theWorld field_75342_a +FD net/minecraft/entity/ai/EntityAIFollowOwner maxDist field_75340_b +FD net/minecraft/entity/ai/EntityAIFollowOwner minDist field_75341_c +FD net/minecraft/entity/ai/EntityAIFollowOwner thePet field_75338_d +FD net/minecraft/entity/ai/EntityAIFollowOwner theOwner field_75339_e +FD net/minecraft/entity/ai/EntityAIFollowOwner followSpeed field_75336_f +FD net/minecraft/entity/ai/EntityAIFollowOwner petPathfinder field_75337_g +FD net/minecraft/entity/ai/EntityAIFollowOwner field_75343_h field_75343_h +FD net/minecraft/entity/ai/EntityAIFollowOwner field_75344_i field_75344_i +FD net/minecraft/entity/ai/EntityAIFollowParent childAnimal field_75348_a +FD net/minecraft/entity/ai/EntityAIFollowParent parentAnimal field_75346_b +FD net/minecraft/entity/ai/EntityAIFollowParent moveSpeed field_75347_c +FD net/minecraft/entity/ai/EntityAIFollowParent delayCounter field_75345_d +FD net/minecraft/entity/ai/EntityAIBase mutexBits field_75254_a +FD net/minecraft/entity/ai/EntityAITasks logger field_151506_a +FD net/minecraft/entity/ai/EntityAITasks taskEntries field_75782_a +FD net/minecraft/entity/ai/EntityAITasks executingTaskEntries field_75780_b +FD net/minecraft/entity/ai/EntityAITasks theProfiler field_75781_c +FD net/minecraft/entity/ai/EntityAITasks tickCount field_75778_d +FD net/minecraft/entity/ai/EntityAITasks tickRate field_75779_e +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry action field_75733_a +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry priority field_75731_b +FD net/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry field_75732_c field_75732_c +FD net/minecraft/entity/ai/EntityAIHarvestFarmland theVillager field_179504_c +FD net/minecraft/entity/ai/EntityAIHarvestFarmland hasFarmItem field_179502_d +FD net/minecraft/entity/ai/EntityAIHarvestFarmland field_179503_e field_179503_e +FD net/minecraft/entity/ai/EntityAIHarvestFarmland field_179501_f field_179501_f +FD net/minecraft/entity/ai/EntityAILeapAtTarget leaper field_75328_a +FD net/minecraft/entity/ai/EntityAILeapAtTarget leapTarget field_75326_b +FD net/minecraft/entity/ai/EntityAILeapAtTarget leapMotionY field_75327_c +FD net/minecraft/entity/ai/EntityAIWatchClosest theWatcher field_75332_b +FD net/minecraft/entity/ai/EntityAIWatchClosest closestEntity field_75334_a +FD net/minecraft/entity/ai/EntityAIWatchClosest maxDistanceForPlayer field_75333_c +FD net/minecraft/entity/ai/EntityAIWatchClosest watchedClass field_75329_f +FD net/minecraft/entity/ai/EntityAIWatchClosest lookTime field_75330_d +FD net/minecraft/entity/ai/EntityAIWatchClosest chance field_75331_e +FD net/minecraft/entity/ai/EntityAILookAtTradePlayer theMerchant field_75335_b +FD net/minecraft/entity/ai/EntityAIVillagerMate villageObj field_75452_a +FD net/minecraft/entity/ai/EntityAIVillagerMate villagerObj field_75450_b +FD net/minecraft/entity/ai/EntityAIVillagerMate mate field_75451_c +FD net/minecraft/entity/ai/EntityAIVillagerMate worldObj field_75448_d +FD net/minecraft/entity/ai/EntityAIVillagerMate matingTimeout field_75449_e +FD net/minecraft/entity/ai/EntityAIAttackOnCollide worldObj field_75443_a +FD net/minecraft/entity/ai/EntityAIAttackOnCollide attacker field_75441_b +FD net/minecraft/entity/ai/EntityAIAttackOnCollide attackTick field_75439_d +FD net/minecraft/entity/ai/EntityAIAttackOnCollide speedTowardsTarget field_75440_e +FD net/minecraft/entity/ai/EntityAIAttackOnCollide longMemory field_75437_f +FD net/minecraft/entity/ai/EntityAIAttackOnCollide entityPathEntity field_75438_g +FD net/minecraft/entity/ai/EntityAIAttackOnCollide classTarget field_75444_h +FD net/minecraft/entity/ai/EntityAIAttackOnCollide delayCounter field_75445_i +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetX field_151497_i +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetY field_151495_j +FD net/minecraft/entity/ai/EntityAIAttackOnCollide targetZ field_151496_k +FD net/minecraft/entity/ai/EntityAIMoveIndoors entityObj field_75424_a +FD net/minecraft/entity/ai/EntityAIMoveIndoors doorInfo field_75422_b +FD net/minecraft/entity/ai/EntityAIMoveIndoors insidePosX field_75423_c +FD net/minecraft/entity/ai/EntityAIMoveIndoors insidePosZ field_75421_d +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage theEntity field_75420_a +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage movementSpeed field_75418_b +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage entityPathNavigate field_75419_c +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage doorInfo field_75416_d +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage isNocturnal field_75417_e +FD net/minecraft/entity/ai/EntityAIMoveThroughVillage doorList field_75415_f +FD net/minecraft/entity/ai/EntityAIMoveToBlock runDelay field_179496_a +FD net/minecraft/entity/ai/EntityAIMoveToBlock destinationBlock field_179494_b +FD net/minecraft/entity/ai/EntityAIMoveToBlock theEntity field_179495_c +FD net/minecraft/entity/ai/EntityAIMoveToBlock movementSpeed field_179492_d +FD net/minecraft/entity/ai/EntityAIMoveToBlock timeoutCounter field_179493_e +FD net/minecraft/entity/ai/EntityAIMoveToBlock field_179490_f field_179490_f +FD net/minecraft/entity/ai/EntityAIMoveToBlock isAboveDestination field_179491_g +FD net/minecraft/entity/ai/EntityAIMoveToBlock searchLength field_179497_h +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction theEntity field_75436_a +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosX field_75434_b +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosY field_75435_c +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movePosZ field_75432_d +FD net/minecraft/entity/ai/EntityAIMoveTowardsRestriction movementSpeed field_75433_e +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget theEntity field_75431_a +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget targetEntity field_75429_b +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosX field_75430_c +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosY field_75427_d +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget movePosZ field_75428_e +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget speed field_75425_f +FD net/minecraft/entity/ai/EntityAIMoveTowardsTarget maxTargetDistance field_75426_g +FD net/minecraft/entity/ai/EntityAIOcelotAttack theWorld field_75411_a +FD net/minecraft/entity/ai/EntityAIOcelotAttack theEntity field_75409_b +FD net/minecraft/entity/ai/EntityAIOcelotAttack theVictim field_75410_c +FD net/minecraft/entity/ai/EntityAIOcelotAttack attackCountdown field_75408_d +FD net/minecraft/entity/ai/EntityAIOcelotSit ocelot field_151493_a +FD net/minecraft/entity/ai/EntityAILookAtVillager theGolem field_75397_a +FD net/minecraft/entity/ai/EntityAILookAtVillager theVillager field_75395_b +FD net/minecraft/entity/ai/EntityAILookAtVillager lookTime field_75396_c +FD net/minecraft/entity/ai/EntityAIOpenDoor closeDoor field_75361_i +FD net/minecraft/entity/ai/EntityAIOpenDoor closeDoorTemporisation field_75360_j +FD net/minecraft/entity/ai/EntityAIPanic speed field_75265_b +FD net/minecraft/entity/ai/EntityAIPanic theEntityCreature field_75267_a +FD net/minecraft/entity/ai/EntityAIPanic randPosX field_75266_c +FD net/minecraft/entity/ai/EntityAIPanic randPosY field_75263_d +FD net/minecraft/entity/ai/EntityAIPanic randPosZ field_75264_e +FD net/minecraft/entity/ai/EntityAIPlay villagerObj field_75262_a +FD net/minecraft/entity/ai/EntityAIPlay targetVillager field_75260_b +FD net/minecraft/entity/ai/EntityAIPlay speed field_75261_c +FD net/minecraft/entity/ai/EntityAIPlay playTime field_75259_d +FD net/minecraft/entity/ai/EntityAILookIdle idleEntity field_75258_a +FD net/minecraft/entity/ai/EntityAILookIdle lookX field_75256_b +FD net/minecraft/entity/ai/EntityAILookIdle lookZ field_75257_c +FD net/minecraft/entity/ai/EntityAILookIdle idleTime field_75255_d +FD net/minecraft/entity/ai/EntityAIWander entity field_75457_a +FD net/minecraft/entity/ai/EntityAIWander xPosition field_75455_b +FD net/minecraft/entity/ai/EntityAIWander yPosition field_75456_c +FD net/minecraft/entity/ai/EntityAIWander zPosition field_75453_d +FD net/minecraft/entity/ai/EntityAIWander speed field_75454_e +FD net/minecraft/entity/ai/EntityAIWander executionChance field_179481_f +FD net/minecraft/entity/ai/EntityAIWander mustUpdate field_179482_g +FD net/minecraft/entity/ai/EntityAIArrowAttack entityHost field_75322_b +FD net/minecraft/entity/ai/EntityAIArrowAttack rangedAttackEntityHost field_82641_b +FD net/minecraft/entity/ai/EntityAIArrowAttack attackTarget field_75323_c +FD net/minecraft/entity/ai/EntityAIArrowAttack rangedAttackTime field_75320_d +FD net/minecraft/entity/ai/EntityAIArrowAttack entityMoveSpeed field_75321_e +FD net/minecraft/entity/ai/EntityAIArrowAttack field_75318_f field_75318_f +FD net/minecraft/entity/ai/EntityAIArrowAttack field_96561_g field_96561_g +FD net/minecraft/entity/ai/EntityAIArrowAttack maxRangedAttackTime field_75325_h +FD net/minecraft/entity/ai/EntityAIArrowAttack field_96562_i field_96562_i +FD net/minecraft/entity/ai/EntityAIArrowAttack maxAttackDistance field_82642_h +FD net/minecraft/entity/ai/EntityAIRestrictOpenDoor entityObj field_75275_a +FD net/minecraft/entity/ai/EntityAIRestrictOpenDoor frontDoor field_75274_b +FD net/minecraft/entity/ai/EntityAIRestrictSun theEntity field_75273_a +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy horseHost field_111180_a +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy speed field_111178_b +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetX field_111179_c +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetY field_111176_d +FD net/minecraft/entity/ai/EntityAIRunAroundLikeCrazy targetZ field_111177_e +FD net/minecraft/entity/ai/EntityAISit theEntity field_75272_a +FD net/minecraft/entity/ai/EntityAISit isSitting field_75271_b +FD net/minecraft/entity/ai/EntityAICreeperSwell swellingCreeper field_75269_a +FD net/minecraft/entity/ai/EntityAICreeperSwell creeperAttackTarget field_75268_b +FD net/minecraft/entity/ai/EntityAIFollowGolem theVillager field_75294_a +FD net/minecraft/entity/ai/EntityAIFollowGolem theGolem field_75292_b +FD net/minecraft/entity/ai/EntityAIFollowGolem takeGolemRoseTick field_75293_c +FD net/minecraft/entity/ai/EntityAIFollowGolem tookGolemRose field_75291_d +FD net/minecraft/entity/ai/EntityAITempt temptedEntity field_75284_a +FD net/minecraft/entity/ai/EntityAITempt speed field_75282_b +FD net/minecraft/entity/ai/EntityAITempt targetX field_75283_c +FD net/minecraft/entity/ai/EntityAITempt targetY field_75280_d +FD net/minecraft/entity/ai/EntityAITempt targetZ field_75281_e +FD net/minecraft/entity/ai/EntityAITempt pitch field_75278_f +FD net/minecraft/entity/ai/EntityAITempt yaw field_75279_g +FD net/minecraft/entity/ai/EntityAITempt temptingPlayer field_75289_h +FD net/minecraft/entity/ai/EntityAITempt delayTemptCounter field_75290_i +FD net/minecraft/entity/ai/EntityAITempt isRunning field_75287_j +FD net/minecraft/entity/ai/EntityAITempt temptItem field_151484_k +FD net/minecraft/entity/ai/EntityAITempt scaredByPlayerMovement field_75285_l +FD net/minecraft/entity/ai/EntityAITempt avoidWater field_75286_m +FD net/minecraft/entity/ai/EntityAITradePlayer villager field_75276_a +FD net/minecraft/entity/ai/EntityAIVillagerInteract interactionDelay field_179478_e +FD net/minecraft/entity/ai/EntityAIVillagerInteract villager field_179477_f +FD net/minecraft/entity/ai/EntityAIDefendVillage irongolem field_75305_a +FD net/minecraft/entity/ai/EntityAIDefendVillage villageAgressorTarget field_75304_b +FD net/minecraft/entity/ai/EntityAIHurtByTarget entityCallsForHelp field_75312_a +FD net/minecraft/entity/ai/EntityAIHurtByTarget revengeTimerOld field_142052_b +FD net/minecraft/entity/ai/EntityAIHurtByTarget targetClasses field_179447_c +FD net/minecraft/entity/ai/EntityAIFindEntityNearest LOGGER field_179444_a +FD net/minecraft/entity/ai/EntityAIFindEntityNearest mob field_179442_b +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179443_c field_179443_c +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179440_d field_179440_d +FD net/minecraft/entity/ai/EntityAIFindEntityNearest target field_179441_e +FD net/minecraft/entity/ai/EntityAIFindEntityNearest field_179439_f field_179439_f +FD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 field_179877_a field_179877_a +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer LOGGER field_179436_a +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer entityLiving field_179434_b +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer predicate field_179435_c +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer sorter field_179432_d +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer entityTarget field_179433_e +FD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 field_179881_a field_179881_a +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetClass field_75307_b +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget theNearestAttackableTargetSorter field_75306_g +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetEntitySelector field_82643_g +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetEntity field_75309_a +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget targetChance field_75308_c +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 field_111103_c field_111103_c +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 field_111102_d field_111102_d +FD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter theEntity field_75459_b +FD net/minecraft/entity/ai/EntityAITargetNonTamed theTameable field_75310_g +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget theDefendingTameable field_75316_a +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget theOwnerAttacker field_75315_b +FD net/minecraft/entity/ai/EntityAIOwnerHurtByTarget field_142051_e field_142051_e +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget theEntityTameable field_75314_a +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget theTarget field_75313_b +FD net/minecraft/entity/ai/EntityAIOwnerHurtTarget field_142050_e field_142050_e +FD net/minecraft/entity/ai/EntityAITarget nearbyOnly field_75303_a +FD net/minecraft/entity/ai/EntityAITarget targetSearchStatus field_75301_b +FD net/minecraft/entity/ai/EntityAITarget targetSearchDelay field_75302_c +FD net/minecraft/entity/ai/EntityAITarget targetUnseenTicks field_75298_g +FD net/minecraft/entity/ai/EntityAITarget taskOwner field_75299_d +FD net/minecraft/entity/ai/EntityAITarget shouldCheckSight field_75297_f +FD net/minecraft/pathfinding/PathNavigateGround nodeProcessor field_179695_a +FD net/minecraft/pathfinding/PathNavigateGround shouldAvoidSun field_179694_f +FD net/minecraft/pathfinding/PathNavigate pathSearchRange field_75512_e +FD net/minecraft/pathfinding/PathNavigate theEntity field_75515_a +FD net/minecraft/pathfinding/PathNavigate worldObj field_75513_b +FD net/minecraft/pathfinding/PathNavigate currentPath field_75514_c +FD net/minecraft/pathfinding/PathNavigate speed field_75511_d +FD net/minecraft/pathfinding/PathNavigate totalTicks field_75510_g +FD net/minecraft/pathfinding/PathNavigate ticksAtLastPos field_75520_h +FD net/minecraft/pathfinding/PathNavigate lastPosCheck field_75521_i +FD net/minecraft/pathfinding/PathNavigate heightRequirement field_179682_i +FD net/minecraft/pathfinding/PathNavigate pathFinder field_179681_j +FD net/minecraft/pathfinding/PathNavigateClimber targetPosition field_179696_f +FD net/minecraft/entity/ai/EntitySenses entityObj field_75526_a +FD net/minecraft/entity/ai/EntitySenses seenEntities field_75524_b +FD net/minecraft/entity/ai/EntitySenses unseenEntities field_75525_c +FD net/minecraft/entity/ai/RandomPositionGenerator staticVector field_75465_a +FD net/minecraft/village/VillageDoorInfo doorBlockPos field_179859_a +FD net/minecraft/village/VillageDoorInfo insideBlock field_179857_b +FD net/minecraft/village/VillageDoorInfo insideDirection field_179858_c +FD net/minecraft/village/VillageDoorInfo lastActivityTimestamp field_75475_f +FD net/minecraft/village/VillageDoorInfo isDetachedFromVillageFlag field_75476_g +FD net/minecraft/village/VillageDoorInfo doorOpeningRestrictionCounter field_75482_h +FD net/minecraft/village/Village worldObj field_75586_a +FD net/minecraft/village/Village villageDoorInfoList field_75584_b +FD net/minecraft/village/Village centerHelper field_75585_c +FD net/minecraft/village/Village center field_75582_d +FD net/minecraft/village/Village villageRadius field_75583_e +FD net/minecraft/village/Village lastAddDoorTimestamp field_75580_f +FD net/minecraft/village/Village tickCounter field_75581_g +FD net/minecraft/village/Village numVillagers field_75588_h +FD net/minecraft/village/Village noBreedTicks field_82694_i +FD net/minecraft/village/Village playerReputation field_82693_j +FD net/minecraft/village/Village villageAgressors field_75589_i +FD net/minecraft/village/Village numIronGolems field_75587_j +FD net/minecraft/village/Village$VillageAggressor agressor field_75592_a +FD net/minecraft/village/Village$VillageAggressor agressionTime field_75590_b +FD net/minecraft/village/Village$VillageAggressor field_75591_c field_75591_c +FD net/minecraft/village/VillageSiege worldObj field_75537_a +FD net/minecraft/village/VillageSiege field_75535_b field_75535_b +FD net/minecraft/village/VillageSiege field_75536_c field_75536_c +FD net/minecraft/village/VillageSiege field_75533_d field_75533_d +FD net/minecraft/village/VillageSiege field_75534_e field_75534_e +FD net/minecraft/village/VillageSiege theVillage field_75531_f +FD net/minecraft/village/VillageSiege field_75532_g field_75532_g +FD net/minecraft/village/VillageSiege field_75538_h field_75538_h +FD net/minecraft/village/VillageSiege field_75539_i field_75539_i +FD net/minecraft/village/VillageCollection worldObj field_75556_a +FD net/minecraft/village/VillageCollection villagerPositionsList field_75554_b +FD net/minecraft/village/VillageCollection newDoors field_75555_c +FD net/minecraft/village/VillageCollection villageList field_75552_d +FD net/minecraft/village/VillageCollection tickCounter field_75553_e +FD net/minecraft/entity/passive/EntityBat spawnPosition field_82237_a +FD net/minecraft/entity/passive/EntityAnimal inLove field_70881_d +FD net/minecraft/entity/passive/EntityAnimal spawnableBlock field_175506_bl +FD net/minecraft/entity/passive/EntityAnimal playerInLove field_146084_br +FD net/minecraft/entity/passive/EntityChicken wingRotation field_70886_e +FD net/minecraft/entity/passive/EntityChicken destPos field_70883_f +FD net/minecraft/entity/passive/EntityChicken field_70884_g field_70884_g +FD net/minecraft/entity/passive/EntityChicken field_70888_h field_70888_h +FD net/minecraft/entity/passive/EntityChicken wingRotDelta field_70889_i +FD net/minecraft/entity/passive/EntityChicken timeUntilNextEgg field_70887_j +FD net/minecraft/entity/passive/EntityChicken chickenJockey field_152118_bv +FD net/minecraft/entity/passive/EntityHorse HORSE_MARKING_TEXTURES_ABBR field_110292_bC +FD net/minecraft/entity/passive/EntityHorse eatingHaystackCounter field_110289_bD +FD net/minecraft/entity/passive/EntityHorse openMouthCounter field_110290_bE +FD net/minecraft/entity/passive/EntityHorse jumpRearingCounter field_110295_bF +FD net/minecraft/entity/passive/EntityHorse horseChest field_110296_bG +FD net/minecraft/entity/passive/EntityHorse hasReproduced field_110293_bH +FD net/minecraft/entity/passive/EntityHorse field_110294_bI field_110294_bI +FD net/minecraft/entity/passive/EntityHorse headLean field_110283_bJ +FD net/minecraft/entity/passive/EntityHorse prevHeadLean field_110284_bK +FD net/minecraft/entity/passive/EntityHorse rearingAmount field_110281_bL +FD net/minecraft/entity/passive/EntityHorse prevRearingAmount field_110282_bM +FD net/minecraft/entity/passive/EntityHorse mouthOpenness field_110287_bN +FD net/minecraft/entity/passive/EntityHorse prevMouthOpenness field_110288_bO +FD net/minecraft/entity/passive/EntityHorse gallopTime field_110285_bP +FD net/minecraft/entity/passive/EntityHorse texturePrefix field_110286_bQ +FD net/minecraft/entity/passive/EntityHorse horseTexturesArray field_110280_bR +FD net/minecraft/entity/passive/EntityHorse field_175508_bO field_175508_bO +FD net/minecraft/entity/passive/EntityHorse field_110278_bp field_110278_bp +FD net/minecraft/entity/passive/EntityHorse field_110279_bq field_110279_bq +FD net/minecraft/entity/passive/EntityHorse horseJumping field_110275_br +FD net/minecraft/entity/passive/EntityHorse temper field_110274_bs +FD net/minecraft/entity/passive/EntityHorse jumpPower field_110277_bt +FD net/minecraft/entity/passive/EntityHorse horseBreedingSelector field_110276_bu +FD net/minecraft/entity/passive/EntityHorse horseJumpStrength field_110271_bv +FD net/minecraft/entity/passive/EntityHorse horseArmorTextures field_110270_bw +FD net/minecraft/entity/passive/EntityHorse HORSE_ARMOR_TEXTURES_ABBR field_110273_bx +FD net/minecraft/entity/passive/EntityHorse armorValues field_110272_by +FD net/minecraft/entity/passive/EntityHorse horseTextures field_110268_bz +FD net/minecraft/entity/passive/EntityHorse HORSE_TEXTURES_ABBR field_110269_bA +FD net/minecraft/entity/passive/EntityHorse horseMarkingTextures field_110291_bB +FD net/minecraft/entity/passive/EntityHorse$GroupData horseType field_111107_a +FD net/minecraft/entity/passive/EntityHorse$GroupData horseVariant field_111106_b +FD net/minecraft/entity/passive/EntityOcelot avoidEntity field_175545_bm +FD net/minecraft/entity/passive/EntityOcelot aiTempt field_70914_e +FD net/minecraft/entity/passive/EntityPig aiControlledByPlayer field_82184_d +FD net/minecraft/entity/passive/EntityRabbit aiAvoidWolves field_175539_bk +FD net/minecraft/entity/passive/EntityRabbit field_175540_bm field_175540_bm +FD net/minecraft/entity/passive/EntityRabbit field_175535_bn field_175535_bn +FD net/minecraft/entity/passive/EntityRabbit field_175536_bo field_175536_bo +FD net/minecraft/entity/passive/EntityRabbit field_175537_bp field_175537_bp +FD net/minecraft/entity/passive/EntityRabbit currentMoveTypeDuration field_175538_bq +FD net/minecraft/entity/passive/EntityRabbit moveType field_175542_br +FD net/minecraft/entity/passive/EntityRabbit carrotTicks field_175541_bs +FD net/minecraft/entity/passive/EntityRabbit field_175543_bt field_175543_bt +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType NONE NONE +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType HOP HOP +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType STEP STEP +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType SPRINT SPRINT +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType ATTACK ATTACK +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType speed field_180076_f +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType field_180077_g field_180077_g +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType duration field_180084_h +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType field_180085_i field_180085_i +FD net/minecraft/entity/passive/EntityRabbit$EnumMoveType $VALUES $VALUES +FD net/minecraft/entity/passive/EntityRabbit$AIAvoidEntity entityInstance field_179511_d +FD net/minecraft/entity/passive/EntityRabbit$RabbitTypeData typeData field_179427_a +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper field_180069_b field_180069_b +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper theEntity field_180070_c +FD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper field_180068_d field_180068_d +FD net/minecraft/entity/passive/EntityRabbit$RabbitMoveHelper theEntity field_179929_g +FD net/minecraft/entity/passive/EntityRabbit$AIPanic theEntity field_179486_b +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm rabbit field_179500_c +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm field_179498_d field_179498_d +FD net/minecraft/entity/passive/EntityRabbit$AIRaidFarm field_179499_e field_179499_e +FD net/minecraft/entity/passive/EntitySheep inventoryCrafting field_90016_e +FD net/minecraft/entity/passive/EntitySheep DYE_TO_RGB field_175514_bm +FD net/minecraft/entity/passive/EntitySheep sheepTimer field_70899_e +FD net/minecraft/entity/passive/EntitySheep entityAIEatGrass field_146087_bs +FD net/minecraft/entity/passive/EntitySheep$1 field_90034_a field_90034_a +FD net/minecraft/entity/passive/EntitySquid squidPitch field_70861_d +FD net/minecraft/entity/passive/EntitySquid prevSquidPitch field_70862_e +FD net/minecraft/entity/passive/EntitySquid prevSquidYaw field_70860_g +FD net/minecraft/entity/passive/EntitySquid squidRotation field_70867_h +FD net/minecraft/entity/passive/EntitySquid prevSquidRotation field_70868_i +FD net/minecraft/entity/passive/EntitySquid tentacleAngle field_70866_j +FD net/minecraft/entity/passive/EntitySquid lastTentacleAngle field_70865_by +FD net/minecraft/entity/passive/EntitySquid randomMotionSpeed field_70863_bz +FD net/minecraft/entity/passive/EntitySquid rotationVelocity field_70864_bA +FD net/minecraft/entity/passive/EntitySquid field_70871_bB field_70871_bB +FD net/minecraft/entity/passive/EntitySquid randomMotionVecX field_70872_bC +FD net/minecraft/entity/passive/EntitySquid randomMotionVecY field_70869_bD +FD net/minecraft/entity/passive/EntitySquid randomMotionVecZ field_70870_bE +FD net/minecraft/entity/passive/EntitySquid squidYaw field_70859_f +FD net/minecraft/entity/passive/EntitySquid$AIMoveRandom squid field_179476_a +FD net/minecraft/entity/monster/EntityIronGolem villageObj field_70857_d +FD net/minecraft/entity/monster/EntityIronGolem homeCheckTimer field_70858_e +FD net/minecraft/entity/monster/EntityIronGolem holdRoseTick field_70856_g +FD net/minecraft/entity/monster/EntityIronGolem attackTimer field_70855_f +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180099_a field_180099_a +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180097_b field_180097_b +FD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 field_180098_c field_180098_c +FD net/minecraft/entity/passive/EntityWolf headRotationCourse field_70926_e +FD net/minecraft/entity/passive/EntityWolf headRotationCourseOld field_70924_f +FD net/minecraft/entity/passive/EntityWolf isWet field_70925_g +FD net/minecraft/entity/passive/EntityWolf isShaking field_70928_h +FD net/minecraft/entity/passive/EntityWolf timeWolfIsShaking field_70929_i +FD net/minecraft/entity/passive/EntityWolf prevTimeWolfIsShaking field_70927_j +FD net/minecraft/entity/passive/EntityWolf$1 field_180095_a field_180095_a +FD net/minecraft/entity/boss/EntityDragonPart entityDragonObj field_70259_a +FD net/minecraft/entity/boss/EntityDragonPart partName field_146032_b +FD net/minecraft/entity/item/EntityEnderCrystal innerRotation field_70261_a +FD net/minecraft/entity/item/EntityEnderCrystal health field_70260_b +FD net/minecraft/entity/boss/EntityDragon targetX field_70980_b +FD net/minecraft/entity/boss/EntityDragon targetY field_70981_c +FD net/minecraft/entity/boss/EntityDragon target field_70993_bI +FD net/minecraft/entity/boss/EntityDragon ringBuffer field_70979_e +FD net/minecraft/entity/boss/EntityDragon ringBufferIndex field_70976_f +FD net/minecraft/entity/boss/EntityDragon dragonPartArray field_70977_g +FD net/minecraft/entity/boss/EntityDragon dragonPartHead field_70986_h +FD net/minecraft/entity/boss/EntityDragon dragonPartBody field_70987_i +FD net/minecraft/entity/boss/EntityDragon dragonPartTail1 field_70985_j +FD net/minecraft/entity/boss/EntityDragon dragonPartTail2 field_70984_by +FD net/minecraft/entity/boss/EntityDragon dragonPartTail3 field_70982_bz +FD net/minecraft/entity/boss/EntityDragon dragonPartWing1 field_70983_bA +FD net/minecraft/entity/boss/EntityDragon dragonPartWing2 field_70990_bB +FD net/minecraft/entity/boss/EntityDragon prevAnimTime field_70991_bC +FD net/minecraft/entity/boss/EntityDragon animTime field_70988_bD +FD net/minecraft/entity/boss/EntityDragon forceNewTarget field_70989_bE +FD net/minecraft/entity/boss/EntityDragon slowed field_70994_bF +FD net/minecraft/entity/boss/EntityDragon deathTicks field_70995_bG +FD net/minecraft/entity/boss/EntityDragon healingEnderCrystal field_70992_bH +FD net/minecraft/entity/boss/EntityDragon targetZ field_70978_d +FD net/minecraft/entity/boss/EntityWither field_82220_d field_82220_d +FD net/minecraft/entity/boss/EntityWither field_82221_e field_82221_e +FD net/minecraft/entity/boss/EntityWither field_82218_g field_82218_g +FD net/minecraft/entity/boss/EntityWither field_82223_h field_82223_h +FD net/minecraft/entity/boss/EntityWither field_82224_i field_82224_i +FD net/minecraft/entity/boss/EntityWither blockBreakCounter field_82222_j +FD net/minecraft/entity/boss/EntityWither attackEntitySelector field_82219_bJ +FD net/minecraft/entity/boss/EntityWither field_82217_f field_82217_f +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_HEAD_ROTATION field_175435_a +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_BODY_ROTATION field_175433_b +FD net/minecraft/entity/item/EntityArmorStand disabledSlots field_175442_bg +FD net/minecraft/entity/item/EntityArmorStand field_181028_bj field_181028_bj +FD net/minecraft/entity/item/EntityArmorStand headRotation field_175443_bh +FD net/minecraft/entity/item/EntityArmorStand bodyRotation field_175444_bi +FD net/minecraft/entity/item/EntityArmorStand leftArmRotation field_175438_bj +FD net/minecraft/entity/item/EntityArmorStand rightArmRotation field_175439_bk +FD net/minecraft/entity/item/EntityArmorStand leftLegRotation field_175440_bl +FD net/minecraft/entity/item/EntityArmorStand rightLegRotation field_175441_bm +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_LEFTARM_ROTATION field_175434_c +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_RIGHTARM_ROTATION field_175431_d +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_LEFTLEG_ROTATION field_175432_e +FD net/minecraft/entity/item/EntityArmorStand DEFAULT_RIGHTLEG_ROTATION field_175429_f +FD net/minecraft/entity/item/EntityArmorStand contents field_175430_g +FD net/minecraft/entity/item/EntityArmorStand canInteract field_175436_h +FD net/minecraft/entity/item/EntityArmorStand punchCooldown field_175437_i +FD net/minecraft/entity/EntityHanging hangingPosition field_174861_a +FD net/minecraft/entity/EntityHanging facingDirection field_174860_b +FD net/minecraft/entity/EntityHanging tickCounter1 field_70520_f +FD net/minecraft/entity/item/EntityItemFrame itemDropChance field_82337_e +FD net/minecraft/entity/item/EntityPainting art field_70522_e +FD net/minecraft/entity/item/EntityPainting$EnumArt field_180001_A field_180001_A +FD net/minecraft/entity/item/EntityPainting$EnumArt title field_75702_A +FD net/minecraft/entity/item/EntityPainting$EnumArt sizeX field_75703_B +FD net/minecraft/entity/item/EntityPainting$EnumArt sizeY field_75704_C +FD net/minecraft/entity/item/EntityPainting$EnumArt offsetX field_75699_D +FD net/minecraft/entity/item/EntityPainting$EnumArt offsetY field_75700_E +FD net/minecraft/entity/item/EntityPainting$EnumArt $VALUES $VALUES +FD net/minecraft/entity/item/EntityPainting$EnumArt KEBAB KEBAB +FD net/minecraft/entity/item/EntityPainting$EnumArt AZTEC AZTEC +FD net/minecraft/entity/item/EntityPainting$EnumArt ALBAN ALBAN +FD net/minecraft/entity/item/EntityPainting$EnumArt AZTEC_2 AZTEC_2 +FD net/minecraft/entity/item/EntityPainting$EnumArt BOMB BOMB +FD net/minecraft/entity/item/EntityPainting$EnumArt PLANT PLANT +FD net/minecraft/entity/item/EntityPainting$EnumArt WASTELAND WASTELAND +FD net/minecraft/entity/item/EntityPainting$EnumArt POOL POOL +FD net/minecraft/entity/item/EntityPainting$EnumArt COURBET COURBET +FD net/minecraft/entity/item/EntityPainting$EnumArt SEA SEA +FD net/minecraft/entity/item/EntityPainting$EnumArt SUNSET SUNSET +FD net/minecraft/entity/item/EntityPainting$EnumArt CREEBET CREEBET +FD net/minecraft/entity/item/EntityPainting$EnumArt WANDERER WANDERER +FD net/minecraft/entity/item/EntityPainting$EnumArt GRAHAM GRAHAM +FD net/minecraft/entity/item/EntityPainting$EnumArt MATCH MATCH +FD net/minecraft/entity/item/EntityPainting$EnumArt BUST BUST +FD net/minecraft/entity/item/EntityPainting$EnumArt STAGE STAGE +FD net/minecraft/entity/item/EntityPainting$EnumArt VOID VOID +FD net/minecraft/entity/item/EntityPainting$EnumArt SKULL_AND_ROSES SKULL_AND_ROSES +FD net/minecraft/entity/item/EntityPainting$EnumArt WITHER WITHER +FD net/minecraft/entity/item/EntityPainting$EnumArt FIGHTERS FIGHTERS +FD net/minecraft/entity/item/EntityPainting$EnumArt POINTER POINTER +FD net/minecraft/entity/item/EntityPainting$EnumArt PIGSCENE PIGSCENE +FD net/minecraft/entity/item/EntityPainting$EnumArt BURNING_SKULL BURNING_SKULL +FD net/minecraft/entity/item/EntityPainting$EnumArt SKELETON SKELETON +FD net/minecraft/entity/item/EntityPainting$EnumArt DONKEY_KONG DONKEY_KONG +FD net/minecraft/entity/projectile/EntityFishHook shake field_146044_a +FD net/minecraft/entity/projectile/EntityFishHook fishX field_146056_aC +FD net/minecraft/entity/projectile/EntityFishHook fishY field_146057_aD +FD net/minecraft/entity/projectile/EntityFishHook fishZ field_146058_aE +FD net/minecraft/entity/projectile/EntityFishHook fishYaw field_146059_aF +FD net/minecraft/entity/projectile/EntityFishHook fishPitch field_146060_aG +FD net/minecraft/entity/projectile/EntityFishHook clientMotionX field_146061_aH +FD net/minecraft/entity/projectile/EntityFishHook clientMotionY field_146052_aI +FD net/minecraft/entity/projectile/EntityFishHook clientMotionZ field_146053_aJ +FD net/minecraft/entity/projectile/EntityFishHook inTile field_146046_j +FD net/minecraft/entity/projectile/EntityFishHook inGround field_146051_au +FD net/minecraft/entity/projectile/EntityFishHook ticksInGround field_146049_av +FD net/minecraft/entity/projectile/EntityFishHook ticksInAir field_146047_aw +FD net/minecraft/entity/projectile/EntityFishHook ticksCatchable field_146045_ax +FD net/minecraft/entity/projectile/EntityFishHook ticksCaughtDelay field_146040_ay +FD net/minecraft/entity/projectile/EntityFishHook ticksCatchableDelay field_146038_az +FD net/minecraft/entity/projectile/EntityFishHook fishApproachAngle field_146054_aA +FD net/minecraft/entity/projectile/EntityFishHook fishPosRotationIncrements field_146055_aB +FD net/minecraft/entity/projectile/EntityFishHook angler field_146042_b +FD net/minecraft/entity/projectile/EntityFishHook caughtEntity field_146043_c +FD net/minecraft/entity/projectile/EntityFishHook JUNK field_146039_d +FD net/minecraft/entity/projectile/EntityFishHook TREASURE field_146041_e +FD net/minecraft/entity/projectile/EntityFishHook FISH field_146036_f +FD net/minecraft/entity/projectile/EntityFishHook xTile field_146037_g +FD net/minecraft/entity/projectile/EntityFishHook yTile field_146048_h +FD net/minecraft/entity/projectile/EntityFishHook zTile field_146050_i +FD net/minecraft/util/WeightedRandomFishable returnStack field_150711_b +FD net/minecraft/util/WeightedRandomFishable maxDamagePercent field_150712_c +FD net/minecraft/util/WeightedRandomFishable enchantable field_150710_d +FD net/minecraft/entity/effect/EntityLightningBolt boltVertex field_70264_a +FD net/minecraft/entity/effect/EntityLightningBolt lightningState field_70262_b +FD net/minecraft/entity/effect/EntityLightningBolt boltLivingTime field_70263_c +FD net/minecraft/entity/item/EntityBoat isBoatEmpty field_70279_a +FD net/minecraft/entity/item/EntityBoat velocityY field_70280_j +FD net/minecraft/entity/item/EntityBoat velocityZ field_70278_an +FD net/minecraft/entity/item/EntityBoat speedMultiplier field_70276_b +FD net/minecraft/entity/item/EntityBoat boatPosRotationIncrements field_70277_c +FD net/minecraft/entity/item/EntityBoat boatX field_70274_d +FD net/minecraft/entity/item/EntityBoat boatY field_70275_e +FD net/minecraft/entity/item/EntityBoat boatZ field_70272_f +FD net/minecraft/entity/item/EntityBoat boatYaw field_70273_g +FD net/minecraft/entity/item/EntityBoat boatPitch field_70281_h +FD net/minecraft/entity/item/EntityBoat velocityX field_70282_i +FD net/minecraft/entity/item/EntityFallingBlock fallTime field_145812_b +FD net/minecraft/entity/item/EntityFallingBlock shouldDropItem field_145813_c +FD net/minecraft/entity/item/EntityFallingBlock tileEntityData field_145810_d +FD net/minecraft/entity/item/EntityFallingBlock fallTile field_175132_d +FD net/minecraft/entity/item/EntityFallingBlock canSetAsBlock field_145808_f +FD net/minecraft/entity/item/EntityFallingBlock hurtEntities field_145809_g +FD net/minecraft/entity/item/EntityFallingBlock fallHurtMax field_145815_h +FD net/minecraft/entity/item/EntityFallingBlock fallHurtAmount field_145816_i +FD net/minecraft/entity/item/EntityItem hoverStart field_70290_d +FD net/minecraft/entity/item/EntityItem logger field_145803_d +FD net/minecraft/entity/item/EntityItem age field_70292_b +FD net/minecraft/entity/item/EntityItem delayBeforeCanPickup field_145804_b +FD net/minecraft/entity/item/EntityItem health field_70291_e +FD net/minecraft/entity/item/EntityItem thrower field_145801_f +FD net/minecraft/entity/item/EntityItem owner field_145802_g +FD net/minecraft/entity/item/EntityMinecart isInReverse field_70499_f +FD net/minecraft/entity/item/EntityMinecart velocityX field_70508_aq +FD net/minecraft/entity/item/EntityMinecart velocityY field_70507_ar +FD net/minecraft/entity/item/EntityMinecart velocityZ field_70506_as +FD net/minecraft/entity/item/EntityMinecart entityName field_94102_c +FD net/minecraft/entity/item/EntityMinecart matrix field_70500_g +FD net/minecraft/entity/item/EntityMinecart turnProgress field_70510_h +FD net/minecraft/entity/item/EntityMinecart minecartX field_70511_i +FD net/minecraft/entity/item/EntityMinecart minecartY field_70509_j +FD net/minecraft/entity/item/EntityMinecart minecartZ field_70514_an +FD net/minecraft/entity/item/EntityMinecart minecartYaw field_70512_ao +FD net/minecraft/entity/item/EntityMinecart minecartPitch field_70513_ap +FD net/minecraft/entity/item/EntityMinecart$1 field_180037_a field_180037_a +FD net/minecraft/entity/item/EntityMinecart$1 field_180036_b field_180036_b +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType RIDEABLE RIDEABLE +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType CHEST CHEST +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType FURNACE FURNACE +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType TNT TNT +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType SPAWNER SPAWNER +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType HOPPER HOPPER +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType COMMAND_BLOCK COMMAND_BLOCK +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType ID_LOOKUP field_180051_h +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType networkID field_180052_i +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType name field_180049_j +FD net/minecraft/entity/item/EntityMinecart$EnumMinecartType $VALUES $VALUES +FD net/minecraft/entity/EntityMinecartCommandBlock commandBlockLogic field_145824_a +FD net/minecraft/entity/EntityMinecartCommandBlock activatorRailCooldown field_145823_b +FD net/minecraft/entity/EntityMinecartCommandBlock$1 field_145768_a field_145768_a +FD net/minecraft/entity/item/EntityMinecartContainer minecartContainerItems field_94113_a +FD net/minecraft/entity/item/EntityMinecartContainer dropContentsWhenDead field_94112_b +FD net/minecraft/entity/item/EntityMinecartFurnace pushX field_94111_a +FD net/minecraft/entity/item/EntityMinecartFurnace pushZ field_94109_b +FD net/minecraft/entity/item/EntityMinecartFurnace fuel field_94110_c +FD net/minecraft/entity/item/EntityMinecartHopper isBlocked field_96113_a +FD net/minecraft/entity/item/EntityMinecartHopper transferTicker field_98044_b +FD net/minecraft/entity/item/EntityMinecartHopper field_174900_c field_174900_c +FD net/minecraft/entity/ai/EntityMinecartMobSpawner mobSpawnerLogic field_98040_a +FD net/minecraft/entity/ai/EntityMinecartMobSpawner$1 field_98296_a field_98296_a +FD net/minecraft/entity/item/EntityMinecartTNT minecartTNTFuse field_94106_a +FD net/minecraft/entity/item/EntityTNTPrimed fuse field_70516_a +FD net/minecraft/entity/item/EntityTNTPrimed tntPlacedBy field_94084_b +FD net/minecraft/entity/monster/EntityBlaze heightOffset field_70847_d +FD net/minecraft/entity/monster/EntityBlaze heightOffsetUpdateTime field_70848_e +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack blaze field_179469_a +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack field_179467_b field_179467_b +FD net/minecraft/entity/monster/EntityBlaze$AIFireballAttack field_179468_c field_179468_c +FD net/minecraft/entity/monster/EntityCreeper lastActiveTime field_70834_e +FD net/minecraft/entity/monster/EntityCreeper timeSinceIgnited field_70833_d +FD net/minecraft/entity/monster/EntityCreeper explosionRadius field_82226_g +FD net/minecraft/entity/monster/EntityCreeper field_175494_bm field_175494_bm +FD net/minecraft/entity/monster/EntityCreeper fuseTime field_82225_f +FD net/minecraft/entity/monster/EntityEnderman attackingSpeedBoostModifierUUID field_110192_bp +FD net/minecraft/entity/monster/EntityEnderman attackingSpeedBoostModifier field_110193_bq +FD net/minecraft/entity/monster/EntityEnderman isAggressive field_104003_g +FD net/minecraft/entity/monster/EntityEnderman carriableBlocks field_70827_d +FD net/minecraft/entity/monster/EntityEnderman$1 field_179949_a field_179949_a +FD net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock enderman field_179475_a +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer player field_179448_g +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer field_179450_h field_179450_h +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer field_179451_i field_179451_i +FD net/minecraft/entity/monster/EntityEnderman$AIFindPlayer enderman field_179449_j +FD net/minecraft/entity/monster/EntityEnderman$AITakeBlock enderman field_179473_a +FD net/minecraft/entity/monster/EntityEndermite lifetime field_175497_b +FD net/minecraft/entity/monster/EntityEndermite playerSpawned field_175498_c +FD net/minecraft/entity/monster/IMob mobSelector field_82192_a +FD net/minecraft/entity/monster/IMob VISIBLE_MOB_SELECTOR field_175450_e +FD net/minecraft/entity/monster/EntityGhast explosionStrength field_92014_j +FD net/minecraft/entity/monster/EntityGhast$AILookAround parentEntity field_179472_a +FD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper parentEntity field_179927_g +FD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper courseChangeCooldown field_179928_h +FD net/minecraft/entity/monster/EntityGhast$AIFireballAttack attackTimer field_179471_a +FD net/minecraft/entity/monster/EntityGhast$AIFireballAttack parentEntity field_179470_b +FD net/minecraft/entity/monster/EntityGhast$AIRandomFly parentEntity field_179454_a +FD net/minecraft/entity/monster/EntityGuardian field_175482_b field_175482_b +FD net/minecraft/entity/monster/EntityGuardian field_175484_c field_175484_c +FD net/minecraft/entity/monster/EntityGuardian field_175485_bl field_175485_bl +FD net/minecraft/entity/monster/EntityGuardian field_175486_bm field_175486_bm +FD net/minecraft/entity/monster/EntityGuardian targetedEntity field_175478_bn +FD net/minecraft/entity/monster/EntityGuardian field_175479_bo field_175479_bo +FD net/minecraft/entity/monster/EntityGuardian field_175480_bp field_175480_bp +FD net/minecraft/entity/monster/EntityGuardian wander field_175481_bq +FD net/minecraft/entity/monster/EntityGuardian field_175483_bk field_175483_bk +FD net/minecraft/entity/monster/EntityGuardian$1 field_179914_a field_179914_a +FD net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack theEntity field_179456_a +FD net/minecraft/entity/monster/EntityGuardian$AIGuardianAttack tickCounter field_179455_b +FD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector parentEntity field_179916_a +FD net/minecraft/entity/monster/EntityGuardian$GuardianMoveHelper entityGuardian field_179930_g +FD net/minecraft/entity/monster/EntityPigZombie ATTACK_SPEED_BOOST_MODIFIER_UUID field_110189_bq +FD net/minecraft/entity/monster/EntityPigZombie angerLevel field_70837_d +FD net/minecraft/entity/monster/EntityPigZombie randomSoundDelay field_70838_e +FD net/minecraft/entity/monster/EntityPigZombie angerTargetUUID field_175459_bn +FD net/minecraft/entity/monster/EntityPigZombie ATTACK_SPEED_BOOST_MODIFIER field_110190_br +FD net/minecraft/entity/SharedMonsterAttributes maxHealth field_111267_a +FD net/minecraft/entity/SharedMonsterAttributes followRange field_111265_b +FD net/minecraft/entity/SharedMonsterAttributes knockbackResistance field_111266_c +FD net/minecraft/entity/SharedMonsterAttributes movementSpeed field_111263_d +FD net/minecraft/entity/SharedMonsterAttributes attackDamage field_111264_e +FD net/minecraft/entity/SharedMonsterAttributes logger field_151476_f +FD net/minecraft/entity/monster/EntitySilverfish summonSilverfish field_175460_b +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone silverfish field_179485_a +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone facing field_179483_b +FD net/minecraft/entity/monster/EntitySilverfish$AIHideInStone field_179484_c field_179484_c +FD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish silverfish field_179464_a +FD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish field_179463_b field_179463_b +FD net/minecraft/entity/monster/EntitySkeleton aiArrowAttack field_85037_d +FD net/minecraft/entity/monster/EntitySkeleton aiAttackOnCollide field_85038_e +FD net/minecraft/entity/monster/EntitySlime squishAmount field_70813_a +FD net/minecraft/entity/monster/EntitySlime squishFactor field_70811_b +FD net/minecraft/entity/monster/EntitySlime wasOnGround field_175452_bi +FD net/minecraft/entity/monster/EntitySlime prevSquishFactor field_70812_c +FD net/minecraft/entity/monster/EntitySlime$AISlimeAttack slime field_179466_a +FD net/minecraft/entity/monster/EntitySlime$AISlimeAttack field_179465_b field_179465_b +FD net/minecraft/entity/monster/EntitySlime$AISlimeFloat slime field_179457_a +FD net/minecraft/entity/monster/EntitySlime$AISlimeHop slime field_179458_a +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179922_g field_179922_g +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179924_h field_179924_h +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper slime field_179925_i +FD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper field_179923_j field_179923_j +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom slime field_179461_a +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom field_179459_b field_179459_b +FD net/minecraft/entity/monster/EntitySlime$AISlimeFaceRandom field_179460_c field_179460_c +FD net/minecraft/entity/monster/EntitySpider$GroupData potionEffectId field_111105_a +FD net/minecraft/entity/monster/EntityWitch MODIFIER_UUID field_110184_bp +FD net/minecraft/entity/monster/EntityWitch MODIFIER field_110185_bq +FD net/minecraft/entity/monster/EntityWitch witchAttackTimer field_82200_e +FD net/minecraft/entity/monster/EntityWitch witchDrops field_82199_d +FD net/minecraft/entity/monster/EntityZombie reinforcementChance field_110186_bp +FD net/minecraft/entity/monster/EntityZombie babySpeedBoostUUID field_110187_bq +FD net/minecraft/entity/monster/EntityZombie breakDoor field_146075_bs +FD net/minecraft/entity/monster/EntityZombie conversionTime field_82234_d +FD net/minecraft/entity/monster/EntityZombie isBreakDoorsTaskSet field_146076_bu +FD net/minecraft/entity/monster/EntityZombie zombieWidth field_146074_bv +FD net/minecraft/entity/monster/EntityZombie zombieHeight field_146073_bw +FD net/minecraft/entity/monster/EntityZombie babySpeedBoostModifier field_110188_br +FD net/minecraft/entity/monster/EntityZombie$GroupData isChild field_142048_a +FD net/minecraft/entity/monster/EntityZombie$GroupData isVillager field_142046_b +FD net/minecraft/entity/monster/EntityZombie$GroupData field_142047_c field_142047_c +FD net/minecraft/entity/NpcMerchant theMerchantInventory field_70937_a +FD net/minecraft/entity/NpcMerchant customer field_70935_b +FD net/minecraft/entity/NpcMerchant recipeList field_70936_c +FD net/minecraft/entity/NpcMerchant field_175548_d field_175548_d +FD net/minecraft/entity/passive/EntityVillager areAdditionalTasksSet field_175564_by +FD net/minecraft/entity/passive/EntityVillager villagerInventory field_175560_bz +FD net/minecraft/entity/passive/EntityVillager DEFAULT_TRADE_LIST_MAP field_175561_bA +FD net/minecraft/entity/passive/EntityVillager villageObj field_70954_d +FD net/minecraft/entity/passive/EntityVillager randomTickDivider field_70955_e +FD net/minecraft/entity/passive/EntityVillager isMating field_70952_f +FD net/minecraft/entity/passive/EntityVillager isPlaying field_70953_g +FD net/minecraft/entity/passive/EntityVillager buyingPlayer field_70962_h +FD net/minecraft/entity/passive/EntityVillager buyingList field_70963_i +FD net/minecraft/entity/passive/EntityVillager timeUntilReset field_70961_j +FD net/minecraft/entity/passive/EntityVillager needsInitilization field_70959_by +FD net/minecraft/entity/passive/EntityVillager isWillingToMate field_175565_bs +FD net/minecraft/entity/passive/EntityVillager wealth field_70956_bz +FD net/minecraft/entity/passive/EntityVillager lastBuyingPlayer field_82189_bL +FD net/minecraft/entity/passive/EntityVillager careerId field_175563_bv +FD net/minecraft/entity/passive/EntityVillager careerLevel field_175562_bw +FD net/minecraft/entity/passive/EntityVillager isLookingForHome field_82190_bM +FD net/minecraft/entity/passive/EntityVillager$EmeraldForItems sellItem field_179405_a +FD net/minecraft/entity/passive/EntityVillager$EmeraldForItems price field_179404_b +FD net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds enchantedItemStack field_179407_a +FD net/minecraft/entity/passive/EntityVillager$ListEnchantedItemForEmeralds priceInfo field_179406_b +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem buyingItemStack field_179411_a +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem buyingPriceInfo field_179409_b +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem sellingItemstack field_179410_c +FD net/minecraft/entity/passive/EntityVillager$ItemAndEmeraldToItem field_179408_d field_179408_d +FD net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds itemToBuy field_179403_a +FD net/minecraft/entity/passive/EntityVillager$ListItemForEmeralds priceInfo field_179402_b +FD net/minecraft/entity/player/PlayerCapabilities disableDamage field_75102_a +FD net/minecraft/entity/player/PlayerCapabilities isFlying field_75100_b +FD net/minecraft/entity/player/PlayerCapabilities allowFlying field_75101_c +FD net/minecraft/entity/player/PlayerCapabilities isCreativeMode field_75098_d +FD net/minecraft/entity/player/PlayerCapabilities allowEdit field_75099_e +FD net/minecraft/entity/player/PlayerCapabilities flySpeed field_75096_f +FD net/minecraft/entity/player/PlayerCapabilities walkSpeed field_75097_g +FD net/minecraft/entity/player/InventoryPlayer mainInventory field_70462_a +FD net/minecraft/entity/player/InventoryPlayer armorInventory field_70460_b +FD net/minecraft/entity/player/InventoryPlayer currentItem field_70461_c +FD net/minecraft/entity/player/InventoryPlayer player field_70458_d +FD net/minecraft/entity/player/InventoryPlayer inventoryChanged field_70459_e +FD net/minecraft/entity/player/InventoryPlayer itemStack field_70457_g +FD net/minecraft/entity/player/InventoryPlayer$1 field_96634_a field_96634_a +FD net/minecraft/entity/player/InventoryPlayer$1 field_96633_b field_96633_b +FD net/minecraft/entity/player/EntityPlayer theInventoryEnderChest field_71078_a +FD net/minecraft/entity/player/EntityPlayer sleepTimer field_71076_b +FD net/minecraft/entity/player/EntityPlayer capabilities field_71075_bZ +FD net/minecraft/entity/player/EntityPlayer experienceLevel field_71068_ca +FD net/minecraft/entity/player/EntityPlayer experienceTotal field_71067_cb +FD net/minecraft/entity/player/EntityPlayer experience field_71106_cc +FD net/minecraft/entity/player/EntityPlayer speedOnGround field_71108_cd +FD net/minecraft/entity/player/EntityPlayer speedInAir field_71102_ce +FD net/minecraft/entity/player/EntityPlayer fishEntity field_71104_cf +FD net/minecraft/entity/player/EntityPlayer gameProfile field_146106_i +FD net/minecraft/entity/player/EntityPlayer hasReducedDebug field_175153_bG +FD net/minecraft/entity/player/EntityPlayer renderOffsetY field_71082_cx +FD net/minecraft/entity/player/EntityPlayer inventory field_71071_by +FD net/minecraft/entity/player/EntityPlayer inventoryContainer field_71069_bz +FD net/minecraft/entity/player/EntityPlayer openContainer field_71070_bA +FD net/minecraft/entity/player/EntityPlayer foodStats field_71100_bB +FD net/minecraft/entity/player/EntityPlayer flyToggleTimer field_71101_bC +FD net/minecraft/entity/player/EntityPlayer prevCameraYaw field_71107_bF +FD net/minecraft/entity/player/EntityPlayer cameraYaw field_71109_bG +FD net/minecraft/entity/player/EntityPlayer xpCooldown field_71090_bL +FD net/minecraft/entity/player/EntityPlayer prevChasingPosX field_71091_bM +FD net/minecraft/entity/player/EntityPlayer prevChasingPosY field_71096_bN +FD net/minecraft/entity/player/EntityPlayer prevChasingPosZ field_71097_bO +FD net/minecraft/entity/player/EntityPlayer chasingPosX field_71094_bP +FD net/minecraft/entity/player/EntityPlayer chasingPosY field_71095_bQ +FD net/minecraft/entity/player/EntityPlayer chasingPosZ field_71085_bR +FD net/minecraft/entity/player/EntityPlayer sleeping field_71083_bS +FD net/minecraft/entity/player/EntityPlayer playerLocation field_71081_bT +FD net/minecraft/entity/player/EntityPlayer renderOffsetX field_71079_bU +FD net/minecraft/entity/player/EntityPlayer renderOffsetZ field_71089_bV +FD net/minecraft/entity/player/EntityPlayer spawnChunk field_71077_c +FD net/minecraft/entity/player/EntityPlayer spawnForced field_82248_d +FD net/minecraft/entity/player/EntityPlayer startMinecartRidingCoordinate field_71073_d +FD net/minecraft/entity/player/EntityPlayer xpSeed field_175152_f +FD net/minecraft/entity/player/EntityPlayer itemInUse field_71074_e +FD net/minecraft/entity/player/EntityPlayer itemInUseCount field_71072_f +FD net/minecraft/entity/player/EntityPlayer lastXPSound field_82249_h +FD net/minecraft/entity/player/EntityPlayer$1 field_179420_a field_179420_a +FD net/minecraft/entity/player/EntityPlayer$EnumStatus OK OK +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_POSSIBLE_HERE NOT_POSSIBLE_HERE +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_POSSIBLE_NOW NOT_POSSIBLE_NOW +FD net/minecraft/entity/player/EntityPlayer$EnumStatus TOO_FAR_AWAY TOO_FAR_AWAY +FD net/minecraft/entity/player/EntityPlayer$EnumStatus OTHER_PROBLEM OTHER_PROBLEM +FD net/minecraft/entity/player/EntityPlayer$EnumStatus NOT_SAFE NOT_SAFE +FD net/minecraft/entity/player/EntityPlayer$EnumStatus $VALUES $VALUES +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility FULL FULL +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility SYSTEM SYSTEM +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility HIDDEN HIDDEN +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility ID_LOOKUP field_151432_d +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility chatVisibility field_151433_e +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility resourceKey field_151430_f +FD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility $VALUES $VALUES +FD net/minecraft/entity/player/EnumPlayerModelParts CAPE CAPE +FD net/minecraft/entity/player/EnumPlayerModelParts JACKET JACKET +FD net/minecraft/entity/player/EnumPlayerModelParts LEFT_SLEEVE LEFT_SLEEVE +FD net/minecraft/entity/player/EnumPlayerModelParts RIGHT_SLEEVE RIGHT_SLEEVE +FD net/minecraft/entity/player/EnumPlayerModelParts LEFT_PANTS_LEG LEFT_PANTS_LEG +FD net/minecraft/entity/player/EnumPlayerModelParts RIGHT_PANTS_LEG RIGHT_PANTS_LEG +FD net/minecraft/entity/player/EnumPlayerModelParts HAT HAT +FD net/minecraft/entity/player/EnumPlayerModelParts partId field_179340_h +FD net/minecraft/entity/player/EnumPlayerModelParts partMask field_179341_i +FD net/minecraft/entity/player/EnumPlayerModelParts partName field_179338_j +FD net/minecraft/entity/player/EnumPlayerModelParts field_179339_k field_179339_k +FD net/minecraft/entity/player/EnumPlayerModelParts $VALUES $VALUES +FD net/minecraft/entity/projectile/EntityArrow canBePickedUp field_70251_a +FD net/minecraft/entity/projectile/EntityArrow ticksInGround field_70252_j +FD net/minecraft/entity/projectile/EntityArrow ticksInAir field_70257_an +FD net/minecraft/entity/projectile/EntityArrow damage field_70255_ao +FD net/minecraft/entity/projectile/EntityArrow knockbackStrength field_70256_ap +FD net/minecraft/entity/projectile/EntityArrow arrowShake field_70249_b +FD net/minecraft/entity/projectile/EntityArrow shootingEntity field_70250_c +FD net/minecraft/entity/projectile/EntityArrow xTile field_145791_d +FD net/minecraft/entity/projectile/EntityArrow yTile field_145792_e +FD net/minecraft/entity/projectile/EntityArrow zTile field_145789_f +FD net/minecraft/entity/projectile/EntityArrow inTile field_145790_g +FD net/minecraft/entity/projectile/EntityArrow inData field_70253_h +FD net/minecraft/entity/projectile/EntityArrow inGround field_70254_i +FD net/minecraft/entity/item/EntityEnderEye targetX field_70224_b +FD net/minecraft/entity/item/EntityEnderEye targetY field_70225_c +FD net/minecraft/entity/item/EntityEnderEye targetZ field_70222_d +FD net/minecraft/entity/item/EntityEnderEye despawnTimer field_70223_e +FD net/minecraft/entity/item/EntityEnderEye shatterOrDrop field_70221_f +FD net/minecraft/entity/projectile/EntityFireball shootingEntity field_70235_a +FD net/minecraft/entity/projectile/EntityFireball ticksAlive field_70236_j +FD net/minecraft/entity/projectile/EntityFireball ticksInAir field_70234_an +FD net/minecraft/entity/projectile/EntityFireball accelerationX field_70232_b +FD net/minecraft/entity/projectile/EntityFireball accelerationY field_70233_c +FD net/minecraft/entity/projectile/EntityFireball accelerationZ field_70230_d +FD net/minecraft/entity/projectile/EntityFireball xTile field_145795_e +FD net/minecraft/entity/projectile/EntityFireball yTile field_145793_f +FD net/minecraft/entity/projectile/EntityFireball zTile field_145794_g +FD net/minecraft/entity/projectile/EntityFireball inTile field_145796_h +FD net/minecraft/entity/projectile/EntityFireball inGround field_70238_i +FD net/minecraft/entity/item/EntityFireworkRocket fireworkAge field_92056_a +FD net/minecraft/entity/item/EntityFireworkRocket lifetime field_92055_b +FD net/minecraft/entity/projectile/EntityLargeFireball explosionPower field_92057_e +FD net/minecraft/entity/projectile/EntityThrowable inGround field_174854_a +FD net/minecraft/entity/projectile/EntityThrowable ticksInAir field_70195_i +FD net/minecraft/entity/projectile/EntityThrowable throwableShake field_70191_b +FD net/minecraft/entity/projectile/EntityThrowable xTile field_145788_c +FD net/minecraft/entity/projectile/EntityThrowable yTile field_145786_d +FD net/minecraft/entity/projectile/EntityThrowable zTile field_145787_e +FD net/minecraft/entity/projectile/EntityThrowable inTile field_174853_f +FD net/minecraft/entity/projectile/EntityThrowable thrower field_70192_c +FD net/minecraft/entity/projectile/EntityThrowable throwerName field_85053_h +FD net/minecraft/entity/projectile/EntityThrowable ticksInGround field_70194_h +FD net/minecraft/entity/item/EntityEnderPearl field_181555_c field_181555_c +FD net/minecraft/entity/projectile/EntityPotion potionDamage field_70197_d +FD net/minecraft/util/FoodStats foodLevel field_75127_a +FD net/minecraft/util/FoodStats foodSaturationLevel field_75125_b +FD net/minecraft/util/FoodStats foodExhaustionLevel field_75126_c +FD net/minecraft/util/FoodStats foodTimer field_75123_d +FD net/minecraft/util/FoodStats prevFoodLevel field_75124_e +FD net/minecraft/inventory/Container transactionID field_75150_e +FD net/minecraft/inventory/Container inventoryItemStacks field_75153_a +FD net/minecraft/inventory/Container inventorySlots field_75151_b +FD net/minecraft/inventory/Container windowId field_75152_c +FD net/minecraft/inventory/Container crafters field_75149_d +FD net/minecraft/inventory/Container dragMode field_94535_f +FD net/minecraft/inventory/Container dragEvent field_94536_g +FD net/minecraft/inventory/Container dragSlots field_94537_h +FD net/minecraft/inventory/Container playerList field_75148_f +FD net/minecraft/inventory/ContainerRepair maximumCost field_82854_e +FD net/minecraft/inventory/ContainerRepair logger field_148326_f +FD net/minecraft/inventory/ContainerRepair outputSlot field_82852_f +FD net/minecraft/inventory/ContainerRepair inputSlots field_82853_g +FD net/minecraft/inventory/ContainerRepair theWorld field_82860_h +FD net/minecraft/inventory/ContainerRepair selfPosition field_178156_j +FD net/minecraft/inventory/ContainerRepair materialCost field_82856_l +FD net/minecraft/inventory/ContainerRepair repairedItemName field_82857_m +FD net/minecraft/inventory/ContainerRepair thePlayer field_82855_n +FD net/minecraft/inventory/ContainerRepair$1 field_135010_a field_135010_a +FD net/minecraft/inventory/ContainerRepair$2 field_135071_a field_135071_a +FD net/minecraft/inventory/ContainerRepair$2 field_178174_b field_178174_b +FD net/minecraft/inventory/ContainerRepair$2 field_135068_e field_135068_e +FD net/minecraft/inventory/ContainerBeacon tileBeacon field_82866_e +FD net/minecraft/inventory/ContainerBeacon beaconSlot field_82864_f +FD net/minecraft/inventory/ContainerBeacon$BeaconSlot field_82876_a field_82876_a +FD net/minecraft/inventory/ContainerBrewingStand tileBrewingStand field_75188_e +FD net/minecraft/inventory/ContainerBrewingStand theSlot field_75186_f +FD net/minecraft/inventory/ContainerBrewingStand brewTime field_75187_g +FD net/minecraft/inventory/ContainerBrewingStand$Ingredient field_75226_a field_75226_a +FD net/minecraft/inventory/ContainerBrewingStand$Potion player field_75244_a +FD net/minecraft/inventory/ContainerChest lowerChestInventory field_75155_e +FD net/minecraft/inventory/ContainerChest numRows field_75154_f +FD net/minecraft/inventory/InventoryCrafting stackList field_70466_a +FD net/minecraft/inventory/InventoryCrafting inventoryWidth field_70464_b +FD net/minecraft/inventory/InventoryCrafting inventoryHeight field_174924_c +FD net/minecraft/inventory/InventoryCrafting eventHandler field_70465_c +FD net/minecraft/inventory/ContainerWorkbench craftMatrix field_75162_e +FD net/minecraft/inventory/ContainerWorkbench craftResult field_75160_f +FD net/minecraft/inventory/ContainerWorkbench worldObj field_75161_g +FD net/minecraft/inventory/ContainerWorkbench pos field_178145_h +FD net/minecraft/inventory/ContainerDispenser dispenserInventory field_178146_a +FD net/minecraft/inventory/ContainerEnchantment tableInventory field_75168_e +FD net/minecraft/inventory/ContainerEnchantment xpSeed field_178149_f +FD net/minecraft/inventory/ContainerEnchantment enchantLevels field_75167_g +FD net/minecraft/inventory/ContainerEnchantment enchantmentIds field_178151_h +FD net/minecraft/inventory/ContainerEnchantment worldPointer field_75172_h +FD net/minecraft/inventory/ContainerEnchantment position field_178150_j +FD net/minecraft/inventory/ContainerEnchantment rand field_75169_l +FD net/minecraft/inventory/ContainerEnchantment$1 field_70484_a field_70484_a +FD net/minecraft/inventory/ContainerEnchantment$2 field_75227_a field_75227_a +FD net/minecraft/inventory/ContainerEnchantment$3 field_178172_a field_178172_a +FD net/minecraft/inventory/ContainerFurnace tileFurnace field_75158_e +FD net/minecraft/inventory/ContainerFurnace cookTime field_178152_f +FD net/minecraft/inventory/ContainerFurnace totalCookTime field_178153_g +FD net/minecraft/inventory/ContainerFurnace furnaceBurnTime field_178154_h +FD net/minecraft/inventory/ContainerFurnace currentItemBurnTime field_178155_i +FD net/minecraft/inventory/SlotFurnaceOutput thePlayer field_75229_a +FD net/minecraft/inventory/SlotFurnaceOutput field_75228_b field_75228_b +FD net/minecraft/inventory/ContainerHopper hopperInventory field_94538_a +FD net/minecraft/inventory/ContainerHorseInventory horseInventory field_111243_a +FD net/minecraft/inventory/ContainerHorseInventory theHorse field_111242_f +FD net/minecraft/inventory/ContainerHorseInventory$1 field_111239_a field_111239_a +FD net/minecraft/inventory/ContainerHorseInventory$2 field_111241_a field_111241_a +FD net/minecraft/inventory/ContainerHorseInventory$2 field_111240_b field_111240_b +FD net/minecraft/inventory/ContainerPlayer craftMatrix field_75181_e +FD net/minecraft/inventory/ContainerPlayer craftResult field_75179_f +FD net/minecraft/inventory/ContainerPlayer isLocalWorld field_75180_g +FD net/minecraft/inventory/ContainerPlayer thePlayer field_82862_h +FD net/minecraft/inventory/ContainerPlayer$1 field_75236_a field_75236_a +FD net/minecraft/inventory/ContainerPlayer$1 field_75235_b field_75235_b +FD net/minecraft/inventory/InventoryMerchant theMerchant field_70476_a +FD net/minecraft/inventory/InventoryMerchant theInventory field_70474_b +FD net/minecraft/inventory/InventoryMerchant thePlayer field_70475_c +FD net/minecraft/inventory/InventoryMerchant currentRecipe field_70472_d +FD net/minecraft/inventory/InventoryMerchant currentRecipeIndex field_70473_e +FD net/minecraft/inventory/ContainerMerchant theMerchant field_75178_e +FD net/minecraft/inventory/ContainerMerchant merchantInventory field_75176_f +FD net/minecraft/inventory/ContainerMerchant theWorld field_75177_g +FD net/minecraft/inventory/SlotMerchantResult theMerchantInventory field_75233_a +FD net/minecraft/inventory/SlotMerchantResult thePlayer field_75232_b +FD net/minecraft/inventory/SlotMerchantResult field_75231_g field_75231_g +FD net/minecraft/inventory/SlotMerchantResult theMerchant field_75234_h +FD net/minecraft/inventory/InventoryEnderChest associatedChest field_70488_a +FD net/minecraft/inventory/InventoryCraftResult stackResult field_70467_a +FD net/minecraft/inventory/SlotCrafting craftMatrix field_75239_a +FD net/minecraft/inventory/SlotCrafting thePlayer field_75238_b +FD net/minecraft/inventory/SlotCrafting amountCrafted field_75237_g +FD net/minecraft/inventory/Slot slotIndex field_75225_a +FD net/minecraft/inventory/Slot inventory field_75224_c +FD net/minecraft/inventory/Slot slotNumber field_75222_d +FD net/minecraft/inventory/Slot xDisplayPosition field_75223_e +FD net/minecraft/inventory/Slot yDisplayPosition field_75221_f +FD net/minecraft/item/ItemArmor EMPTY_SLOT_NAMES field_94603_a +FD net/minecraft/item/ItemArmor armorType field_77881_a +FD net/minecraft/item/ItemArmor damageReduceAmount field_77879_b +FD net/minecraft/item/ItemArmor renderIndex field_77880_c +FD net/minecraft/item/ItemArmor maxDamageArray field_77882_bY +FD net/minecraft/item/ItemArmor dispenserBehavior field_96605_cw +FD net/minecraft/item/ItemArmor material field_77878_bZ +FD net/minecraft/item/ItemArmor$ArmorMaterial LEATHER LEATHER +FD net/minecraft/item/ItemArmor$ArmorMaterial CHAIN CHAIN +FD net/minecraft/item/ItemArmor$ArmorMaterial IRON IRON +FD net/minecraft/item/ItemArmor$ArmorMaterial GOLD GOLD +FD net/minecraft/item/ItemArmor$ArmorMaterial DIAMOND DIAMOND +FD net/minecraft/item/ItemArmor$ArmorMaterial name field_179243_f +FD net/minecraft/item/ItemArmor$ArmorMaterial maxDamageFactor field_78048_f +FD net/minecraft/item/ItemArmor$ArmorMaterial damageReductionAmountArray field_78049_g +FD net/minecraft/item/ItemArmor$ArmorMaterial enchantability field_78055_h +FD net/minecraft/item/ItemArmor$ArmorMaterial $VALUES $VALUES +FD net/minecraft/item/ItemAxe EFFECTIVE_ON field_150917_c +FD net/minecraft/item/ItemBlock block field_150939_a +FD net/minecraft/item/ItemReed block field_150935_a +FD net/minecraft/item/ItemBow bowPullIconNameArray field_94601_a +FD net/minecraft/item/ItemBucket isFull field_77876_a +FD net/minecraft/creativetab/CreativeTabs creativeTabArray field_78032_a +FD net/minecraft/creativetab/CreativeTabs tabBlock field_78030_b +FD net/minecraft/creativetab/CreativeTabs tabDecorations field_78031_c +FD net/minecraft/creativetab/CreativeTabs tabRedstone field_78028_d +FD net/minecraft/creativetab/CreativeTabs tabTransport field_78029_e +FD net/minecraft/creativetab/CreativeTabs tabMisc field_78026_f +FD net/minecraft/creativetab/CreativeTabs tabAllSearch field_78027_g +FD net/minecraft/creativetab/CreativeTabs tabFood field_78039_h +FD net/minecraft/creativetab/CreativeTabs tabTools field_78040_i +FD net/minecraft/creativetab/CreativeTabs tabCombat field_78037_j +FD net/minecraft/creativetab/CreativeTabs tabBrewing field_78038_k +FD net/minecraft/creativetab/CreativeTabs tabMaterials field_78035_l +FD net/minecraft/creativetab/CreativeTabs tabInventory field_78036_m +FD net/minecraft/creativetab/CreativeTabs tabIndex field_78033_n +FD net/minecraft/creativetab/CreativeTabs tabLabel field_78034_o +FD net/minecraft/creativetab/CreativeTabs theTexture field_78043_p +FD net/minecraft/creativetab/CreativeTabs hasScrollbar field_78042_q +FD net/minecraft/creativetab/CreativeTabs drawTitle field_78041_r +FD net/minecraft/creativetab/CreativeTabs enchantmentTypes field_111230_s +FD net/minecraft/creativetab/CreativeTabs iconItemStack field_151245_t +FD net/minecraft/item/ItemTool efficiencyOnProperMaterial field_77864_a +FD net/minecraft/item/ItemTool toolMaterial field_77862_b +FD net/minecraft/item/ItemTool effectiveBlocks field_150914_c +FD net/minecraft/item/ItemTool damageVsEntity field_77865_bY +FD net/minecraft/item/ItemDoor block field_179236_a +FD net/minecraft/item/EnumDyeColor WHITE WHITE +FD net/minecraft/item/EnumDyeColor ORANGE ORANGE +FD net/minecraft/item/EnumDyeColor MAGENTA MAGENTA +FD net/minecraft/item/EnumDyeColor LIGHT_BLUE LIGHT_BLUE +FD net/minecraft/item/EnumDyeColor YELLOW YELLOW +FD net/minecraft/item/EnumDyeColor LIME LIME +FD net/minecraft/item/EnumDyeColor PINK PINK +FD net/minecraft/item/EnumDyeColor GRAY GRAY +FD net/minecraft/item/EnumDyeColor SILVER SILVER +FD net/minecraft/item/EnumDyeColor CYAN CYAN +FD net/minecraft/item/EnumDyeColor PURPLE PURPLE +FD net/minecraft/item/EnumDyeColor BLUE BLUE +FD net/minecraft/item/EnumDyeColor BROWN BROWN +FD net/minecraft/item/EnumDyeColor GREEN GREEN +FD net/minecraft/item/EnumDyeColor RED RED +FD net/minecraft/item/EnumDyeColor BLACK BLACK +FD net/minecraft/item/EnumDyeColor META_LOOKUP field_176790_q +FD net/minecraft/item/EnumDyeColor DYE_DMG_LOOKUP field_176789_r +FD net/minecraft/item/EnumDyeColor meta field_176788_s +FD net/minecraft/item/EnumDyeColor dyeDamage field_176787_t +FD net/minecraft/item/EnumDyeColor name field_176786_u +FD net/minecraft/item/EnumDyeColor unlocalizedName field_176785_v +FD net/minecraft/item/EnumDyeColor mapColor field_176784_w +FD net/minecraft/item/EnumDyeColor chatColor field_176793_x +FD net/minecraft/item/EnumDyeColor $VALUES $VALUES +FD net/minecraft/item/ItemDye dyeColors field_150922_c +FD net/minecraft/item/ItemFishFood cooked field_150907_b +FD net/minecraft/item/ItemFishFood$FishType COD COD +FD net/minecraft/item/ItemFishFood$FishType SALMON SALMON +FD net/minecraft/item/ItemFishFood$FishType CLOWNFISH CLOWNFISH +FD net/minecraft/item/ItemFishFood$FishType PUFFERFISH PUFFERFISH +FD net/minecraft/item/ItemFishFood$FishType META_LOOKUP field_150983_e +FD net/minecraft/item/ItemFishFood$FishType meta field_150980_f +FD net/minecraft/item/ItemFishFood$FishType unlocalizedName field_150981_g +FD net/minecraft/item/ItemFishFood$FishType uncookedHealAmount field_150991_j +FD net/minecraft/item/ItemFishFood$FishType uncookedSaturationModifier field_150992_k +FD net/minecraft/item/ItemFishFood$FishType cookedHealAmount field_150989_l +FD net/minecraft/item/ItemFishFood$FishType cookedSaturationModifier field_150990_m +FD net/minecraft/item/ItemFishFood$FishType cookable field_150987_n +FD net/minecraft/item/ItemFishFood$FishType $VALUES $VALUES +FD net/minecraft/item/ItemFood itemUseDuration field_77855_a +FD net/minecraft/item/ItemFood healAmount field_77853_b +FD net/minecraft/item/ItemFood saturationModifier field_77854_c +FD net/minecraft/item/ItemFood isWolfsFavoriteMeat field_77856_bY +FD net/minecraft/item/ItemFood alwaysEdible field_77852_bZ +FD net/minecraft/item/ItemFood potionId field_77851_ca +FD net/minecraft/item/ItemFood potionDuration field_77850_cb +FD net/minecraft/item/ItemFood potionAmplifier field_77857_cc +FD net/minecraft/item/ItemFood potionEffectProbability field_77858_cd +FD net/minecraft/item/ItemHangingEntity hangingEntityClass field_82811_a +FD net/minecraft/item/ItemHoe theToolMaterial field_77843_a +FD net/minecraft/item/ItemHoe$1 field_179590_a field_179590_a +FD net/minecraft/item/Item BLOCK_TO_ITEM field_179220_a +FD net/minecraft/item/Item tabToDisplayOn field_77701_a +FD net/minecraft/item/Item maxDamage field_77699_b +FD net/minecraft/item/Item containerItem field_77700_c +FD net/minecraft/item/Item itemRegistry field_150901_e +FD net/minecraft/item/Item itemModifierUUID field_111210_e +FD net/minecraft/item/Item itemRand field_77697_d +FD net/minecraft/item/Item maxStackSize field_77777_bU +FD net/minecraft/item/Item bFull3D field_77789_bW +FD net/minecraft/item/Item hasSubtypes field_77787_bX +FD net/minecraft/item/Item potionEffect field_77785_bY +FD net/minecraft/item/Item unlocalizedName field_77774_bZ +FD net/minecraft/item/Item$ToolMaterial WOOD WOOD +FD net/minecraft/item/Item$ToolMaterial STONE STONE +FD net/minecraft/item/Item$ToolMaterial IRON IRON +FD net/minecraft/item/Item$ToolMaterial EMERALD EMERALD +FD net/minecraft/item/Item$ToolMaterial GOLD GOLD +FD net/minecraft/item/Item$ToolMaterial harvestLevel field_78001_f +FD net/minecraft/item/Item$ToolMaterial maxUses field_78002_g +FD net/minecraft/item/Item$ToolMaterial efficiencyOnProperMaterial field_78010_h +FD net/minecraft/item/Item$ToolMaterial damageVsEntity field_78011_i +FD net/minecraft/item/Item$ToolMaterial enchantability field_78008_j +FD net/minecraft/item/Item$ToolMaterial $VALUES $VALUES +FD net/minecraft/item/ItemStack DECIMALFORMAT field_111284_a +FD net/minecraft/item/ItemStack stackSize field_77994_a +FD net/minecraft/item/ItemStack animationsToGo field_77992_b +FD net/minecraft/item/ItemStack item field_151002_e +FD net/minecraft/item/ItemStack stackTagCompound field_77990_d +FD net/minecraft/item/ItemStack itemDamage field_77991_e +FD net/minecraft/item/ItemStack itemFrame field_82843_f +FD net/minecraft/item/ItemStack canDestroyCacheBlock field_179552_h +FD net/minecraft/item/ItemStack canDestroyCacheResult field_179553_i +FD net/minecraft/item/ItemStack canPlaceOnCacheBlock field_179550_j +FD net/minecraft/item/ItemStack canPlaceOnCacheResult field_179551_k +FD net/minecraft/init/Items mushroom_stew field_151009_A +FD net/minecraft/init/Items golden_sword field_151010_B +FD net/minecraft/init/Items golden_shovel field_151011_C +FD net/minecraft/init/Items golden_pickaxe field_151005_D +FD net/minecraft/init/Items golden_axe field_151006_E +FD net/minecraft/init/Items string field_151007_F +FD net/minecraft/init/Items feather field_151008_G +FD net/minecraft/init/Items gunpowder field_151016_H +FD net/minecraft/init/Items wooden_hoe field_151017_I +FD net/minecraft/init/Items stone_hoe field_151018_J +FD net/minecraft/init/Items iron_hoe field_151019_K +FD net/minecraft/init/Items diamond_hoe field_151012_L +FD net/minecraft/init/Items golden_hoe field_151013_M +FD net/minecraft/init/Items wheat_seeds field_151014_N +FD net/minecraft/init/Items wheat field_151015_O +FD net/minecraft/init/Items bread field_151025_P +FD net/minecraft/init/Items leather_helmet field_151024_Q +FD net/minecraft/init/Items leather_chestplate field_151027_R +FD net/minecraft/init/Items leather_leggings field_151026_S +FD net/minecraft/init/Items leather_boots field_151021_T +FD net/minecraft/init/Items chainmail_helmet field_151020_U +FD net/minecraft/init/Items chainmail_chestplate field_151023_V +FD net/minecraft/init/Items chainmail_leggings field_151022_W +FD net/minecraft/init/Items chainmail_boots field_151029_X +FD net/minecraft/init/Items iron_helmet field_151028_Y +FD net/minecraft/init/Items iron_chestplate field_151030_Z +FD net/minecraft/init/Items iron_shovel field_151037_a +FD net/minecraft/init/Items saddle field_151141_av +FD net/minecraft/init/Items iron_door field_151139_aw +FD net/minecraft/init/Items redstone field_151137_ax +FD net/minecraft/init/Items snowball field_151126_ay +FD net/minecraft/init/Items boat field_151124_az +FD net/minecraft/init/Items leather field_151116_aA +FD net/minecraft/init/Items milk_bucket field_151117_aB +FD net/minecraft/init/Items brick field_151118_aC +FD net/minecraft/init/Items clay_ball field_151119_aD +FD net/minecraft/init/Items reeds field_151120_aE +FD net/minecraft/init/Items paper field_151121_aF +FD net/minecraft/init/Items book field_151122_aG +FD net/minecraft/init/Items slime_ball field_151123_aH +FD net/minecraft/init/Items chest_minecart field_151108_aI +FD net/minecraft/init/Items furnace_minecart field_151109_aJ +FD net/minecraft/init/Items egg field_151110_aK +FD net/minecraft/init/Items compass field_151111_aL +FD net/minecraft/init/Items fishing_rod field_151112_aM +FD net/minecraft/init/Items clock field_151113_aN +FD net/minecraft/init/Items glowstone_dust field_151114_aO +FD net/minecraft/init/Items fish field_151115_aP +FD net/minecraft/init/Items cooked_fish field_179566_aV +FD net/minecraft/init/Items dye field_151100_aR +FD net/minecraft/init/Items bone field_151103_aS +FD net/minecraft/init/Items sugar field_151102_aT +FD net/minecraft/init/Items cake field_151105_aU +FD net/minecraft/init/Items iron_leggings field_151165_aa +FD net/minecraft/init/Items iron_boots field_151167_ab +FD net/minecraft/init/Items diamond_helmet field_151161_ac +FD net/minecraft/init/Items diamond_chestplate field_151163_ad +FD net/minecraft/init/Items diamond_leggings field_151173_ae +FD net/minecraft/init/Items diamond_boots field_151175_af +FD net/minecraft/init/Items golden_helmet field_151169_ag +FD net/minecraft/init/Items golden_chestplate field_151171_ah +FD net/minecraft/init/Items golden_leggings field_151149_ai +FD net/minecraft/init/Items golden_boots field_151151_aj +FD net/minecraft/init/Items flint field_151145_ak +FD net/minecraft/init/Items porkchop field_151147_al +FD net/minecraft/init/Items cooked_porkchop field_151157_am +FD net/minecraft/init/Items painting field_151159_an +FD net/minecraft/init/Items golden_apple field_151153_ao +FD net/minecraft/init/Items sign field_151155_ap +FD net/minecraft/init/Items oak_door field_179570_aq +FD net/minecraft/init/Items spruce_door field_179569_ar +FD net/minecraft/init/Items birch_door field_179568_as +FD net/minecraft/init/Items jungle_door field_179567_at +FD net/minecraft/init/Items acacia_door field_179572_au +FD net/minecraft/init/Items dark_oak_door field_179571_av +FD net/minecraft/init/Items bucket field_151133_ar +FD net/minecraft/init/Items water_bucket field_151131_as +FD net/minecraft/init/Items lava_bucket field_151129_at +FD net/minecraft/init/Items minecart field_151143_au +FD net/minecraft/init/Items iron_pickaxe field_151035_b +FD net/minecraft/init/Items glass_bottle field_151069_bo +FD net/minecraft/init/Items spider_eye field_151070_bp +FD net/minecraft/init/Items fermented_spider_eye field_151071_bq +FD net/minecraft/init/Items blaze_powder field_151065_br +FD net/minecraft/init/Items magma_cream field_151064_bs +FD net/minecraft/init/Items brewing_stand field_151067_bt +FD net/minecraft/init/Items cauldron field_151066_bu +FD net/minecraft/init/Items ender_eye field_151061_bv +FD net/minecraft/init/Items speckled_melon field_151060_bw +FD net/minecraft/init/Items spawn_egg field_151063_bx +FD net/minecraft/init/Items experience_bottle field_151062_by +FD net/minecraft/init/Items fire_charge field_151059_bz +FD net/minecraft/init/Items writable_book field_151099_bA +FD net/minecraft/init/Items written_book field_151164_bB +FD net/minecraft/init/Items emerald field_151166_bC +FD net/minecraft/init/Items item_frame field_151160_bD +FD net/minecraft/init/Items flower_pot field_151162_bE +FD net/minecraft/init/Items carrot field_151172_bF +FD net/minecraft/init/Items potato field_151174_bG +FD net/minecraft/init/Items baked_potato field_151168_bH +FD net/minecraft/init/Items poisonous_potato field_151170_bI +FD net/minecraft/init/Items map field_151148_bJ +FD net/minecraft/init/Items golden_carrot field_151150_bK +FD net/minecraft/init/Items skull field_151144_bL +FD net/minecraft/init/Items carrot_on_a_stick field_151146_bM +FD net/minecraft/init/Items nether_star field_151156_bN +FD net/minecraft/init/Items bed field_151104_aV +FD net/minecraft/init/Items repeater field_151107_aW +FD net/minecraft/init/Items cookie field_151106_aX +FD net/minecraft/init/Items filled_map field_151098_aY +FD net/minecraft/init/Items shears field_151097_aZ +FD net/minecraft/init/Items melon field_151127_ba +FD net/minecraft/init/Items pumpkin_seeds field_151080_bb +FD net/minecraft/init/Items melon_seeds field_151081_bc +FD net/minecraft/init/Items beef field_151082_bd +FD net/minecraft/init/Items cooked_beef field_151083_be +FD net/minecraft/init/Items chicken field_151076_bf +FD net/minecraft/init/Items cooked_chicken field_151077_bg +FD net/minecraft/init/Items mutton field_179561_bm +FD net/minecraft/init/Items cooked_mutton field_179557_bn +FD net/minecraft/init/Items rabbit field_179558_bo +FD net/minecraft/init/Items cooked_rabbit field_179559_bp +FD net/minecraft/init/Items rabbit_stew field_179560_bq +FD net/minecraft/init/Items rabbit_foot field_179556_br +FD net/minecraft/init/Items rabbit_hide field_179555_bs +FD net/minecraft/init/Items rotten_flesh field_151078_bh +FD net/minecraft/init/Items ender_pearl field_151079_bi +FD net/minecraft/init/Items blaze_rod field_151072_bj +FD net/minecraft/init/Items ghast_tear field_151073_bk +FD net/minecraft/init/Items gold_nugget field_151074_bl +FD net/minecraft/init/Items nether_wart field_151075_bm +FD net/minecraft/init/Items potionitem field_151068_bn +FD net/minecraft/init/Items iron_axe field_151036_c +FD net/minecraft/init/Items record_11 field_151086_cn +FD net/minecraft/init/Items record_wait field_151084_co +FD net/minecraft/init/Items prismarine_shard field_179562_cC +FD net/minecraft/init/Items prismarine_crystals field_179563_cD +FD net/minecraft/init/Items banner field_179564_cE +FD net/minecraft/init/Items pumpkin_pie field_151158_bO +FD net/minecraft/init/Items fireworks field_151152_bP +FD net/minecraft/init/Items firework_charge field_151154_bQ +FD net/minecraft/init/Items enchanted_book field_151134_bR +FD net/minecraft/init/Items comparator field_151132_bS +FD net/minecraft/init/Items netherbrick field_151130_bT +FD net/minecraft/init/Items quartz field_151128_bU +FD net/minecraft/init/Items tnt_minecart field_151142_bV +FD net/minecraft/init/Items hopper_minecart field_151140_bW +FD net/minecraft/init/Items armor_stand field_179565_cj +FD net/minecraft/init/Items iron_horse_armor field_151138_bX +FD net/minecraft/init/Items golden_horse_armor field_151136_bY +FD net/minecraft/init/Items diamond_horse_armor field_151125_bZ +FD net/minecraft/init/Items lead field_151058_ca +FD net/minecraft/init/Items name_tag field_151057_cb +FD net/minecraft/init/Items command_block_minecart field_151095_cc +FD net/minecraft/init/Items record_13 field_151096_cd +FD net/minecraft/init/Items record_cat field_151093_ce +FD net/minecraft/init/Items record_blocks field_151094_cf +FD net/minecraft/init/Items record_chirp field_151091_cg +FD net/minecraft/init/Items record_far field_151092_ch +FD net/minecraft/init/Items record_mall field_151089_ci +FD net/minecraft/init/Items record_mellohi field_151090_cj +FD net/minecraft/init/Items record_stal field_151087_ck +FD net/minecraft/init/Items record_strad field_151088_cl +FD net/minecraft/init/Items record_ward field_151085_cm +FD net/minecraft/init/Items flint_and_steel field_151033_d +FD net/minecraft/init/Items apple field_151034_e +FD net/minecraft/init/Items bow field_151031_f +FD net/minecraft/init/Items arrow field_151032_g +FD net/minecraft/init/Items coal field_151044_h +FD net/minecraft/init/Items diamond field_151045_i +FD net/minecraft/init/Items iron_ingot field_151042_j +FD net/minecraft/init/Items gold_ingot field_151043_k +FD net/minecraft/init/Items iron_sword field_151040_l +FD net/minecraft/init/Items wooden_sword field_151041_m +FD net/minecraft/init/Items wooden_shovel field_151038_n +FD net/minecraft/init/Items wooden_pickaxe field_151039_o +FD net/minecraft/init/Items wooden_axe field_151053_p +FD net/minecraft/init/Items stone_sword field_151052_q +FD net/minecraft/init/Items stone_shovel field_151051_r +FD net/minecraft/init/Items stone_pickaxe field_151050_s +FD net/minecraft/init/Items stone_axe field_151049_t +FD net/minecraft/init/Items diamond_sword field_151048_u +FD net/minecraft/init/Items diamond_shovel field_151047_v +FD net/minecraft/init/Items diamond_pickaxe field_151046_w +FD net/minecraft/init/Items diamond_axe field_151056_x +FD net/minecraft/init/Items stick field_151055_y +FD net/minecraft/init/Items bowl field_151054_z +FD net/minecraft/item/ItemLeaves leaves field_150940_b +FD net/minecraft/item/ItemMinecart dispenserMinecartBehavior field_96602_b +FD net/minecraft/item/ItemMinecart minecartType field_77841_a +FD net/minecraft/item/ItemMinecart$1 behaviourDefaultDispenseItem field_96465_b +FD net/minecraft/item/ItemMultiTexture theBlock field_179227_b +FD net/minecraft/item/ItemMultiTexture nameFunction field_179228_c +FD net/minecraft/item/ItemMultiTexture$1 field_179542_a field_179542_a +FD net/minecraft/item/ItemPickaxe EFFECTIVE_ON field_150915_c +FD net/minecraft/item/ItemPotion effectCache field_77836_a +FD net/minecraft/item/ItemPotion SUB_ITEMS_CACHE field_77835_b +FD net/minecraft/item/EnumRarity COMMON COMMON +FD net/minecraft/item/EnumRarity UNCOMMON UNCOMMON +FD net/minecraft/item/EnumRarity RARE RARE +FD net/minecraft/item/EnumRarity EPIC EPIC +FD net/minecraft/item/EnumRarity rarityColor field_77937_e +FD net/minecraft/item/EnumRarity rarityName field_77934_f +FD net/minecraft/item/EnumRarity $VALUES $VALUES +FD net/minecraft/item/ItemRecord recordName field_150929_a +FD net/minecraft/item/ItemRecord RECORDS field_150928_b +FD net/minecraft/item/ItemSeedFood crops field_150908_b +FD net/minecraft/item/ItemSeedFood soilId field_82809_c +FD net/minecraft/item/ItemSeeds crops field_150925_a +FD net/minecraft/item/ItemSeeds soilBlockID field_77838_b +FD net/minecraft/item/ItemSpade EFFECTIVE_ON field_150916_c +FD net/minecraft/item/ItemSkull skullTypes field_82807_a +FD net/minecraft/item/ItemSlab singleSlab field_150949_c +FD net/minecraft/item/ItemSlab doubleSlab field_179226_c +FD net/minecraft/item/ItemSword attackDamage field_150934_a +FD net/minecraft/item/ItemSword material field_150933_b +FD net/minecraft/item/ItemColored coloredBlock field_150944_b +FD net/minecraft/item/ItemColored subtypeNames field_150945_c +FD net/minecraft/item/EnumAction NONE NONE +FD net/minecraft/item/EnumAction EAT EAT +FD net/minecraft/item/EnumAction DRINK DRINK +FD net/minecraft/item/EnumAction BLOCK BLOCK +FD net/minecraft/item/EnumAction BOW BOW +FD net/minecraft/item/EnumAction $VALUES $VALUES +FD net/minecraft/potion/PotionHelper unusedString field_77924_a +FD net/minecraft/potion/PotionHelper sugarEffect field_77922_b +FD net/minecraft/potion/PotionHelper ghastTearEffect field_77923_c +FD net/minecraft/potion/PotionHelper spiderEyeEffect field_77920_d +FD net/minecraft/potion/PotionHelper fermentedSpiderEyeEffect field_77921_e +FD net/minecraft/potion/PotionHelper speckledMelonEffect field_77918_f +FD net/minecraft/potion/PotionHelper blazePowderEffect field_77919_g +FD net/minecraft/potion/PotionHelper magmaCreamEffect field_77931_h +FD net/minecraft/potion/PotionHelper redstoneEffect field_77932_i +FD net/minecraft/potion/PotionHelper glowstoneEffect field_77929_j +FD net/minecraft/potion/PotionHelper gunpowderEffect field_77930_k +FD net/minecraft/potion/PotionHelper goldenCarrotEffect field_82818_l +FD net/minecraft/potion/PotionHelper pufferfishEffect field_151423_m +FD net/minecraft/potion/PotionHelper rabbitFootEffect field_179538_n +FD net/minecraft/potion/PotionHelper potionRequirements field_179539_o +FD net/minecraft/potion/PotionHelper potionAmplifiers field_179540_p +FD net/minecraft/potion/PotionHelper DATAVALUE_COLORS field_77925_n +FD net/minecraft/potion/PotionHelper potionPrefixes field_77926_o +FD net/minecraft/item/crafting/RecipesArmor recipePatterns field_77611_a +FD net/minecraft/item/crafting/RecipesArmor recipeItems field_77610_b +FD net/minecraft/item/crafting/RecipeFireworks field_92102_a field_92102_a +FD net/minecraft/item/crafting/FurnaceRecipes smeltingBase field_77606_a +FD net/minecraft/item/crafting/FurnaceRecipes smeltingList field_77604_b +FD net/minecraft/item/crafting/FurnaceRecipes experienceList field_77605_c +FD net/minecraft/item/crafting/RecipesIngots recipeItems field_77591_a +FD net/minecraft/item/crafting/CraftingManager instance field_77598_a +FD net/minecraft/item/crafting/CraftingManager recipes field_77597_b +FD net/minecraft/item/crafting/CraftingManager$1 field_77582_a field_77582_a +FD net/minecraft/item/crafting/ShapedRecipes recipeWidth field_77576_b +FD net/minecraft/item/crafting/ShapedRecipes recipeHeight field_77577_c +FD net/minecraft/item/crafting/ShapedRecipes recipeItems field_77574_d +FD net/minecraft/item/crafting/ShapedRecipes recipeOutput field_77575_e +FD net/minecraft/item/crafting/ShapedRecipes copyIngredientNBT field_92101_f +FD net/minecraft/item/crafting/ShapelessRecipes recipeOutput field_77580_a +FD net/minecraft/item/crafting/ShapelessRecipes recipeItems field_77579_b +FD net/minecraft/item/crafting/RecipesTools recipePatterns field_77588_a +FD net/minecraft/item/crafting/RecipesTools recipeItems field_77587_b +FD net/minecraft/item/crafting/RecipesWeapons recipePatterns field_77585_a +FD net/minecraft/item/crafting/RecipesWeapons recipeItems field_77584_b +FD net/minecraft/enchantment/EnchantmentDamage protectionName field_77359_A +FD net/minecraft/enchantment/EnchantmentDamage baseEnchantability field_77360_B +FD net/minecraft/enchantment/EnchantmentDamage levelEnchantability field_77362_C +FD net/minecraft/enchantment/EnchantmentDamage thresholdEnchantability field_77358_D +FD net/minecraft/enchantment/EnchantmentDamage damageType field_77361_a +FD net/minecraft/enchantment/Enchantment lure field_151369_A +FD net/minecraft/enchantment/Enchantment effectId field_77352_x +FD net/minecraft/enchantment/Enchantment type field_77351_y +FD net/minecraft/enchantment/Enchantment name field_77350_z +FD net/minecraft/enchantment/Enchantment locationEnchantments field_180307_E +FD net/minecraft/enchantment/Enchantment weight field_77333_a +FD net/minecraft/enchantment/Enchantment enchantmentsList field_180311_a +FD net/minecraft/enchantment/Enchantment enchantmentsBookList field_77331_b +FD net/minecraft/enchantment/Enchantment protection field_180310_c +FD net/minecraft/enchantment/Enchantment fireProtection field_77329_d +FD net/minecraft/enchantment/Enchantment featherFalling field_180309_e +FD net/minecraft/enchantment/Enchantment blastProtection field_77327_f +FD net/minecraft/enchantment/Enchantment projectileProtection field_180308_g +FD net/minecraft/enchantment/Enchantment respiration field_180317_h +FD net/minecraft/enchantment/Enchantment aquaAffinity field_77341_i +FD net/minecraft/enchantment/Enchantment thorns field_92091_k +FD net/minecraft/enchantment/Enchantment depthStrider field_180316_k +FD net/minecraft/enchantment/Enchantment sharpness field_180314_l +FD net/minecraft/enchantment/Enchantment smite field_180315_m +FD net/minecraft/enchantment/Enchantment baneOfArthropods field_180312_n +FD net/minecraft/enchantment/Enchantment knockback field_180313_o +FD net/minecraft/enchantment/Enchantment fireAspect field_77334_n +FD net/minecraft/enchantment/Enchantment looting field_77335_o +FD net/minecraft/enchantment/Enchantment efficiency field_77349_p +FD net/minecraft/enchantment/Enchantment silkTouch field_77348_q +FD net/minecraft/enchantment/Enchantment unbreaking field_77347_r +FD net/minecraft/enchantment/Enchantment fortune field_77346_s +FD net/minecraft/enchantment/Enchantment power field_77345_t +FD net/minecraft/enchantment/Enchantment punch field_77344_u +FD net/minecraft/enchantment/Enchantment flame field_77343_v +FD net/minecraft/enchantment/Enchantment infinity field_77342_w +FD net/minecraft/enchantment/Enchantment luckOfTheSea field_151370_z +FD net/minecraft/enchantment/EnumEnchantmentType ALL ALL +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR ARMOR +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_FEET ARMOR_FEET +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_LEGS ARMOR_LEGS +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_TORSO ARMOR_TORSO +FD net/minecraft/enchantment/EnumEnchantmentType ARMOR_HEAD ARMOR_HEAD +FD net/minecraft/enchantment/EnumEnchantmentType WEAPON WEAPON +FD net/minecraft/enchantment/EnumEnchantmentType DIGGER DIGGER +FD net/minecraft/enchantment/EnumEnchantmentType FISHING_ROD FISHING_ROD +FD net/minecraft/enchantment/EnumEnchantmentType BREAKABLE BREAKABLE +FD net/minecraft/enchantment/EnumEnchantmentType BOW BOW +FD net/minecraft/enchantment/EnumEnchantmentType $VALUES $VALUES +FD net/minecraft/enchantment/EnchantmentHelper enchantmentRand field_77522_a +FD net/minecraft/enchantment/EnchantmentHelper enchantmentModifierDamage field_77520_b +FD net/minecraft/enchantment/EnchantmentHelper enchantmentModifierLiving field_77521_c +FD net/minecraft/enchantment/EnchantmentHelper ENCHANTMENT_ITERATOR_HURT field_151388_d +FD net/minecraft/enchantment/EnchantmentHelper ENCHANTMENT_ITERATOR_DAMAGE field_151389_e +FD net/minecraft/enchantment/EnchantmentHelper$DamageIterator user field_151366_a +FD net/minecraft/enchantment/EnchantmentHelper$DamageIterator target field_151365_b +FD net/minecraft/enchantment/EnchantmentHelper$HurtIterator user field_151364_a +FD net/minecraft/enchantment/EnchantmentHelper$HurtIterator attacker field_151363_b +FD net/minecraft/enchantment/EnchantmentHelper$ModifierLiving livingModifier field_77495_a +FD net/minecraft/enchantment/EnchantmentHelper$ModifierLiving entityLiving field_77494_b +FD net/minecraft/enchantment/EnchantmentHelper$ModifierDamage damageModifier field_77497_a +FD net/minecraft/enchantment/EnchantmentHelper$ModifierDamage source field_77496_b +FD net/minecraft/enchantment/EnchantmentData enchantmentobj field_76302_b +FD net/minecraft/enchantment/EnchantmentData enchantmentLevel field_76303_c +FD net/minecraft/enchantment/EnchantmentProtection protectionName field_77354_A +FD net/minecraft/enchantment/EnchantmentProtection baseEnchantability field_77355_B +FD net/minecraft/enchantment/EnchantmentProtection levelEnchantability field_77357_C +FD net/minecraft/enchantment/EnchantmentProtection thresholdEnchantability field_77353_D +FD net/minecraft/enchantment/EnchantmentProtection protectionType field_77356_a +FD net/minecraft/village/MerchantRecipe itemToBuy field_77403_a +FD net/minecraft/village/MerchantRecipe secondItemToBuy field_77401_b +FD net/minecraft/village/MerchantRecipe itemToSell field_77402_c +FD net/minecraft/village/MerchantRecipe toolUses field_77400_d +FD net/minecraft/village/MerchantRecipe maxTradeUses field_82786_e +FD net/minecraft/village/MerchantRecipe rewardsExp field_180323_f +FD net/minecraft/command/server/CommandBlockLogic timestampFormat field_145766_a +FD net/minecraft/command/server/CommandBlockLogic successCount field_145764_b +FD net/minecraft/command/server/CommandBlockLogic trackOutput field_145765_c +FD net/minecraft/command/server/CommandBlockLogic lastOutput field_145762_d +FD net/minecraft/command/server/CommandBlockLogic commandStored field_145763_e +FD net/minecraft/command/server/CommandBlockLogic customName field_145761_f +FD net/minecraft/command/server/CommandBlockLogic resultStats field_175575_g +FD net/minecraft/command/server/CommandBlockLogic$1 field_180325_a field_180325_a +FD net/minecraft/command/server/CommandBlockLogic$2 field_180327_a field_180327_a +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnDelay field_98286_b +FD net/minecraft/tileentity/MobSpawnerBaseLogic mobID field_98288_a +FD net/minecraft/tileentity/MobSpawnerBaseLogic minecartToSpawn field_98285_e +FD net/minecraft/tileentity/MobSpawnerBaseLogic randomEntity field_98282_f +FD net/minecraft/tileentity/MobSpawnerBaseLogic mobRotation field_98287_c +FD net/minecraft/tileentity/MobSpawnerBaseLogic prevMobRotation field_98284_d +FD net/minecraft/tileentity/MobSpawnerBaseLogic minSpawnDelay field_98283_g +FD net/minecraft/tileentity/MobSpawnerBaseLogic maxSpawnDelay field_98293_h +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnCount field_98294_i +FD net/minecraft/tileentity/MobSpawnerBaseLogic cachedEntity field_98291_j +FD net/minecraft/tileentity/MobSpawnerBaseLogic maxNearbyEntities field_98292_k +FD net/minecraft/tileentity/MobSpawnerBaseLogic activatingRangeFromPlayer field_98289_l +FD net/minecraft/tileentity/MobSpawnerBaseLogic spawnRange field_98290_m +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart field_98221_d field_98221_d +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart nbtData field_98222_b +FD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart entityType field_98223_c +FD net/minecraft/block/BlockEventData position field_180329_a +FD net/minecraft/block/BlockEventData blockType field_151344_d +FD net/minecraft/block/BlockEventData eventID field_151345_e +FD net/minecraft/block/BlockEventData eventParameter field_151343_f +FD net/minecraft/util/EnumWorldBlockLayer SOLID SOLID +FD net/minecraft/util/EnumWorldBlockLayer CUTOUT_MIPPED CUTOUT_MIPPED +FD net/minecraft/util/EnumWorldBlockLayer CUTOUT CUTOUT +FD net/minecraft/util/EnumWorldBlockLayer TRANSLUCENT TRANSLUCENT +FD net/minecraft/util/EnumWorldBlockLayer layerName field_180338_e +FD net/minecraft/util/EnumWorldBlockLayer $VALUES $VALUES +FD net/minecraft/world/ChunkCoordIntPair chunkXPos field_77276_a +FD net/minecraft/world/ChunkCoordIntPair chunkZPos field_77275_b +FD net/minecraft/world/Explosion isFlaming field_77286_a +FD net/minecraft/world/Explosion isSmoking field_82755_b +FD net/minecraft/world/Explosion explosionRNG field_77290_i +FD net/minecraft/world/Explosion worldObj field_77287_j +FD net/minecraft/world/Explosion explosionX field_77284_b +FD net/minecraft/world/Explosion explosionY field_77285_c +FD net/minecraft/world/Explosion explosionZ field_77282_d +FD net/minecraft/world/Explosion exploder field_77283_e +FD net/minecraft/world/Explosion explosionSize field_77280_f +FD net/minecraft/world/Explosion affectedBlockPositions field_77281_g +FD net/minecraft/world/Explosion playerKnockbackMap field_77288_k +FD net/minecraft/world/ColorizerFoliage foliageBuffer field_77471_a +FD net/minecraft/world/GameRules theGameRules field_82771_a +FD net/minecraft/world/GameRules$Value valueString field_82762_a +FD net/minecraft/world/GameRules$Value valueBoolean field_82760_b +FD net/minecraft/world/GameRules$Value valueInteger field_82761_c +FD net/minecraft/world/GameRules$Value valueDouble field_82759_d +FD net/minecraft/world/GameRules$Value type field_180256_e +FD net/minecraft/world/GameRules$ValueType ANY_VALUE ANY_VALUE +FD net/minecraft/world/GameRules$ValueType BOOLEAN_VALUE BOOLEAN_VALUE +FD net/minecraft/world/GameRules$ValueType NUMERICAL_VALUE NUMERICAL_VALUE +FD net/minecraft/world/GameRules$ValueType $VALUES $VALUES +FD net/minecraft/world/ColorizerGrass grassBuffer field_77481_a +FD net/minecraft/world/World villageCollectionObj field_72982_D +FD net/minecraft/world/World theProfiler field_72984_F +FD net/minecraft/world/World worldScoreboard field_96442_D +FD net/minecraft/world/World isRemote field_72995_K +FD net/minecraft/world/World activeChunkSet field_72993_I +FD net/minecraft/world/World spawnHostileMobs field_72985_G +FD net/minecraft/world/World spawnPeacefulMobs field_72992_H +FD net/minecraft/world/World lightUpdateBlockList field_72994_J +FD net/minecraft/world/World skylightSubtracted field_73008_k +FD net/minecraft/world/World lastLightningBolt field_73016_r +FD net/minecraft/world/World theCalendar field_83016_L +FD net/minecraft/world/World ambientTickCountdown field_72990_M +FD net/minecraft/world/World processingLoadedTiles field_147481_N +FD net/minecraft/world/World worldBorder field_175728_M +FD net/minecraft/world/World seaLevel field_181546_a +FD net/minecraft/world/World addedTileEntityList field_147484_a +FD net/minecraft/world/World tileEntitiesToBeRemoved field_147483_b +FD net/minecraft/world/World cloudColour field_73001_c +FD net/minecraft/world/World scheduledUpdatesAreImmediate field_72999_e +FD net/minecraft/world/World loadedEntityList field_72996_f +FD net/minecraft/world/World unloadedEntityList field_72997_g +FD net/minecraft/world/World loadedTileEntityList field_147482_g +FD net/minecraft/world/World tickableTileEntities field_175730_i +FD net/minecraft/world/World playerEntities field_73010_i +FD net/minecraft/world/World weatherEffects field_73007_j +FD net/minecraft/world/World entitiesById field_175729_l +FD net/minecraft/world/World updateLCG field_73005_l +FD net/minecraft/world/World DIST_HASH_MAGIC field_73006_m +FD net/minecraft/world/World prevRainingStrength field_73003_n +FD net/minecraft/world/World rainingStrength field_73004_o +FD net/minecraft/world/World prevThunderingStrength field_73018_p +FD net/minecraft/world/World thunderingStrength field_73017_q +FD net/minecraft/world/World rand field_73012_v +FD net/minecraft/world/World provider field_73011_w +FD net/minecraft/world/World worldAccesses field_73021_x +FD net/minecraft/world/World chunkProvider field_73020_y +FD net/minecraft/world/World saveHandler field_73019_z +FD net/minecraft/world/World worldInfo field_72986_A +FD net/minecraft/world/World findingSpawnPoint field_72987_B +FD net/minecraft/world/World mapStorage field_72988_C +FD net/minecraft/world/World$1 field_180253_a field_180253_a +FD net/minecraft/world/World$1 field_77485_a field_77485_a +FD net/minecraft/world/World$2 field_151300_a field_151300_a +FD net/minecraft/world/World$2 field_77405_a field_77405_a +FD net/minecraft/world/World$3 field_77440_a field_77440_a +FD net/minecraft/world/World$4 field_151308_a field_151308_a +FD net/minecraft/world/WorldSettings seed field_77174_a +FD net/minecraft/world/WorldSettings theGameType field_77172_b +FD net/minecraft/world/WorldSettings mapFeaturesEnabled field_77173_c +FD net/minecraft/world/WorldSettings hardcoreEnabled field_77170_d +FD net/minecraft/world/WorldSettings terrainType field_77171_e +FD net/minecraft/world/WorldSettings commandsAllowed field_77168_f +FD net/minecraft/world/WorldSettings bonusChestEnabled field_77169_g +FD net/minecraft/world/WorldSettings worldName field_82751_h +FD net/minecraft/world/WorldSettings$GameType NOT_SET NOT_SET +FD net/minecraft/world/WorldSettings$GameType SURVIVAL SURVIVAL +FD net/minecraft/world/WorldSettings$GameType CREATIVE CREATIVE +FD net/minecraft/world/WorldSettings$GameType ADVENTURE ADVENTURE +FD net/minecraft/world/WorldSettings$GameType SPECTATOR SPECTATOR +FD net/minecraft/world/WorldSettings$GameType id field_77154_e +FD net/minecraft/world/WorldSettings$GameType name field_77151_f +FD net/minecraft/world/WorldSettings$GameType $VALUES $VALUES +FD net/minecraft/world/WorldType worldTypes field_77139_a +FD net/minecraft/world/WorldType DEFAULT field_77137_b +FD net/minecraft/world/WorldType FLAT field_77138_c +FD net/minecraft/world/WorldType LARGE_BIOMES field_77135_d +FD net/minecraft/world/WorldType AMPLIFIED field_151360_e +FD net/minecraft/world/WorldType CUSTOMIZED field_180271_f +FD net/minecraft/world/WorldType DEBUG_WORLD field_180272_g +FD net/minecraft/world/WorldType DEFAULT_1_1 field_77136_e +FD net/minecraft/world/WorldType worldTypeId field_82748_f +FD net/minecraft/world/WorldType worldType field_77133_f +FD net/minecraft/world/WorldType generatorVersion field_77134_g +FD net/minecraft/world/WorldType canBeCreated field_77140_h +FD net/minecraft/world/WorldType isWorldTypeVersioned field_77141_i +FD net/minecraft/world/WorldType hasNotificationData field_151361_l +FD net/minecraft/world/EnumSkyBlock SKY SKY +FD net/minecraft/world/EnumSkyBlock BLOCK BLOCK +FD net/minecraft/world/EnumSkyBlock defaultLightValue field_77198_c +FD net/minecraft/world/EnumSkyBlock $VALUES $VALUES +FD net/minecraft/world/SpawnerAnimals MOB_COUNT_DIV field_180268_a +FD net/minecraft/world/SpawnerAnimals eligibleChunksForSpawning field_77193_b +FD net/minecraft/world/Teleporter worldServerInstance field_85192_a +FD net/minecraft/world/Teleporter random field_77187_a +FD net/minecraft/world/Teleporter destinationCoordinateCache field_85191_c +FD net/minecraft/world/Teleporter destinationCoordinateKeys field_85190_d +FD net/minecraft/world/Teleporter$PortalPosition lastUpdateTime field_85087_d +FD net/minecraft/world/Teleporter$PortalPosition field_85088_e field_85088_e +FD net/minecraft/world/ChunkCache chunkX field_72818_a +FD net/minecraft/world/ChunkCache chunkZ field_72816_b +FD net/minecraft/world/ChunkCache chunkArray field_72817_c +FD net/minecraft/world/ChunkCache hasExtendedLevels field_72814_d +FD net/minecraft/world/ChunkCache worldObj field_72815_e +FD net/minecraft/world/NextTickListEntry position field_180282_a +FD net/minecraft/world/NextTickListEntry scheduledTime field_77180_e +FD net/minecraft/world/NextTickListEntry priority field_82754_f +FD net/minecraft/world/NextTickListEntry nextTickEntryID field_77177_f +FD net/minecraft/world/NextTickListEntry block field_151352_g +FD net/minecraft/world/NextTickListEntry tickEntryID field_77178_g +FD net/minecraft/world/biome/BiomeGenBase frozenRiver field_76777_m +FD net/minecraft/world/biome/BiomeGenBase icePlains field_76774_n +FD net/minecraft/world/biome/BiomeGenBase iceMountains field_76775_o +FD net/minecraft/world/biome/BiomeGenBase mushroomIsland field_76789_p +FD net/minecraft/world/biome/BiomeGenBase mushroomIslandShore field_76788_q +FD net/minecraft/world/biome/BiomeGenBase beach field_76787_r +FD net/minecraft/world/biome/BiomeGenBase desertHills field_76786_s +FD net/minecraft/world/biome/BiomeGenBase forestHills field_76785_t +FD net/minecraft/world/biome/BiomeGenBase taigaHills field_76784_u +FD net/minecraft/world/biome/BiomeGenBase extremeHillsEdge field_76783_v +FD net/minecraft/world/biome/BiomeGenBase jungle field_76782_w +FD net/minecraft/world/biome/BiomeGenBase jungleHills field_76792_x +FD net/minecraft/world/biome/BiomeGenBase jungleEdge field_150574_L +FD net/minecraft/world/biome/BiomeGenBase deepOcean field_150575_M +FD net/minecraft/world/biome/BiomeGenBase stoneBeach field_150576_N +FD net/minecraft/world/biome/BiomeGenBase coldBeach field_150577_O +FD net/minecraft/world/biome/BiomeGenBase birchForest field_150583_P +FD net/minecraft/world/biome/BiomeGenBase birchForestHills field_150582_Q +FD net/minecraft/world/biome/BiomeGenBase roofedForest field_150585_R +FD net/minecraft/world/biome/BiomeGenBase coldTaiga field_150584_S +FD net/minecraft/world/biome/BiomeGenBase coldTaigaHills field_150579_T +FD net/minecraft/world/biome/BiomeGenBase megaTaiga field_150578_U +FD net/minecraft/world/biome/BiomeGenBase megaTaigaHills field_150581_V +FD net/minecraft/world/biome/BiomeGenBase extremeHillsPlus field_150580_W +FD net/minecraft/world/biome/BiomeGenBase savanna field_150588_X +FD net/minecraft/world/biome/BiomeGenBase savannaPlateau field_150587_Y +FD net/minecraft/world/biome/BiomeGenBase height_Default field_150596_a +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorTrees field_76757_N +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorBigTree field_76758_O +FD net/minecraft/world/biome/BiomeGenBase worldGeneratorSwamp field_76763_Q +FD net/minecraft/world/biome/BiomeGenBase logger field_150586_aC +FD net/minecraft/world/biome/BiomeGenBase biomeList field_76773_a +FD net/minecraft/world/biome/BiomeGenBase mesa field_150589_Z +FD net/minecraft/world/biome/BiomeGenBase mesaPlateau_F field_150607_aa +FD net/minecraft/world/biome/BiomeGenBase mesaPlateau field_150608_ab +FD net/minecraft/world/biome/BiomeGenBase field_180279_ad field_180279_ad +FD net/minecraft/world/biome/BiomeGenBase temperatureNoise field_150605_ac +FD net/minecraft/world/biome/BiomeGenBase GRASS_COLOR_NOISE field_180281_af +FD net/minecraft/world/biome/BiomeGenBase DOUBLE_PLANT_GENERATOR field_180280_ag +FD net/minecraft/world/biome/BiomeGenBase biomeName field_76791_y +FD net/minecraft/world/biome/BiomeGenBase color field_76790_z +FD net/minecraft/world/biome/BiomeGenBase field_150609_ah field_150609_ah +FD net/minecraft/world/biome/BiomeGenBase topBlock field_76752_A +FD net/minecraft/world/biome/BiomeGenBase fillerBlock field_76753_B +FD net/minecraft/world/biome/BiomeGenBase fillerBlockMetadata field_76754_C +FD net/minecraft/world/biome/BiomeGenBase minHeight field_76748_D +FD net/minecraft/world/biome/BiomeGenBase maxHeight field_76749_E +FD net/minecraft/world/biome/BiomeGenBase temperature field_76750_F +FD net/minecraft/world/biome/BiomeGenBase rainfall field_76751_G +FD net/minecraft/world/biome/BiomeGenBase waterColorMultiplier field_76759_H +FD net/minecraft/world/biome/BiomeGenBase theBiomeDecorator field_76760_I +FD net/minecraft/world/biome/BiomeGenBase spawnableMonsterList field_76761_J +FD net/minecraft/world/biome/BiomeGenBase spawnableCreatureList field_76762_K +FD net/minecraft/world/biome/BiomeGenBase spawnableWaterCreatureList field_76755_L +FD net/minecraft/world/biome/BiomeGenBase spawnableCaveCreatureList field_82914_M +FD net/minecraft/world/biome/BiomeGenBase enableSnow field_76766_R +FD net/minecraft/world/biome/BiomeGenBase enableRain field_76765_S +FD net/minecraft/world/biome/BiomeGenBase biomeID field_76756_M +FD net/minecraft/world/biome/BiomeGenBase height_ShallowWaters field_150594_b +FD net/minecraft/world/biome/BiomeGenBase height_Oceans field_150595_c +FD net/minecraft/world/biome/BiomeGenBase height_DeepOceans field_150592_d +FD net/minecraft/world/biome/BiomeGenBase height_LowPlains field_150593_e +FD net/minecraft/world/biome/BiomeGenBase height_MidPlains field_150590_f +FD net/minecraft/world/biome/BiomeGenBase height_LowHills field_150591_g +FD net/minecraft/world/biome/BiomeGenBase height_HighPlateaus field_150602_h +FD net/minecraft/world/biome/BiomeGenBase height_MidHills field_150603_i +FD net/minecraft/world/biome/BiomeGenBase height_Shores field_150600_j +FD net/minecraft/world/biome/BiomeGenBase height_RockyWaters field_150601_k +FD net/minecraft/world/biome/BiomeGenBase height_LowIslands field_150598_l +FD net/minecraft/world/biome/BiomeGenBase height_PartiallySubmerged field_150599_m +FD net/minecraft/world/biome/BiomeGenBase explorationBiomesList field_150597_n +FD net/minecraft/world/biome/BiomeGenBase BIOME_ID_MAP field_180278_o +FD net/minecraft/world/biome/BiomeGenBase ocean field_76771_b +FD net/minecraft/world/biome/BiomeGenBase plains field_76772_c +FD net/minecraft/world/biome/BiomeGenBase desert field_76769_d +FD net/minecraft/world/biome/BiomeGenBase extremeHills field_76770_e +FD net/minecraft/world/biome/BiomeGenBase forest field_76767_f +FD net/minecraft/world/biome/BiomeGenBase taiga field_76768_g +FD net/minecraft/world/biome/BiomeGenBase swampland field_76780_h +FD net/minecraft/world/biome/BiomeGenBase river field_76781_i +FD net/minecraft/world/biome/BiomeGenBase hell field_76778_j +FD net/minecraft/world/biome/BiomeGenBase sky field_76779_k +FD net/minecraft/world/biome/BiomeGenBase frozenOcean field_76776_l +FD net/minecraft/world/biome/BiomeGenBase$1 field_180275_a field_180275_a +FD net/minecraft/world/biome/BiomeGenBase$Height rootHeight field_150777_a +FD net/minecraft/world/biome/BiomeGenBase$Height variation field_150776_b +FD net/minecraft/world/biome/BiomeGenBase$TempCategory OCEAN OCEAN +FD net/minecraft/world/biome/BiomeGenBase$TempCategory COLD COLD +FD net/minecraft/world/biome/BiomeGenBase$TempCategory MEDIUM MEDIUM +FD net/minecraft/world/biome/BiomeGenBase$TempCategory WARM WARM +FD net/minecraft/world/biome/BiomeGenBase$TempCategory $VALUES $VALUES +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry entityClass field_76300_b +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry minGroupCount field_76301_c +FD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry maxGroupCount field_76299_d +FD net/minecraft/world/biome/BiomeCache chunkManager field_76844_a +FD net/minecraft/world/biome/BiomeCache lastCleanupTime field_76842_b +FD net/minecraft/world/biome/BiomeCache cacheMap field_76843_c +FD net/minecraft/world/biome/BiomeCache cache field_76841_d +FD net/minecraft/world/biome/BiomeCache$Block rainfallValues field_76890_b +FD net/minecraft/world/biome/BiomeCache$Block biomes field_76891_c +FD net/minecraft/world/biome/BiomeCache$Block xPosition field_76888_d +FD net/minecraft/world/biome/BiomeCache$Block zPosition field_76889_e +FD net/minecraft/world/biome/BiomeCache$Block lastAccessTime field_76886_f +FD net/minecraft/world/biome/BiomeCache$Block field_76887_g field_76887_g +FD net/minecraft/world/biome/BiomeColorHelper GRASS_COLOR field_180291_a +FD net/minecraft/world/biome/BiomeColorHelper FOLIAGE_COLOR field_180289_b +FD net/minecraft/world/biome/BiomeColorHelper WATER_COLOR_MULTIPLIER field_180290_c +FD net/minecraft/world/biome/BiomeDecorator treesPerChunk field_76832_z +FD net/minecraft/world/biome/BiomeDecorator flowersPerChunk field_76802_A +FD net/minecraft/world/biome/BiomeDecorator grassPerChunk field_76803_B +FD net/minecraft/world/biome/BiomeDecorator deadBushPerChunk field_76804_C +FD net/minecraft/world/biome/BiomeDecorator mushroomsPerChunk field_76798_D +FD net/minecraft/world/biome/BiomeDecorator reedsPerChunk field_76799_E +FD net/minecraft/world/biome/BiomeDecorator cactiPerChunk field_76800_F +FD net/minecraft/world/biome/BiomeDecorator sandPerChunk field_76801_G +FD net/minecraft/world/biome/BiomeDecorator sandPerChunk2 field_76805_H +FD net/minecraft/world/biome/BiomeDecorator clayPerChunk field_76806_I +FD net/minecraft/world/biome/BiomeDecorator bigMushroomsPerChunk field_76807_J +FD net/minecraft/world/biome/BiomeDecorator generateLakes field_76808_K +FD net/minecraft/world/biome/BiomeDecorator currentWorld field_76815_a +FD net/minecraft/world/biome/BiomeDecorator randomGenerator field_76813_b +FD net/minecraft/world/biome/BiomeDecorator field_180294_c field_180294_c +FD net/minecraft/world/biome/BiomeDecorator chunkProviderSettings field_180293_d +FD net/minecraft/world/biome/BiomeDecorator clayGen field_76809_f +FD net/minecraft/world/biome/BiomeDecorator sandGen field_76810_g +FD net/minecraft/world/biome/BiomeDecorator gravelAsSandGen field_76822_h +FD net/minecraft/world/biome/BiomeDecorator dirtGen field_76823_i +FD net/minecraft/world/biome/BiomeDecorator gravelGen field_76820_j +FD net/minecraft/world/biome/BiomeDecorator graniteGen field_180296_j +FD net/minecraft/world/biome/BiomeDecorator dioriteGen field_180297_k +FD net/minecraft/world/biome/BiomeDecorator andesiteGen field_180295_l +FD net/minecraft/world/biome/BiomeDecorator coalGen field_76821_k +FD net/minecraft/world/biome/BiomeDecorator ironGen field_76818_l +FD net/minecraft/world/biome/BiomeDecorator goldGen field_76819_m +FD net/minecraft/world/biome/BiomeDecorator redstoneGen field_180299_p +FD net/minecraft/world/biome/BiomeDecorator diamondGen field_180298_q +FD net/minecraft/world/biome/BiomeDecorator lapisGen field_76831_p +FD net/minecraft/world/biome/BiomeDecorator yellowFlowerGen field_150514_p +FD net/minecraft/world/biome/BiomeDecorator mushroomBrownGen field_76828_s +FD net/minecraft/world/biome/BiomeDecorator mushroomRedGen field_76827_t +FD net/minecraft/world/biome/BiomeDecorator bigMushroomGen field_76826_u +FD net/minecraft/world/biome/BiomeDecorator reedGen field_76825_v +FD net/minecraft/world/biome/BiomeDecorator cactusGen field_76824_w +FD net/minecraft/world/biome/BiomeDecorator waterlilyGen field_76834_x +FD net/minecraft/world/biome/BiomeDecorator waterlilyPerChunk field_76833_y +FD net/minecraft/world/biome/WorldChunkManager genBiomes field_76944_d +FD net/minecraft/world/biome/WorldChunkManager biomeIndexLayer field_76945_e +FD net/minecraft/world/biome/WorldChunkManager biomeCache field_76942_f +FD net/minecraft/world/biome/WorldChunkManager biomesToSpawnIn field_76943_g +FD net/minecraft/world/biome/WorldChunkManager generatorOptions field_180301_f +FD net/minecraft/world/biome/BiomeGenHills theWorldGenerator field_82915_S +FD net/minecraft/world/biome/BiomeGenHills field_150634_aD field_150634_aD +FD net/minecraft/world/biome/BiomeGenHills field_150635_aE field_150635_aE +FD net/minecraft/world/biome/BiomeGenHills field_150636_aF field_150636_aF +FD net/minecraft/world/biome/BiomeGenHills field_150637_aG field_150637_aG +FD net/minecraft/world/biome/BiomeGenHills field_150638_aH field_150638_aH +FD net/minecraft/world/biome/WorldChunkManagerHell biomeGenerator field_76947_d +FD net/minecraft/world/biome/WorldChunkManagerHell rainfall field_76946_f +FD net/minecraft/world/biome/BiomeGenForest field_150629_aC field_150629_aC +FD net/minecraft/world/biome/BiomeGenForest field_150630_aD field_150630_aD +FD net/minecraft/world/biome/BiomeGenForest field_150631_aE field_150631_aE +FD net/minecraft/world/biome/BiomeGenForest field_150632_aF field_150632_aF +FD net/minecraft/world/biome/BiomeGenForest$2 field_150612_aC field_150612_aC +FD net/minecraft/world/biome/BiomeGenForest$1 field_150613_aC field_150613_aC +FD net/minecraft/world/biome/BiomeGenSnow field_150615_aC field_150615_aC +FD net/minecraft/world/biome/BiomeGenSnow field_150616_aD field_150616_aD +FD net/minecraft/world/biome/BiomeGenSnow field_150617_aE field_150617_aE +FD net/minecraft/world/biome/BiomeGenJungle field_150614_aC field_150614_aC +FD net/minecraft/world/biome/BiomeGenJungle field_181620_aE field_181620_aE +FD net/minecraft/world/biome/BiomeGenJungle field_181621_aF field_181621_aF +FD net/minecraft/world/biome/BiomeGenJungle field_181622_aG field_181622_aG +FD net/minecraft/world/biome/BiomeGenMesa field_150621_aC field_150621_aC +FD net/minecraft/world/biome/BiomeGenMesa field_150622_aD field_150622_aD +FD net/minecraft/world/biome/BiomeGenMesa field_150623_aE field_150623_aE +FD net/minecraft/world/biome/BiomeGenMesa field_150624_aF field_150624_aF +FD net/minecraft/world/biome/BiomeGenMesa field_150625_aG field_150625_aG +FD net/minecraft/world/biome/BiomeGenMesa field_150626_aH field_150626_aH +FD net/minecraft/world/biome/BiomeGenMesa field_150620_aI field_150620_aI +FD net/minecraft/world/biome/BiomeGenMutated baseBiome field_150611_aD +FD net/minecraft/world/biome/BiomeGenPlains field_150628_aC field_150628_aC +FD net/minecraft/world/biome/BiomeGenSavanna field_150627_aC field_150627_aC +FD net/minecraft/world/biome/BiomeGenTaiga field_150639_aC field_150639_aC +FD net/minecraft/world/biome/BiomeGenTaiga field_150640_aD field_150640_aD +FD net/minecraft/world/biome/BiomeGenTaiga field_150641_aE field_150641_aE +FD net/minecraft/world/biome/BiomeGenTaiga field_150642_aF field_150642_aF +FD net/minecraft/world/biome/BiomeGenTaiga field_150643_aG field_150643_aG +FD net/minecraft/world/biome/BiomeGenTaiga field_150644_aH field_150644_aH +FD net/minecraft/world/biome/BiomeEndDecorator spikeGen field_76835_L +FD net/minecraft/block/BlockAnvil FACING field_176506_a +FD net/minecraft/block/BlockAnvil DAMAGE field_176505_b +FD net/minecraft/block/BlockAnvil$Anvil world field_175130_a +FD net/minecraft/block/BlockAnvil$Anvil position field_175129_b +FD net/minecraft/block/BlockBanner FACING field_176449_a +FD net/minecraft/block/BlockBanner ROTATION field_176448_b +FD net/minecraft/block/BlockBanner$1 field_180370_a field_180370_a +FD net/minecraft/block/BlockRailBase isPowered field_150053_a +FD net/minecraft/block/BlockRailBase$1 field_180371_a field_180371_a +FD net/minecraft/block/BlockRailBase$Rail field_150662_a field_150662_a +FD net/minecraft/block/BlockRailBase$Rail world field_150660_b +FD net/minecraft/block/BlockRailBase$Rail pos field_180367_c +FD net/minecraft/block/BlockRailBase$Rail block field_180365_d +FD net/minecraft/block/BlockRailBase$Rail state field_180366_e +FD net/minecraft/block/BlockRailBase$Rail isPowered field_150656_f +FD net/minecraft/block/BlockRailBase$Rail field_150657_g field_150657_g +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_SOUTH NORTH_SOUTH +FD net/minecraft/block/BlockRailBase$EnumRailDirection EAST_WEST EAST_WEST +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_EAST ASCENDING_EAST +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_WEST ASCENDING_WEST +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_NORTH ASCENDING_NORTH +FD net/minecraft/block/BlockRailBase$EnumRailDirection ASCENDING_SOUTH ASCENDING_SOUTH +FD net/minecraft/block/BlockRailBase$EnumRailDirection SOUTH_EAST SOUTH_EAST +FD net/minecraft/block/BlockRailBase$EnumRailDirection SOUTH_WEST SOUTH_WEST +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_WEST NORTH_WEST +FD net/minecraft/block/BlockRailBase$EnumRailDirection NORTH_EAST NORTH_EAST +FD net/minecraft/block/BlockRailBase$EnumRailDirection META_LOOKUP field_177030_k +FD net/minecraft/block/BlockRailBase$EnumRailDirection meta field_177027_l +FD net/minecraft/block/BlockRailBase$EnumRailDirection name field_177028_m +FD net/minecraft/block/BlockRailBase$EnumRailDirection $VALUES $VALUES +FD net/minecraft/block/BlockBeacon$1 field_180358_a field_180358_a +FD net/minecraft/block/BlockBeacon$1 field_180357_b field_180357_b +FD net/minecraft/block/BlockBeacon$1$1 field_180369_a field_180369_a +FD net/minecraft/block/BlockBeacon$1$1 field_180368_b field_180368_b +FD net/minecraft/block/BlockBed PART field_176472_a +FD net/minecraft/block/BlockBed OCCUPIED field_176471_b +FD net/minecraft/block/BlockBed$EnumPartType HEAD HEAD +FD net/minecraft/block/BlockBed$EnumPartType FOOT FOOT +FD net/minecraft/block/BlockBed$EnumPartType name field_177036_c +FD net/minecraft/block/BlockBed$EnumPartType $VALUES $VALUES +FD net/minecraft/block/Block isBlockContainer field_149758_A +FD net/minecraft/block/Block minX field_149759_B +FD net/minecraft/block/Block minY field_149760_C +FD net/minecraft/block/Block minZ field_149754_D +FD net/minecraft/block/Block maxX field_149755_E +FD net/minecraft/block/Block maxY field_149756_F +FD net/minecraft/block/Block maxZ field_149757_G +FD net/minecraft/block/Block stepSound field_149762_H +FD net/minecraft/block/Block blockParticleGravity field_149763_I +FD net/minecraft/block/Block blockMaterial field_149764_J +FD net/minecraft/block/Block blockMapColor field_181083_K +FD net/minecraft/block/Block slipperiness field_149765_K +FD net/minecraft/block/Block blockState field_176227_L +FD net/minecraft/block/Block defaultBlockState field_176228_M +FD net/minecraft/block/Block unlocalizedName field_149770_b +FD net/minecraft/block/Block AIR_ID field_176230_a +FD net/minecraft/block/Block displayOnCreativeTab field_149772_a +FD net/minecraft/block/Block blockRegistry field_149771_c +FD net/minecraft/block/Block BLOCK_STATE_IDS field_176229_d +FD net/minecraft/block/Block soundTypeStone field_149769_e +FD net/minecraft/block/Block soundTypeWood field_149766_f +FD net/minecraft/block/Block soundTypeGravel field_149767_g +FD net/minecraft/block/Block soundTypeGrass field_149779_h +FD net/minecraft/block/Block soundTypePiston field_149780_i +FD net/minecraft/block/Block soundTypeMetal field_149777_j +FD net/minecraft/block/Block soundTypeGlass field_149778_k +FD net/minecraft/block/Block soundTypeCloth field_149775_l +FD net/minecraft/block/Block soundTypeSand field_149776_m +FD net/minecraft/block/Block soundTypeSnow field_149773_n +FD net/minecraft/block/Block soundTypeLadder field_149774_o +FD net/minecraft/block/Block soundTypeAnvil field_149788_p +FD net/minecraft/block/Block SLIME_SOUND field_176231_q +FD net/minecraft/block/Block fullBlock field_149787_q +FD net/minecraft/block/Block lightOpacity field_149786_r +FD net/minecraft/block/Block translucent field_149785_s +FD net/minecraft/block/Block lightValue field_149784_t +FD net/minecraft/block/Block useNeighborBrightness field_149783_u +FD net/minecraft/block/Block blockHardness field_149782_v +FD net/minecraft/block/Block blockResistance field_149781_w +FD net/minecraft/block/Block enableStats field_149790_y +FD net/minecraft/block/Block needsRandomTick field_149789_z +FD net/minecraft/block/Block$EnumOffsetType NONE NONE +FD net/minecraft/block/Block$EnumOffsetType XZ XZ +FD net/minecraft/block/Block$EnumOffsetType XYZ XYZ +FD net/minecraft/block/Block$EnumOffsetType $VALUES $VALUES +FD net/minecraft/block/Block$SoundType soundName field_150501_a +FD net/minecraft/block/Block$SoundType volume field_150499_b +FD net/minecraft/block/Block$SoundType frequency field_150500_c +FD net/minecraft/init/Blocks sandstone field_150322_A +FD net/minecraft/init/Blocks noteblock field_150323_B +FD net/minecraft/init/Blocks bed field_150324_C +FD net/minecraft/init/Blocks golden_rail field_150318_D +FD net/minecraft/init/Blocks detector_rail field_150319_E +FD net/minecraft/init/Blocks sticky_piston field_150320_F +FD net/minecraft/init/Blocks web field_150321_G +FD net/minecraft/init/Blocks tallgrass field_150329_H +FD net/minecraft/init/Blocks deadbush field_150330_I +FD net/minecraft/init/Blocks piston field_150331_J +FD net/minecraft/init/Blocks piston_head field_150332_K +FD net/minecraft/init/Blocks wool field_150325_L +FD net/minecraft/init/Blocks piston_extension field_180384_M +FD net/minecraft/init/Blocks yellow_flower field_150327_N +FD net/minecraft/init/Blocks red_flower field_150328_O +FD net/minecraft/init/Blocks brown_mushroom field_150338_P +FD net/minecraft/init/Blocks red_mushroom field_150337_Q +FD net/minecraft/init/Blocks gold_block field_150340_R +FD net/minecraft/init/Blocks iron_block field_150339_S +FD net/minecraft/init/Blocks double_stone_slab field_150334_T +FD net/minecraft/init/Blocks stone_slab field_150333_U +FD net/minecraft/init/Blocks brick_block field_150336_V +FD net/minecraft/init/Blocks tnt field_150335_W +FD net/minecraft/init/Blocks bookshelf field_150342_X +FD net/minecraft/init/Blocks mossy_cobblestone field_150341_Y +FD net/minecraft/init/Blocks obsidian field_150343_Z +FD net/minecraft/init/Blocks air field_150350_a +FD net/minecraft/init/Blocks iron_door field_150454_av +FD net/minecraft/init/Blocks wooden_pressure_plate field_150452_aw +FD net/minecraft/init/Blocks redstone_ore field_150450_ax +FD net/minecraft/init/Blocks lit_redstone_ore field_150439_ay +FD net/minecraft/init/Blocks unlit_redstone_torch field_150437_az +FD net/minecraft/init/Blocks redstone_torch field_150429_aA +FD net/minecraft/init/Blocks stone_button field_150430_aB +FD net/minecraft/init/Blocks snow_layer field_150431_aC +FD net/minecraft/init/Blocks ice field_150432_aD +FD net/minecraft/init/Blocks snow field_150433_aE +FD net/minecraft/init/Blocks cactus field_150434_aF +FD net/minecraft/init/Blocks clay field_150435_aG +FD net/minecraft/init/Blocks reeds field_150436_aH +FD net/minecraft/init/Blocks jukebox field_150421_aI +FD net/minecraft/init/Blocks oak_fence field_180407_aO +FD net/minecraft/init/Blocks spruce_fence field_180408_aP +FD net/minecraft/init/Blocks birch_fence field_180404_aQ +FD net/minecraft/init/Blocks jungle_fence field_180403_aR +FD net/minecraft/init/Blocks dark_oak_fence field_180406_aS +FD net/minecraft/init/Blocks acacia_fence field_180405_aT +FD net/minecraft/init/Blocks pumpkin field_150423_aK +FD net/minecraft/init/Blocks netherrack field_150424_aL +FD net/minecraft/init/Blocks soul_sand field_150425_aM +FD net/minecraft/init/Blocks glowstone field_150426_aN +FD net/minecraft/init/Blocks portal field_150427_aO +FD net/minecraft/init/Blocks lit_pumpkin field_150428_aP +FD net/minecraft/init/Blocks torch field_150478_aa +FD net/minecraft/init/Blocks fire field_150480_ab +FD net/minecraft/init/Blocks mob_spawner field_150474_ac +FD net/minecraft/init/Blocks oak_stairs field_150476_ad +FD net/minecraft/init/Blocks chest field_150486_ae +FD net/minecraft/init/Blocks redstone_wire field_150488_af +FD net/minecraft/init/Blocks diamond_ore field_150482_ag +FD net/minecraft/init/Blocks diamond_block field_150484_ah +FD net/minecraft/init/Blocks crafting_table field_150462_ai +FD net/minecraft/init/Blocks wheat field_150464_aj +FD net/minecraft/init/Blocks farmland field_150458_ak +FD net/minecraft/init/Blocks furnace field_150460_al +FD net/minecraft/init/Blocks lit_furnace field_150470_am +FD net/minecraft/init/Blocks standing_sign field_150472_an +FD net/minecraft/init/Blocks oak_door field_180413_ao +FD net/minecraft/init/Blocks spruce_door field_180414_ap +FD net/minecraft/init/Blocks birch_door field_180412_aq +FD net/minecraft/init/Blocks jungle_door field_180411_ar +FD net/minecraft/init/Blocks acacia_door field_180410_as +FD net/minecraft/init/Blocks dark_oak_door field_180409_at +FD net/minecraft/init/Blocks ladder field_150468_ap +FD net/minecraft/init/Blocks rail field_150448_aq +FD net/minecraft/init/Blocks stone_stairs field_150446_ar +FD net/minecraft/init/Blocks wall_sign field_150444_as +FD net/minecraft/init/Blocks lever field_150442_at +FD net/minecraft/init/Blocks stone_pressure_plate field_150456_au +FD net/minecraft/init/Blocks stone field_150348_b +FD net/minecraft/init/Blocks nether_brick_stairs field_150387_bl +FD net/minecraft/init/Blocks nether_wart field_150388_bm +FD net/minecraft/init/Blocks enchanting_table field_150381_bn +FD net/minecraft/init/Blocks brewing_stand field_150382_bo +FD net/minecraft/init/Blocks cauldron field_150383_bp +FD net/minecraft/init/Blocks end_portal field_150384_bq +FD net/minecraft/init/Blocks end_portal_frame field_150378_br +FD net/minecraft/init/Blocks end_stone field_150377_bs +FD net/minecraft/init/Blocks dragon_egg field_150380_bt +FD net/minecraft/init/Blocks redstone_lamp field_150379_bu +FD net/minecraft/init/Blocks lit_redstone_lamp field_150374_bv +FD net/minecraft/init/Blocks double_wooden_slab field_150373_bw +FD net/minecraft/init/Blocks wooden_slab field_150376_bx +FD net/minecraft/init/Blocks cocoa field_150375_by +FD net/minecraft/init/Blocks sandstone_stairs field_150372_bz +FD net/minecraft/init/Blocks emerald_ore field_150412_bA +FD net/minecraft/init/Blocks ender_chest field_150477_bB +FD net/minecraft/init/Blocks tripwire_hook field_150479_bC +FD net/minecraft/init/Blocks tripwire field_150473_bD +FD net/minecraft/init/Blocks emerald_block field_150475_bE +FD net/minecraft/init/Blocks spruce_stairs field_150485_bF +FD net/minecraft/init/Blocks birch_stairs field_150487_bG +FD net/minecraft/init/Blocks jungle_stairs field_150481_bH +FD net/minecraft/init/Blocks command_block field_150483_bI +FD net/minecraft/init/Blocks beacon field_150461_bJ +FD net/minecraft/init/Blocks cobblestone_wall field_150463_bK +FD net/minecraft/init/Blocks cake field_150414_aQ +FD net/minecraft/init/Blocks unpowered_repeater field_150413_aR +FD net/minecraft/init/Blocks powered_repeater field_150416_aS +FD net/minecraft/init/Blocks trapdoor field_150415_aT +FD net/minecraft/init/Blocks monster_egg field_150418_aU +FD net/minecraft/init/Blocks stonebrick field_150417_aV +FD net/minecraft/init/Blocks brown_mushroom_block field_150420_aW +FD net/minecraft/init/Blocks red_mushroom_block field_150419_aX +FD net/minecraft/init/Blocks iron_bars field_150411_aY +FD net/minecraft/init/Blocks glass_pane field_150410_aZ +FD net/minecraft/init/Blocks melon_block field_150440_ba +FD net/minecraft/init/Blocks pumpkin_stem field_150393_bb +FD net/minecraft/init/Blocks melon_stem field_150394_bc +FD net/minecraft/init/Blocks vine field_150395_bd +FD net/minecraft/init/Blocks oak_fence_gate field_180390_bo +FD net/minecraft/init/Blocks spruce_fence_gate field_180391_bp +FD net/minecraft/init/Blocks birch_fence_gate field_180392_bq +FD net/minecraft/init/Blocks jungle_fence_gate field_180386_br +FD net/minecraft/init/Blocks dark_oak_fence_gate field_180385_bs +FD net/minecraft/init/Blocks acacia_fence_gate field_180387_bt +FD net/minecraft/init/Blocks brick_stairs field_150389_bf +FD net/minecraft/init/Blocks stone_brick_stairs field_150390_bg +FD net/minecraft/init/Blocks mycelium field_150391_bh +FD net/minecraft/init/Blocks waterlily field_150392_bi +FD net/minecraft/init/Blocks nether_brick field_150385_bj +FD net/minecraft/init/Blocks nether_brick_fence field_150386_bk +FD net/minecraft/init/Blocks grass field_150349_c +FD net/minecraft/init/Blocks coal_block field_150402_ci +FD net/minecraft/init/Blocks packed_ice field_150403_cj +FD net/minecraft/init/Blocks acacia_stairs field_150400_ck +FD net/minecraft/init/Blocks dark_oak_stairs field_150401_cl +FD net/minecraft/init/Blocks slime_block field_180399_cE +FD net/minecraft/init/Blocks double_plant field_150398_cm +FD net/minecraft/init/Blocks stained_glass field_150399_cn +FD net/minecraft/init/Blocks stained_glass_pane field_150397_co +FD net/minecraft/init/Blocks prismarine field_180397_cI +FD net/minecraft/init/Blocks sea_lantern field_180398_cJ +FD net/minecraft/init/Blocks standing_banner field_180393_cK +FD net/minecraft/init/Blocks wall_banner field_180394_cL +FD net/minecraft/init/Blocks red_sandstone field_180395_cM +FD net/minecraft/init/Blocks red_sandstone_stairs field_180396_cN +FD net/minecraft/init/Blocks double_stone_slab2 field_180388_cO +FD net/minecraft/init/Blocks stone_slab2 field_180389_cP +FD net/minecraft/init/Blocks flower_pot field_150457_bL +FD net/minecraft/init/Blocks carrots field_150459_bM +FD net/minecraft/init/Blocks potatoes field_150469_bN +FD net/minecraft/init/Blocks wooden_button field_150471_bO +FD net/minecraft/init/Blocks skull field_150465_bP +FD net/minecraft/init/Blocks anvil field_150467_bQ +FD net/minecraft/init/Blocks trapped_chest field_150447_bR +FD net/minecraft/init/Blocks light_weighted_pressure_plate field_150445_bS +FD net/minecraft/init/Blocks heavy_weighted_pressure_plate field_150443_bT +FD net/minecraft/init/Blocks unpowered_comparator field_150441_bU +FD net/minecraft/init/Blocks powered_comparator field_150455_bV +FD net/minecraft/init/Blocks daylight_detector field_150453_bW +FD net/minecraft/init/Blocks daylight_detector_inverted field_180402_cm +FD net/minecraft/init/Blocks redstone_block field_150451_bX +FD net/minecraft/init/Blocks quartz_ore field_150449_bY +FD net/minecraft/init/Blocks hopper field_150438_bZ +FD net/minecraft/init/Blocks quartz_block field_150371_ca +FD net/minecraft/init/Blocks quartz_stairs field_150370_cb +FD net/minecraft/init/Blocks activator_rail field_150408_cc +FD net/minecraft/init/Blocks dropper field_150409_cd +FD net/minecraft/init/Blocks stained_hardened_clay field_150406_ce +FD net/minecraft/init/Blocks barrier field_180401_cv +FD net/minecraft/init/Blocks iron_trapdoor field_180400_cw +FD net/minecraft/init/Blocks hay_block field_150407_cf +FD net/minecraft/init/Blocks carpet field_150404_cg +FD net/minecraft/init/Blocks hardened_clay field_150405_ch +FD net/minecraft/init/Blocks dirt field_150346_d +FD net/minecraft/init/Blocks cobblestone field_150347_e +FD net/minecraft/init/Blocks planks field_150344_f +FD net/minecraft/init/Blocks sapling field_150345_g +FD net/minecraft/init/Blocks bedrock field_150357_h +FD net/minecraft/init/Blocks flowing_water field_150358_i +FD net/minecraft/init/Blocks water field_150355_j +FD net/minecraft/init/Blocks flowing_lava field_150356_k +FD net/minecraft/init/Blocks lava field_150353_l +FD net/minecraft/init/Blocks sand field_150354_m +FD net/minecraft/init/Blocks gravel field_150351_n +FD net/minecraft/init/Blocks gold_ore field_150352_o +FD net/minecraft/init/Blocks iron_ore field_150366_p +FD net/minecraft/init/Blocks coal_ore field_150365_q +FD net/minecraft/init/Blocks log field_150364_r +FD net/minecraft/init/Blocks log2 field_150363_s +FD net/minecraft/init/Blocks leaves field_150362_t +FD net/minecraft/init/Blocks leaves2 field_150361_u +FD net/minecraft/init/Blocks sponge field_150360_v +FD net/minecraft/init/Blocks glass field_150359_w +FD net/minecraft/init/Blocks lapis_ore field_150369_x +FD net/minecraft/init/Blocks lapis_block field_150368_y +FD net/minecraft/init/Blocks dispenser field_150367_z +FD net/minecraft/block/BlockBrewingStand HAS_BOTTLE field_176451_a +FD net/minecraft/block/BlockButton wooden field_150047_a +FD net/minecraft/block/BlockButton FACING field_176585_a +FD net/minecraft/block/BlockButton POWERED field_176584_b +FD net/minecraft/block/BlockButton$1 field_180420_a field_180420_a +FD net/minecraft/block/BlockCactus AGE field_176587_a +FD net/minecraft/block/BlockCake BITES field_176589_a +FD net/minecraft/block/BlockCauldron LEVEL field_176591_a +FD net/minecraft/block/BlockChest FACING field_176459_a +FD net/minecraft/block/BlockChest chestType field_149956_a +FD net/minecraft/block/BlockCocoa AGE field_176501_a +FD net/minecraft/block/BlockCocoa$1 field_180415_a field_180415_a +FD net/minecraft/block/BlockColored COLOR field_176581_a +FD net/minecraft/block/BlockCommandBlock TRIGGERED field_176452_a +FD net/minecraft/block/BlockRedstoneComparator POWERED field_176464_a +FD net/minecraft/block/BlockRedstoneComparator MODE field_176463_b +FD net/minecraft/block/BlockRedstoneComparator$1 field_180418_a field_180418_a +FD net/minecraft/block/BlockRedstoneComparator$1 field_180417_b field_180417_b +FD net/minecraft/block/BlockRedstoneComparator$Mode COMPARE COMPARE +FD net/minecraft/block/BlockRedstoneComparator$Mode SUBTRACT SUBTRACT +FD net/minecraft/block/BlockRedstoneComparator$Mode name field_177041_c +FD net/minecraft/block/BlockRedstoneComparator$Mode $VALUES $VALUES +FD net/minecraft/block/BlockWorkbench$InterfaceCraftingTable world field_175128_a +FD net/minecraft/block/BlockWorkbench$InterfaceCraftingTable position field_175127_b +FD net/minecraft/block/BlockCrops AGE field_176488_a +FD net/minecraft/block/BlockDaylightDetector POWER field_176436_a +FD net/minecraft/block/BlockDaylightDetector inverted field_176435_b +FD net/minecraft/block/BlockRailDetector POWERED field_176574_M +FD net/minecraft/block/BlockRailDetector SHAPE field_176573_b +FD net/minecraft/block/BlockRedstoneDiode isRepeaterPowered field_149914_a +FD net/minecraft/block/BlockDirectional FACING field_176387_N +FD net/minecraft/block/BlockDirt VARIANT field_176386_a +FD net/minecraft/block/BlockDirt SNOWY field_176385_b +FD net/minecraft/block/BlockDirt$DirtType DIRT DIRT +FD net/minecraft/block/BlockDirt$DirtType COARSE_DIRT COARSE_DIRT +FD net/minecraft/block/BlockDirt$DirtType PODZOL PODZOL +FD net/minecraft/block/BlockDirt$DirtType METADATA_LOOKUP field_176930_d +FD net/minecraft/block/BlockDirt$DirtType metadata field_176931_e +FD net/minecraft/block/BlockDirt$DirtType name field_176928_f +FD net/minecraft/block/BlockDirt$DirtType unlocalizedName field_176929_g +FD net/minecraft/block/BlockDirt$DirtType field_181067_h field_181067_h +FD net/minecraft/block/BlockDirt$DirtType $VALUES $VALUES +FD net/minecraft/block/BlockDispenser dispenseBehaviorRegistry field_149943_a +FD net/minecraft/block/BlockDispenser rand field_149942_b +FD net/minecraft/block/BlockDispenser FACING field_176441_a +FD net/minecraft/block/BlockDispenser TRIGGERED field_176440_b +FD net/minecraft/block/BlockDoor HINGE field_176521_M +FD net/minecraft/block/BlockDoor POWERED field_176522_N +FD net/minecraft/block/BlockDoor HALF field_176523_O +FD net/minecraft/block/BlockDoor FACING field_176520_a +FD net/minecraft/block/BlockDoor OPEN field_176519_b +FD net/minecraft/block/BlockDoor$EnumDoorHalf UPPER UPPER +FD net/minecraft/block/BlockDoor$EnumDoorHalf LOWER LOWER +FD net/minecraft/block/BlockDoor$EnumDoorHalf $VALUES $VALUES +FD net/minecraft/block/BlockDoor$EnumHingePosition LEFT LEFT +FD net/minecraft/block/BlockDoor$EnumHingePosition RIGHT RIGHT +FD net/minecraft/block/BlockDoor$EnumHingePosition $VALUES $VALUES +FD net/minecraft/block/BlockDoublePlant FACING field_181084_N +FD net/minecraft/block/BlockDoublePlant VARIANT field_176493_a +FD net/minecraft/block/BlockDoublePlant HALF field_176492_b +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf UPPER UPPER +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf LOWER LOWER +FD net/minecraft/block/BlockDoublePlant$EnumBlockHalf $VALUES $VALUES +FD net/minecraft/block/BlockDoublePlant$EnumPlantType SUNFLOWER SUNFLOWER +FD net/minecraft/block/BlockDoublePlant$EnumPlantType SYRINGA SYRINGA +FD net/minecraft/block/BlockDoublePlant$EnumPlantType GRASS GRASS +FD net/minecraft/block/BlockDoublePlant$EnumPlantType FERN FERN +FD net/minecraft/block/BlockDoublePlant$EnumPlantType ROSE ROSE +FD net/minecraft/block/BlockDoublePlant$EnumPlantType PAEONIA PAEONIA +FD net/minecraft/block/BlockDoublePlant$EnumPlantType META_LOOKUP field_176941_g +FD net/minecraft/block/BlockDoublePlant$EnumPlantType meta field_176949_h +FD net/minecraft/block/BlockDoublePlant$EnumPlantType name field_176950_i +FD net/minecraft/block/BlockDoublePlant$EnumPlantType unlocalizedName field_176947_j +FD net/minecraft/block/BlockDoublePlant$EnumPlantType $VALUES $VALUES +FD net/minecraft/block/BlockDropper dropBehavior field_149947_P +FD net/minecraft/block/BlockDynamicLiquid adjacentSourceBlocks field_149815_a +FD net/minecraft/block/BlockEndPortalFrame FACING field_176508_a +FD net/minecraft/block/BlockEndPortalFrame EYE field_176507_b +FD net/minecraft/block/BlockEnderChest FACING field_176437_a +FD net/minecraft/block/BlockFalling fallInstantly field_149832_M +FD net/minecraft/block/BlockFarmland MOISTURE field_176531_a +FD net/minecraft/block/BlockFarmland$1 field_181625_a field_181625_a +FD net/minecraft/block/BlockFence SOUTH field_176527_M +FD net/minecraft/block/BlockFence WEST field_176528_N +FD net/minecraft/block/BlockFence NORTH field_176526_a +FD net/minecraft/block/BlockFence EAST field_176525_b +FD net/minecraft/block/BlockFenceGate IN_WALL field_176467_M +FD net/minecraft/block/BlockFenceGate OPEN field_176466_a +FD net/minecraft/block/BlockFenceGate POWERED field_176465_b +FD net/minecraft/block/BlockFire ALT field_176544_M +FD net/minecraft/block/BlockFire NORTH field_176545_N +FD net/minecraft/block/BlockFire EAST field_176546_O +FD net/minecraft/block/BlockFire SOUTH field_176541_P +FD net/minecraft/block/BlockFire WEST field_176539_Q +FD net/minecraft/block/BlockFire UPPER field_176542_R +FD net/minecraft/block/BlockFire encouragements field_149849_a +FD net/minecraft/block/BlockFire flammabilities field_149848_b +FD net/minecraft/block/BlockFire AGE field_176543_a +FD net/minecraft/block/BlockFire FLIP field_176540_b +FD net/minecraft/block/BlockFlower type field_176496_a +FD net/minecraft/block/BlockFlower$1 field_180355_a field_180355_a +FD net/minecraft/block/BlockFlower$EnumFlowerType DANDELION DANDELION +FD net/minecraft/block/BlockFlower$EnumFlowerType POPPY POPPY +FD net/minecraft/block/BlockFlower$EnumFlowerType BLUE_ORCHID BLUE_ORCHID +FD net/minecraft/block/BlockFlower$EnumFlowerType ALLIUM ALLIUM +FD net/minecraft/block/BlockFlower$EnumFlowerType HOUSTONIA HOUSTONIA +FD net/minecraft/block/BlockFlower$EnumFlowerType RED_TULIP RED_TULIP +FD net/minecraft/block/BlockFlower$EnumFlowerType ORANGE_TULIP ORANGE_TULIP +FD net/minecraft/block/BlockFlower$EnumFlowerType WHITE_TULIP WHITE_TULIP +FD net/minecraft/block/BlockFlower$EnumFlowerType PINK_TULIP PINK_TULIP +FD net/minecraft/block/BlockFlower$EnumFlowerType OXEYE_DAISY OXEYE_DAISY +FD net/minecraft/block/BlockFlower$EnumFlowerType TYPES_FOR_BLOCK field_176981_k +FD net/minecraft/block/BlockFlower$EnumFlowerType blockType field_176978_l +FD net/minecraft/block/BlockFlower$EnumFlowerType meta field_176979_m +FD net/minecraft/block/BlockFlower$EnumFlowerType name field_176976_n +FD net/minecraft/block/BlockFlower$EnumFlowerType unlocalizedName field_176977_o +FD net/minecraft/block/BlockFlower$EnumFlowerType $VALUES $VALUES +FD net/minecraft/block/BlockFlower$EnumFlowerType$1 field_180351_a field_180351_a +FD net/minecraft/block/BlockFlower$EnumFlowerColor YELLOW YELLOW +FD net/minecraft/block/BlockFlower$EnumFlowerColor RED RED +FD net/minecraft/block/BlockFlower$EnumFlowerColor $VALUES $VALUES +FD net/minecraft/block/BlockFlowerPot LEGACY_DATA field_176444_a +FD net/minecraft/block/BlockFlowerPot CONTENTS field_176443_b +FD net/minecraft/block/BlockFlowerPot$1 field_180353_a field_180353_a +FD net/minecraft/block/BlockFlowerPot$1 field_180352_b field_180352_b +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType EMPTY EMPTY +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType POPPY POPPY +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType BLUE_ORCHID BLUE_ORCHID +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ALLIUM ALLIUM +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType HOUSTONIA HOUSTONIA +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType RED_TULIP RED_TULIP +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ORANGE_TULIP ORANGE_TULIP +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType WHITE_TULIP WHITE_TULIP +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType PINK_TULIP PINK_TULIP +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType OXEYE_DAISY OXEYE_DAISY +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DANDELION DANDELION +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType OAK_SAPLING OAK_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType SPRUCE_SAPLING SPRUCE_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType BIRCH_SAPLING BIRCH_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType JUNGLE_SAPLING JUNGLE_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType ACACIA_SAPLING ACACIA_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DARK_OAK_SAPLING DARK_OAK_SAPLING +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType MUSHROOM_RED MUSHROOM_RED +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType MUSHROOM_BROWN MUSHROOM_BROWN +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType DEAD_BUSH DEAD_BUSH +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType FERN FERN +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType CACTUS CACTUS +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType name field_177006_w +FD net/minecraft/block/BlockFlowerPot$EnumFlowerType $VALUES $VALUES +FD net/minecraft/block/BlockFurnace keepInventory field_149934_M +FD net/minecraft/block/BlockFurnace FACING field_176447_a +FD net/minecraft/block/BlockFurnace isBurning field_149932_b +FD net/minecraft/block/BlockFurnace$1 field_180356_a field_180356_a +FD net/minecraft/block/BlockGrass SNOWY field_176498_a +FD net/minecraft/block/BlockSlab HALF field_176554_a +FD net/minecraft/block/BlockSlab$EnumBlockHalf TOP TOP +FD net/minecraft/block/BlockSlab$EnumBlockHalf BOTTOM BOTTOM +FD net/minecraft/block/BlockSlab$EnumBlockHalf name field_176988_c +FD net/minecraft/block/BlockSlab$EnumBlockHalf $VALUES $VALUES +FD net/minecraft/block/BlockBreakable ignoreSimilarity field_149996_a +FD net/minecraft/block/BlockHopper FACING field_176430_a +FD net/minecraft/block/BlockHopper ENABLED field_176429_b +FD net/minecraft/block/BlockHugeMushroom VARIANT field_176380_a +FD net/minecraft/block/BlockHugeMushroom smallBlock field_176379_b +FD net/minecraft/block/BlockHugeMushroom$1 field_181092_a field_181092_a +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH_WEST NORTH_WEST +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH NORTH +FD net/minecraft/block/BlockHugeMushroom$EnumType NORTH_EAST NORTH_EAST +FD net/minecraft/block/BlockHugeMushroom$EnumType WEST WEST +FD net/minecraft/block/BlockHugeMushroom$EnumType CENTER CENTER +FD net/minecraft/block/BlockHugeMushroom$EnumType EAST EAST +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH_WEST SOUTH_WEST +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH SOUTH +FD net/minecraft/block/BlockHugeMushroom$EnumType SOUTH_EAST SOUTH_EAST +FD net/minecraft/block/BlockHugeMushroom$EnumType STEM STEM +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_INSIDE ALL_INSIDE +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_OUTSIDE ALL_OUTSIDE +FD net/minecraft/block/BlockHugeMushroom$EnumType ALL_STEM ALL_STEM +FD net/minecraft/block/BlockHugeMushroom$EnumType META_LOOKUP field_176905_n +FD net/minecraft/block/BlockHugeMushroom$EnumType meta field_176906_o +FD net/minecraft/block/BlockHugeMushroom$EnumType name field_176914_p +FD net/minecraft/block/BlockHugeMushroom$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockJukebox HAS_RECORD field_176432_a +FD net/minecraft/block/BlockJukebox$TileEntityJukebox record field_145858_a +FD net/minecraft/block/BlockLadder FACING field_176382_a +FD net/minecraft/block/BlockLadder$1 field_180190_a field_180190_a +FD net/minecraft/block/BlockLeaves surroundings field_150128_a +FD net/minecraft/block/BlockLeaves iconIndex field_150127_b +FD net/minecraft/block/BlockLeaves isTransparent field_176238_O +FD net/minecraft/block/BlockLeaves DECAYABLE field_176237_a +FD net/minecraft/block/BlockLeaves CHECK_DECAY field_176236_b +FD net/minecraft/block/BlockLever FACING field_176360_a +FD net/minecraft/block/BlockLever POWERED field_176359_b +FD net/minecraft/block/BlockLever$1 field_180165_a field_180165_a +FD net/minecraft/block/BlockLever$1 field_180163_b field_180163_b +FD net/minecraft/block/BlockLever$1 field_180164_c field_180164_c +FD net/minecraft/block/BlockLever$EnumOrientation DOWN_X DOWN_X +FD net/minecraft/block/BlockLever$EnumOrientation EAST EAST +FD net/minecraft/block/BlockLever$EnumOrientation WEST WEST +FD net/minecraft/block/BlockLever$EnumOrientation SOUTH SOUTH +FD net/minecraft/block/BlockLever$EnumOrientation NORTH NORTH +FD net/minecraft/block/BlockLever$EnumOrientation UP_Z UP_Z +FD net/minecraft/block/BlockLever$EnumOrientation UP_X UP_X +FD net/minecraft/block/BlockLever$EnumOrientation DOWN_Z DOWN_Z +FD net/minecraft/block/BlockLever$EnumOrientation META_LOOKUP field_176869_i +FD net/minecraft/block/BlockLever$EnumOrientation meta field_176866_j +FD net/minecraft/block/BlockLever$EnumOrientation name field_176867_k +FD net/minecraft/block/BlockLever$EnumOrientation facing field_176864_l +FD net/minecraft/block/BlockLever$EnumOrientation $VALUES $VALUES +FD net/minecraft/block/BlockLiquid LEVEL field_176367_b +FD net/minecraft/block/BlockLog LOG_AXIS field_176299_a +FD net/minecraft/block/BlockLog$1 field_180167_a field_180167_a +FD net/minecraft/block/BlockLog$EnumAxis X X +FD net/minecraft/block/BlockLog$EnumAxis Y Y +FD net/minecraft/block/BlockLog$EnumAxis Z Z +FD net/minecraft/block/BlockLog$EnumAxis NONE NONE +FD net/minecraft/block/BlockLog$EnumAxis name field_176874_e +FD net/minecraft/block/BlockLog$EnumAxis $VALUES $VALUES +FD net/minecraft/block/BlockSilverfish VARIANT field_176378_a +FD net/minecraft/block/BlockSilverfish$1 field_180178_a field_180178_a +FD net/minecraft/block/BlockSilverfish$EnumType STONE STONE +FD net/minecraft/block/BlockSilverfish$EnumType COBBLESTONE COBBLESTONE +FD net/minecraft/block/BlockSilverfish$EnumType STONEBRICK STONEBRICK +FD net/minecraft/block/BlockSilverfish$EnumType MOSSY_STONEBRICK MOSSY_STONEBRICK +FD net/minecraft/block/BlockSilverfish$EnumType CRACKED_STONEBRICK CRACKED_STONEBRICK +FD net/minecraft/block/BlockSilverfish$EnumType CHISELED_STONEBRICK CHISELED_STONEBRICK +FD net/minecraft/block/BlockSilverfish$EnumType META_LOOKUP field_176885_g +FD net/minecraft/block/BlockSilverfish$EnumType meta field_176893_h +FD net/minecraft/block/BlockSilverfish$EnumType name field_176894_i +FD net/minecraft/block/BlockSilverfish$EnumType unlocalizedName field_176891_j +FD net/minecraft/block/BlockSilverfish$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockMycelium SNOWY field_176384_a +FD net/minecraft/block/BlockNetherWart AGE field_176486_a +FD net/minecraft/block/BlockNewLeaf VARIANT field_176240_P +FD net/minecraft/block/BlockNewLog VARIANT field_176300_b +FD net/minecraft/block/BlockNewLog$2 field_181093_a field_181093_a +FD net/minecraft/block/BlockNewLog$2 field_180191_a field_180191_a +FD net/minecraft/block/BlockStoneSlabNew VARIANT field_176559_M +FD net/minecraft/block/BlockStoneSlabNew SEAMLESS field_176558_b +FD net/minecraft/block/BlockStoneSlabNew$EnumType RED_SANDSTONE RED_SANDSTONE +FD net/minecraft/block/BlockStoneSlabNew$EnumType META_LOOKUP field_176921_b +FD net/minecraft/block/BlockStoneSlabNew$EnumType meta field_176922_c +FD net/minecraft/block/BlockStoneSlabNew$EnumType name field_176919_d +FD net/minecraft/block/BlockStoneSlabNew$EnumType field_181069_e field_181069_e +FD net/minecraft/block/BlockStoneSlabNew$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockNote INSTRUMENTS field_176434_a +FD net/minecraft/block/BlockOldLeaf VARIANT field_176239_P +FD net/minecraft/block/BlockOldLog VARIANT field_176301_b +FD net/minecraft/block/BlockOldLog$2 field_181094_a field_181094_a +FD net/minecraft/block/BlockOldLog$2 field_180203_a field_180203_a +FD net/minecraft/block/BlockPlanks VARIANT field_176383_a +FD net/minecraft/block/BlockPlanks$EnumType OAK OAK +FD net/minecraft/block/BlockPlanks$EnumType SPRUCE SPRUCE +FD net/minecraft/block/BlockPlanks$EnumType BIRCH BIRCH +FD net/minecraft/block/BlockPlanks$EnumType JUNGLE JUNGLE +FD net/minecraft/block/BlockPlanks$EnumType ACACIA ACACIA +FD net/minecraft/block/BlockPlanks$EnumType DARK_OAK DARK_OAK +FD net/minecraft/block/BlockPlanks$EnumType META_LOOKUP field_176842_g +FD net/minecraft/block/BlockPlanks$EnumType meta field_176850_h +FD net/minecraft/block/BlockPlanks$EnumType name field_176851_i +FD net/minecraft/block/BlockPlanks$EnumType unlocalizedName field_176848_j +FD net/minecraft/block/BlockPlanks$EnumType mapColor field_181071_k +FD net/minecraft/block/BlockPlanks$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockPortal AXIS field_176550_a +FD net/minecraft/block/BlockPortal$Size world field_150867_a +FD net/minecraft/block/BlockPortal$Size axis field_150865_b +FD net/minecraft/block/BlockPortal$Size field_150866_c field_150866_c +FD net/minecraft/block/BlockPortal$Size field_150863_d field_150863_d +FD net/minecraft/block/BlockPortal$Size field_150864_e field_150864_e +FD net/minecraft/block/BlockPortal$Size field_150861_f field_150861_f +FD net/minecraft/block/BlockPortal$Size field_150862_g field_150862_g +FD net/minecraft/block/BlockPortal$Size field_150868_h field_150868_h +FD net/minecraft/block/BlockRailPowered POWERED field_176569_M +FD net/minecraft/block/BlockRailPowered SHAPE field_176568_b +FD net/minecraft/block/BlockRailPowered$2 field_180121_a field_180121_a +FD net/minecraft/block/BlockPressurePlate POWERED field_176580_a +FD net/minecraft/block/BlockPressurePlate sensitivity field_150069_a +FD net/minecraft/block/BlockPressurePlate$1 field_180127_a field_180127_a +FD net/minecraft/block/BlockPressurePlate$Sensitivity EVERYTHING EVERYTHING +FD net/minecraft/block/BlockPressurePlate$Sensitivity MOBS MOBS +FD net/minecraft/block/BlockPressurePlate$Sensitivity $VALUES $VALUES +FD net/minecraft/block/BlockPrismarine BRICKS_META field_176333_M +FD net/minecraft/block/BlockPrismarine DARK_META field_176334_N +FD net/minecraft/block/BlockPrismarine VARIANT field_176332_a +FD net/minecraft/block/BlockPrismarine ROUGH_META field_176331_b +FD net/minecraft/block/BlockPrismarine$EnumType ROUGH ROUGH +FD net/minecraft/block/BlockPrismarine$EnumType BRICKS BRICKS +FD net/minecraft/block/BlockPrismarine$EnumType DARK DARK +FD net/minecraft/block/BlockPrismarine$EnumType META_LOOKUP field_176813_d +FD net/minecraft/block/BlockPrismarine$EnumType meta field_176814_e +FD net/minecraft/block/BlockPrismarine$EnumType name field_176811_f +FD net/minecraft/block/BlockPrismarine$EnumType unlocalizedName field_176812_g +FD net/minecraft/block/BlockPrismarine$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockPumpkin golemBasePattern field_176395_M +FD net/minecraft/block/BlockPumpkin golemPattern field_176396_O +FD net/minecraft/block/BlockPumpkin field_181085_Q field_181085_Q +FD net/minecraft/block/BlockPumpkin snowmanBasePattern field_176394_a +FD net/minecraft/block/BlockPumpkin snowmanPattern field_176393_b +FD net/minecraft/block/BlockQuartz VARIANT field_176335_a +FD net/minecraft/block/BlockQuartz$1 field_180101_a field_180101_a +FD net/minecraft/block/BlockQuartz$EnumType DEFAULT DEFAULT +FD net/minecraft/block/BlockQuartz$EnumType CHISELED CHISELED +FD net/minecraft/block/BlockQuartz$EnumType LINES_Y LINES_Y +FD net/minecraft/block/BlockQuartz$EnumType LINES_X LINES_X +FD net/minecraft/block/BlockQuartz$EnumType LINES_Z LINES_Z +FD net/minecraft/block/BlockQuartz$EnumType META_LOOKUP field_176797_f +FD net/minecraft/block/BlockQuartz$EnumType meta field_176798_g +FD net/minecraft/block/BlockQuartz$EnumType field_176805_h field_176805_h +FD net/minecraft/block/BlockQuartz$EnumType unlocalizedName field_176806_i +FD net/minecraft/block/BlockQuartz$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockRail SHAPE field_176565_b +FD net/minecraft/block/BlockRedSandstone TYPE field_176336_a +FD net/minecraft/block/BlockRedSandstone$EnumType DEFAULT DEFAULT +FD net/minecraft/block/BlockRedSandstone$EnumType CHISELED CHISELED +FD net/minecraft/block/BlockRedSandstone$EnumType SMOOTH SMOOTH +FD net/minecraft/block/BlockRedSandstone$EnumType META_LOOKUP field_176831_d +FD net/minecraft/block/BlockRedSandstone$EnumType meta field_176832_e +FD net/minecraft/block/BlockRedSandstone$EnumType name field_176829_f +FD net/minecraft/block/BlockRedSandstone$EnumType unlocalizedName field_176830_g +FD net/minecraft/block/BlockRedSandstone$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockRedstoneOre isOn field_150187_a +FD net/minecraft/block/BlockRedstoneWire SOUTH field_176349_M +FD net/minecraft/block/BlockRedstoneWire WEST field_176350_N +FD net/minecraft/block/BlockRedstoneWire POWER field_176351_O +FD net/minecraft/block/BlockRedstoneWire canProvidePower field_150181_a +FD net/minecraft/block/BlockRedstoneWire blocksNeedingUpdate field_150179_b +FD net/minecraft/block/BlockRedstoneWire NORTH field_176348_a +FD net/minecraft/block/BlockRedstoneWire EAST field_176347_b +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition UP UP +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition SIDE SIDE +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition NONE NONE +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition name field_176820_d +FD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition $VALUES $VALUES +FD net/minecraft/block/BlockRedstoneLight isOn field_150171_a +FD net/minecraft/block/BlockRedstoneTorch isOn field_150113_a +FD net/minecraft/block/BlockRedstoneTorch toggles field_150112_b +FD net/minecraft/block/BlockRedstoneTorch$Toggle pos field_180111_a +FD net/minecraft/block/BlockRedstoneTorch$Toggle time field_150844_d +FD net/minecraft/block/BlockReed AGE field_176355_a +FD net/minecraft/block/BlockRedstoneRepeater LOCKED field_176411_a +FD net/minecraft/block/BlockRedstoneRepeater DELAY field_176410_b +FD net/minecraft/block/BlockRotatedPillar AXIS field_176298_M +FD net/minecraft/block/BlockSand VARIANT field_176504_a +FD net/minecraft/block/BlockSand$EnumType SAND SAND +FD net/minecraft/block/BlockSand$EnumType RED_SAND RED_SAND +FD net/minecraft/block/BlockSand$EnumType META_LOOKUP field_176695_c +FD net/minecraft/block/BlockSand$EnumType meta field_176692_d +FD net/minecraft/block/BlockSand$EnumType name field_176693_e +FD net/minecraft/block/BlockSand$EnumType mapColor field_176690_f +FD net/minecraft/block/BlockSand$EnumType unlocalizedName field_176691_g +FD net/minecraft/block/BlockSand$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockSandStone TYPE field_176297_a +FD net/minecraft/block/BlockSandStone$EnumType DEFAULT DEFAULT +FD net/minecraft/block/BlockSandStone$EnumType CHISELED CHISELED +FD net/minecraft/block/BlockSandStone$EnumType SMOOTH SMOOTH +FD net/minecraft/block/BlockSandStone$EnumType META_LOOKUP field_176679_d +FD net/minecraft/block/BlockSandStone$EnumType metadata field_176680_e +FD net/minecraft/block/BlockSandStone$EnumType name field_176677_f +FD net/minecraft/block/BlockSandStone$EnumType unlocalizedName field_176678_g +FD net/minecraft/block/BlockSandStone$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockSapling TYPE field_176480_a +FD net/minecraft/block/BlockSapling STAGE field_176479_b +FD net/minecraft/block/BlockSapling$1 field_177065_a field_177065_a +FD net/minecraft/block/BlockSkull IS_WITHER_SKELETON field_176419_M +FD net/minecraft/block/BlockSkull witherBasePattern field_176420_N +FD net/minecraft/block/BlockSkull witherPattern field_176421_O +FD net/minecraft/block/BlockSkull FACING field_176418_a +FD net/minecraft/block/BlockSkull NODROP field_176417_b +FD net/minecraft/block/BlockSkull$2 field_177063_a field_177063_a +FD net/minecraft/block/BlockSnow LAYERS field_176315_a +FD net/minecraft/block/BlockSponge WET field_176313_a +FD net/minecraft/block/BlockStainedGlass COLOR field_176547_a +FD net/minecraft/block/BlockStainedGlassPane COLOR field_176245_a +FD net/minecraft/block/BlockStairs SHAPE field_176310_M +FD net/minecraft/block/BlockStairs field_150150_a field_150150_a +FD net/minecraft/block/BlockStairs modelBlock field_150149_b +FD net/minecraft/block/BlockStairs modelState field_150151_M +FD net/minecraft/block/BlockStairs hasRaytraced field_150152_N +FD net/minecraft/block/BlockStairs rayTracePass field_150153_O +FD net/minecraft/block/BlockStairs FACING field_176309_a +FD net/minecraft/block/BlockStairs HALF field_176308_b +FD net/minecraft/block/BlockStairs$EnumHalf TOP TOP +FD net/minecraft/block/BlockStairs$EnumHalf BOTTOM BOTTOM +FD net/minecraft/block/BlockStairs$EnumHalf name field_176709_c +FD net/minecraft/block/BlockStairs$EnumHalf $VALUES $VALUES +FD net/minecraft/block/BlockStairs$EnumShape STRAIGHT STRAIGHT +FD net/minecraft/block/BlockStairs$EnumShape INNER_LEFT INNER_LEFT +FD net/minecraft/block/BlockStairs$EnumShape INNER_RIGHT INNER_RIGHT +FD net/minecraft/block/BlockStairs$EnumShape OUTER_LEFT OUTER_LEFT +FD net/minecraft/block/BlockStairs$EnumShape OUTER_RIGHT OUTER_RIGHT +FD net/minecraft/block/BlockStairs$EnumShape name field_176699_f +FD net/minecraft/block/BlockStairs$EnumShape $VALUES $VALUES +FD net/minecraft/block/BlockStandingSign ROTATION field_176413_a +FD net/minecraft/block/BlockStem crop field_149877_a +FD net/minecraft/block/BlockStem AGE field_176484_a +FD net/minecraft/block/BlockStem FACING field_176483_b +FD net/minecraft/block/BlockStone VARIANT field_176247_a +FD net/minecraft/block/BlockStone$EnumType STONE STONE +FD net/minecraft/block/BlockStone$EnumType GRANITE GRANITE +FD net/minecraft/block/BlockStone$EnumType GRANITE_SMOOTH GRANITE_SMOOTH +FD net/minecraft/block/BlockStone$EnumType DIORITE DIORITE +FD net/minecraft/block/BlockStone$EnumType DIORITE_SMOOTH DIORITE_SMOOTH +FD net/minecraft/block/BlockStone$EnumType ANDESITE ANDESITE +FD net/minecraft/block/BlockStone$EnumType ANDESITE_SMOOTH ANDESITE_SMOOTH +FD net/minecraft/block/BlockStone$EnumType META_LOOKUP field_176655_h +FD net/minecraft/block/BlockStone$EnumType meta field_176656_i +FD net/minecraft/block/BlockStone$EnumType name field_176653_j +FD net/minecraft/block/BlockStone$EnumType unlocalizedName field_176654_k +FD net/minecraft/block/BlockStone$EnumType field_181073_l field_181073_l +FD net/minecraft/block/BlockStone$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockStoneBrick MOSSY_META field_176250_M +FD net/minecraft/block/BlockStoneBrick CRACKED_META field_176251_N +FD net/minecraft/block/BlockStoneBrick CHISELED_META field_176252_O +FD net/minecraft/block/BlockStoneBrick VARIANT field_176249_a +FD net/minecraft/block/BlockStoneBrick DEFAULT_META field_176248_b +FD net/minecraft/block/BlockStoneBrick$EnumType DEFAULT DEFAULT +FD net/minecraft/block/BlockStoneBrick$EnumType MOSSY MOSSY +FD net/minecraft/block/BlockStoneBrick$EnumType CRACKED CRACKED +FD net/minecraft/block/BlockStoneBrick$EnumType CHISELED CHISELED +FD net/minecraft/block/BlockStoneBrick$EnumType META_LOOKUP field_176618_e +FD net/minecraft/block/BlockStoneBrick$EnumType meta field_176615_f +FD net/minecraft/block/BlockStoneBrick$EnumType name field_176616_g +FD net/minecraft/block/BlockStoneBrick$EnumType unlocalizedName field_176622_h +FD net/minecraft/block/BlockStoneBrick$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockStoneSlab VARIANT field_176556_M +FD net/minecraft/block/BlockStoneSlab SEAMLESS field_176555_b +FD net/minecraft/block/BlockStoneSlab$EnumType STONE STONE +FD net/minecraft/block/BlockStoneSlab$EnumType SAND SAND +FD net/minecraft/block/BlockStoneSlab$EnumType WOOD WOOD +FD net/minecraft/block/BlockStoneSlab$EnumType COBBLESTONE COBBLESTONE +FD net/minecraft/block/BlockStoneSlab$EnumType BRICK BRICK +FD net/minecraft/block/BlockStoneSlab$EnumType SMOOTHBRICK SMOOTHBRICK +FD net/minecraft/block/BlockStoneSlab$EnumType NETHERBRICK NETHERBRICK +FD net/minecraft/block/BlockStoneSlab$EnumType QUARTZ QUARTZ +FD net/minecraft/block/BlockStoneSlab$EnumType META_LOOKUP field_176640_i +FD net/minecraft/block/BlockStoneSlab$EnumType meta field_176637_j +FD net/minecraft/block/BlockStoneSlab$EnumType field_181075_k field_181075_k +FD net/minecraft/block/BlockStoneSlab$EnumType name field_176638_k +FD net/minecraft/block/BlockStoneSlab$EnumType unlocalizedName field_176635_l +FD net/minecraft/block/BlockStoneSlab$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockTallGrass TYPE field_176497_a +FD net/minecraft/block/BlockTallGrass$EnumType DEAD_BUSH DEAD_BUSH +FD net/minecraft/block/BlockTallGrass$EnumType GRASS GRASS +FD net/minecraft/block/BlockTallGrass$EnumType FERN FERN +FD net/minecraft/block/BlockTallGrass$EnumType META_LOOKUP field_177048_d +FD net/minecraft/block/BlockTallGrass$EnumType meta field_177049_e +FD net/minecraft/block/BlockTallGrass$EnumType name field_177046_f +FD net/minecraft/block/BlockTallGrass$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockPane EAST field_176242_M +FD net/minecraft/block/BlockPane SOUTH field_176243_N +FD net/minecraft/block/BlockPane WEST field_176244_O +FD net/minecraft/block/BlockPane canDrop field_150099_b +FD net/minecraft/block/BlockPane NORTH field_176241_b +FD net/minecraft/block/BlockTNT EXPLODE field_176246_a +FD net/minecraft/block/BlockTorch FACING field_176596_a +FD net/minecraft/block/BlockTorch$2 field_176609_a field_176609_a +FD net/minecraft/block/BlockLeavesBase fancyGraphics field_150121_P +FD net/minecraft/block/BlockTrapDoor HALF field_176285_M +FD net/minecraft/block/BlockTrapDoor FACING field_176284_a +FD net/minecraft/block/BlockTrapDoor OPEN field_176283_b +FD net/minecraft/block/BlockTrapDoor$1 field_177058_a field_177058_a +FD net/minecraft/block/BlockTrapDoor$DoorHalf TOP TOP +FD net/minecraft/block/BlockTrapDoor$DoorHalf BOTTOM BOTTOM +FD net/minecraft/block/BlockTrapDoor$DoorHalf name field_176671_c +FD net/minecraft/block/BlockTrapDoor$DoorHalf $VALUES $VALUES +FD net/minecraft/block/BlockTripWire ATTACHED field_176294_M +FD net/minecraft/block/BlockTripWire DISARMED field_176295_N +FD net/minecraft/block/BlockTripWire NORTH field_176296_O +FD net/minecraft/block/BlockTripWire EAST field_176291_P +FD net/minecraft/block/BlockTripWire SOUTH field_176289_Q +FD net/minecraft/block/BlockTripWire WEST field_176292_R +FD net/minecraft/block/BlockTripWire POWERED field_176293_a +FD net/minecraft/block/BlockTripWire SUSPENDED field_176290_b +FD net/minecraft/block/BlockTripWireHook ATTACHED field_176265_M +FD net/minecraft/block/BlockTripWireHook SUSPENDED field_176266_N +FD net/minecraft/block/BlockTripWireHook FACING field_176264_a +FD net/minecraft/block/BlockTripWireHook POWERED field_176263_b +FD net/minecraft/block/BlockTripWireHook$1 field_177056_a field_177056_a +FD net/minecraft/block/BlockVine EAST field_176278_M +FD net/minecraft/block/BlockVine SOUTH field_176279_N +FD net/minecraft/block/BlockVine WEST field_176280_O +FD net/minecraft/block/BlockVine ALL_FACES field_176274_P +FD net/minecraft/block/BlockVine UP field_176277_a +FD net/minecraft/block/BlockVine NORTH field_176273_b +FD net/minecraft/block/BlockVine$1 field_177057_a field_177057_a +FD net/minecraft/block/BlockWall EAST field_176257_M +FD net/minecraft/block/BlockWall SOUTH field_176258_N +FD net/minecraft/block/BlockWall WEST field_176259_O +FD net/minecraft/block/BlockWall VARIANT field_176255_P +FD net/minecraft/block/BlockWall UP field_176256_a +FD net/minecraft/block/BlockWall NORTH field_176254_b +FD net/minecraft/block/BlockWall$EnumType NORMAL NORMAL +FD net/minecraft/block/BlockWall$EnumType MOSSY MOSSY +FD net/minecraft/block/BlockWall$EnumType META_LOOKUP field_176666_c +FD net/minecraft/block/BlockWall$EnumType meta field_176663_d +FD net/minecraft/block/BlockWall$EnumType name field_176664_e +FD net/minecraft/block/BlockWall$EnumType unlocalizedName field_176661_f +FD net/minecraft/block/BlockWall$EnumType $VALUES $VALUES +FD net/minecraft/block/BlockWallSign FACING field_176412_a +FD net/minecraft/block/BlockWallSign$1 field_177331_a field_177331_a +FD net/minecraft/block/BlockPressurePlateWeighted POWER field_176579_a +FD net/minecraft/block/BlockPressurePlateWeighted field_150068_a field_150068_a +FD net/minecraft/block/BlockWoodSlab VARIANT field_176557_b +FD net/minecraft/block/BlockCarpet COLOR field_176330_a +FD net/minecraft/tileentity/TileEntityBanner baseColor field_175120_a +FD net/minecraft/tileentity/TileEntityBanner patterns field_175118_f +FD net/minecraft/tileentity/TileEntityBanner field_175119_g field_175119_g +FD net/minecraft/tileentity/TileEntityBanner patternList field_175122_h +FD net/minecraft/tileentity/TileEntityBanner colorList field_175123_i +FD net/minecraft/tileentity/TileEntityBanner patternResourceLocation field_175121_j +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_VERTICAL HALF_VERTICAL +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_HORIZONTAL HALF_HORIZONTAL +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_VERTICAL_MIRROR HALF_VERTICAL_MIRROR +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern HALF_HORIZONTAL_MIRROR HALF_HORIZONTAL_MIRROR +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BORDER BORDER +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CURLY_BORDER CURLY_BORDER +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CREEPER CREEPER +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern GRADIENT GRADIENT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern GRADIENT_UP GRADIENT_UP +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BRICKS BRICKS +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SKULL SKULL +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern FLOWER FLOWER +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern MOJANG MOJANG +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternName field_177284_N +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternID field_177285_O +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern craftingLayers field_177291_P +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern patternCraftingStack field_177290_Q +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern $VALUES $VALUES +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern BASE BASE +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_BOTTOM_LEFT SQUARE_BOTTOM_LEFT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_BOTTOM_RIGHT SQUARE_BOTTOM_RIGHT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_TOP_LEFT SQUARE_TOP_LEFT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern SQUARE_TOP_RIGHT SQUARE_TOP_RIGHT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_BOTTOM STRIPE_BOTTOM +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_TOP STRIPE_TOP +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_LEFT STRIPE_LEFT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_RIGHT STRIPE_RIGHT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_CENTER STRIPE_CENTER +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_MIDDLE STRIPE_MIDDLE +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_DOWNRIGHT STRIPE_DOWNRIGHT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_DOWNLEFT STRIPE_DOWNLEFT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRIPE_SMALL STRIPE_SMALL +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CROSS CROSS +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern STRAIGHT_CROSS STRAIGHT_CROSS +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLE_BOTTOM TRIANGLE_BOTTOM +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLE_TOP TRIANGLE_TOP +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLES_BOTTOM TRIANGLES_BOTTOM +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern TRIANGLES_TOP TRIANGLES_TOP +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_LEFT DIAGONAL_LEFT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_RIGHT DIAGONAL_RIGHT +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_LEFT_MIRROR DIAGONAL_LEFT_MIRROR +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern DIAGONAL_RIGHT_MIRROR DIAGONAL_RIGHT_MIRROR +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern CIRCLE_MIDDLE CIRCLE_MIDDLE +FD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern RHOMBUS_MIDDLE RHOMBUS_MIDDLE +FD net/minecraft/tileentity/TileEntityBeacon effectsList field_146009_a +FD net/minecraft/tileentity/TileEntityBeacon beamSegments field_174909_f +FD net/minecraft/tileentity/TileEntityBeacon beamRenderCounter field_146016_i +FD net/minecraft/tileentity/TileEntityBeacon field_146014_j field_146014_j +FD net/minecraft/tileentity/TileEntityBeacon isComplete field_146015_k +FD net/minecraft/tileentity/TileEntityBeacon levels field_146012_l +FD net/minecraft/tileentity/TileEntityBeacon primaryEffect field_146013_m +FD net/minecraft/tileentity/TileEntityBeacon secondaryEffect field_146010_n +FD net/minecraft/tileentity/TileEntityBeacon payment field_146011_o +FD net/minecraft/tileentity/TileEntityBeacon customName field_146008_p +FD net/minecraft/tileentity/TileEntityBeacon$BeamSegment colors field_177266_a +FD net/minecraft/tileentity/TileEntityBeacon$BeamSegment height field_177265_b +FD net/minecraft/tileentity/TileEntity logger field_145852_a +FD net/minecraft/tileentity/TileEntity worldObj field_145850_b +FD net/minecraft/tileentity/TileEntity pos field_174879_c +FD net/minecraft/tileentity/TileEntity tileEntityInvalid field_145846_f +FD net/minecraft/tileentity/TileEntity blockType field_145854_h +FD net/minecraft/tileentity/TileEntity nameToClassMap field_145855_i +FD net/minecraft/tileentity/TileEntity classToNameMap field_145853_j +FD net/minecraft/tileentity/TileEntity blockMetadata field_145847_g +FD net/minecraft/tileentity/TileEntity$1 field_150830_a field_150830_a +FD net/minecraft/tileentity/TileEntity$2 field_150832_a field_150832_a +FD net/minecraft/tileentity/TileEntity$3 field_150834_a field_150834_a +FD net/minecraft/tileentity/TileEntityBrewingStand inputSlots field_145941_a +FD net/minecraft/tileentity/TileEntityBrewingStand outputSlots field_145947_i +FD net/minecraft/tileentity/TileEntityBrewingStand brewingItemStacks field_145945_j +FD net/minecraft/tileentity/TileEntityBrewingStand brewTime field_145946_k +FD net/minecraft/tileentity/TileEntityBrewingStand filledSlots field_145943_l +FD net/minecraft/tileentity/TileEntityBrewingStand ingredientID field_145944_m +FD net/minecraft/tileentity/TileEntityBrewingStand customName field_145942_n +FD net/minecraft/tileentity/TileEntityChest adjacentChestChecked field_145984_a +FD net/minecraft/tileentity/TileEntityChest adjacentChestZNeg field_145992_i +FD net/minecraft/tileentity/TileEntityChest adjacentChestXPos field_145990_j +FD net/minecraft/tileentity/TileEntityChest adjacentChestXNeg field_145991_k +FD net/minecraft/tileentity/TileEntityChest adjacentChestZPos field_145988_l +FD net/minecraft/tileentity/TileEntityChest lidAngle field_145989_m +FD net/minecraft/tileentity/TileEntityChest prevLidAngle field_145986_n +FD net/minecraft/tileentity/TileEntityChest numPlayersUsing field_145987_o +FD net/minecraft/tileentity/TileEntityChest chestContents field_145985_p +FD net/minecraft/tileentity/TileEntityChest ticksSinceSync field_145983_q +FD net/minecraft/tileentity/TileEntityChest cachedChestType field_145982_r +FD net/minecraft/tileentity/TileEntityChest customName field_145981_s +FD net/minecraft/tileentity/TileEntityChest$1 field_177366_a field_177366_a +FD net/minecraft/tileentity/TileEntityCommandBlock commandBlockLogic field_145994_a +FD net/minecraft/tileentity/TileEntityCommandBlock$1 field_145767_a field_145767_a +FD net/minecraft/tileentity/TileEntityComparator outputSignal field_145997_a +FD net/minecraft/tileentity/TileEntityDispenser customName field_146020_a +FD net/minecraft/tileentity/TileEntityDispenser RNG field_174913_f +FD net/minecraft/tileentity/TileEntityDispenser stacks field_146022_i +FD net/minecraft/tileentity/TileEntityEnchantmentTable tickCount field_145926_a +FD net/minecraft/tileentity/TileEntityEnchantmentTable pageFlip field_145933_i +FD net/minecraft/tileentity/TileEntityEnchantmentTable pageFlipPrev field_145931_j +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145932_k field_145932_k +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145929_l field_145929_l +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookSpread field_145930_m +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookSpreadPrev field_145927_n +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookRotation field_145928_o +FD net/minecraft/tileentity/TileEntityEnchantmentTable bookRotationPrev field_145925_p +FD net/minecraft/tileentity/TileEntityEnchantmentTable field_145924_q field_145924_q +FD net/minecraft/tileentity/TileEntityEnchantmentTable rand field_145923_r +FD net/minecraft/tileentity/TileEntityEnchantmentTable customName field_145922_s +FD net/minecraft/tileentity/TileEntityEnderChest lidAngle field_145972_a +FD net/minecraft/tileentity/TileEntityEnderChest prevLidAngle field_145975_i +FD net/minecraft/tileentity/TileEntityEnderChest numPlayersUsing field_145973_j +FD net/minecraft/tileentity/TileEntityEnderChest ticksSinceSync field_145974_k +FD net/minecraft/tileentity/TileEntityFlowerPot flowerPotItem field_145967_a +FD net/minecraft/tileentity/TileEntityFlowerPot flowerPotData field_145968_i +FD net/minecraft/tileentity/TileEntityFurnace slotsTop field_145962_k +FD net/minecraft/tileentity/TileEntityFurnace slotsBottom field_145959_l +FD net/minecraft/tileentity/TileEntityFurnace slotsSides field_145960_m +FD net/minecraft/tileentity/TileEntityFurnace furnaceItemStacks field_145957_n +FD net/minecraft/tileentity/TileEntityFurnace furnaceBurnTime field_145956_a +FD net/minecraft/tileentity/TileEntityFurnace currentItemBurnTime field_145963_i +FD net/minecraft/tileentity/TileEntityFurnace cookTime field_174906_k +FD net/minecraft/tileentity/TileEntityFurnace totalCookTime field_174905_l +FD net/minecraft/tileentity/TileEntityFurnace furnaceCustomName field_145958_o +FD net/minecraft/tileentity/TileEntityHopper inventory field_145900_a +FD net/minecraft/tileentity/TileEntityHopper customName field_145902_i +FD net/minecraft/tileentity/TileEntityHopper transferCooldown field_145901_j +FD net/minecraft/tileentity/TileEntityLockable code field_174901_a +FD net/minecraft/tileentity/TileEntityMobSpawner spawnerLogic field_145882_a +FD net/minecraft/tileentity/TileEntityMobSpawner$1 field_150825_a field_150825_a +FD net/minecraft/tileentity/TileEntityNote note field_145879_a +FD net/minecraft/tileentity/TileEntityNote previousRedstoneState field_145880_i +FD net/minecraft/tileentity/TileEntitySign signText field_145915_a +FD net/minecraft/tileentity/TileEntitySign lineBeingEdited field_145918_i +FD net/minecraft/tileentity/TileEntitySign isEditable field_145916_j +FD net/minecraft/tileentity/TileEntitySign player field_145917_k +FD net/minecraft/tileentity/TileEntitySign stats field_174883_i +FD net/minecraft/tileentity/TileEntitySign$1 field_174795_a field_174795_a +FD net/minecraft/tileentity/TileEntitySign$2 field_174797_a field_174797_a +FD net/minecraft/tileentity/TileEntitySign$2 field_174796_b field_174796_b +FD net/minecraft/tileentity/TileEntitySkull skullType field_145908_a +FD net/minecraft/tileentity/TileEntitySkull skullRotation field_145910_i +FD net/minecraft/tileentity/TileEntitySkull playerProfile field_152110_j +FD net/minecraft/block/BlockPistonBase isSticky field_150082_a +FD net/minecraft/block/BlockPistonBase FACING field_176321_a +FD net/minecraft/block/BlockPistonBase EXTENDED field_176320_b +FD net/minecraft/block/BlockPistonBase$1 field_177243_a field_177243_a +FD net/minecraft/block/BlockPistonExtension SHORT field_176327_M +FD net/minecraft/block/BlockPistonExtension FACING field_176326_a +FD net/minecraft/block/BlockPistonExtension TYPE field_176325_b +FD net/minecraft/block/BlockPistonExtension$1 field_177247_a field_177247_a +FD net/minecraft/block/BlockPistonExtension$EnumPistonType DEFAULT DEFAULT +FD net/minecraft/block/BlockPistonExtension$EnumPistonType STICKY STICKY +FD net/minecraft/block/BlockPistonExtension$EnumPistonType VARIANT field_176714_c +FD net/minecraft/block/BlockPistonExtension$EnumPistonType $VALUES $VALUES +FD net/minecraft/tileentity/TileEntityPiston pistonState field_174932_a +FD net/minecraft/tileentity/TileEntityPiston pistonFacing field_174931_f +FD net/minecraft/tileentity/TileEntityPiston extending field_145875_k +FD net/minecraft/tileentity/TileEntityPiston shouldHeadBeRendered field_145872_l +FD net/minecraft/tileentity/TileEntityPiston progress field_145873_m +FD net/minecraft/tileentity/TileEntityPiston lastProgress field_145870_n +FD net/minecraft/tileentity/TileEntityPiston field_174933_k field_174933_k +FD net/minecraft/tileentity/TileEntityPiston$1 field_177248_a field_177248_a +FD net/minecraft/block/BlockPistonMoving FACING field_176426_a +FD net/minecraft/block/BlockPistonMoving TYPE field_176425_b +FD net/minecraft/block/state/BlockPistonStructureHelper world field_177261_a +FD net/minecraft/block/state/BlockPistonStructureHelper pistonPos field_177259_b +FD net/minecraft/block/state/BlockPistonStructureHelper blockToMove field_177260_c +FD net/minecraft/block/state/BlockPistonStructureHelper moveDirection field_177257_d +FD net/minecraft/block/state/BlockPistonStructureHelper toMove field_177258_e +FD net/minecraft/block/state/BlockPistonStructureHelper toDestroy field_177256_f +FD net/minecraft/block/state/BlockStateBase COMMA_JOINER field_177234_a +FD net/minecraft/block/state/BlockStateBase MAP_ENTRY_TO_STRING field_177233_b +FD net/minecraft/block/state/BlockState COMMA_JOINER field_177628_a +FD net/minecraft/block/state/BlockState GET_NAME_FUNC field_177626_b +FD net/minecraft/block/state/BlockState block field_177627_c +FD net/minecraft/block/state/BlockState properties field_177624_d +FD net/minecraft/block/state/BlockState validStates field_177625_e +FD net/minecraft/block/state/BlockState$2 field_177549_a field_177549_a +FD net/minecraft/block/state/BlockState$StateImplementation block field_177239_a +FD net/minecraft/block/state/BlockState$StateImplementation properties field_177237_b +FD net/minecraft/block/state/BlockState$StateImplementation propertyValueTable field_177238_c +FD net/minecraft/block/state/BlockWorldState world field_177515_a +FD net/minecraft/block/state/BlockWorldState pos field_177513_b +FD net/minecraft/block/state/BlockWorldState field_181628_c field_181628_c +FD net/minecraft/block/state/BlockWorldState state field_177514_c +FD net/minecraft/block/state/BlockWorldState tileEntity field_177511_d +FD net/minecraft/block/state/BlockWorldState tileEntityInitialized field_177512_e +FD net/minecraft/block/state/BlockWorldState$1 field_177504_a field_177504_a +FD net/minecraft/block/state/pattern/BlockPattern blockMatches field_177689_a +FD net/minecraft/block/state/pattern/BlockPattern fingerLength field_177687_b +FD net/minecraft/block/state/pattern/BlockPattern thumbLength field_177688_c +FD net/minecraft/block/state/pattern/BlockPattern palmLength field_177686_d +FD net/minecraft/block/state/pattern/BlockPattern$CacheLoader world field_177680_a +FD net/minecraft/block/state/pattern/BlockPattern$CacheLoader field_181626_b field_181626_b +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper pos field_177674_a +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper finger field_177672_b +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper thumb field_177673_c +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper lcache field_177671_d +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181120_e field_181120_e +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181121_f field_181121_f +FD net/minecraft/block/state/pattern/BlockPattern$PatternHelper field_181122_g field_181122_g +FD net/minecraft/block/state/pattern/FactoryBlockPattern COMMA_JOIN field_177667_a +FD net/minecraft/block/state/pattern/FactoryBlockPattern depth field_177665_b +FD net/minecraft/block/state/pattern/FactoryBlockPattern symbolMap field_177666_c +FD net/minecraft/block/state/pattern/FactoryBlockPattern aisleHeight field_177663_d +FD net/minecraft/block/state/pattern/FactoryBlockPattern rowWidth field_177664_e +FD net/minecraft/block/state/pattern/BlockHelper block field_177644_a +FD net/minecraft/block/state/pattern/BlockStateHelper blockstate field_177641_a +FD net/minecraft/block/state/pattern/BlockStateHelper propertyPredicates field_177640_b +FD net/minecraft/block/properties/PropertyHelper valueClass field_177704_a +FD net/minecraft/block/properties/PropertyHelper name field_177703_b +FD net/minecraft/block/properties/PropertyBool allowedValues field_177717_a +FD net/minecraft/block/properties/PropertyEnum allowedValues field_177711_a +FD net/minecraft/block/properties/PropertyEnum nameToValue field_177710_b +FD net/minecraft/block/properties/PropertyInteger allowedValues field_177720_a +FD net/minecraft/world/border/EnumBorderStatus GROWING GROWING +FD net/minecraft/world/border/EnumBorderStatus SHRINKING SHRINKING +FD net/minecraft/world/border/EnumBorderStatus STATIONARY STATIONARY +FD net/minecraft/world/border/EnumBorderStatus id field_177767_d +FD net/minecraft/world/border/EnumBorderStatus $VALUES $VALUES +FD net/minecraft/world/border/WorldBorder listeners field_177758_a +FD net/minecraft/world/border/WorldBorder centerX field_177756_b +FD net/minecraft/world/border/WorldBorder centerZ field_177757_c +FD net/minecraft/world/border/WorldBorder startDiameter field_177754_d +FD net/minecraft/world/border/WorldBorder endDiameter field_177755_e +FD net/minecraft/world/border/WorldBorder endTime field_177752_f +FD net/minecraft/world/border/WorldBorder startTime field_177753_g +FD net/minecraft/world/border/WorldBorder worldSize field_177762_h +FD net/minecraft/world/border/WorldBorder damageAmount field_177763_i +FD net/minecraft/world/border/WorldBorder damageBuffer field_177760_j +FD net/minecraft/world/border/WorldBorder warningTime field_177761_k +FD net/minecraft/world/border/WorldBorder warningDistance field_177759_l +FD net/minecraft/world/chunk/NibbleArray data field_76585_a +FD net/minecraft/world/chunk/Chunk xPosition field_76635_g +FD net/minecraft/world/chunk/Chunk zPosition field_76647_h +FD net/minecraft/world/chunk/Chunk logger field_150817_t +FD net/minecraft/world/chunk/Chunk storageArrays field_76652_q +FD net/minecraft/world/chunk/Chunk blockBiomeArray field_76651_r +FD net/minecraft/world/chunk/Chunk precipitationHeightMap field_76638_b +FD net/minecraft/world/chunk/Chunk updateSkylightColumns field_76639_c +FD net/minecraft/world/chunk/Chunk isChunkLoaded field_76636_d +FD net/minecraft/world/chunk/Chunk worldObj field_76637_e +FD net/minecraft/world/chunk/Chunk heightMap field_76634_f +FD net/minecraft/world/chunk/Chunk isGapLightingUpdated field_76650_s +FD net/minecraft/world/chunk/Chunk chunkTileEntityMap field_150816_i +FD net/minecraft/world/chunk/Chunk entityLists field_76645_j +FD net/minecraft/world/chunk/Chunk isTerrainPopulated field_76646_k +FD net/minecraft/world/chunk/Chunk isLightPopulated field_150814_l +FD net/minecraft/world/chunk/Chunk field_150815_m field_150815_m +FD net/minecraft/world/chunk/Chunk isModified field_76643_l +FD net/minecraft/world/chunk/Chunk hasEntities field_76644_m +FD net/minecraft/world/chunk/Chunk lastSaveTime field_76641_n +FD net/minecraft/world/chunk/Chunk heightMapMinimum field_82912_p +FD net/minecraft/world/chunk/Chunk inhabitedTime field_111204_q +FD net/minecraft/world/chunk/Chunk queuedLightChecks field_76649_t +FD net/minecraft/world/chunk/Chunk tileEntityPosQueue field_177447_w +FD net/minecraft/world/chunk/Chunk$1 field_150824_a field_150824_a +FD net/minecraft/world/chunk/Chunk$1 field_150822_b field_150822_b +FD net/minecraft/world/chunk/Chunk$1 field_150823_c field_150823_c +FD net/minecraft/world/chunk/Chunk$1 field_150821_d field_150821_d +FD net/minecraft/world/chunk/Chunk$2 field_177457_a field_177457_a +FD net/minecraft/world/chunk/Chunk$2 field_177456_b field_177456_b +FD net/minecraft/world/chunk/Chunk$3 field_177450_a field_177450_a +FD net/minecraft/world/chunk/Chunk$3 field_177449_b field_177449_b +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType IMMEDIATE IMMEDIATE +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType QUEUED QUEUED +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType CHECK CHECK +FD net/minecraft/world/chunk/Chunk$EnumCreateEntityType $VALUES $VALUES +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage yBase field_76684_a +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage blockRefCount field_76682_b +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage tickRefCount field_76683_c +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage data field_177488_d +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage blocklightArray field_76679_g +FD net/minecraft/world/chunk/storage/ExtendedBlockStorage skylightArray field_76685_h +FD net/minecraft/world/chunk/storage/NibbleArrayReader data field_76689_a +FD net/minecraft/world/chunk/storage/NibbleArrayReader depthBits field_76687_b +FD net/minecraft/world/chunk/storage/NibbleArrayReader depthBitsPlusFour field_76688_c +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData lastUpdated field_76698_a +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData terrainPopulated field_76696_b +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData heightmap field_76697_c +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData blockLight field_76694_d +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData skyLight field_76695_e +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData data field_76692_f +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData blocks field_76693_g +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData entities field_76702_h +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData tileEntities field_151564_i +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData tileTicks field_151563_j +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData x field_76701_k +FD net/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData z field_76699_l +FD net/minecraft/world/chunk/storage/RegionFile emptySector field_76720_a +FD net/minecraft/world/chunk/storage/RegionFile fileName field_76718_b +FD net/minecraft/world/chunk/storage/RegionFile dataFile field_76719_c +FD net/minecraft/world/chunk/storage/RegionFile offsets field_76716_d +FD net/minecraft/world/chunk/storage/RegionFile chunkTimestamps field_76717_e +FD net/minecraft/world/chunk/storage/RegionFile sectorFree field_76714_f +FD net/minecraft/world/chunk/storage/RegionFile sizeDelta field_76715_g +FD net/minecraft/world/chunk/storage/RegionFile lastModified field_76721_h +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer field_76724_a field_76724_a +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer chunkX field_76722_b +FD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer chunkZ field_76723_c +FD net/minecraft/world/chunk/storage/RegionFileCache regionsByFilename field_76553_a +FD net/minecraft/world/chunk/storage/AnvilChunkLoader logger field_151505_a +FD net/minecraft/world/chunk/storage/AnvilChunkLoader chunksToRemove field_75828_a +FD net/minecraft/world/chunk/storage/AnvilChunkLoader pendingAnvilChunksCoordinates field_75826_b +FD net/minecraft/world/chunk/storage/AnvilChunkLoader chunkSaveLocation field_75825_d +FD net/minecraft/world/chunk/storage/AnvilChunkLoader field_183014_e field_183014_e +FD net/minecraft/world/WorldProvider moonPhaseFactors field_111203_a +FD net/minecraft/world/WorldProvider worldObj field_76579_a +FD net/minecraft/world/WorldProvider worldChunkMgr field_76578_c +FD net/minecraft/world/WorldProvider isHellWorld field_76575_d +FD net/minecraft/world/WorldProvider hasNoSky field_76576_e +FD net/minecraft/world/WorldProvider lightBrightnessTable field_76573_f +FD net/minecraft/world/WorldProvider dimensionId field_76574_g +FD net/minecraft/world/WorldProvider terrainType field_76577_b +FD net/minecraft/world/WorldProvider generatorSettings field_82913_c +FD net/minecraft/world/WorldProvider colorsSunriseSunset field_76580_h +FD net/minecraft/world/WorldProviderHell$1 field_177764_a field_177764_a +FD net/minecraft/world/gen/MapGenRavine field_75046_d field_75046_d +FD net/minecraft/world/chunk/ChunkPrimer data field_177860_a +FD net/minecraft/world/chunk/ChunkPrimer defaultState field_177859_b +FD net/minecraft/world/gen/ChunkProviderSettings useWaterLakes field_177781_A +FD net/minecraft/world/gen/ChunkProviderSettings waterLakeChance field_177782_B +FD net/minecraft/world/gen/ChunkProviderSettings useLavaLakes field_177783_C +FD net/minecraft/world/gen/ChunkProviderSettings lavaLakeChance field_177777_D +FD net/minecraft/world/gen/ChunkProviderSettings useLavaOceans field_177778_E +FD net/minecraft/world/gen/ChunkProviderSettings fixedBiome field_177779_F +FD net/minecraft/world/gen/ChunkProviderSettings biomeSize field_177780_G +FD net/minecraft/world/gen/ChunkProviderSettings riverSize field_177788_H +FD net/minecraft/world/gen/ChunkProviderSettings dirtSize field_177789_I +FD net/minecraft/world/gen/ChunkProviderSettings dirtCount field_177790_J +FD net/minecraft/world/gen/ChunkProviderSettings dirtMinHeight field_177791_K +FD net/minecraft/world/gen/ChunkProviderSettings dirtMaxHeight field_177784_L +FD net/minecraft/world/gen/ChunkProviderSettings gravelSize field_177785_M +FD net/minecraft/world/gen/ChunkProviderSettings gravelCount field_177786_N +FD net/minecraft/world/gen/ChunkProviderSettings gravelMinHeight field_177787_O +FD net/minecraft/world/gen/ChunkProviderSettings gravelMaxHeight field_177797_P +FD net/minecraft/world/gen/ChunkProviderSettings graniteSize field_177796_Q +FD net/minecraft/world/gen/ChunkProviderSettings graniteCount field_177799_R +FD net/minecraft/world/gen/ChunkProviderSettings graniteMinHeight field_177798_S +FD net/minecraft/world/gen/ChunkProviderSettings graniteMaxHeight field_177793_T +FD net/minecraft/world/gen/ChunkProviderSettings dioriteSize field_177792_U +FD net/minecraft/world/gen/ChunkProviderSettings dioriteCount field_177795_V +FD net/minecraft/world/gen/ChunkProviderSettings dioriteMinHeight field_177794_W +FD net/minecraft/world/gen/ChunkProviderSettings dioriteMaxHeight field_177801_X +FD net/minecraft/world/gen/ChunkProviderSettings andesiteSize field_177800_Y +FD net/minecraft/world/gen/ChunkProviderSettings andesiteCount field_177802_Z +FD net/minecraft/world/gen/ChunkProviderSettings coordinateScale field_177811_a +FD net/minecraft/world/gen/ChunkProviderSettings andesiteMinHeight field_177846_aa +FD net/minecraft/world/gen/ChunkProviderSettings andesiteMaxHeight field_177847_ab +FD net/minecraft/world/gen/ChunkProviderSettings coalSize field_177844_ac +FD net/minecraft/world/gen/ChunkProviderSettings coalCount field_177845_ad +FD net/minecraft/world/gen/ChunkProviderSettings coalMinHeight field_177851_ae +FD net/minecraft/world/gen/ChunkProviderSettings coalMaxHeight field_177853_af +FD net/minecraft/world/gen/ChunkProviderSettings ironSize field_177848_ag +FD net/minecraft/world/gen/ChunkProviderSettings ironCount field_177849_ah +FD net/minecraft/world/gen/ChunkProviderSettings ironMinHeight field_177832_ai +FD net/minecraft/world/gen/ChunkProviderSettings ironMaxHeight field_177834_aj +FD net/minecraft/world/gen/ChunkProviderSettings goldSize field_177828_ak +FD net/minecraft/world/gen/ChunkProviderSettings goldCount field_177830_al +FD net/minecraft/world/gen/ChunkProviderSettings goldMinHeight field_177840_am +FD net/minecraft/world/gen/ChunkProviderSettings goldMaxHeight field_177842_an +FD net/minecraft/world/gen/ChunkProviderSettings redstoneSize field_177836_ao +FD net/minecraft/world/gen/ChunkProviderSettings redstoneCount field_177838_ap +FD net/minecraft/world/gen/ChunkProviderSettings redstoneMinHeight field_177818_aq +FD net/minecraft/world/gen/ChunkProviderSettings redstoneMaxHeight field_177816_ar +FD net/minecraft/world/gen/ChunkProviderSettings diamondSize field_177814_as +FD net/minecraft/world/gen/ChunkProviderSettings diamondCount field_177812_at +FD net/minecraft/world/gen/ChunkProviderSettings diamondMinHeight field_177826_au +FD net/minecraft/world/gen/ChunkProviderSettings diamondMaxHeight field_177824_av +FD net/minecraft/world/gen/ChunkProviderSettings lapisSize field_177822_aw +FD net/minecraft/world/gen/ChunkProviderSettings lapisCount field_177820_ax +FD net/minecraft/world/gen/ChunkProviderSettings lapisCenterHeight field_177807_ay +FD net/minecraft/world/gen/ChunkProviderSettings lapisSpread field_177805_az +FD net/minecraft/world/gen/ChunkProviderSettings heightScale field_177809_b +FD net/minecraft/world/gen/ChunkProviderSettings upperLimitScale field_177810_c +FD net/minecraft/world/gen/ChunkProviderSettings lowerLimitScale field_177806_d +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleX field_177808_e +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleZ field_177803_f +FD net/minecraft/world/gen/ChunkProviderSettings depthNoiseScaleExponent field_177804_g +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleX field_177825_h +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleY field_177827_i +FD net/minecraft/world/gen/ChunkProviderSettings mainNoiseScaleZ field_177821_j +FD net/minecraft/world/gen/ChunkProviderSettings baseSize field_177823_k +FD net/minecraft/world/gen/ChunkProviderSettings stretchY field_177817_l +FD net/minecraft/world/gen/ChunkProviderSettings biomeDepthWeight field_177819_m +FD net/minecraft/world/gen/ChunkProviderSettings biomeDepthOffSet field_177813_n +FD net/minecraft/world/gen/ChunkProviderSettings biomeScaleWeight field_177815_o +FD net/minecraft/world/gen/ChunkProviderSettings biomeScaleOffset field_177843_p +FD net/minecraft/world/gen/ChunkProviderSettings seaLevel field_177841_q +FD net/minecraft/world/gen/ChunkProviderSettings useCaves field_177839_r +FD net/minecraft/world/gen/ChunkProviderSettings useDungeons field_177837_s +FD net/minecraft/world/gen/ChunkProviderSettings dungeonChance field_177835_t +FD net/minecraft/world/gen/ChunkProviderSettings useStrongholds field_177833_u +FD net/minecraft/world/gen/ChunkProviderSettings useVillages field_177831_v +FD net/minecraft/world/gen/ChunkProviderSettings useMineShafts field_177829_w +FD net/minecraft/world/gen/ChunkProviderSettings useTemples field_177854_x +FD net/minecraft/world/gen/ChunkProviderSettings useMonuments field_177852_y +FD net/minecraft/world/gen/ChunkProviderSettings useRavines field_177850_z +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useRavines field_177870_A +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useWaterLakes field_177871_B +FD net/minecraft/world/gen/ChunkProviderSettings$Factory waterLakeChance field_177872_C +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useLavaLakes field_177866_D +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lavaLakeChance field_177867_E +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useLavaOceans field_177868_F +FD net/minecraft/world/gen/ChunkProviderSettings$Factory fixedBiome field_177869_G +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeSize field_177877_H +FD net/minecraft/world/gen/ChunkProviderSettings$Factory riverSize field_177878_I +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtSize field_177879_J +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtCount field_177880_K +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtMinHeight field_177873_L +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dirtMaxHeight field_177874_M +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelSize field_177875_N +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelCount field_177876_O +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelMinHeight field_177886_P +FD net/minecraft/world/gen/ChunkProviderSettings$Factory gravelMaxHeight field_177885_Q +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteSize field_177888_R +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteCount field_177887_S +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteMinHeight field_177882_T +FD net/minecraft/world/gen/ChunkProviderSettings$Factory graniteMaxHeight field_177881_U +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteSize field_177884_V +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteCount field_177883_W +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteMinHeight field_177891_X +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dioriteMaxHeight field_177890_Y +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteSize field_177892_Z +FD net/minecraft/world/gen/ChunkProviderSettings$Factory JSON_ADAPTER field_177901_a +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisSpread field_177889_aA +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteCount field_177936_aa +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteMinHeight field_177937_ab +FD net/minecraft/world/gen/ChunkProviderSettings$Factory andesiteMaxHeight field_177934_ac +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalSize field_177935_ad +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalCount field_177941_ae +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalMinHeight field_177943_af +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coalMaxHeight field_177938_ag +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironSize field_177939_ah +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironCount field_177922_ai +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironMinHeight field_177924_aj +FD net/minecraft/world/gen/ChunkProviderSettings$Factory ironMaxHeight field_177918_ak +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldSize field_177920_al +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldCount field_177930_am +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldMinHeight field_177932_an +FD net/minecraft/world/gen/ChunkProviderSettings$Factory goldMaxHeight field_177926_ao +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneSize field_177928_ap +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneCount field_177908_aq +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneMinHeight field_177906_ar +FD net/minecraft/world/gen/ChunkProviderSettings$Factory redstoneMaxHeight field_177904_as +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondSize field_177902_at +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondCount field_177916_au +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondMinHeight field_177914_av +FD net/minecraft/world/gen/ChunkProviderSettings$Factory diamondMaxHeight field_177912_aw +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisSize field_177910_ax +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisCount field_177897_ay +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lapisCenterHeight field_177895_az +FD net/minecraft/world/gen/ChunkProviderSettings$Factory coordinateScale field_177899_b +FD net/minecraft/world/gen/ChunkProviderSettings$Factory heightScale field_177900_c +FD net/minecraft/world/gen/ChunkProviderSettings$Factory upperLimitScale field_177896_d +FD net/minecraft/world/gen/ChunkProviderSettings$Factory lowerLimitScale field_177898_e +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleX field_177893_f +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleZ field_177894_g +FD net/minecraft/world/gen/ChunkProviderSettings$Factory depthNoiseScaleExponent field_177915_h +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleX field_177917_i +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleY field_177911_j +FD net/minecraft/world/gen/ChunkProviderSettings$Factory mainNoiseScaleZ field_177913_k +FD net/minecraft/world/gen/ChunkProviderSettings$Factory baseSize field_177907_l +FD net/minecraft/world/gen/ChunkProviderSettings$Factory stretchY field_177909_m +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeDepthWeight field_177903_n +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeDepthOffset field_177905_o +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeScaleWeight field_177933_p +FD net/minecraft/world/gen/ChunkProviderSettings$Factory biomeScaleOffset field_177931_q +FD net/minecraft/world/gen/ChunkProviderSettings$Factory seaLevel field_177929_r +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useCaves field_177927_s +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useDungeons field_177925_t +FD net/minecraft/world/gen/ChunkProviderSettings$Factory dungeonChance field_177923_u +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useStrongholds field_177921_v +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useVillages field_177919_w +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useMineShafts field_177944_x +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useTemples field_177942_y +FD net/minecraft/world/gen/ChunkProviderSettings$Factory useMonuments field_177940_z +FD net/minecraft/world/gen/ChunkProviderDebug field_177464_a field_177464_a +FD net/minecraft/world/gen/ChunkProviderDebug field_177462_b field_177462_b +FD net/minecraft/world/gen/ChunkProviderDebug field_181039_c field_181039_c +FD net/minecraft/world/gen/ChunkProviderDebug world field_177463_c +FD net/minecraft/world/gen/ChunkProviderFlat worldObj field_73163_a +FD net/minecraft/world/gen/ChunkProviderFlat random field_73161_b +FD net/minecraft/world/gen/ChunkProviderFlat cachedBlockIDs field_82700_c +FD net/minecraft/world/gen/ChunkProviderFlat flatWorldGenInfo field_82699_e +FD net/minecraft/world/gen/ChunkProviderFlat structureGenerators field_82696_f +FD net/minecraft/world/gen/ChunkProviderFlat hasDecoration field_82697_g +FD net/minecraft/world/gen/ChunkProviderFlat hasDungeons field_82702_h +FD net/minecraft/world/gen/ChunkProviderFlat waterLakeGenerator field_82703_i +FD net/minecraft/world/gen/ChunkProviderFlat lavaLakeGenerator field_82701_j +FD net/minecraft/world/gen/ChunkProviderHell field_177465_A field_177465_A +FD net/minecraft/world/gen/ChunkProviderHell genNetherBridge field_73172_c +FD net/minecraft/world/gen/ChunkProviderHell netherCaveGenerator field_73182_t +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen6 field_73173_a +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen7 field_73171_b +FD net/minecraft/world/gen/ChunkProviderHell noiseData1 field_73169_d +FD net/minecraft/world/gen/ChunkProviderHell noiseData2 field_73170_e +FD net/minecraft/world/gen/ChunkProviderHell noiseData3 field_73167_f +FD net/minecraft/world/gen/ChunkProviderHell noiseData4 field_73168_g +FD net/minecraft/world/gen/ChunkProviderHell noiseData5 field_73180_h +FD net/minecraft/world/gen/ChunkProviderHell worldObj field_73175_o +FD net/minecraft/world/gen/ChunkProviderHell field_177466_i field_177466_i +FD net/minecraft/world/gen/ChunkProviderHell hellRNG field_73181_i +FD net/minecraft/world/gen/ChunkProviderHell slowsandNoise field_73185_q +FD net/minecraft/world/gen/ChunkProviderHell gravelNoise field_73184_r +FD net/minecraft/world/gen/ChunkProviderHell netherrackExclusivityNoise field_73183_s +FD net/minecraft/world/gen/ChunkProviderHell noiseField field_73186_p +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen1 field_73178_j +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen2 field_73179_k +FD net/minecraft/world/gen/ChunkProviderHell netherNoiseGen3 field_73176_l +FD net/minecraft/world/gen/ChunkProviderHell slowsandGravelNoiseGen field_73177_m +FD net/minecraft/world/gen/ChunkProviderHell netherrackExculsivityNoiseGen field_73174_n +FD net/minecraft/world/gen/ChunkProviderHell field_177470_t field_177470_t +FD net/minecraft/world/gen/ChunkProviderHell field_177469_u field_177469_u +FD net/minecraft/world/gen/ChunkProviderHell field_177468_v field_177468_v +FD net/minecraft/world/gen/ChunkProviderHell field_177467_w field_177467_w +FD net/minecraft/world/gen/ChunkProviderHell field_177473_x field_177473_x +FD net/minecraft/world/gen/ChunkProviderHell field_177472_y field_177472_y +FD net/minecraft/world/gen/ChunkProviderHell field_177471_z field_177471_z +FD net/minecraft/world/gen/MapGenBase range field_75040_a +FD net/minecraft/world/gen/MapGenBase rand field_75038_b +FD net/minecraft/world/gen/MapGenBase worldObj field_75039_c +FD net/minecraft/world/gen/ChunkProviderGenerate oceanMonumentGenerator field_177474_A +FD net/minecraft/world/gen/ChunkProviderGenerate biomesForGeneration field_73231_z +FD net/minecraft/world/gen/ChunkProviderGenerate noiseGen5 field_73214_a +FD net/minecraft/world/gen/ChunkProviderGenerate noiseGen6 field_73212_b +FD net/minecraft/world/gen/ChunkProviderGenerate mobSpawnerNoise field_73213_c +FD net/minecraft/world/gen/ChunkProviderGenerate mainNoiseArray field_147427_d +FD net/minecraft/world/gen/ChunkProviderGenerate lowerLimitNoiseArray field_147428_e +FD net/minecraft/world/gen/ChunkProviderGenerate upperLimitNoiseArray field_147425_f +FD net/minecraft/world/gen/ChunkProviderGenerate depthNoiseArray field_147426_g +FD net/minecraft/world/gen/ChunkProviderGenerate rand field_73220_k +FD net/minecraft/world/gen/ChunkProviderGenerate field_147431_j field_147431_j +FD net/minecraft/world/gen/ChunkProviderGenerate field_147432_k field_147432_k +FD net/minecraft/world/gen/ChunkProviderGenerate field_147429_l field_147429_l +FD net/minecraft/world/gen/ChunkProviderGenerate field_147430_m field_147430_m +FD net/minecraft/world/gen/ChunkProviderGenerate worldObj field_73230_p +FD net/minecraft/world/gen/ChunkProviderGenerate mapFeaturesEnabled field_73229_q +FD net/minecraft/world/gen/ChunkProviderGenerate field_177475_o field_177475_o +FD net/minecraft/world/gen/ChunkProviderGenerate field_147434_q field_147434_q +FD net/minecraft/world/gen/ChunkProviderGenerate parabolicField field_147433_r +FD net/minecraft/world/gen/ChunkProviderGenerate settings field_177477_r +FD net/minecraft/world/gen/ChunkProviderGenerate oceanBlockTmpl field_177476_s +FD net/minecraft/world/gen/ChunkProviderGenerate stoneNoise field_73227_s +FD net/minecraft/world/gen/ChunkProviderGenerate caveGenerator field_73226_t +FD net/minecraft/world/gen/ChunkProviderGenerate strongholdGenerator field_73225_u +FD net/minecraft/world/gen/ChunkProviderGenerate villageGenerator field_73224_v +FD net/minecraft/world/gen/ChunkProviderGenerate mineshaftGenerator field_73223_w +FD net/minecraft/world/gen/ChunkProviderGenerate scatteredFeatureGenerator field_73233_x +FD net/minecraft/world/gen/ChunkProviderGenerate ravineGenerator field_73232_y +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen4 field_73196_a +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen5 field_73194_b +FD net/minecraft/world/gen/ChunkProviderEnd noiseData1 field_73195_c +FD net/minecraft/world/gen/ChunkProviderEnd noiseData2 field_73192_d +FD net/minecraft/world/gen/ChunkProviderEnd noiseData3 field_73193_e +FD net/minecraft/world/gen/ChunkProviderEnd noiseData4 field_73190_f +FD net/minecraft/world/gen/ChunkProviderEnd noiseData5 field_73191_g +FD net/minecraft/world/gen/ChunkProviderEnd endRNG field_73204_i +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen1 field_73201_j +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen2 field_73202_k +FD net/minecraft/world/gen/ChunkProviderEnd noiseGen3 field_73199_l +FD net/minecraft/world/gen/ChunkProviderEnd endWorld field_73200_m +FD net/minecraft/world/gen/ChunkProviderEnd densities field_73197_n +FD net/minecraft/world/gen/ChunkProviderEnd biomesForGeneration field_73198_o +FD net/minecraft/world/gen/feature/WorldGenBigTree heightLimit field_76504_e +FD net/minecraft/world/gen/feature/WorldGenBigTree height field_76501_f +FD net/minecraft/world/gen/feature/WorldGenBigTree heightAttenuation field_76502_g +FD net/minecraft/world/gen/feature/WorldGenBigTree branchSlope field_175944_d +FD net/minecraft/world/gen/feature/WorldGenBigTree scaleWidth field_175945_e +FD net/minecraft/world/gen/feature/WorldGenBigTree leafDensity field_76513_k +FD net/minecraft/world/gen/feature/WorldGenBigTree trunkSize field_175943_g +FD net/minecraft/world/gen/feature/WorldGenBigTree heightLimitLimit field_175950_h +FD net/minecraft/world/gen/feature/WorldGenBigTree leafDistanceLimit field_76508_n +FD net/minecraft/world/gen/feature/WorldGenBigTree field_175948_j field_175948_j +FD net/minecraft/world/gen/feature/WorldGenBigTree rand field_175949_k +FD net/minecraft/world/gen/feature/WorldGenBigTree world field_175946_l +FD net/minecraft/world/gen/feature/WorldGenBigTree basePos field_175947_m +FD net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates field_178000_b field_178000_b +FD net/minecraft/world/gen/feature/WorldGenForest field_181629_a field_181629_a +FD net/minecraft/world/gen/feature/WorldGenForest field_181630_b field_181630_b +FD net/minecraft/world/gen/feature/WorldGenForest useExtraRandomHeight field_150531_a +FD net/minecraft/world/gen/feature/WorldGenBlockBlob field_150545_a field_150545_a +FD net/minecraft/world/gen/feature/WorldGenBlockBlob field_150544_b field_150544_b +FD net/minecraft/world/gen/feature/WorldGeneratorBonusChest chestItems field_175909_a +FD net/minecraft/world/gen/feature/WorldGeneratorBonusChest itemsToGenerateInBonusChest field_76545_b +FD net/minecraft/world/gen/GeneratorBushFeature field_175908_a field_175908_a +FD net/minecraft/world/gen/feature/WorldGenClay field_150546_a field_150546_a +FD net/minecraft/world/gen/feature/WorldGenClay numberOfBlocks field_76517_b +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175913_a field_175913_a +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175911_b field_175911_b +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175912_c field_175912_c +FD net/minecraft/world/gen/feature/WorldGenDesertWells field_175910_d field_175910_d +FD net/minecraft/world/gen/feature/WorldGenDoublePlant field_150549_a field_150549_a +FD net/minecraft/world/gen/feature/WorldGenerator doBlockNotify field_76488_a +FD net/minecraft/world/gen/feature/WorldGenFlowers flower field_150552_a +FD net/minecraft/world/gen/feature/WorldGenFlowers field_175915_b field_175915_b +FD net/minecraft/world/gen/feature/WorldGenShrub leavesMetadata field_150528_a +FD net/minecraft/world/gen/feature/WorldGenShrub woodMetadata field_150527_b +FD net/minecraft/world/gen/feature/WorldGenHellLava field_150553_a field_150553_a +FD net/minecraft/world/gen/feature/WorldGenHellLava field_94524_b field_94524_b +FD net/minecraft/world/gen/feature/WorldGenBigMushroom mushroomType field_76523_a +FD net/minecraft/world/gen/feature/WorldGenIcePath block field_150555_a +FD net/minecraft/world/gen/feature/WorldGenIcePath basePathWidth field_150554_b +FD net/minecraft/world/gen/feature/WorldGenLakes block field_150556_a +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181633_e field_181633_e +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181634_f field_181634_f +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree field_181635_g field_181635_g +FD net/minecraft/world/gen/feature/WorldGenMegaPineTree useBaseHeight field_150542_e +FD net/minecraft/world/gen/feature/WorldGenHugeTrees baseHeight field_76522_a +FD net/minecraft/world/gen/feature/WorldGenHugeTrees woodMetadata field_76520_b +FD net/minecraft/world/gen/feature/WorldGenHugeTrees leavesMetadata field_76521_c +FD net/minecraft/world/gen/feature/WorldGenHugeTrees extraRandomHeight field_150538_d +FD net/minecraft/world/gen/feature/WorldGenDungeons field_175918_a field_175918_a +FD net/minecraft/world/gen/feature/WorldGenDungeons SPAWNERTYPES field_175916_b +FD net/minecraft/world/gen/feature/WorldGenDungeons CHESTCONTENT field_175917_c +FD net/minecraft/world/gen/feature/WorldGenMinable oreBlock field_175920_a +FD net/minecraft/world/gen/feature/WorldGenMinable numberOfBlocks field_76541_b +FD net/minecraft/world/gen/feature/WorldGenMinable predicate field_175919_c +FD net/minecraft/world/gen/feature/WorldGenTaiga1 field_181636_a field_181636_a +FD net/minecraft/world/gen/feature/WorldGenTaiga1 field_181637_b field_181637_b +FD net/minecraft/world/gen/feature/WorldGenCanopyTree field_181640_a field_181640_a +FD net/minecraft/world/gen/feature/WorldGenCanopyTree field_181641_b field_181641_b +FD net/minecraft/world/gen/feature/WorldGenSand block field_150517_a +FD net/minecraft/world/gen/feature/WorldGenSand radius field_76539_b +FD net/minecraft/world/gen/feature/WorldGenSavannaTree field_181643_a field_181643_a +FD net/minecraft/world/gen/feature/WorldGenSavannaTree field_181644_b field_181644_b +FD net/minecraft/world/gen/feature/WorldGenSpikes baseBlockRequired field_150520_a +FD net/minecraft/world/gen/feature/WorldGenLiquids block field_150521_a +FD net/minecraft/world/gen/feature/WorldGenTaiga2 field_181645_a field_181645_a +FD net/minecraft/world/gen/feature/WorldGenTaiga2 field_181646_b field_181646_b +FD net/minecraft/world/gen/feature/WorldGenSwamp field_181648_a field_181648_a +FD net/minecraft/world/gen/feature/WorldGenSwamp field_181649_b field_181649_b +FD net/minecraft/world/gen/feature/WorldGenTallGrass tallGrassState field_175907_a +FD net/minecraft/world/gen/feature/WorldGenTrees field_181653_a field_181653_a +FD net/minecraft/world/gen/feature/WorldGenTrees field_181654_b field_181654_b +FD net/minecraft/world/gen/feature/WorldGenTrees minTreeHeight field_76533_a +FD net/minecraft/world/gen/feature/WorldGenTrees vinesGrow field_76531_b +FD net/minecraft/world/gen/feature/WorldGenTrees metaWood field_76532_c +FD net/minecraft/world/gen/feature/WorldGenTrees metaLeaves field_76530_d +FD net/minecraft/world/gen/FlatGeneratorInfo flatLayers field_82655_a +FD net/minecraft/world/gen/FlatGeneratorInfo worldFeatures field_82653_b +FD net/minecraft/world/gen/FlatGeneratorInfo biomeToUse field_82654_c +FD net/minecraft/world/gen/FlatLayerInfo field_175902_a field_175902_a +FD net/minecraft/world/gen/FlatLayerInfo layerMaterial field_175901_b +FD net/minecraft/world/gen/FlatLayerInfo layerCount field_82664_a +FD net/minecraft/world/gen/FlatLayerInfo layerMinimumY field_82661_d +FD net/minecraft/world/gen/structure/StructureBoundingBox minX field_78897_a +FD net/minecraft/world/gen/structure/StructureBoundingBox minY field_78895_b +FD net/minecraft/world/gen/structure/StructureBoundingBox minZ field_78896_c +FD net/minecraft/world/gen/structure/StructureBoundingBox maxX field_78893_d +FD net/minecraft/world/gen/structure/StructureBoundingBox maxY field_78894_e +FD net/minecraft/world/gen/structure/StructureBoundingBox maxZ field_78892_f +FD net/minecraft/world/gen/structure/StructureBoundingBox$1 field_175895_a field_175895_a +FD net/minecraft/world/gen/structure/MapGenMineshaft field_82673_e field_82673_e +FD net/minecraft/world/gen/structure/StructureMineshaftPieces CHEST_CONTENT_WEIGHT_LIST field_175893_a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$1 field_175894_a field_175894_a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor hasRails field_74958_a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor hasSpiders field_74956_b +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor spawnerPlaced field_74957_c +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor sectionCount field_74955_d +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross corridorDirection field_74953_a +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross isMultipleFloors field_74952_b +FD net/minecraft/world/gen/structure/StructureMineshaftPieces$Room roomsLinkedToTheRoom field_74949_a +FD net/minecraft/world/gen/structure/MapGenNetherBridge spawnList field_75060_e +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces primaryComponents field_78742_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces secondaryComponents field_78741_b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$1 field_175888_a field_175888_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$End fillSeed field_74972_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor field_111021_b field_111021_b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 field_111020_b field_111020_b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne hasSpawner field_74976_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece field_111019_a field_111019_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight weightClass field_78828_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78826_b field_78826_b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78827_c field_78827_c +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78824_d field_78824_d +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight field_78825_e field_78825_e +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start theNetherBridgePieceWeight field_74970_a +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start primaryWeights field_74968_b +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start secondaryWeights field_74969_c +FD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Start field_74967_d field_74967_d +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175802_d field_175802_d +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175800_f field_175800_f +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175801_g field_175801_g +FD net/minecraft/world/gen/structure/StructureOceanMonument field_175803_h field_175803_h +FD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument field_175791_c field_175791_c +FD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument field_175790_d field_175790_d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$1 field_175971_a field_175971_a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175845_o field_175845_o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175844_p field_175844_p +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding field_175843_q field_175843_q +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175828_a field_175828_a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175826_b field_175826_b +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175827_c field_175827_c +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175824_d field_175824_d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175825_e field_175825_e +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175822_f field_175822_f +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175823_g field_175823_g +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175831_h field_175831_h +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175832_i field_175832_i +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175829_j field_175829_j +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece field_175830_k field_175830_k +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$SimpleRoom field_175833_o field_175833_o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$WingRoom field_175834_o field_175834_o +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175967_a field_175967_a +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175965_b field_175965_b +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175966_c field_175966_c +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175963_d field_175963_d +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175964_e field_175964_e +FD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition field_175962_f field_175962_f +FD net/minecraft/world/gen/structure/MapGenScatteredFeature biomelist field_75061_e +FD net/minecraft/world/gen/structure/MapGenScatteredFeature scatteredFeatureSpawnList field_82668_f +FD net/minecraft/world/gen/structure/MapGenScatteredFeature maxDistanceBetweenScatteredFeatures field_82669_g +FD net/minecraft/world/gen/structure/MapGenScatteredFeature minDistanceBetweenScatteredFeatures field_82670_h +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$1 field_175956_a field_175956_a +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid hasPlacedChest field_74940_h +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$DesertPyramid itemsToGenerateInTemple field_74941_i +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedMainChest field_74947_h +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedHiddenChest field_74948_i +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedTrap1 field_74945_j +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid placedTrap2 field_74946_k +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid field_175816_i field_175816_i +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid field_175815_j field_175815_j +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$JunglePyramid junglePyramidsRandomScatteredStones field_74942_n +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeX field_74939_a +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeY field_74937_b +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature scatteredFeatureSizeZ field_74938_c +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature field_74936_d field_74936_d +FD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$SwampHut hasWitch field_82682_h +FD net/minecraft/world/gen/structure/MapGenStronghold field_151546_e field_151546_e +FD net/minecraft/world/gen/structure/MapGenStronghold ranBiomeCheck field_75056_f +FD net/minecraft/world/gen/structure/MapGenStronghold structureCoords field_75057_g +FD net/minecraft/world/gen/structure/MapGenStronghold field_82671_h field_82671_h +FD net/minecraft/world/gen/structure/MapGenStronghold field_82672_i field_82672_i +FD net/minecraft/world/gen/structure/StructureStrongholdPieces totalWeight field_75207_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces pieceWeightArray field_75205_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces structurePieceList field_75206_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces strongComponentType field_75203_d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces strongholdStones field_75204_e +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$3 field_75245_a field_75245_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$3 field_175951_b field_175951_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor strongholdChestContents field_75003_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor hasMadeChest field_75002_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor field_74993_a field_74993_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74996_b field_74996_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74997_c field_74997_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74995_d field_74995_d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing field_74999_h field_74999_h +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library strongholdLibraryChestContents field_75007_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library isLargeRoom field_75008_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight pieceClass field_75194_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight pieceWeight field_75192_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight instancesSpawned field_75193_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight instancesLimit field_75191_d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom hasSpawner field_75005_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing roomType field_75013_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing strongholdRoomCrossingChestContents field_75014_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs field_75024_a field_75024_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 strongholdPieceWeight field_75027_a +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 strongholdPortalRoom field_75025_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2 field_75026_c field_75026_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight expandsX field_75019_b +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight expandsZ field_75020_c +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold field_143013_d field_143013_d +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door OPENING OPENING +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door WOOD_DOOR WOOD_DOOR +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door GRATES GRATES +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door IRON_DOOR IRON_DOOR +FD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door $VALUES $VALUES +FD net/minecraft/world/gen/structure/MapGenStructure structureData field_143029_e +FD net/minecraft/world/gen/structure/MapGenStructure structureMap field_75053_d +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85169_a field_85169_a +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85167_b field_85167_b +FD net/minecraft/world/gen/structure/MapGenStructure$1 field_85168_c field_85168_c +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85165_a field_85165_a +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85163_b field_85163_b +FD net/minecraft/world/gen/structure/MapGenStructure$2 field_85164_c field_85164_c +FD net/minecraft/world/gen/structure/MapGenStructure$3 field_85161_a field_85161_a +FD net/minecraft/world/gen/structure/MapGenStructureIO logger field_151687_a +FD net/minecraft/world/gen/structure/MapGenStructureIO startNameToClassMap field_143040_a +FD net/minecraft/world/gen/structure/MapGenStructureIO startClassToNameMap field_143038_b +FD net/minecraft/world/gen/structure/MapGenStructureIO componentNameToClassMap field_143039_c +FD net/minecraft/world/gen/structure/MapGenStructureIO componentClassToNameMap field_143037_d +FD net/minecraft/world/gen/structure/MapGenStructureData tagCompound field_143044_a +FD net/minecraft/world/gen/structure/StructureComponent boundingBox field_74887_e +FD net/minecraft/world/gen/structure/StructureComponent coordBaseMode field_74885_f +FD net/minecraft/world/gen/structure/StructureComponent componentType field_74886_g +FD net/minecraft/world/gen/structure/StructureComponent$1 field_176100_a field_176100_a +FD net/minecraft/world/gen/structure/StructureComponent$BlockSelector blockstate field_151562_a +FD net/minecraft/world/gen/structure/StructureStart components field_75075_a +FD net/minecraft/world/gen/structure/StructureStart boundingBox field_75074_b +FD net/minecraft/world/gen/structure/StructureStart chunkPosX field_143024_c +FD net/minecraft/world/gen/structure/StructureStart chunkPosZ field_143023_d +FD net/minecraft/world/gen/structure/MapGenVillage villageSpawnBiomes field_75055_e +FD net/minecraft/world/gen/structure/MapGenVillage terrainType field_75054_f +FD net/minecraft/world/gen/structure/MapGenVillage field_82665_g field_82665_g +FD net/minecraft/world/gen/structure/MapGenVillage field_82666_h field_82666_h +FD net/minecraft/world/gen/structure/MapGenVillage$Start hasMoreThanTwoComponents field_75076_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$1 field_176064_a field_176064_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeA field_82679_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeB field_82680_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeC field_82678_d +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 cropTypeD field_82681_h +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 cropTypeA field_82675_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 cropTypeB field_82676_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePieceClass field_75090_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePieceWeight field_75088_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePiecesSpawned field_75089_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight villagePiecesLimit field_75087_d +FD net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden isRoofAccessible field_74913_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut isTallHouse field_74909_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut tablePosition field_74910_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$House2 villageBlacksmithChestContents field_74918_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$House2 hasMadeChest field_74917_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start worldChunkMngr field_74929_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start inDesert field_74927_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start terrainType field_74928_c +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start structVillagePieceWeight field_74926_d +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start structureVillageWeightedPieceList field_74931_h +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start field_74932_i field_74932_i +FD net/minecraft/world/gen/structure/StructureVillagePieces$Start field_74930_j field_74930_j +FD net/minecraft/world/gen/structure/StructureVillagePieces$Path length field_74934_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village villagersSpawned field_74896_a +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village isDesertVillage field_143014_b +FD net/minecraft/world/gen/structure/StructureVillagePieces$Village field_143015_k field_143015_k +FD net/minecraft/world/gen/NoiseGeneratorImproved xCoord field_76315_a +FD net/minecraft/world/gen/NoiseGeneratorImproved yCoord field_76313_b +FD net/minecraft/world/gen/NoiseGeneratorImproved zCoord field_76314_c +FD net/minecraft/world/gen/NoiseGeneratorImproved permutations field_76312_d +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152381_e field_152381_e +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152382_f field_152382_f +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152383_g field_152383_g +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152384_h field_152384_h +FD net/minecraft/world/gen/NoiseGeneratorImproved field_152385_i field_152385_i +FD net/minecraft/world/gen/NoiseGeneratorOctaves generatorCollection field_76307_a +FD net/minecraft/world/gen/NoiseGeneratorOctaves octaves field_76306_b +FD net/minecraft/world/gen/NoiseGeneratorPerlin field_151603_a field_151603_a +FD net/minecraft/world/gen/NoiseGeneratorPerlin field_151602_b field_151602_b +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151614_a field_151614_a +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151612_b field_151612_b +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151613_c field_151613_c +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151610_d field_151610_d +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151611_e field_151611_e +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151608_f field_151608_f +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151609_g field_151609_g +FD net/minecraft/world/gen/NoiseGeneratorSimplex field_151615_h field_151615_h +FD net/minecraft/block/material/Material cactus field_151570_A +FD net/minecraft/block/material/Material clay field_151571_B +FD net/minecraft/block/material/Material gourd field_151572_C +FD net/minecraft/block/material/Material dragonEgg field_151566_D +FD net/minecraft/block/material/Material portal field_151567_E +FD net/minecraft/block/material/Material cake field_151568_F +FD net/minecraft/block/material/Material web field_151569_G +FD net/minecraft/block/material/Material piston field_76233_E +FD net/minecraft/block/material/Material barrier field_175972_I +FD net/minecraft/block/material/Material canBurn field_76235_G +FD net/minecraft/block/material/Material replaceable field_76239_H +FD net/minecraft/block/material/Material isTranslucent field_76240_I +FD net/minecraft/block/material/Material materialMapColor field_76234_F +FD net/minecraft/block/material/Material requiresNoTool field_76241_J +FD net/minecraft/block/material/Material mobilityFlag field_76242_K +FD net/minecraft/block/material/Material isAdventureModeExempt field_85159_M +FD net/minecraft/block/material/Material air field_151579_a +FD net/minecraft/block/material/Material grass field_151577_b +FD net/minecraft/block/material/Material ground field_151578_c +FD net/minecraft/block/material/Material wood field_151575_d +FD net/minecraft/block/material/Material rock field_151576_e +FD net/minecraft/block/material/Material iron field_151573_f +FD net/minecraft/block/material/Material anvil field_151574_g +FD net/minecraft/block/material/Material water field_151586_h +FD net/minecraft/block/material/Material lava field_151587_i +FD net/minecraft/block/material/Material leaves field_151584_j +FD net/minecraft/block/material/Material plants field_151585_k +FD net/minecraft/block/material/Material vine field_151582_l +FD net/minecraft/block/material/Material sponge field_151583_m +FD net/minecraft/block/material/Material cloth field_151580_n +FD net/minecraft/block/material/Material fire field_151581_o +FD net/minecraft/block/material/Material sand field_151595_p +FD net/minecraft/block/material/Material circuits field_151594_q +FD net/minecraft/block/material/Material carpet field_151593_r +FD net/minecraft/block/material/Material glass field_151592_s +FD net/minecraft/block/material/Material redstoneLight field_151591_t +FD net/minecraft/block/material/Material tnt field_151590_u +FD net/minecraft/block/material/Material coral field_151589_v +FD net/minecraft/block/material/Material ice field_151588_w +FD net/minecraft/block/material/Material packedIce field_151598_x +FD net/minecraft/block/material/Material snow field_151597_y +FD net/minecraft/block/material/Material craftedSnow field_151596_z +FD net/minecraft/block/material/MapColor blueColor field_151649_A +FD net/minecraft/block/material/MapColor brownColor field_151650_B +FD net/minecraft/block/material/MapColor greenColor field_151651_C +FD net/minecraft/block/material/MapColor redColor field_151645_D +FD net/minecraft/block/material/MapColor blackColor field_151646_E +FD net/minecraft/block/material/MapColor goldColor field_151647_F +FD net/minecraft/block/material/MapColor diamondColor field_151648_G +FD net/minecraft/block/material/MapColor lapisColor field_151652_H +FD net/minecraft/block/material/MapColor emeraldColor field_151653_I +FD net/minecraft/block/material/MapColor obsidianColor field_151654_J +FD net/minecraft/block/material/MapColor netherrackColor field_151655_K +FD net/minecraft/block/material/MapColor colorValue field_76291_p +FD net/minecraft/block/material/MapColor colorIndex field_76290_q +FD net/minecraft/block/material/MapColor mapColorArray field_76281_a +FD net/minecraft/block/material/MapColor airColor field_151660_b +FD net/minecraft/block/material/MapColor grassColor field_151661_c +FD net/minecraft/block/material/MapColor sandColor field_151658_d +FD net/minecraft/block/material/MapColor clothColor field_151659_e +FD net/minecraft/block/material/MapColor tntColor field_151656_f +FD net/minecraft/block/material/MapColor iceColor field_151657_g +FD net/minecraft/block/material/MapColor ironColor field_151668_h +FD net/minecraft/block/material/MapColor foliageColor field_151669_i +FD net/minecraft/block/material/MapColor snowColor field_151666_j +FD net/minecraft/block/material/MapColor clayColor field_151667_k +FD net/minecraft/block/material/MapColor dirtColor field_151664_l +FD net/minecraft/block/material/MapColor stoneColor field_151665_m +FD net/minecraft/block/material/MapColor waterColor field_151662_n +FD net/minecraft/block/material/MapColor woodColor field_151663_o +FD net/minecraft/block/material/MapColor quartzColor field_151677_p +FD net/minecraft/block/material/MapColor adobeColor field_151676_q +FD net/minecraft/block/material/MapColor magentaColor field_151675_r +FD net/minecraft/block/material/MapColor lightBlueColor field_151674_s +FD net/minecraft/block/material/MapColor yellowColor field_151673_t +FD net/minecraft/block/material/MapColor limeColor field_151672_u +FD net/minecraft/block/material/MapColor pinkColor field_151671_v +FD net/minecraft/block/material/MapColor grayColor field_151670_w +FD net/minecraft/block/material/MapColor silverColor field_151680_x +FD net/minecraft/block/material/MapColor cyanColor field_151679_y +FD net/minecraft/block/material/MapColor purpleColor field_151678_z +FD net/minecraft/world/gen/layer/GenLayerEdge field_151627_c field_151627_c +FD net/minecraft/world/gen/layer/GenLayerEdge$1 field_151642_a field_151642_a +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode COOL_WARM COOL_WARM +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode HEAT_ICE HEAT_ICE +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode SPECIAL SPECIAL +FD net/minecraft/world/gen/layer/GenLayerEdge$Mode $VALUES $VALUES +FD net/minecraft/world/gen/layer/GenLayerBiome field_151623_c field_151623_c +FD net/minecraft/world/gen/layer/GenLayerBiome field_151621_d field_151621_d +FD net/minecraft/world/gen/layer/GenLayerBiome field_151622_e field_151622_e +FD net/minecraft/world/gen/layer/GenLayerBiome field_151620_f field_151620_f +FD net/minecraft/world/gen/layer/GenLayerBiome field_175973_g field_175973_g +FD net/minecraft/world/gen/layer/IntCache intCacheSize field_76451_a +FD net/minecraft/world/gen/layer/IntCache freeSmallArrays field_76449_b +FD net/minecraft/world/gen/layer/IntCache inUseSmallArrays field_76450_c +FD net/minecraft/world/gen/layer/IntCache freeLargeArrays field_76447_d +FD net/minecraft/world/gen/layer/IntCache inUseLargeArrays field_76448_e +FD net/minecraft/world/gen/layer/GenLayer parent field_75909_a +FD net/minecraft/world/gen/layer/GenLayer baseSeed field_75906_d +FD net/minecraft/world/gen/layer/GenLayer worldGenSeed field_75907_b +FD net/minecraft/world/gen/layer/GenLayer chunkSeed field_75908_c +FD net/minecraft/world/gen/layer/GenLayer$1 field_176191_a field_176191_a +FD net/minecraft/world/gen/layer/GenLayer$2 field_176192_a field_176192_a +FD net/minecraft/world/gen/layer/GenLayerHills logger field_151629_c +FD net/minecraft/world/gen/layer/GenLayerHills field_151628_d field_151628_d +FD net/minecraft/world/gen/layer/GenLayerRiverMix biomePatternGeneratorChain field_75910_b +FD net/minecraft/world/gen/layer/GenLayerRiverMix riverPatternGeneratorChain field_75911_c +FD net/minecraft/pathfinding/Path pathPoints field_75852_a +FD net/minecraft/pathfinding/Path count field_75851_b +FD net/minecraft/pathfinding/PathPoint xCoord field_75839_a +FD net/minecraft/pathfinding/PathPoint yCoord field_75837_b +FD net/minecraft/pathfinding/PathPoint zCoord field_75838_c +FD net/minecraft/pathfinding/PathPoint index field_75835_d +FD net/minecraft/pathfinding/PathPoint totalPathDistance field_75836_e +FD net/minecraft/pathfinding/PathPoint distanceToNext field_75833_f +FD net/minecraft/pathfinding/PathPoint distanceToTarget field_75834_g +FD net/minecraft/pathfinding/PathPoint previous field_75841_h +FD net/minecraft/pathfinding/PathPoint visited field_75842_i +FD net/minecraft/pathfinding/PathPoint hash field_75840_j +FD net/minecraft/world/pathfinder/NodeProcessor blockaccess field_176169_a +FD net/minecraft/world/pathfinder/NodeProcessor pointMap field_176167_b +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeX field_176168_c +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeY field_176165_d +FD net/minecraft/world/pathfinder/NodeProcessor entitySizeZ field_176166_e +FD net/minecraft/pathfinding/PathEntity points field_75884_a +FD net/minecraft/pathfinding/PathEntity currentPathIndex field_75882_b +FD net/minecraft/pathfinding/PathEntity pathLength field_75883_c +FD net/minecraft/pathfinding/PathFinder path field_75866_b +FD net/minecraft/pathfinding/PathFinder pathOptions field_75864_d +FD net/minecraft/pathfinding/PathFinder nodeProcessor field_176190_c +FD net/minecraft/world/pathfinder/WalkNodeProcessor canEnterDoors field_176180_f +FD net/minecraft/world/pathfinder/WalkNodeProcessor canBreakDoors field_176181_g +FD net/minecraft/world/pathfinder/WalkNodeProcessor avoidsWater field_176183_h +FD net/minecraft/world/pathfinder/WalkNodeProcessor canSwim field_176184_i +FD net/minecraft/world/pathfinder/WalkNodeProcessor shouldAvoidWater field_176182_j +FD net/minecraft/world/WorldSavedData mapName field_76190_i +FD net/minecraft/world/WorldSavedData dirty field_76189_a +FD net/minecraft/util/Vec4b field_176117_a field_176117_a +FD net/minecraft/util/Vec4b field_176115_b field_176115_b +FD net/minecraft/util/Vec4b field_176116_c field_176116_c +FD net/minecraft/util/Vec4b field_176114_d field_176114_d +FD net/minecraft/world/storage/MapData xCenter field_76201_a +FD net/minecraft/world/storage/MapData zCenter field_76199_b +FD net/minecraft/world/storage/MapData dimension field_76200_c +FD net/minecraft/world/storage/MapData scale field_76197_d +FD net/minecraft/world/storage/MapData colors field_76198_e +FD net/minecraft/world/storage/MapData playersArrayList field_76196_g +FD net/minecraft/world/storage/MapData mapDecorations field_76203_h +FD net/minecraft/world/storage/MapData playersHashMap field_76202_j +FD net/minecraft/world/storage/MapData$MapInfo entityplayerObj field_76211_a +FD net/minecraft/world/storage/MapData$MapInfo field_82569_d field_82569_d +FD net/minecraft/world/storage/MapData$MapInfo field_176107_c field_176107_c +FD net/minecraft/world/storage/MapData$MapInfo field_176105_d field_176105_d +FD net/minecraft/world/storage/MapData$MapInfo minX field_176106_e +FD net/minecraft/world/storage/MapData$MapInfo minY field_176103_f +FD net/minecraft/world/storage/MapData$MapInfo maxX field_176104_g +FD net/minecraft/world/storage/MapData$MapInfo maxY field_176108_h +FD net/minecraft/world/storage/MapData$MapInfo field_176109_i field_176109_i +FD net/minecraft/world/chunk/storage/AnvilSaveConverter logger field_151480_b +FD net/minecraft/world/chunk/storage/AnvilSaveConverter$1 field_76172_a field_76172_a +FD net/minecraft/world/storage/DerivedWorldInfo theWorldInfo field_76115_a +FD net/minecraft/world/storage/SaveHandler logger field_151478_a +FD net/minecraft/world/storage/SaveHandler worldDirectory field_75770_b +FD net/minecraft/world/storage/SaveHandler playersDirectory field_75771_c +FD net/minecraft/world/storage/SaveHandler mapDataDir field_75768_d +FD net/minecraft/world/storage/SaveHandler initializationTime field_75769_e +FD net/minecraft/world/storage/SaveHandler saveDirectoryName field_75767_f +FD net/minecraft/world/storage/SaveFormatOld savesDirectory field_75808_a +FD net/minecraft/world/storage/SaveFormatOld logger field_151479_b +FD net/minecraft/world/storage/WorldInfo difficultyLocked field_176150_A +FD net/minecraft/world/storage/WorldInfo borderCenterX field_176151_B +FD net/minecraft/world/storage/WorldInfo borderCenterZ field_176152_C +FD net/minecraft/world/storage/WorldInfo borderSize field_176146_D +FD net/minecraft/world/storage/WorldInfo borderSizeLerpTime field_176147_E +FD net/minecraft/world/storage/WorldInfo borderSizeLerpTarget field_176148_F +FD net/minecraft/world/storage/WorldInfo borderSafeZone field_176149_G +FD net/minecraft/world/storage/WorldInfo borderDamagePerBlock field_176153_H +FD net/minecraft/world/storage/WorldInfo borderWarningDistance field_176154_I +FD net/minecraft/world/storage/WorldInfo borderWarningTime field_176155_J +FD net/minecraft/world/storage/WorldInfo theGameRules field_82577_x +FD net/minecraft/world/storage/WorldInfo DEFAULT_DIFFICULTY field_176156_a +FD net/minecraft/world/storage/WorldInfo randomSeed field_76100_a +FD net/minecraft/world/storage/WorldInfo terrainType field_76098_b +FD net/minecraft/world/storage/WorldInfo generatorOptions field_82576_c +FD net/minecraft/world/storage/WorldInfo spawnX field_76099_c +FD net/minecraft/world/storage/WorldInfo spawnY field_76096_d +FD net/minecraft/world/storage/WorldInfo spawnZ field_76097_e +FD net/minecraft/world/storage/WorldInfo totalTime field_82575_g +FD net/minecraft/world/storage/WorldInfo worldTime field_76094_f +FD net/minecraft/world/storage/WorldInfo lastTimePlayed field_76095_g +FD net/minecraft/world/storage/WorldInfo sizeOnDisk field_76107_h +FD net/minecraft/world/storage/WorldInfo playerTag field_76108_i +FD net/minecraft/world/storage/WorldInfo dimension field_76105_j +FD net/minecraft/world/storage/WorldInfo levelName field_76106_k +FD net/minecraft/world/storage/WorldInfo saveVersion field_76103_l +FD net/minecraft/world/storage/WorldInfo cleanWeatherTime field_176157_p +FD net/minecraft/world/storage/WorldInfo raining field_76104_m +FD net/minecraft/world/storage/WorldInfo rainTime field_76101_n +FD net/minecraft/world/storage/WorldInfo thundering field_76102_o +FD net/minecraft/world/storage/WorldInfo thunderTime field_76114_p +FD net/minecraft/world/storage/WorldInfo theGameType field_76113_q +FD net/minecraft/world/storage/WorldInfo mapFeaturesEnabled field_76112_r +FD net/minecraft/world/storage/WorldInfo hardcore field_76111_s +FD net/minecraft/world/storage/WorldInfo allowCommands field_76110_t +FD net/minecraft/world/storage/WorldInfo initialized field_76109_u +FD net/minecraft/world/storage/WorldInfo difficulty field_176158_z +FD net/minecraft/world/storage/WorldInfo$1 field_85143_a field_85143_a +FD net/minecraft/world/storage/WorldInfo$2 field_85139_a field_85139_a +FD net/minecraft/world/storage/WorldInfo$3 field_85141_a field_85141_a +FD net/minecraft/world/storage/WorldInfo$4 field_85135_a field_85135_a +FD net/minecraft/world/storage/WorldInfo$5 field_85137_a field_85137_a +FD net/minecraft/world/storage/WorldInfo$6 field_85115_a field_85115_a +FD net/minecraft/world/storage/WorldInfo$7 field_85113_a field_85113_a +FD net/minecraft/world/storage/WorldInfo$8 field_85111_a field_85111_a +FD net/minecraft/world/storage/WorldInfo$9 field_85109_a field_85109_a +FD net/minecraft/world/storage/SaveFormatComparator fileName field_75797_a +FD net/minecraft/world/storage/SaveFormatComparator displayName field_75795_b +FD net/minecraft/world/storage/SaveFormatComparator lastTimePlayed field_75796_c +FD net/minecraft/world/storage/SaveFormatComparator sizeOnDisk field_75793_d +FD net/minecraft/world/storage/SaveFormatComparator requiresConversion field_75794_e +FD net/minecraft/world/storage/SaveFormatComparator theEnumGameType field_75791_f +FD net/minecraft/world/storage/SaveFormatComparator hardcore field_75792_g +FD net/minecraft/world/storage/SaveFormatComparator cheatsEnabled field_75798_h +FD net/minecraft/world/storage/MapStorage loadedDataMap field_75749_b +FD net/minecraft/world/storage/MapStorage saveHandler field_75751_a +FD net/minecraft/world/storage/MapStorage loadedDataList field_75750_c +FD net/minecraft/world/storage/MapStorage idCounts field_75748_d +FD net/minecraft/world/storage/ThreadedFileIOBase threadedIOInstance field_75741_a +FD net/minecraft/world/storage/ThreadedFileIOBase threadedIOQueue field_75739_b +FD net/minecraft/world/storage/ThreadedFileIOBase writeQueuedCounter field_75740_c +FD net/minecraft/world/storage/ThreadedFileIOBase savedIOCounter field_75737_d +FD net/minecraft/world/storage/ThreadedFileIOBase isThreadWaiting field_75738_e +FD net/minecraft/util/AxisAlignedBB minX field_72340_a +FD net/minecraft/util/AxisAlignedBB minY field_72338_b +FD net/minecraft/util/AxisAlignedBB minZ field_72339_c +FD net/minecraft/util/AxisAlignedBB maxX field_72336_d +FD net/minecraft/util/AxisAlignedBB maxY field_72337_e +FD net/minecraft/util/AxisAlignedBB maxZ field_72334_f +FD net/minecraft/util/MovingObjectPosition typeOfHit field_72313_a +FD net/minecraft/util/MovingObjectPosition sideHit field_178784_b +FD net/minecraft/util/MovingObjectPosition hitVec field_72307_f +FD net/minecraft/util/MovingObjectPosition entityHit field_72308_g +FD net/minecraft/util/MovingObjectPosition blockPos field_178783_e +FD net/minecraft/util/MovingObjectPosition$MovingObjectType MISS MISS +FD net/minecraft/util/MovingObjectPosition$MovingObjectType BLOCK BLOCK +FD net/minecraft/util/MovingObjectPosition$MovingObjectType ENTITY ENTITY +FD net/minecraft/util/MovingObjectPosition$MovingObjectType $VALUES $VALUES +FD net/minecraft/util/Vec3 xCoord field_72450_a +FD net/minecraft/util/Vec3 yCoord field_72448_b +FD net/minecraft/util/Vec3 zCoord field_72449_c +FD net/minecraft/scoreboard/ScoreObjective theScoreboard field_96686_a +FD net/minecraft/scoreboard/ScoreObjective name field_96684_b +FD net/minecraft/scoreboard/ScoreObjective objectiveCriteria field_96685_c +FD net/minecraft/scoreboard/ScoreObjective renderType field_178768_d +FD net/minecraft/scoreboard/ScoreObjective displayName field_96683_d +FD net/minecraft/scoreboard/ScorePlayerTeam theScoreboard field_96677_a +FD net/minecraft/scoreboard/ScorePlayerTeam registeredName field_96675_b +FD net/minecraft/scoreboard/ScorePlayerTeam membershipSet field_96676_c +FD net/minecraft/scoreboard/ScorePlayerTeam teamNameSPT field_96673_d +FD net/minecraft/scoreboard/ScorePlayerTeam namePrefixSPT field_96674_e +FD net/minecraft/scoreboard/ScorePlayerTeam colorSuffix field_96671_f +FD net/minecraft/scoreboard/ScorePlayerTeam allowFriendlyFire field_96672_g +FD net/minecraft/scoreboard/ScorePlayerTeam canSeeFriendlyInvisibles field_98301_h +FD net/minecraft/scoreboard/ScorePlayerTeam nameTagVisibility field_178778_i +FD net/minecraft/scoreboard/ScorePlayerTeam deathMessageVisibility field_178776_j +FD net/minecraft/scoreboard/ScorePlayerTeam chatFormat field_178777_k +FD net/minecraft/scoreboard/Score scoreComparator field_96658_a +FD net/minecraft/scoreboard/Score theScoreboard field_96656_b +FD net/minecraft/scoreboard/Score theScoreObjective field_96657_c +FD net/minecraft/scoreboard/Score scorePlayerName field_96654_d +FD net/minecraft/scoreboard/Score scorePoints field_96655_e +FD net/minecraft/scoreboard/Score locked field_178817_f +FD net/minecraft/scoreboard/Score forceUpdate field_178818_g +FD net/minecraft/scoreboard/Scoreboard scoreObjectives field_96545_a +FD net/minecraft/scoreboard/Scoreboard scoreObjectiveCriterias field_96543_b +FD net/minecraft/scoreboard/Scoreboard entitiesScoreObjectives field_96544_c +FD net/minecraft/scoreboard/Scoreboard objectiveDisplaySlots field_96541_d +FD net/minecraft/scoreboard/Scoreboard teams field_96542_e +FD net/minecraft/scoreboard/Scoreboard teamMemberships field_96540_f +FD net/minecraft/scoreboard/Scoreboard field_178823_g field_178823_g +FD net/minecraft/scoreboard/ScoreboardSaveData logger field_151481_a +FD net/minecraft/scoreboard/ScoreboardSaveData theScoreboard field_96507_a +FD net/minecraft/scoreboard/ScoreboardSaveData delayedInitNbt field_96506_b +FD net/minecraft/scoreboard/Team$EnumVisible ALWAYS ALWAYS +FD net/minecraft/scoreboard/Team$EnumVisible NEVER NEVER +FD net/minecraft/scoreboard/Team$EnumVisible HIDE_FOR_OTHER_TEAMS HIDE_FOR_OTHER_TEAMS +FD net/minecraft/scoreboard/Team$EnumVisible HIDE_FOR_OWN_TEAM HIDE_FOR_OWN_TEAM +FD net/minecraft/scoreboard/Team$EnumVisible internalName field_178830_e +FD net/minecraft/scoreboard/Team$EnumVisible id field_178827_f +FD net/minecraft/scoreboard/Team$EnumVisible field_178828_g field_178828_g +FD net/minecraft/scoreboard/Team$EnumVisible $VALUES $VALUES +FD net/minecraft/scoreboard/GoalColor goalName field_178794_j +FD net/minecraft/scoreboard/ScoreDummyCriteria dummyName field_96644_g +FD net/minecraft/scoreboard/IScoreObjectiveCriteria INSTANCES field_96643_a +FD net/minecraft/scoreboard/IScoreObjectiveCriteria DUMMY field_96641_b +FD net/minecraft/scoreboard/IScoreObjectiveCriteria TRIGGER field_178791_c +FD net/minecraft/scoreboard/IScoreObjectiveCriteria deathCount field_96642_c +FD net/minecraft/scoreboard/IScoreObjectiveCriteria playerKillCount field_96639_d +FD net/minecraft/scoreboard/IScoreObjectiveCriteria totalKillCount field_96640_e +FD net/minecraft/scoreboard/IScoreObjectiveCriteria health field_96638_f +FD net/minecraft/scoreboard/IScoreObjectiveCriteria field_178792_h field_178792_h +FD net/minecraft/scoreboard/IScoreObjectiveCriteria field_178793_i field_178793_i +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType INTEGER INTEGER +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType HEARTS HEARTS +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType field_178801_c field_178801_c +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType field_178798_d field_178798_d +FD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType $VALUES $VALUES +FD net/minecraft/stats/ObjectiveStat stat field_151459_g +FD net/minecraft/client/renderer/ActiveRenderInfo VIEWPORT field_178814_a +FD net/minecraft/client/renderer/ActiveRenderInfo MODELVIEW field_178812_b +FD net/minecraft/client/renderer/ActiveRenderInfo PROJECTION field_178813_c +FD net/minecraft/client/renderer/ActiveRenderInfo OBJECTCOORDS field_178810_d +FD net/minecraft/client/renderer/ActiveRenderInfo position field_178811_e +FD net/minecraft/client/renderer/ActiveRenderInfo rotationX field_74588_d +FD net/minecraft/client/renderer/ActiveRenderInfo rotationXZ field_74589_e +FD net/minecraft/client/renderer/ActiveRenderInfo rotationZ field_74586_f +FD net/minecraft/client/renderer/ActiveRenderInfo rotationYZ field_74587_g +FD net/minecraft/client/renderer/ActiveRenderInfo rotationXY field_74596_h +FD net/minecraft/client/gui/ChatLine updateCounterCreated field_74543_a +FD net/minecraft/client/gui/ChatLine lineString field_74541_b +FD net/minecraft/client/gui/ChatLine chatLineID field_74542_c +FD net/minecraft/client/settings/KeyBinding keybindArray field_74516_a +FD net/minecraft/client/settings/KeyBinding hash field_74514_b +FD net/minecraft/client/settings/KeyBinding keybindSet field_151473_c +FD net/minecraft/client/settings/KeyBinding keyDescription field_74515_c +FD net/minecraft/client/settings/KeyBinding keyCodeDefault field_151472_e +FD net/minecraft/client/settings/KeyBinding keyCategory field_151471_f +FD net/minecraft/client/settings/KeyBinding keyCode field_74512_d +FD net/minecraft/client/settings/KeyBinding pressed field_74513_e +FD net/minecraft/client/settings/KeyBinding pressTime field_151474_i +FD net/minecraft/client/renderer/RenderHelper colorBuffer field_74522_a +FD net/minecraft/client/renderer/RenderHelper LIGHT0_POS field_82884_b +FD net/minecraft/client/renderer/RenderHelper LIGHT1_POS field_82885_c +FD net/minecraft/client/Minecraft mcProfiler field_71424_I +FD net/minecraft/client/Minecraft running field_71425_J +FD net/minecraft/client/Minecraft debug field_71426_K +FD net/minecraft/client/Minecraft field_175613_B field_175613_B +FD net/minecraft/client/Minecraft field_175614_C field_175614_C +FD net/minecraft/client/Minecraft field_175611_D field_175611_D +FD net/minecraft/client/Minecraft renderChunksMany field_175612_E +FD net/minecraft/client/Minecraft debugUpdateTime field_71419_L +FD net/minecraft/client/Minecraft fpsCounter field_71420_M +FD net/minecraft/client/Minecraft prevFrameTime field_71421_N +FD net/minecraft/client/Minecraft logger field_147123_G +FD net/minecraft/client/Minecraft locationMojangPng field_110444_H +FD net/minecraft/client/Minecraft macDisplayModes field_110445_I +FD net/minecraft/client/Minecraft fileResourcepacks field_130070_K +FD net/minecraft/client/Minecraft twitchDetails field_152356_J +FD net/minecraft/client/Minecraft profileProperties field_181038_N +FD net/minecraft/client/Minecraft currentServerData field_71422_O +FD net/minecraft/client/Minecraft renderEngine field_71446_o +FD net/minecraft/client/Minecraft theMinecraft field_71432_P +FD net/minecraft/client/Minecraft fullscreen field_71431_Q +FD net/minecraft/client/Minecraft enableGLErrorChecking field_175619_R +FD net/minecraft/client/Minecraft hasCrashed field_71434_R +FD net/minecraft/client/Minecraft crashReporter field_71433_S +FD net/minecraft/client/Minecraft connectedToRealms field_181541_X +FD net/minecraft/client/Minecraft timer field_71428_T +FD net/minecraft/client/Minecraft usageSnooper field_71427_U +FD net/minecraft/client/Minecraft isRunningOnMac field_142025_a +FD net/minecraft/client/Minecraft defaultResourcePacks field_110449_ao +FD net/minecraft/client/Minecraft mcDefaultResourcePack field_110450_ap +FD net/minecraft/client/Minecraft mcResourcePackRepository field_110448_aq +FD net/minecraft/client/Minecraft mcLanguageManager field_135017_as +FD net/minecraft/client/Minecraft stream field_152353_at +FD net/minecraft/client/Minecraft framebufferMc field_147124_at +FD net/minecraft/client/Minecraft textureMapBlocks field_147128_au +FD net/minecraft/client/Minecraft mcSoundHandler field_147127_av +FD net/minecraft/client/Minecraft mcMusicTicker field_147126_aw +FD net/minecraft/client/Minecraft mojangLogo field_152354_ay +FD net/minecraft/client/Minecraft sessionService field_152355_az +FD net/minecraft/client/Minecraft skinManager field_152350_aA +FD net/minecraft/client/Minecraft scheduledTasks field_152351_aB +FD net/minecraft/client/Minecraft field_175615_aJ field_175615_aJ +FD net/minecraft/client/Minecraft mcThread field_152352_aC +FD net/minecraft/client/Minecraft modelManager field_175617_aL +FD net/minecraft/client/Minecraft blockRenderDispatcher field_175618_aM +FD net/minecraft/client/Minecraft debugProfilerName field_71465_an +FD net/minecraft/client/Minecraft renderManager field_175616_W +FD net/minecraft/client/Minecraft renderItem field_175621_X +FD net/minecraft/client/Minecraft itemRenderer field_175620_Y +FD net/minecraft/client/Minecraft renderViewEntity field_175622_Z +FD net/minecraft/client/Minecraft session field_71449_j +FD net/minecraft/client/Minecraft isGamePaused field_71445_n +FD net/minecraft/client/Minecraft leftClickCounter field_71429_W +FD net/minecraft/client/Minecraft tempDisplayWidth field_71436_X +FD net/minecraft/client/Minecraft tempDisplayHeight field_71435_Y +FD net/minecraft/client/Minecraft theIntegratedServer field_71437_Z +FD net/minecraft/client/Minecraft fileAssets field_110446_Y +FD net/minecraft/client/Minecraft launchedVersion field_110447_Z +FD net/minecraft/client/Minecraft proxy field_110453_aa +FD net/minecraft/client/Minecraft saveLoader field_71469_aa +FD net/minecraft/client/Minecraft debugFPS field_71470_ab +FD net/minecraft/client/Minecraft rightClickDelayTimer field_71467_ac +FD net/minecraft/client/Minecraft serverName field_71475_ae +FD net/minecraft/client/Minecraft serverPort field_71477_af +FD net/minecraft/client/Minecraft joinPlayerCounter field_71457_ai +FD net/minecraft/client/Minecraft jvm64bit field_147129_ai +FD net/minecraft/client/Minecraft isDemo field_71459_aj +FD net/minecraft/client/Minecraft myNetworkManager field_71453_ak +FD net/minecraft/client/Minecraft integratedServerIsRunning field_71455_al +FD net/minecraft/client/Minecraft debugCrashKeyPressTime field_83002_am +FD net/minecraft/client/Minecraft mcResourceManager field_110451_am +FD net/minecraft/client/Minecraft metadataSerializer_ field_110452_an +FD net/minecraft/client/Minecraft memoryReserve field_71444_a +FD net/minecraft/client/Minecraft playerController field_71442_b +FD net/minecraft/client/Minecraft displayWidth field_71443_c +FD net/minecraft/client/Minecraft displayHeight field_71440_d +FD net/minecraft/client/Minecraft theWorld field_71441_e +FD net/minecraft/client/Minecraft renderGlobal field_71438_f +FD net/minecraft/client/Minecraft thePlayer field_71439_g +FD net/minecraft/client/Minecraft pointedEntity field_147125_j +FD net/minecraft/client/Minecraft effectRenderer field_71452_i +FD net/minecraft/client/Minecraft fontRendererObj field_71466_p +FD net/minecraft/client/Minecraft standardGalacticFontRenderer field_71464_q +FD net/minecraft/client/Minecraft currentScreen field_71462_r +FD net/minecraft/client/Minecraft loadingScreen field_71461_s +FD net/minecraft/client/Minecraft entityRenderer field_71460_t +FD net/minecraft/client/Minecraft guiAchievement field_71458_u +FD net/minecraft/client/Minecraft ingameGUI field_71456_v +FD net/minecraft/client/Minecraft skipRenderWorld field_71454_w +FD net/minecraft/client/Minecraft objectMouseOver field_71476_x +FD net/minecraft/client/Minecraft gameSettings field_71474_y +FD net/minecraft/client/Minecraft mouseHelper field_71417_B +FD net/minecraft/client/Minecraft mcDataDir field_71412_D +FD net/minecraft/client/Minecraft inGameHasFocus field_71415_G +FD net/minecraft/client/Minecraft systemTime field_71423_H +FD net/minecraft/client/Minecraft frameTimer field_181542_y +FD net/minecraft/client/Minecraft startNanoTime field_181543_z +FD net/minecraft/client/Minecraft$1 field_74532_a field_74532_a +FD net/minecraft/client/Minecraft$2 field_90051_a field_90051_a +FD net/minecraft/client/Minecraft$3 field_90046_a field_90046_a +FD net/minecraft/client/Minecraft$4 field_90048_a field_90048_a +FD net/minecraft/client/Minecraft$5 field_142056_a field_142056_a +FD net/minecraft/client/Minecraft$6 field_151425_a field_151425_a +FD net/minecraft/client/Minecraft$7 field_152389_a field_152389_a +FD net/minecraft/client/Minecraft$8 field_152128_a field_152128_a +FD net/minecraft/client/Minecraft$9 field_183003_a field_183003_a +FD net/minecraft/client/Minecraft$10 field_183016_a field_183016_a +FD net/minecraft/client/Minecraft$10 field_183017_b field_183017_b +FD net/minecraft/client/Minecraft$11 field_74536_a field_74536_a +FD net/minecraft/client/Minecraft$12 field_90055_a field_90055_a +FD net/minecraft/client/Minecraft$13 field_90053_a field_90053_a +FD net/minecraft/client/Minecraft$14 field_74421_a field_74421_a +FD net/minecraft/client/Minecraft$15 field_74503_a field_74503_a +FD net/minecraft/client/Minecraft$16 field_79002_a field_79002_a +FD net/minecraft/client/Minecraft$17 field_74500_a field_74500_a +FD net/minecraft/client/Minecraft$18 field_82887_a field_82887_a +FD net/minecraft/util/MouseHelper deltaX field_74377_a +FD net/minecraft/util/MouseHelper deltaY field_74375_b +FD net/minecraft/client/settings/GameSettings touchscreen field_85185_A +FD net/minecraft/client/settings/GameSettings overrideWidth field_92118_B +FD net/minecraft/client/settings/GameSettings overrideHeight field_92119_C +FD net/minecraft/client/settings/GameSettings heldItemTooltips field_92117_D +FD net/minecraft/client/settings/GameSettings chatScale field_96691_E +FD net/minecraft/client/settings/GameSettings chatWidth field_96692_F +FD net/minecraft/client/settings/GameSettings chatHeightUnfocused field_96693_G +FD net/minecraft/client/settings/GameSettings chatHeightFocused field_96694_H +FD net/minecraft/client/settings/GameSettings showInventoryAchievementHint field_151441_H +FD net/minecraft/client/settings/GameSettings mipmapLevels field_151442_I +FD net/minecraft/client/settings/GameSettings streamBytesPerPixel field_152400_J +FD net/minecraft/client/settings/GameSettings streamMicVolume field_152401_K +FD net/minecraft/client/settings/GameSettings streamGameVolume field_152402_L +FD net/minecraft/client/settings/GameSettings streamKbps field_152403_M +FD net/minecraft/client/settings/GameSettings streamFps field_152404_N +FD net/minecraft/client/settings/GameSettings streamCompression field_152405_O +FD net/minecraft/client/settings/GameSettings streamSendMetadata field_152406_P +FD net/minecraft/client/settings/GameSettings streamPreferredServer field_152407_Q +FD net/minecraft/client/settings/GameSettings streamChatEnabled field_152408_R +FD net/minecraft/client/settings/GameSettings streamChatUserFilter field_152409_S +FD net/minecraft/client/settings/GameSettings streamMicToggleBehavior field_152410_T +FD net/minecraft/client/settings/GameSettings useNativeTransport field_181150_U +FD net/minecraft/client/settings/GameSettings entityShadows field_181151_V +FD net/minecraft/client/settings/GameSettings realmsNotifications field_183509_X +FD net/minecraft/client/settings/GameSettings keyBindForward field_74351_w +FD net/minecraft/client/settings/GameSettings keyBindLeft field_74370_x +FD net/minecraft/client/settings/GameSettings mouseSensitivity field_74341_c +FD net/minecraft/client/settings/GameSettings hideGUI field_74319_N +FD net/minecraft/client/settings/GameSettings thirdPersonView field_74320_O +FD net/minecraft/client/settings/GameSettings showDebugInfo field_74330_P +FD net/minecraft/client/settings/GameSettings showDebugProfilerChart field_74329_Q +FD net/minecraft/client/settings/GameSettings showLagometer field_181657_aC +FD net/minecraft/client/settings/GameSettings lastServer field_74332_R +FD net/minecraft/client/settings/GameSettings smoothCamera field_74326_T +FD net/minecraft/client/settings/GameSettings debugCamEnable field_74325_U +FD net/minecraft/client/settings/GameSettings fovSetting field_74334_X +FD net/minecraft/client/settings/GameSettings gammaSetting field_74333_Y +FD net/minecraft/client/settings/GameSettings saturation field_151452_as +FD net/minecraft/client/settings/GameSettings guiScale field_74335_Z +FD net/minecraft/client/settings/GameSettings particleSetting field_74362_aa +FD net/minecraft/client/settings/GameSettings language field_74363_ab +FD net/minecraft/client/settings/GameSettings forceUnicodeFont field_151455_aw +FD net/minecraft/client/settings/GameSettings logger field_151454_ax +FD net/minecraft/client/settings/GameSettings gson field_151450_ay +FD net/minecraft/client/settings/GameSettings typeListString field_151449_az +FD net/minecraft/client/settings/GameSettings GUISCALES field_74367_ae +FD net/minecraft/client/settings/GameSettings PARTICLES field_74364_ag +FD net/minecraft/client/settings/GameSettings AMBIENT_OCCLUSIONS field_98303_au +FD net/minecraft/client/settings/GameSettings STREAM_COMPRESSIONS field_152391_aS +FD net/minecraft/client/settings/GameSettings STREAM_CHAT_MODES field_152392_aT +FD net/minecraft/client/settings/GameSettings STREAM_CHAT_FILTER_MODES field_152393_aU +FD net/minecraft/client/settings/GameSettings STREAM_MIC_MODES field_152394_aV +FD net/minecraft/client/settings/GameSettings CLOUDS_TYPES field_181149_aW +FD net/minecraft/client/settings/GameSettings keyBindBack field_74368_y +FD net/minecraft/client/settings/GameSettings keyBindRight field_74366_z +FD net/minecraft/client/settings/GameSettings keyBindJump field_74314_A +FD net/minecraft/client/settings/GameSettings keyBindSneak field_74311_E +FD net/minecraft/client/settings/GameSettings keyBindSprint field_151444_V +FD net/minecraft/client/settings/GameSettings keyBindInventory field_151445_Q +FD net/minecraft/client/settings/GameSettings keyBindUseItem field_74313_G +FD net/minecraft/client/settings/GameSettings keyBindDrop field_74316_C +FD net/minecraft/client/settings/GameSettings keyBindAttack field_74312_F +FD net/minecraft/client/settings/GameSettings keyBindPickBlock field_74322_I +FD net/minecraft/client/settings/GameSettings keyBindChat field_74310_D +FD net/minecraft/client/settings/GameSettings keyBindPlayerList field_74321_H +FD net/minecraft/client/settings/GameSettings keyBindCommand field_74323_J +FD net/minecraft/client/settings/GameSettings keyBindScreenshot field_151447_Z +FD net/minecraft/client/settings/GameSettings keyBindTogglePerspective field_151457_aa +FD net/minecraft/client/settings/GameSettings keyBindSmoothCamera field_151458_ab +FD net/minecraft/client/settings/GameSettings keyBindFullscreen field_152395_am +FD net/minecraft/client/settings/GameSettings keyBindSpectatorOutlines field_178883_an +FD net/minecraft/client/settings/GameSettings keyBindStreamStartStop field_152396_an +FD net/minecraft/client/settings/GameSettings keyBindStreamPauseUnpause field_152397_ao +FD net/minecraft/client/settings/GameSettings keyBindStreamCommercials field_152398_ap +FD net/minecraft/client/settings/GameSettings keyBindStreamToggleMic field_152399_aq +FD net/minecraft/client/settings/GameSettings keyBindsHotbar field_151456_ac +FD net/minecraft/client/settings/GameSettings keyBindings field_74324_K +FD net/minecraft/client/settings/GameSettings mc field_74317_L +FD net/minecraft/client/settings/GameSettings difficulty field_74318_M +FD net/minecraft/client/settings/GameSettings invertMouse field_74338_d +FD net/minecraft/client/settings/GameSettings setModelParts field_178882_aU +FD net/minecraft/client/settings/GameSettings mapSoundLevels field_151446_aD +FD net/minecraft/client/settings/GameSettings optionsFile field_74354_ai +FD net/minecraft/client/settings/GameSettings renderDistanceChunks field_151451_c +FD net/minecraft/client/settings/GameSettings viewBobbing field_74336_f +FD net/minecraft/client/settings/GameSettings anaglyph field_74337_g +FD net/minecraft/client/settings/GameSettings fboEnable field_151448_g +FD net/minecraft/client/settings/GameSettings limitFramerate field_74350_i +FD net/minecraft/client/settings/GameSettings clouds field_74345_l +FD net/minecraft/client/settings/GameSettings fancyGraphics field_74347_j +FD net/minecraft/client/settings/GameSettings ambientOcclusion field_74348_k +FD net/minecraft/client/settings/GameSettings resourcePacks field_151453_l +FD net/minecraft/client/settings/GameSettings incompatibleResourcePacks field_183018_l +FD net/minecraft/client/settings/GameSettings chatVisibility field_74343_n +FD net/minecraft/client/settings/GameSettings chatColours field_74344_o +FD net/minecraft/client/settings/GameSettings chatLinks field_74359_p +FD net/minecraft/client/settings/GameSettings chatLinksPrompt field_74358_q +FD net/minecraft/client/settings/GameSettings chatOpacity field_74357_r +FD net/minecraft/client/settings/GameSettings snooperEnabled field_74355_t +FD net/minecraft/client/settings/GameSettings fullScreen field_74353_u +FD net/minecraft/client/settings/GameSettings enableVsync field_74352_v +FD net/minecraft/client/settings/GameSettings useVbo field_178881_t +FD net/minecraft/client/settings/GameSettings allowBlockAlternatives field_178880_u +FD net/minecraft/client/settings/GameSettings reducedDebugInfo field_178879_v +FD net/minecraft/client/settings/GameSettings hideServerAddress field_80005_w +FD net/minecraft/client/settings/GameSettings advancedItemTooltips field_82882_x +FD net/minecraft/client/settings/GameSettings pauseOnLostFocus field_82881_y +FD net/minecraft/client/settings/GameSettings$2 field_151477_a field_151477_a +FD net/minecraft/client/settings/GameSettings$Options CHAT_WIDTH CHAT_WIDTH +FD net/minecraft/client/settings/GameSettings$Options CHAT_HEIGHT_FOCUSED CHAT_HEIGHT_FOCUSED +FD net/minecraft/client/settings/GameSettings$Options CHAT_HEIGHT_UNFOCUSED CHAT_HEIGHT_UNFOCUSED +FD net/minecraft/client/settings/GameSettings$Options MIPMAP_LEVELS MIPMAP_LEVELS +FD net/minecraft/client/settings/GameSettings$Options FORCE_UNICODE_FONT FORCE_UNICODE_FONT +FD net/minecraft/client/settings/GameSettings$Options STREAM_BYTES_PER_PIXEL STREAM_BYTES_PER_PIXEL +FD net/minecraft/client/settings/GameSettings$Options STREAM_VOLUME_MIC STREAM_VOLUME_MIC +FD net/minecraft/client/settings/GameSettings$Options STREAM_VOLUME_SYSTEM STREAM_VOLUME_SYSTEM +FD net/minecraft/client/settings/GameSettings$Options STREAM_KBPS STREAM_KBPS +FD net/minecraft/client/settings/GameSettings$Options STREAM_FPS STREAM_FPS +FD net/minecraft/client/settings/GameSettings$Options STREAM_COMPRESSION STREAM_COMPRESSION +FD net/minecraft/client/settings/GameSettings$Options STREAM_SEND_METADATA STREAM_SEND_METADATA +FD net/minecraft/client/settings/GameSettings$Options STREAM_CHAT_ENABLED STREAM_CHAT_ENABLED +FD net/minecraft/client/settings/GameSettings$Options STREAM_CHAT_USER_FILTER STREAM_CHAT_USER_FILTER +FD net/minecraft/client/settings/GameSettings$Options STREAM_MIC_TOGGLE_BEHAVIOR STREAM_MIC_TOGGLE_BEHAVIOR +FD net/minecraft/client/settings/GameSettings$Options BLOCK_ALTERNATIVES BLOCK_ALTERNATIVES +FD net/minecraft/client/settings/GameSettings$Options REDUCED_DEBUG_INFO REDUCED_DEBUG_INFO +FD net/minecraft/client/settings/GameSettings$Options ENTITY_SHADOWS ENTITY_SHADOWS +FD net/minecraft/client/settings/GameSettings$Options REALMS_NOTIFICATIONS REALMS_NOTIFICATIONS +FD net/minecraft/client/settings/GameSettings$Options enumFloat field_74385_A +FD net/minecraft/client/settings/GameSettings$Options enumBoolean field_74386_B +FD net/minecraft/client/settings/GameSettings$Options enumString field_74387_C +FD net/minecraft/client/settings/GameSettings$Options valueStep field_148270_M +FD net/minecraft/client/settings/GameSettings$Options valueMin field_148271_N +FD net/minecraft/client/settings/GameSettings$Options valueMax field_148272_O +FD net/minecraft/client/settings/GameSettings$Options $VALUES $VALUES +FD net/minecraft/client/settings/GameSettings$Options INVERT_MOUSE INVERT_MOUSE +FD net/minecraft/client/settings/GameSettings$Options SENSITIVITY SENSITIVITY +FD net/minecraft/client/settings/GameSettings$Options FOV FOV +FD net/minecraft/client/settings/GameSettings$Options GAMMA GAMMA +FD net/minecraft/client/settings/GameSettings$Options SATURATION SATURATION +FD net/minecraft/client/settings/GameSettings$Options RENDER_DISTANCE RENDER_DISTANCE +FD net/minecraft/client/settings/GameSettings$Options VIEW_BOBBING VIEW_BOBBING +FD net/minecraft/client/settings/GameSettings$Options ANAGLYPH ANAGLYPH +FD net/minecraft/client/settings/GameSettings$Options FRAMERATE_LIMIT FRAMERATE_LIMIT +FD net/minecraft/client/settings/GameSettings$Options FBO_ENABLE FBO_ENABLE +FD net/minecraft/client/settings/GameSettings$Options RENDER_CLOUDS RENDER_CLOUDS +FD net/minecraft/client/settings/GameSettings$Options GRAPHICS GRAPHICS +FD net/minecraft/client/settings/GameSettings$Options AMBIENT_OCCLUSION AMBIENT_OCCLUSION +FD net/minecraft/client/settings/GameSettings$Options GUI_SCALE GUI_SCALE +FD net/minecraft/client/settings/GameSettings$Options PARTICLES PARTICLES +FD net/minecraft/client/settings/GameSettings$Options CHAT_VISIBILITY CHAT_VISIBILITY +FD net/minecraft/client/settings/GameSettings$Options CHAT_COLOR CHAT_COLOR +FD net/minecraft/client/settings/GameSettings$Options CHAT_LINKS CHAT_LINKS +FD net/minecraft/client/settings/GameSettings$Options CHAT_OPACITY CHAT_OPACITY +FD net/minecraft/client/settings/GameSettings$Options CHAT_LINKS_PROMPT CHAT_LINKS_PROMPT +FD net/minecraft/client/settings/GameSettings$Options SNOOPER_ENABLED SNOOPER_ENABLED +FD net/minecraft/client/settings/GameSettings$Options USE_FULLSCREEN USE_FULLSCREEN +FD net/minecraft/client/settings/GameSettings$Options ENABLE_VSYNC ENABLE_VSYNC +FD net/minecraft/client/settings/GameSettings$Options USE_VBO USE_VBO +FD net/minecraft/client/settings/GameSettings$Options TOUCHSCREEN TOUCHSCREEN +FD net/minecraft/client/settings/GameSettings$Options CHAT_SCALE CHAT_SCALE +FD net/minecraft/client/LoadingScreenRenderer message field_73727_a +FD net/minecraft/client/LoadingScreenRenderer mc field_73725_b +FD net/minecraft/client/LoadingScreenRenderer currentlyDisplayedText field_73726_c +FD net/minecraft/client/LoadingScreenRenderer systemTime field_73723_d +FD net/minecraft/client/LoadingScreenRenderer loadingSuccess field_73724_e +FD net/minecraft/client/LoadingScreenRenderer scaledResolution field_146587_f +FD net/minecraft/client/LoadingScreenRenderer framebuffer field_146588_g +FD net/minecraft/util/ScreenShotHelper logger field_148261_a +FD net/minecraft/util/ScreenShotHelper dateFormat field_74295_a +FD net/minecraft/util/ScreenShotHelper pixelBuffer field_74293_b +FD net/minecraft/util/ScreenShotHelper pixelValues field_74294_c +FD net/minecraft/util/Timer ticksPerSecond field_74282_a +FD net/minecraft/util/Timer elapsedTicks field_74280_b +FD net/minecraft/util/Timer renderPartialTicks field_74281_c +FD net/minecraft/util/Timer timerSpeed field_74278_d +FD net/minecraft/util/Timer elapsedPartialTicks field_74279_e +FD net/minecraft/util/Timer lastHRTime field_74276_f +FD net/minecraft/util/Timer lastSyncSysClock field_74277_g +FD net/minecraft/util/Timer lastSyncHRClock field_74284_h +FD net/minecraft/util/Timer counter field_74285_i +FD net/minecraft/util/Timer timeSyncAdjustment field_74283_j +FD net/minecraft/util/Session username field_74286_b +FD net/minecraft/util/Session playerID field_148257_b +FD net/minecraft/util/Session token field_148258_c +FD net/minecraft/util/Session sessionType field_152429_d +FD net/minecraft/util/Session$Type LEGACY LEGACY +FD net/minecraft/util/Session$Type MOJANG MOJANG +FD net/minecraft/util/Session$Type SESSION_TYPES field_152425_c +FD net/minecraft/util/Session$Type sessionType field_152426_d +FD net/minecraft/util/Session$Type $VALUES $VALUES +FD net/minecraft/client/gui/FontRenderer FONT_HEIGHT field_78288_b +FD net/minecraft/client/gui/FontRenderer fontRandom field_78289_c +FD net/minecraft/client/gui/FontRenderer unicodePageLocations field_111274_c +FD net/minecraft/client/gui/FontRenderer charWidth field_78286_d +FD net/minecraft/client/gui/FontRenderer glyphWidth field_78287_e +FD net/minecraft/client/gui/FontRenderer colorCode field_78285_g +FD net/minecraft/client/gui/FontRenderer locationFontTexture field_111273_g +FD net/minecraft/client/gui/FontRenderer renderEngine field_78298_i +FD net/minecraft/client/gui/FontRenderer posX field_78295_j +FD net/minecraft/client/gui/FontRenderer posY field_78296_k +FD net/minecraft/client/gui/FontRenderer unicodeFlag field_78293_l +FD net/minecraft/client/gui/FontRenderer bidiFlag field_78294_m +FD net/minecraft/client/gui/FontRenderer red field_78291_n +FD net/minecraft/client/gui/FontRenderer blue field_78292_o +FD net/minecraft/client/gui/FontRenderer green field_78306_p +FD net/minecraft/client/gui/FontRenderer alpha field_78305_q +FD net/minecraft/client/gui/FontRenderer textColor field_78304_r +FD net/minecraft/client/gui/FontRenderer randomStyle field_78303_s +FD net/minecraft/client/gui/FontRenderer boldStyle field_78302_t +FD net/minecraft/client/gui/FontRenderer italicStyle field_78301_u +FD net/minecraft/client/gui/FontRenderer underlineStyle field_78300_v +FD net/minecraft/client/gui/FontRenderer strikethroughStyle field_78299_w +FD net/minecraft/client/gui/GuiIngame titleDisplayTime field_175192_A +FD net/minecraft/client/gui/GuiIngame titleFadeOut field_175193_B +FD net/minecraft/client/gui/GuiIngame playerHealth field_175194_C +FD net/minecraft/client/gui/GuiIngame lastPlayerHealth field_175189_D +FD net/minecraft/client/gui/GuiIngame lastSystemTime field_175190_E +FD net/minecraft/client/gui/GuiIngame healthUpdateCounter field_175191_F +FD net/minecraft/client/gui/GuiIngame prevVignetteBrightness field_73843_a +FD net/minecraft/client/gui/GuiIngame vignetteTexPath field_110329_b +FD net/minecraft/client/gui/GuiIngame widgetsTexPath field_110330_c +FD net/minecraft/client/gui/GuiIngame pumpkinBlurTexPath field_110328_d +FD net/minecraft/client/gui/GuiIngame rand field_73842_c +FD net/minecraft/client/gui/GuiIngame mc field_73839_d +FD net/minecraft/client/gui/GuiIngame itemRenderer field_73841_b +FD net/minecraft/client/gui/GuiIngame persistantChatGUI field_73840_e +FD net/minecraft/client/gui/GuiIngame streamIndicator field_152127_m +FD net/minecraft/client/gui/GuiIngame updateCounter field_73837_f +FD net/minecraft/client/gui/GuiIngame recordPlaying field_73838_g +FD net/minecraft/client/gui/GuiIngame recordPlayingUpFor field_73845_h +FD net/minecraft/client/gui/GuiIngame recordIsPlaying field_73844_j +FD net/minecraft/client/gui/GuiIngame remainingHighlightTicks field_92017_k +FD net/minecraft/client/gui/GuiIngame highlightingItemStack field_92016_l +FD net/minecraft/client/gui/GuiIngame overlayDebug field_175198_t +FD net/minecraft/client/gui/GuiIngame spectatorGui field_175197_u +FD net/minecraft/client/gui/GuiIngame overlayPlayerList field_175196_v +FD net/minecraft/client/gui/GuiIngame titlesTimer field_175195_w +FD net/minecraft/client/gui/GuiIngame displayedTitle field_175201_x +FD net/minecraft/client/gui/GuiIngame displayedSubTitle field_175200_y +FD net/minecraft/client/gui/GuiIngame titleFadeIn field_175199_z +FD net/minecraft/client/gui/GuiIngame$1 field_178904_a field_178904_a +FD net/minecraft/client/gui/Gui optionsBackground field_110325_k +FD net/minecraft/client/gui/Gui statIcons field_110323_l +FD net/minecraft/client/gui/Gui icons field_110324_m +FD net/minecraft/client/gui/Gui zLevel field_73735_i +FD net/minecraft/client/gui/MapItemRenderer mapIcons field_148253_a +FD net/minecraft/client/gui/MapItemRenderer textureManager field_148251_b +FD net/minecraft/client/gui/MapItemRenderer loadedMaps field_148252_c +FD net/minecraft/client/gui/MapItemRenderer$Instance field_148244_a field_148244_a +FD net/minecraft/client/gui/MapItemRenderer$Instance mapData field_148242_b +FD net/minecraft/client/gui/MapItemRenderer$Instance mapTexture field_148243_c +FD net/minecraft/client/gui/MapItemRenderer$Instance location field_148240_d +FD net/minecraft/client/gui/MapItemRenderer$Instance mapTextureData field_148241_e +FD net/minecraft/client/gui/ScaledResolution scaledWidthD field_78332_c +FD net/minecraft/client/gui/ScaledResolution scaledHeightD field_78329_d +FD net/minecraft/client/gui/ScaledResolution scaledWidth field_78333_a +FD net/minecraft/client/gui/ScaledResolution scaledHeight field_78331_b +FD net/minecraft/client/gui/ScaledResolution scaleFactor field_78330_e +FD net/minecraft/client/gui/GuiButton buttonTextures field_146122_a +FD net/minecraft/client/gui/GuiButton width field_146120_f +FD net/minecraft/client/gui/GuiButton height field_146121_g +FD net/minecraft/client/gui/GuiButton xPosition field_146128_h +FD net/minecraft/client/gui/GuiButton yPosition field_146129_i +FD net/minecraft/client/gui/GuiButton displayString field_146126_j +FD net/minecraft/client/gui/GuiButton id field_146127_k +FD net/minecraft/client/gui/GuiButton enabled field_146124_l +FD net/minecraft/client/gui/GuiButton visible field_146125_m +FD net/minecraft/client/gui/GuiButton hovered field_146123_n +FD net/minecraft/client/gui/GuiNewChat logger field_146249_a +FD net/minecraft/client/gui/GuiNewChat mc field_146247_f +FD net/minecraft/client/gui/GuiNewChat sentMessages field_146248_g +FD net/minecraft/client/gui/GuiNewChat chatLines field_146252_h +FD net/minecraft/client/gui/GuiNewChat drawnChatLines field_146253_i +FD net/minecraft/client/gui/GuiNewChat scrollPos field_146250_j +FD net/minecraft/client/gui/GuiNewChat isScrolled field_146251_k +FD net/minecraft/client/gui/GuiOverlayDebug mc field_175242_a +FD net/minecraft/client/gui/GuiOverlayDebug fontRenderer field_175241_f +FD net/minecraft/client/gui/GuiOverlayDebug$1 field_178907_a field_178907_a +FD net/minecraft/client/gui/GuiTextField xPosition field_146209_f +FD net/minecraft/client/gui/GuiTextField yPosition field_146210_g +FD net/minecraft/client/gui/GuiTextField id field_175208_g +FD net/minecraft/client/gui/GuiTextField fontRendererInstance field_146211_a +FD net/minecraft/client/gui/GuiTextField width field_146218_h +FD net/minecraft/client/gui/GuiTextField height field_146219_i +FD net/minecraft/client/gui/GuiTextField text field_146216_j +FD net/minecraft/client/gui/GuiTextField maxStringLength field_146217_k +FD net/minecraft/client/gui/GuiTextField cursorCounter field_146214_l +FD net/minecraft/client/gui/GuiTextField enableBackgroundDrawing field_146215_m +FD net/minecraft/client/gui/GuiTextField canLoseFocus field_146212_n +FD net/minecraft/client/gui/GuiTextField isFocused field_146213_o +FD net/minecraft/client/gui/GuiTextField isEnabled field_146226_p +FD net/minecraft/client/gui/GuiTextField lineScrollOffset field_146225_q +FD net/minecraft/client/gui/GuiTextField cursorPosition field_146224_r +FD net/minecraft/client/gui/GuiTextField selectionEnd field_146223_s +FD net/minecraft/client/gui/GuiTextField enabledColor field_146222_t +FD net/minecraft/client/gui/GuiTextField disabledColor field_146221_u +FD net/minecraft/client/gui/GuiTextField visible field_146220_v +FD net/minecraft/client/gui/GuiTextField field_175210_x field_175210_x +FD net/minecraft/client/gui/GuiTextField validator field_175209_y +FD net/minecraft/client/gui/GuiSlider isMouseDown field_175228_o +FD net/minecraft/client/gui/GuiSlider sliderPosition field_175227_p +FD net/minecraft/client/gui/GuiSlider name field_175226_q +FD net/minecraft/client/gui/GuiSlider min field_175225_r +FD net/minecraft/client/gui/GuiSlider max field_175224_s +FD net/minecraft/client/gui/GuiSlider responder field_175223_t +FD net/minecraft/client/gui/GuiSlider formatHelper field_175222_u +FD net/minecraft/client/gui/GuiLabel field_146167_a field_146167_a +FD net/minecraft/client/gui/GuiLabel field_146161_f field_146161_f +FD net/minecraft/client/gui/GuiLabel field_146162_g field_146162_g +FD net/minecraft/client/gui/GuiLabel field_146174_h field_146174_h +FD net/minecraft/client/gui/GuiLabel field_175204_i field_175204_i +FD net/minecraft/client/gui/GuiLabel visible field_146172_j +FD net/minecraft/client/gui/GuiLabel field_146173_k field_146173_k +FD net/minecraft/client/gui/GuiLabel centered field_146170_l +FD net/minecraft/client/gui/GuiLabel labelBgEnabled field_146171_m +FD net/minecraft/client/gui/GuiLabel field_146168_n field_146168_n +FD net/minecraft/client/gui/GuiLabel field_146169_o field_146169_o +FD net/minecraft/client/gui/GuiLabel field_146166_p field_146166_p +FD net/minecraft/client/gui/GuiLabel field_146165_q field_146165_q +FD net/minecraft/client/gui/GuiLabel fontRenderer field_146164_r +FD net/minecraft/client/gui/GuiLabel field_146163_s field_146163_s +FD net/minecraft/client/gui/GuiListButton field_175216_o field_175216_o +FD net/minecraft/client/gui/GuiListButton localizationStr field_175215_p +FD net/minecraft/client/gui/GuiListButton guiResponder field_175214_q +FD net/minecraft/client/gui/GuiLockIconButton field_175231_o field_175231_o +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED LOCKED +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED_HOVER LOCKED_HOVER +FD net/minecraft/client/gui/GuiLockIconButton$Icon LOCKED_DISABLED LOCKED_DISABLED +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED UNLOCKED +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED_HOVER UNLOCKED_HOVER +FD net/minecraft/client/gui/GuiLockIconButton$Icon UNLOCKED_DISABLED UNLOCKED_DISABLED +FD net/minecraft/client/gui/GuiLockIconButton$Icon field_178914_g field_178914_g +FD net/minecraft/client/gui/GuiLockIconButton$Icon field_178920_h field_178920_h +FD net/minecraft/client/gui/GuiLockIconButton$Icon $VALUES $VALUES +FD net/minecraft/client/gui/GuiOptionButton enumOptions field_146137_o +FD net/minecraft/client/gui/GuiOptionsRowList field_148184_k field_148184_k +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148325_a field_148325_a +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148323_b field_148323_b +FD net/minecraft/client/gui/GuiOptionsRowList$Row field_148324_c field_148324_c +FD net/minecraft/client/gui/GuiPageButtonList field_178075_A field_178075_A +FD net/minecraft/client/gui/GuiPageButtonList field_178074_u field_178074_u +FD net/minecraft/client/gui/GuiPageButtonList field_178073_v field_178073_v +FD net/minecraft/client/gui/GuiPageButtonList field_178072_w field_178072_w +FD net/minecraft/client/gui/GuiPageButtonList field_178078_x field_178078_x +FD net/minecraft/client/gui/GuiPageButtonList field_178077_y field_178077_y +FD net/minecraft/client/gui/GuiPageButtonList field_178076_z field_178076_z +FD net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry field_178941_a field_178941_a +FD net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry field_178951_a field_178951_a +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178031_a field_178031_a +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178029_b field_178029_b +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178030_c field_178030_c +FD net/minecraft/client/gui/GuiPageButtonList$GuiEntry field_178028_d field_178028_d +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178939_a field_178939_a +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178937_b field_178937_b +FD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry field_178938_c field_178938_c +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178949_a field_178949_a +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178947_b field_178947_b +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178948_c field_178948_c +FD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry field_178946_d field_178946_d +FD net/minecraft/client/gui/GuiPlayerTabOverlay field_175252_a field_175252_a +FD net/minecraft/client/gui/GuiPlayerTabOverlay mc field_175250_f +FD net/minecraft/client/gui/GuiPlayerTabOverlay guiIngame field_175251_g +FD net/minecraft/client/gui/GuiPlayerTabOverlay footer field_175255_h +FD net/minecraft/client/gui/GuiPlayerTabOverlay header field_175256_i +FD net/minecraft/client/gui/GuiPlayerTabOverlay lastTimeOpened field_175253_j +FD net/minecraft/client/gui/GuiPlayerTabOverlay isBeingRendered field_175254_k +FD net/minecraft/client/gui/GuiSlot mc field_148161_k +FD net/minecraft/client/gui/GuiSlot width field_148155_a +FD net/minecraft/client/gui/GuiSlot height field_148158_l +FD net/minecraft/client/gui/GuiSlot top field_148153_b +FD net/minecraft/client/gui/GuiSlot bottom field_148154_c +FD net/minecraft/client/gui/GuiSlot right field_148151_d +FD net/minecraft/client/gui/GuiSlot left field_148152_e +FD net/minecraft/client/gui/GuiSlot slotHeight field_148149_f +FD net/minecraft/client/gui/GuiSlot mouseX field_148150_g +FD net/minecraft/client/gui/GuiSlot mouseY field_148162_h +FD net/minecraft/client/gui/GuiSlot field_148163_i field_148163_i +FD net/minecraft/client/gui/GuiSlot initialClickY field_148157_o +FD net/minecraft/client/gui/GuiSlot scrollMultiplier field_148170_p +FD net/minecraft/client/gui/GuiSlot amountScrolled field_148169_q +FD net/minecraft/client/gui/GuiSlot selectedElement field_148168_r +FD net/minecraft/client/gui/GuiSlot lastClicked field_148167_s +FD net/minecraft/client/gui/GuiSlot field_178041_q field_178041_q +FD net/minecraft/client/gui/GuiSlot showSelectionBox field_148166_t +FD net/minecraft/client/gui/GuiSlot hasListHeader field_148165_u +FD net/minecraft/client/gui/GuiSlot headerPadding field_148160_j +FD net/minecraft/client/gui/GuiSlot scrollUpButtonID field_148159_m +FD net/minecraft/client/gui/GuiSlot scrollDownButtonID field_148156_n +FD net/minecraft/client/gui/GuiSlot enabled field_148164_v +FD net/minecraft/client/gui/GuiOptionSlider dragging field_146135_o +FD net/minecraft/client/gui/GuiOptionSlider sliderValue field_146134_p +FD net/minecraft/client/gui/GuiOptionSlider options field_146133_q +FD net/minecraft/client/gui/GuiOptionSlider field_146132_r field_146132_r +FD net/minecraft/client/gui/GuiOptionSlider field_146131_s field_146131_s +FD net/minecraft/client/gui/GuiStreamIndicator locationStreamIndicator field_152441_a +FD net/minecraft/client/gui/GuiStreamIndicator mc field_152442_b +FD net/minecraft/client/gui/GuiStreamIndicator streamAlpha field_152443_c +FD net/minecraft/client/gui/GuiStreamIndicator streamAlphaDelta field_152444_d +FD net/minecraft/client/gui/GuiSpectator field_175269_a field_175269_a +FD net/minecraft/client/gui/GuiSpectator field_175267_f field_175267_f +FD net/minecraft/client/gui/GuiSpectator field_175268_g field_175268_g +FD net/minecraft/client/gui/GuiSpectator field_175270_h field_175270_h +FD net/minecraft/client/gui/GuiSpectator field_175271_i field_175271_i +FD net/minecraft/client/gui/GuiButtonRealmsProxy realmsButton field_154318_o +FD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy field_178046_u field_178046_u +FD net/minecraft/client/gui/GuiScreenRealmsProxy field_154330_a field_154330_a +FD net/minecraft/client/gui/GuiSlotRealmsProxy selectionList field_154340_k +FD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy field_178050_u field_178050_u +FD net/minecraft/client/gui/ScreenChatOptions field_146399_a field_146399_a +FD net/minecraft/client/gui/ScreenChatOptions parentScreen field_146396_g +FD net/minecraft/client/gui/ScreenChatOptions game_settings field_146400_h +FD net/minecraft/client/gui/ScreenChatOptions field_146401_i field_146401_i +FD net/minecraft/client/gui/GuiChat inputField field_146415_a +FD net/minecraft/client/gui/GuiChat logger field_146408_f +FD net/minecraft/client/gui/GuiChat historyBuffer field_146410_g +FD net/minecraft/client/gui/GuiChat sentHistoryCursor field_146416_h +FD net/minecraft/client/gui/GuiChat playerNamesFound field_146417_i +FD net/minecraft/client/gui/GuiChat waitingOnAutocomplete field_146414_r +FD net/minecraft/client/gui/GuiChat autocompleteIndex field_146413_s +FD net/minecraft/client/gui/GuiChat foundPlayerNames field_146412_t +FD net/minecraft/client/gui/GuiChat defaultInputFieldText field_146409_v +FD net/minecraft/client/gui/GuiConfirmOpenLink openLinkWarning field_146363_r +FD net/minecraft/client/gui/GuiConfirmOpenLink copyLinkButtonText field_146362_s +FD net/minecraft/client/gui/GuiConfirmOpenLink linkText field_146361_t +FD net/minecraft/client/gui/GuiConfirmOpenLink showSecurityWarning field_146360_u +FD net/minecraft/client/gui/GuiYesNo parentScreen field_146355_a +FD net/minecraft/client/gui/GuiYesNo messageLine1 field_146351_f +FD net/minecraft/client/gui/GuiYesNo confirmButtonText field_146352_g +FD net/minecraft/client/gui/GuiYesNo cancelButtonText field_146356_h +FD net/minecraft/client/gui/GuiYesNo parentButtonClickedId field_146357_i +FD net/minecraft/client/gui/GuiYesNo messageLine2 field_146354_r +FD net/minecraft/client/gui/GuiYesNo field_175298_s field_175298_s +FD net/minecraft/client/gui/GuiYesNo ticksUntilEnable field_146353_s +FD net/minecraft/client/multiplayer/GuiConnecting CONNECTION_ID field_146372_a +FD net/minecraft/client/multiplayer/GuiConnecting logger field_146370_f +FD net/minecraft/client/multiplayer/GuiConnecting networkManager field_146371_g +FD net/minecraft/client/multiplayer/GuiConnecting cancel field_146373_h +FD net/minecraft/client/multiplayer/GuiConnecting previousGuiScreen field_146374_i +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148231_a field_148231_a +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148229_b field_148229_b +FD net/minecraft/client/multiplayer/GuiConnecting$1 field_148230_c field_148230_c +FD net/minecraft/client/gui/GuiCreateFlatWorld createWorldGui field_146385_f +FD net/minecraft/client/gui/GuiCreateFlatWorld theFlatGeneratorInfo field_146387_g +FD net/minecraft/client/gui/GuiCreateFlatWorld flatWorldTitle field_146393_h +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146394_i field_146394_i +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146391_r field_146391_r +FD net/minecraft/client/gui/GuiCreateFlatWorld createFlatWorldListSlotGui field_146390_s +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146389_t field_146389_t +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146388_u field_146388_u +FD net/minecraft/client/gui/GuiCreateFlatWorld field_146386_v field_146386_v +FD net/minecraft/client/gui/GuiCreateFlatWorld$Details field_148228_k field_148228_k +FD net/minecraft/client/gui/GuiCreateFlatWorld$Details field_148227_l field_148227_l +FD net/minecraft/client/gui/GuiCreateWorld btnGameMode field_146343_z +FD net/minecraft/client/gui/GuiCreateWorld btnMoreOptions field_146324_A +FD net/minecraft/client/gui/GuiCreateWorld btnMapFeatures field_146325_B +FD net/minecraft/client/gui/GuiCreateWorld btnBonusItems field_146326_C +FD net/minecraft/client/gui/GuiCreateWorld btnMapType field_146320_D +FD net/minecraft/client/gui/GuiCreateWorld btnAllowCommands field_146321_E +FD net/minecraft/client/gui/GuiCreateWorld btnCustomizeType field_146322_F +FD net/minecraft/client/gui/GuiCreateWorld gameModeDesc1 field_146323_G +FD net/minecraft/client/gui/GuiCreateWorld gameModeDesc2 field_146328_H +FD net/minecraft/client/gui/GuiCreateWorld worldSeed field_146329_I +FD net/minecraft/client/gui/GuiCreateWorld worldName field_146330_J +FD net/minecraft/client/gui/GuiCreateWorld selectedIndex field_146331_K +FD net/minecraft/client/gui/GuiCreateWorld disallowedFilenames field_146327_L +FD net/minecraft/client/gui/GuiCreateWorld chunkProviderSettingsJson field_146334_a +FD net/minecraft/client/gui/GuiCreateWorld parentScreen field_146332_f +FD net/minecraft/client/gui/GuiCreateWorld worldNameField field_146333_g +FD net/minecraft/client/gui/GuiCreateWorld worldSeedField field_146335_h +FD net/minecraft/client/gui/GuiCreateWorld saveDirName field_146336_i +FD net/minecraft/client/gui/GuiCreateWorld gameMode field_146342_r +FD net/minecraft/client/gui/GuiCreateWorld savedGameMode field_175300_s +FD net/minecraft/client/gui/GuiCreateWorld generateStructuresEnabled field_146341_s +FD net/minecraft/client/gui/GuiCreateWorld allowCheats field_146340_t +FD net/minecraft/client/gui/GuiCreateWorld allowCheatsWasSetByUser field_146339_u +FD net/minecraft/client/gui/GuiCreateWorld bonusChestEnabled field_146338_v +FD net/minecraft/client/gui/GuiCreateWorld hardCoreMode field_146337_w +FD net/minecraft/client/gui/GuiCreateWorld alreadyGenerated field_146345_x +FD net/minecraft/client/gui/GuiCreateWorld inMoreWorldOptionsDisplay field_146344_y +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175315_a field_175315_a +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175310_f field_175310_f +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175311_g field_175311_g +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175316_h field_175316_h +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175317_i field_175317_i +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175314_r field_175314_r +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175313_s field_175313_s +FD net/minecraft/client/gui/GuiScreenCustomizePresets field_175312_t field_175312_t +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178955_a field_178955_a +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178953_b field_178953_b +FD net/minecraft/client/gui/GuiScreenCustomizePresets$Info field_178954_c field_178954_c +FD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset field_178053_u field_178053_u +FD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset field_178052_v field_178052_v +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175338_A field_175338_A +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175339_B field_175339_B +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175340_C field_175340_C +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175332_D field_175332_D +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175334_E field_175334_E +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175336_F field_175336_F +FD net/minecraft/client/gui/GuiCustomizeWorldScreen random field_175337_G +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175341_a field_175341_a +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175333_f field_175333_f +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175335_g field_175335_g +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175342_h field_175342_h +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175343_i field_175343_i +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175349_r field_175349_r +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175348_s field_175348_s +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175347_t field_175347_t +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175346_u field_175346_u +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175345_v field_175345_v +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175344_w field_175344_w +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175352_x field_175352_x +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175351_y field_175351_y +FD net/minecraft/client/gui/GuiCustomizeWorldScreen field_175350_z field_175350_z +FD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 field_178957_a field_178957_a +FD net/minecraft/client/gui/GuiGameOver enableButtonsTimer field_146347_a +FD net/minecraft/client/gui/GuiGameOver field_146346_f field_146346_f +FD net/minecraft/client/gui/GuiScreenDemo logger field_146349_a +FD net/minecraft/client/gui/GuiScreenDemo field_146348_f field_146348_f +FD net/minecraft/client/gui/GuiScreenServerList field_146303_a field_146303_a +FD net/minecraft/client/gui/GuiScreenServerList field_146301_f field_146301_f +FD net/minecraft/client/gui/GuiScreenServerList field_146302_g field_146302_g +FD net/minecraft/client/gui/GuiDisconnected reason field_146306_a +FD net/minecraft/client/gui/GuiDisconnected message field_146304_f +FD net/minecraft/client/gui/GuiDisconnected multilineMessage field_146305_g +FD net/minecraft/client/gui/GuiDisconnected parentScreen field_146307_h +FD net/minecraft/client/gui/GuiDisconnected field_175353_i field_175353_i +FD net/minecraft/client/gui/GuiScreenAddServer parentScreen field_146310_a +FD net/minecraft/client/gui/GuiScreenAddServer serverData field_146311_h +FD net/minecraft/client/gui/GuiScreenAddServer serverIPField field_146308_f +FD net/minecraft/client/gui/GuiScreenAddServer serverNameField field_146309_g +FD net/minecraft/client/gui/GuiScreenAddServer serverResourcePacks field_152176_i +FD net/minecraft/client/gui/GuiScreenAddServer field_181032_r field_181032_r +FD net/minecraft/client/gui/GuiScreenAddServer$1 field_181167_a field_181167_a +FD net/minecraft/client/gui/GuiErrorScreen field_146313_a field_146313_a +FD net/minecraft/client/gui/GuiErrorScreen field_146312_f field_146312_f +FD net/minecraft/client/gui/GuiLanguage parentScreen field_146453_a +FD net/minecraft/client/gui/GuiLanguage list field_146450_f +FD net/minecraft/client/gui/GuiLanguage game_settings_3 field_146451_g +FD net/minecraft/client/gui/GuiLanguage languageManager field_146454_h +FD net/minecraft/client/gui/GuiLanguage forceUnicodeFontBtn field_146455_i +FD net/minecraft/client/gui/GuiLanguage confirmSettingsBtn field_146452_r +FD net/minecraft/client/gui/GuiLanguage$List field_148178_k field_148178_k +FD net/minecraft/client/gui/GuiLanguage$List langCodeList field_148176_l +FD net/minecraft/client/gui/GuiLanguage$List languageMap field_148177_m +FD net/minecraft/client/gui/GuiOptions field_146442_a field_146442_a +FD net/minecraft/client/gui/GuiOptions field_146440_f field_146440_f +FD net/minecraft/client/gui/GuiOptions field_146441_g field_146441_g +FD net/minecraft/client/gui/GuiOptions game_settings_1 field_146443_h +FD net/minecraft/client/gui/GuiOptions field_175357_i field_175357_i +FD net/minecraft/client/gui/GuiOptions field_175356_r field_175356_r +FD net/minecraft/client/gui/GuiOptions$1 field_146130_o field_146130_o +FD net/minecraft/client/gui/GuiIngameMenu field_146445_a field_146445_a +FD net/minecraft/client/gui/GuiIngameMenu field_146444_f field_146444_f +FD net/minecraft/client/gui/GuiFlatPresets FLAT_WORLD_PRESETS field_146431_f +FD net/minecraft/client/gui/GuiFlatPresets parentScreen field_146432_g +FD net/minecraft/client/gui/GuiFlatPresets presetsTitle field_146438_h +FD net/minecraft/client/gui/GuiFlatPresets presetsShare field_146439_i +FD net/minecraft/client/gui/GuiFlatPresets field_146436_r field_146436_r +FD net/minecraft/client/gui/GuiFlatPresets field_146435_s field_146435_s +FD net/minecraft/client/gui/GuiFlatPresets field_146434_t field_146434_t +FD net/minecraft/client/gui/GuiFlatPresets field_146433_u field_146433_u +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148234_a field_148234_a +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_179037_b field_179037_b +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148232_b field_148232_b +FD net/minecraft/client/gui/GuiFlatPresets$LayerItem field_148233_c field_148233_c +FD net/minecraft/client/gui/GuiFlatPresets$ListSlot field_148175_k field_148175_k +FD net/minecraft/client/gui/GuiFlatPresets$ListSlot field_148174_l field_148174_l +FD net/minecraft/client/gui/GuiScreenWorking field_146591_a field_146591_a +FD net/minecraft/client/gui/GuiScreenWorking field_146589_f field_146589_f +FD net/minecraft/client/gui/GuiScreenWorking progress field_146590_g +FD net/minecraft/client/gui/GuiScreenWorking doneWorking field_146592_h +FD net/minecraft/client/gui/GuiDownloadTerrain netHandlerPlayClient field_146594_a +FD net/minecraft/client/gui/GuiDownloadTerrain progress field_146593_f +FD net/minecraft/client/gui/GuiRenameWorld parentScreen field_146585_a +FD net/minecraft/client/gui/GuiRenameWorld field_146583_f field_146583_f +FD net/minecraft/client/gui/GuiRenameWorld saveName field_146584_g +FD net/minecraft/client/gui/GuiScreen LOGGER field_175287_a +FD net/minecraft/client/gui/GuiScreen PROTOCOLS field_175284_f +FD net/minecraft/client/gui/GuiScreen NEWLINE_SPLITTER field_175285_g +FD net/minecraft/client/gui/GuiScreen selectedButton field_146290_a +FD net/minecraft/client/gui/GuiScreen eventButton field_146287_f +FD net/minecraft/client/gui/GuiScreen mc field_146297_k +FD net/minecraft/client/gui/GuiScreen itemRender field_146296_j +FD net/minecraft/client/gui/GuiScreen width field_146294_l +FD net/minecraft/client/gui/GuiScreen height field_146295_m +FD net/minecraft/client/gui/GuiScreen buttonList field_146292_n +FD net/minecraft/client/gui/GuiScreen labelList field_146293_o +FD net/minecraft/client/gui/GuiScreen allowUserInput field_146291_p +FD net/minecraft/client/gui/GuiScreen fontRendererObj field_146289_q +FD net/minecraft/client/gui/GuiScreen lastMouseEvent field_146288_g +FD net/minecraft/client/gui/GuiScreen touchValue field_146298_h +FD net/minecraft/client/gui/GuiScreen clickedLinkURI field_175286_t +FD net/minecraft/client/gui/GuiSelectWorld renameButton field_146630_A +FD net/minecraft/client/gui/GuiSelectWorld recreateButton field_146631_B +FD net/minecraft/client/gui/GuiSelectWorld parentScreen field_146632_a +FD net/minecraft/client/gui/GuiSelectWorld screenTitle field_146628_f +FD net/minecraft/client/gui/GuiSelectWorld logger field_146629_g +FD net/minecraft/client/gui/GuiSelectWorld field_146633_h field_146633_h +FD net/minecraft/client/gui/GuiSelectWorld field_146634_i field_146634_i +FD net/minecraft/client/gui/GuiSelectWorld selectedIndex field_146640_r +FD net/minecraft/client/gui/GuiSelectWorld field_146639_s field_146639_s +FD net/minecraft/client/gui/GuiSelectWorld availableWorlds field_146638_t +FD net/minecraft/client/gui/GuiSelectWorld field_146637_u field_146637_u +FD net/minecraft/client/gui/GuiSelectWorld field_146636_v field_146636_v +FD net/minecraft/client/gui/GuiSelectWorld field_146635_w field_146635_w +FD net/minecraft/client/gui/GuiSelectWorld confirmingDelete field_146643_x +FD net/minecraft/client/gui/GuiSelectWorld deleteButton field_146642_y +FD net/minecraft/client/gui/GuiSelectWorld selectButton field_146641_z +FD net/minecraft/client/gui/GuiSelectWorld$List field_148207_k field_148207_k +FD net/minecraft/client/gui/GuiShareToLan field_146598_a field_146598_a +FD net/minecraft/client/gui/GuiShareToLan field_146596_f field_146596_f +FD net/minecraft/client/gui/GuiShareToLan field_146597_g field_146597_g +FD net/minecraft/client/gui/GuiShareToLan field_146599_h field_146599_h +FD net/minecraft/client/gui/GuiShareToLan field_146600_i field_146600_i +FD net/minecraft/client/gui/GuiCustomizeSkin parentScreen field_175361_a +FD net/minecraft/client/gui/GuiCustomizeSkin title field_175360_f +FD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart field_175235_o field_175235_o +FD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart playerModelParts field_175234_p +FD net/minecraft/client/gui/GuiSnooper field_146608_a field_146608_a +FD net/minecraft/client/gui/GuiSnooper game_settings_2 field_146603_f +FD net/minecraft/client/gui/GuiSnooper field_146604_g field_146604_g +FD net/minecraft/client/gui/GuiSnooper field_146609_h field_146609_h +FD net/minecraft/client/gui/GuiSnooper field_146610_i field_146610_i +FD net/minecraft/client/gui/GuiSnooper field_146607_r field_146607_r +FD net/minecraft/client/gui/GuiSnooper field_146606_s field_146606_s +FD net/minecraft/client/gui/GuiSnooper field_146605_t field_146605_t +FD net/minecraft/client/gui/GuiSnooper$List field_148206_k field_148206_k +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146507_a field_146507_a +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146505_f field_146505_f +FD net/minecraft/client/gui/GuiScreenOptionsSounds game_settings_4 field_146506_g +FD net/minecraft/client/gui/GuiScreenOptionsSounds field_146508_h field_146508_h +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146156_o field_146156_o +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146155_p field_146155_p +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146154_q field_146154_q +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146153_r field_146153_r +FD net/minecraft/client/gui/GuiScreenOptionsSounds$Button field_146152_s field_146152_s +FD net/minecraft/client/gui/GuiMainMenu splashTexts field_110353_x +FD net/minecraft/client/gui/GuiMainMenu minecraftTitleTextures field_110352_y +FD net/minecraft/client/gui/GuiMainMenu titlePanoramaPaths field_73978_o +FD net/minecraft/client/gui/GuiMainMenu field_92024_r field_92024_r +FD net/minecraft/client/gui/GuiMainMenu field_92023_s field_92023_s +FD net/minecraft/client/gui/GuiMainMenu field_92022_t field_92022_t +FD net/minecraft/client/gui/GuiMainMenu field_92021_u field_92021_u +FD net/minecraft/client/gui/GuiMainMenu field_92020_v field_92020_v +FD net/minecraft/client/gui/GuiMainMenu field_92019_w field_92019_w +FD net/minecraft/client/gui/GuiMainMenu backgroundTexture field_110351_G +FD net/minecraft/client/gui/GuiMainMenu realmsButton field_175372_K +FD net/minecraft/client/gui/GuiMainMenu field_183502_L field_183502_L +FD net/minecraft/client/gui/GuiMainMenu field_183503_M field_183503_M +FD net/minecraft/client/gui/GuiMainMenu field_96138_a field_96138_a +FD net/minecraft/client/gui/GuiMainMenu field_175373_f field_175373_f +FD net/minecraft/client/gui/GuiMainMenu logger field_146974_g +FD net/minecraft/client/gui/GuiMainMenu RANDOM field_175374_h +FD net/minecraft/client/gui/GuiMainMenu updateCounter field_73974_b +FD net/minecraft/client/gui/GuiMainMenu splashText field_73975_c +FD net/minecraft/client/gui/GuiMainMenu buttonResetDemo field_73973_d +FD net/minecraft/client/gui/GuiMainMenu panoramaTimer field_73979_m +FD net/minecraft/client/gui/GuiMainMenu viewportTexture field_73977_n +FD net/minecraft/client/gui/GuiMainMenu field_175375_v field_175375_v +FD net/minecraft/client/gui/GuiMainMenu threadLock field_104025_t +FD net/minecraft/client/gui/GuiMainMenu openGLWarning1 field_92025_p +FD net/minecraft/client/gui/GuiMainMenu openGLWarning2 field_146972_A +FD net/minecraft/client/gui/GuiMainMenu openGLWarningLink field_104024_v +FD net/minecraft/client/gui/GuiVideoSettings screenTitle field_146500_a +FD net/minecraft/client/gui/GuiVideoSettings parentGuiScreen field_146498_f +FD net/minecraft/client/gui/GuiVideoSettings guiGameSettings field_146499_g +FD net/minecraft/client/gui/GuiVideoSettings optionsRowList field_146501_h +FD net/minecraft/client/gui/GuiVideoSettings videoOptions field_146502_i +FD net/minecraft/client/gui/GuiWinGame logger field_146580_a +FD net/minecraft/client/gui/GuiWinGame MINECRAFT_LOGO field_146576_f +FD net/minecraft/client/gui/GuiWinGame VIGNETTE_TEXTURE field_146577_g +FD net/minecraft/client/gui/GuiWinGame field_146581_h field_146581_h +FD net/minecraft/client/gui/GuiWinGame field_146582_i field_146582_i +FD net/minecraft/client/gui/GuiWinGame field_146579_r field_146579_r +FD net/minecraft/client/gui/GuiWinGame field_146578_s field_146578_s +FD net/minecraft/client/gui/achievement/GuiAchievement achievementBg field_146261_a +FD net/minecraft/client/gui/achievement/GuiAchievement mc field_146259_f +FD net/minecraft/client/gui/achievement/GuiAchievement width field_146260_g +FD net/minecraft/client/gui/achievement/GuiAchievement height field_146267_h +FD net/minecraft/client/gui/achievement/GuiAchievement achievementTitle field_146268_i +FD net/minecraft/client/gui/achievement/GuiAchievement achievementDescription field_146265_j +FD net/minecraft/client/gui/achievement/GuiAchievement theAchievement field_146266_k +FD net/minecraft/client/gui/achievement/GuiAchievement notificationTime field_146263_l +FD net/minecraft/client/gui/achievement/GuiAchievement renderItem field_146264_m +FD net/minecraft/client/gui/achievement/GuiAchievement permanentNotification field_146262_n +FD net/minecraft/client/gui/achievement/GuiAchievements field_146559_A field_146559_A +FD net/minecraft/client/gui/achievement/GuiAchievements field_146560_B field_146560_B +FD net/minecraft/client/gui/achievement/GuiAchievements ACHIEVEMENT_BACKGROUND field_146561_C +FD net/minecraft/client/gui/achievement/GuiAchievements field_146554_D field_146554_D +FD net/minecraft/client/gui/achievement/GuiAchievements statFileWriter field_146556_E +FD net/minecraft/client/gui/achievement/GuiAchievements loadingAchievements field_146558_F +FD net/minecraft/client/gui/achievement/GuiAchievements parentScreen field_146562_a +FD net/minecraft/client/gui/achievement/GuiAchievements field_146555_f field_146555_f +FD net/minecraft/client/gui/achievement/GuiAchievements field_146557_g field_146557_g +FD net/minecraft/client/gui/achievement/GuiAchievements field_146563_h field_146563_h +FD net/minecraft/client/gui/achievement/GuiAchievements field_146564_i field_146564_i +FD net/minecraft/client/gui/achievement/GuiAchievements field_146570_r field_146570_r +FD net/minecraft/client/gui/achievement/GuiAchievements field_146569_s field_146569_s +FD net/minecraft/client/gui/achievement/GuiAchievements field_146568_t field_146568_t +FD net/minecraft/client/gui/achievement/GuiAchievements field_146567_u field_146567_u +FD net/minecraft/client/gui/achievement/GuiAchievements field_146566_v field_146566_v +FD net/minecraft/client/gui/achievement/GuiAchievements field_146565_w field_146565_w +FD net/minecraft/client/gui/achievement/GuiAchievements field_146573_x field_146573_x +FD net/minecraft/client/gui/achievement/GuiAchievements field_146572_y field_146572_y +FD net/minecraft/client/gui/achievement/GuiAchievements field_146571_z field_146571_z +FD net/minecraft/client/gui/achievement/GuiStats parentScreen field_146549_a +FD net/minecraft/client/gui/achievement/GuiStats screenTitle field_146542_f +FD net/minecraft/client/gui/achievement/GuiStats generalStats field_146550_h +FD net/minecraft/client/gui/achievement/GuiStats itemStats field_146551_i +FD net/minecraft/client/gui/achievement/GuiStats blockStats field_146548_r +FD net/minecraft/client/gui/achievement/GuiStats mobStats field_146547_s +FD net/minecraft/client/gui/achievement/GuiStats field_146546_t field_146546_t +FD net/minecraft/client/gui/achievement/GuiStats displaySlot field_146545_u +FD net/minecraft/client/gui/achievement/GuiStats doesGuiPauseGame field_146543_v +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock field_148221_k field_148221_k +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 field_148341_a field_148341_a +FD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 field_148340_b field_148340_b +FD net/minecraft/client/gui/achievement/GuiStats$StatsGeneral field_148208_k field_148208_k +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem field_148220_k field_148220_k +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 field_148344_a field_148344_a +FD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 field_148343_b field_148343_b +FD net/minecraft/client/gui/achievement/GuiStats$StatsMobsList field_148223_k field_148223_k +FD net/minecraft/client/gui/achievement/GuiStats$StatsMobsList field_148222_l field_148222_l +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148214_q field_148214_q +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148218_l field_148218_l +FD net/minecraft/client/gui/achievement/GuiStats$Stats statsHolder field_148219_m +FD net/minecraft/client/gui/achievement/GuiStats$Stats statSorter field_148216_n +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148217_o field_148217_o +FD net/minecraft/client/gui/achievement/GuiStats$Stats field_148215_p field_148215_p +FD net/minecraft/client/gui/IProgressMeter lanSearchStates field_146510_b_ +FD net/minecraft/client/gui/GuiKeyBindingList field_148191_k field_148191_k +FD net/minecraft/client/gui/GuiKeyBindingList mc field_148189_l +FD net/minecraft/client/gui/GuiKeyBindingList listEntries field_148190_m +FD net/minecraft/client/gui/GuiKeyBindingList maxListLabelWidth field_148188_n +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry field_148287_a field_148287_a +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry labelText field_148285_b +FD net/minecraft/client/gui/GuiKeyBindingList$CategoryEntry labelWidth field_148286_c +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry field_148284_a field_148284_a +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry keybinding field_148282_b +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry keyDesc field_148283_c +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry btnChangeKeyBinding field_148280_d +FD net/minecraft/client/gui/GuiKeyBindingList$KeyEntry btnReset field_148281_e +FD net/minecraft/client/gui/GuiControls screenTitle field_146495_a +FD net/minecraft/client/gui/GuiControls buttonId field_146491_f +FD net/minecraft/client/gui/GuiControls time field_152177_g +FD net/minecraft/client/gui/GuiControls optionsArr field_146492_g +FD net/minecraft/client/gui/GuiControls parentScreen field_146496_h +FD net/minecraft/client/gui/GuiControls options field_146497_i +FD net/minecraft/client/gui/GuiControls keyBindingList field_146494_r +FD net/minecraft/client/gui/GuiControls buttonReset field_146493_s +FD net/minecraft/client/gui/inventory/GuiContainer returningStackDestSlot field_146989_A +FD net/minecraft/client/gui/inventory/GuiContainer returningStackTime field_146990_B +FD net/minecraft/client/gui/inventory/GuiContainer returningStack field_146991_C +FD net/minecraft/client/gui/inventory/GuiContainer currentDragTargetSlot field_146985_D +FD net/minecraft/client/gui/inventory/GuiContainer dragItemDropDelay field_146986_E +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingLimit field_146987_F +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingButton field_146988_G +FD net/minecraft/client/gui/inventory/GuiContainer ignoreMouseUp field_146995_H +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingRemnant field_146996_I +FD net/minecraft/client/gui/inventory/GuiContainer lastClickTime field_146997_J +FD net/minecraft/client/gui/inventory/GuiContainer lastClickSlot field_146998_K +FD net/minecraft/client/gui/inventory/GuiContainer lastClickButton field_146992_L +FD net/minecraft/client/gui/inventory/GuiContainer doubleClick field_146993_M +FD net/minecraft/client/gui/inventory/GuiContainer shiftClickedSlot field_146994_N +FD net/minecraft/client/gui/inventory/GuiContainer inventoryBackground field_147001_a +FD net/minecraft/client/gui/inventory/GuiContainer xSize field_146999_f +FD net/minecraft/client/gui/inventory/GuiContainer ySize field_147000_g +FD net/minecraft/client/gui/inventory/GuiContainer inventorySlots field_147002_h +FD net/minecraft/client/gui/inventory/GuiContainer guiLeft field_147003_i +FD net/minecraft/client/gui/inventory/GuiContainer guiTop field_147009_r +FD net/minecraft/client/gui/inventory/GuiContainer dragSplittingSlots field_147008_s +FD net/minecraft/client/gui/inventory/GuiContainer dragSplitting field_147007_t +FD net/minecraft/client/gui/inventory/GuiContainer theSlot field_147006_u +FD net/minecraft/client/gui/inventory/GuiContainer clickedSlot field_147005_v +FD net/minecraft/client/gui/inventory/GuiContainer isRightMouseClick field_147004_w +FD net/minecraft/client/gui/inventory/GuiContainer draggedStack field_147012_x +FD net/minecraft/client/gui/inventory/GuiContainer touchUpX field_147011_y +FD net/minecraft/client/gui/inventory/GuiContainer touchUpY field_147010_z +FD net/minecraft/client/gui/GuiRepair anvilResource field_147093_u +FD net/minecraft/client/gui/GuiRepair anvil field_147092_v +FD net/minecraft/client/gui/GuiRepair nameField field_147091_w +FD net/minecraft/client/gui/GuiRepair playerInventory field_147094_x +FD net/minecraft/client/gui/inventory/GuiBeacon logger field_147026_u +FD net/minecraft/client/gui/inventory/GuiBeacon beaconGuiTextures field_147025_v +FD net/minecraft/client/gui/inventory/GuiBeacon tileBeacon field_147024_w +FD net/minecraft/client/gui/inventory/GuiBeacon beaconConfirmButton field_147028_x +FD net/minecraft/client/gui/inventory/GuiBeacon buttonsNotDrawn field_147027_y +FD net/minecraft/client/gui/inventory/GuiBeacon$CancelButton field_146146_o field_146146_o +FD net/minecraft/client/gui/inventory/GuiBeacon$ConfirmButton field_146147_o field_146147_o +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146150_o field_146150_o +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146149_p field_146149_p +FD net/minecraft/client/gui/inventory/GuiBeacon$PowerButton field_146148_q field_146148_q +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146145_o field_146145_o +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146144_p field_146144_p +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146143_q field_146143_q +FD net/minecraft/client/gui/inventory/GuiBeacon$Button field_146142_r field_146142_r +FD net/minecraft/client/gui/GuiScreenBook field_175386_A field_175386_A +FD net/minecraft/client/gui/GuiScreenBook field_175387_B field_175387_B +FD net/minecraft/client/gui/GuiScreenBook buttonNextPage field_146470_A +FD net/minecraft/client/gui/GuiScreenBook buttonPreviousPage field_146471_B +FD net/minecraft/client/gui/GuiScreenBook buttonDone field_146472_C +FD net/minecraft/client/gui/GuiScreenBook buttonSign field_146465_D +FD net/minecraft/client/gui/GuiScreenBook buttonFinalize field_146467_E +FD net/minecraft/client/gui/GuiScreenBook buttonCancel field_146469_F +FD net/minecraft/client/gui/GuiScreenBook logger field_146473_a +FD net/minecraft/client/gui/GuiScreenBook bookGuiTextures field_146466_f +FD net/minecraft/client/gui/GuiScreenBook editingPlayer field_146468_g +FD net/minecraft/client/gui/GuiScreenBook bookObj field_146474_h +FD net/minecraft/client/gui/GuiScreenBook bookIsUnsigned field_146475_i +FD net/minecraft/client/gui/GuiScreenBook bookIsModified field_146481_r +FD net/minecraft/client/gui/GuiScreenBook bookGettingSigned field_146480_s +FD net/minecraft/client/gui/GuiScreenBook updateCount field_146479_t +FD net/minecraft/client/gui/GuiScreenBook bookImageWidth field_146478_u +FD net/minecraft/client/gui/GuiScreenBook bookImageHeight field_146477_v +FD net/minecraft/client/gui/GuiScreenBook bookTotalPages field_146476_w +FD net/minecraft/client/gui/GuiScreenBook currPage field_146484_x +FD net/minecraft/client/gui/GuiScreenBook bookPages field_146483_y +FD net/minecraft/client/gui/GuiScreenBook bookTitle field_146482_z +FD net/minecraft/client/gui/GuiScreenBook$NextPageButton field_146151_o field_146151_o +FD net/minecraft/client/gui/inventory/GuiBrewingStand brewingStandGuiTextures field_147014_u +FD net/minecraft/client/gui/inventory/GuiBrewingStand playerInventory field_175384_v +FD net/minecraft/client/gui/inventory/GuiBrewingStand tileBrewingStand field_147013_v +FD net/minecraft/client/gui/GuiCommandBlock field_146488_a field_146488_a +FD net/minecraft/client/gui/GuiCommandBlock commandTextField field_146485_f +FD net/minecraft/client/gui/GuiCommandBlock previousOutputTextField field_146486_g +FD net/minecraft/client/gui/GuiCommandBlock localCommandBlock field_146489_h +FD net/minecraft/client/gui/GuiCommandBlock doneBtn field_146490_i +FD net/minecraft/client/gui/GuiCommandBlock cancelBtn field_146487_r +FD net/minecraft/client/gui/GuiCommandBlock field_175390_s field_175390_s +FD net/minecraft/client/gui/GuiCommandBlock field_175389_t field_175389_t +FD net/minecraft/client/gui/inventory/GuiChest CHEST_GUI_TEXTURE field_147017_u +FD net/minecraft/client/gui/inventory/GuiChest upperChestInventory field_147016_v +FD net/minecraft/client/gui/inventory/GuiChest lowerChestInventory field_147015_w +FD net/minecraft/client/gui/inventory/GuiChest inventoryRows field_147018_x +FD net/minecraft/client/gui/inventory/GuiCrafting craftingTableGuiTextures field_147019_u +FD net/minecraft/client/gui/inventory/CreativeCrafting mc field_146109_a +FD net/minecraft/client/gui/inventory/GuiContainerCreative searchField field_147062_A +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147063_B field_147063_B +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147064_C field_147064_C +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147057_D field_147057_D +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147059_E field_147059_E +FD net/minecraft/client/gui/inventory/GuiContainerCreative creativeInventoryTabs field_147061_u +FD net/minecraft/client/gui/inventory/GuiContainerCreative field_147060_v field_147060_v +FD net/minecraft/client/gui/inventory/GuiContainerCreative selectedTabIndex field_147058_w +FD net/minecraft/client/gui/inventory/GuiContainerCreative currentScroll field_147067_x +FD net/minecraft/client/gui/inventory/GuiContainerCreative isScrolling field_147066_y +FD net/minecraft/client/gui/inventory/GuiContainerCreative wasClicking field_147065_z +FD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative itemList field_148330_a +FD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot field_148333_a field_148333_a +FD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot slot field_148332_b +FD net/minecraft/client/gui/inventory/GuiDispenser dispenserInventory field_175377_u +FD net/minecraft/client/gui/inventory/GuiDispenser dispenserGuiTextures field_147088_v +FD net/minecraft/client/gui/inventory/GuiDispenser playerInventory field_175376_w +FD net/minecraft/client/renderer/InventoryEffectRenderer hasActivePotionEffects field_147045_u +FD net/minecraft/util/EnchantmentNameParts instance field_148338_a +FD net/minecraft/util/EnchantmentNameParts rand field_148336_b +FD net/minecraft/util/EnchantmentNameParts namePartsArray field_148337_c +FD net/minecraft/client/gui/GuiEnchantment field_147076_A field_147076_A +FD net/minecraft/client/gui/GuiEnchantment field_147077_B field_147077_B +FD net/minecraft/client/gui/GuiEnchantment ENCHANTMENT_TABLE_GUI_TEXTURE field_147078_C +FD net/minecraft/client/gui/GuiEnchantment ENCHANTMENT_TABLE_BOOK_TEXTURE field_147070_D +FD net/minecraft/client/gui/GuiEnchantment MODEL_BOOK field_147072_E +FD net/minecraft/client/gui/GuiEnchantment playerInventory field_175379_F +FD net/minecraft/client/gui/GuiEnchantment random field_147074_F +FD net/minecraft/client/gui/GuiEnchantment container field_147075_G +FD net/minecraft/client/gui/GuiEnchantment field_175380_I field_175380_I +FD net/minecraft/client/gui/GuiEnchantment field_147073_u field_147073_u +FD net/minecraft/client/gui/GuiEnchantment field_147071_v field_147071_v +FD net/minecraft/client/gui/GuiEnchantment field_147069_w field_147069_w +FD net/minecraft/client/gui/GuiEnchantment field_147082_x field_147082_x +FD net/minecraft/client/gui/GuiEnchantment field_147081_y field_147081_y +FD net/minecraft/client/gui/GuiEnchantment field_147080_z field_147080_z +FD net/minecraft/client/gui/inventory/GuiFurnace furnaceGuiTextures field_147087_u +FD net/minecraft/client/gui/inventory/GuiFurnace playerInventory field_175383_v +FD net/minecraft/client/gui/inventory/GuiFurnace tileFurnace field_147086_v +FD net/minecraft/client/gui/GuiHopper HOPPER_GUI_TEXTURE field_147085_u +FD net/minecraft/client/gui/GuiHopper playerInventory field_147084_v +FD net/minecraft/client/gui/GuiHopper hopperInventory field_147083_w +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseGuiTextures field_147031_u +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory playerInventory field_147030_v +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseInventory field_147029_w +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory horseEntity field_147034_x +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory mousePosx field_147033_y +FD net/minecraft/client/gui/inventory/GuiScreenHorseInventory mousePosY field_147032_z +FD net/minecraft/client/gui/inventory/GuiInventory oldMouseX field_147048_u +FD net/minecraft/client/gui/inventory/GuiInventory oldMouseY field_147047_v +FD net/minecraft/client/gui/GuiMerchant chatComponent field_147040_A +FD net/minecraft/client/gui/GuiMerchant logger field_147039_u +FD net/minecraft/client/gui/GuiMerchant MERCHANT_GUI_TEXTURE field_147038_v +FD net/minecraft/client/gui/GuiMerchant merchant field_147037_w +FD net/minecraft/client/gui/GuiMerchant nextButton field_147043_x +FD net/minecraft/client/gui/GuiMerchant previousButton field_147042_y +FD net/minecraft/client/gui/GuiMerchant selectedMerchantRecipe field_147041_z +FD net/minecraft/client/gui/GuiMerchant$MerchantButton field_146157_o field_146157_o +FD net/minecraft/client/gui/inventory/GuiEditSign tileSign field_146848_f +FD net/minecraft/client/gui/inventory/GuiEditSign updateCounter field_146849_g +FD net/minecraft/client/gui/inventory/GuiEditSign editLine field_146851_h +FD net/minecraft/client/gui/inventory/GuiEditSign doneBtn field_146852_i +FD net/minecraft/client/gui/GuiMultiplayer lanServerList field_146799_A +FD net/minecraft/client/gui/GuiMultiplayer lanServerDetector field_146800_B +FD net/minecraft/client/gui/GuiMultiplayer initialized field_146801_C +FD net/minecraft/client/gui/GuiMultiplayer logger field_146802_a +FD net/minecraft/client/gui/GuiMultiplayer oldServerPinger field_146797_f +FD net/minecraft/client/gui/GuiMultiplayer parentScreen field_146798_g +FD net/minecraft/client/gui/GuiMultiplayer serverListSelector field_146803_h +FD net/minecraft/client/gui/GuiMultiplayer savedServerList field_146804_i +FD net/minecraft/client/gui/GuiMultiplayer btnEditServer field_146810_r +FD net/minecraft/client/gui/GuiMultiplayer btnSelectServer field_146809_s +FD net/minecraft/client/gui/GuiMultiplayer btnDeleteServer field_146808_t +FD net/minecraft/client/gui/GuiMultiplayer deletingServer field_146807_u +FD net/minecraft/client/gui/GuiMultiplayer addingServer field_146806_v +FD net/minecraft/client/gui/GuiMultiplayer editingServer field_146805_w +FD net/minecraft/client/gui/GuiMultiplayer directConnect field_146813_x +FD net/minecraft/client/gui/GuiMultiplayer hoveringText field_146812_y +FD net/minecraft/client/gui/GuiMultiplayer selectedServer field_146811_z +FD net/minecraft/client/gui/ServerListEntryLanScan mc field_148288_a +FD net/minecraft/client/gui/ServerListEntryLanDetected mc field_148293_a +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148291_b field_148291_b +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148292_c field_148292_c +FD net/minecraft/client/gui/ServerListEntryLanDetected field_148290_d field_148290_d +FD net/minecraft/client/gui/ServerListEntryNormal logger field_148304_a +FD net/minecraft/client/gui/ServerListEntryNormal field_148302_b field_148302_b +FD net/minecraft/client/gui/ServerListEntryNormal UNKNOWN_SERVER field_178015_c +FD net/minecraft/client/gui/ServerListEntryNormal SERVER_SELECTION_BUTTONS field_178014_d +FD net/minecraft/client/gui/ServerListEntryNormal owner field_148303_c +FD net/minecraft/client/gui/ServerListEntryNormal mc field_148300_d +FD net/minecraft/client/gui/ServerListEntryNormal server field_148301_e +FD net/minecraft/client/gui/ServerListEntryNormal serverIcon field_148306_i +FD net/minecraft/client/gui/ServerListEntryNormal field_148299_g field_148299_g +FD net/minecraft/client/gui/ServerListEntryNormal field_148305_h field_148305_h +FD net/minecraft/client/gui/ServerListEntryNormal field_148298_f field_148298_f +FD net/minecraft/client/gui/ServerListEntryNormal$1 field_148521_a field_148521_a +FD net/minecraft/client/gui/ServerSelectionList owner field_148200_k +FD net/minecraft/client/gui/ServerSelectionList serverListInternet field_148198_l +FD net/minecraft/client/gui/ServerSelectionList serverListLan field_148199_m +FD net/minecraft/client/gui/ServerSelectionList lanScanEntry field_148196_n +FD net/minecraft/client/gui/ServerSelectionList selectedSlotIndex field_148197_o +FD net/minecraft/client/gui/GuiScreenResourcePacks logger field_146968_a +FD net/minecraft/client/gui/GuiScreenResourcePacks parentScreen field_146965_f +FD net/minecraft/client/gui/GuiScreenResourcePacks availableResourcePacks field_146966_g +FD net/minecraft/client/gui/GuiScreenResourcePacks selectedResourcePacks field_146969_h +FD net/minecraft/client/gui/GuiScreenResourcePacks availableResourcePacksList field_146970_i +FD net/minecraft/client/gui/GuiScreenResourcePacks selectedResourcePacksList field_146967_r +FD net/minecraft/client/gui/GuiScreenResourcePacks changed field_175289_s +FD net/minecraft/client/resources/ResourcePackListEntry mc field_148317_a +FD net/minecraft/client/resources/ResourcePackListEntry resourcePacksGUI field_148315_b +FD net/minecraft/client/resources/ResourcePackListEntry RESOURCE_PACKS_TEXTURE field_148316_c +FD net/minecraft/client/resources/ResourcePackListEntry field_183020_d field_183020_d +FD net/minecraft/client/resources/ResourcePackListEntry field_183021_e field_183021_e +FD net/minecraft/client/resources/ResourcePackListEntry field_183022_f field_183022_f +FD net/minecraft/client/resources/ResourcePackListEntry$1 field_183004_a field_183004_a +FD net/minecraft/client/resources/ResourcePackListEntryDefault logger field_148322_c +FD net/minecraft/client/resources/ResourcePackListEntryDefault field_148320_d field_148320_d +FD net/minecraft/client/resources/ResourcePackListEntryDefault resourcePackIcon field_148321_e +FD net/minecraft/client/resources/ResourcePackListEntryFound field_148319_c field_148319_c +FD net/minecraft/client/gui/GuiResourcePackList mc field_148205_k +FD net/minecraft/client/gui/GuiResourcePackList field_148204_l field_148204_l +FD net/minecraft/client/gui/stream/GuiIngestServers field_152309_a field_152309_a +FD net/minecraft/client/gui/stream/GuiIngestServers field_152310_f field_152310_f +FD net/minecraft/client/gui/stream/GuiIngestServers field_152311_g field_152311_g +FD net/minecraft/client/gui/stream/GuiIngestServers$ServerList field_152435_k field_152435_k +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152312_a field_152312_a +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152316_f field_152316_f +FD net/minecraft/client/gui/stream/GuiStreamOptions parentScreen field_152317_g +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152318_h field_152318_h +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152319_i field_152319_i +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152313_r field_152313_r +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152314_s field_152314_s +FD net/minecraft/client/gui/stream/GuiStreamOptions field_152315_t field_152315_t +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152322_a field_152322_a +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152324_f field_152324_f +FD net/minecraft/client/gui/stream/GuiStreamUnavailable parentScreen field_152325_g +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152326_h field_152326_h +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152327_i field_152327_i +FD net/minecraft/client/gui/stream/GuiStreamUnavailable field_152323_r field_152323_r +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152577_a field_152577_a +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152578_b field_152578_b +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$1 field_152579_c field_152579_c +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason NO_FBO NO_FBO +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason LIBRARY_ARCH_MISMATCH LIBRARY_ARCH_MISMATCH +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason LIBRARY_FAILURE LIBRARY_FAILURE +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_WINDOWS UNSUPPORTED_OS_WINDOWS +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_MAC UNSUPPORTED_OS_MAC +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNSUPPORTED_OS_OTHER UNSUPPORTED_OS_OTHER +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason ACCOUNT_NOT_MIGRATED ACCOUNT_NOT_MIGRATED +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason ACCOUNT_NOT_BOUND ACCOUNT_NOT_BOUND +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason FAILED_TWITCH_AUTH FAILED_TWITCH_AUTH +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason FAILED_TWITCH_AUTH_ERROR FAILED_TWITCH_AUTH_ERROR +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason INITIALIZATION_FAILURE INITIALIZATION_FAILURE +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason UNKNOWN UNKNOWN +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason field_152574_m field_152574_m +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason field_152575_n field_152575_n +FD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason $VALUES $VALUES +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152331_a field_152331_a +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152335_f field_152335_f +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152336_g field_152336_g +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152337_h field_152337_h +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152338_i field_152338_i +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152332_r field_152332_r +FD net/minecraft/client/gui/stream/GuiTwitchUserMode stream field_152333_s +FD net/minecraft/client/gui/stream/GuiTwitchUserMode field_152334_t field_152334_t +FD net/minecraft/client/gui/spectator/PlayerMenuObject profile field_178668_a +FD net/minecraft/client/gui/spectator/PlayerMenuObject resourceLocation field_178667_b +FD net/minecraft/client/gui/spectator/BaseSpectatorGroup field_178671_a field_178671_a +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178657_a field_178657_a +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178655_b field_178655_b +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178656_c field_178656_c +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178653_d field_178653_d +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178654_e field_178654_e +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178651_f field_178651_f +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178652_g field_178652_g +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178659_h field_178659_h +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178660_i field_178660_i +FD net/minecraft/client/gui/spectator/SpectatorMenu field_178658_j field_178658_j +FD net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject field_178666_a field_178666_a +FD net/minecraft/client/gui/spectator/SpectatorMenu$MoveMenuObject field_178665_b field_178665_b +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178684_a field_178684_a +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178682_b field_178682_b +FD net/minecraft/client/gui/spectator/categories/SpectatorDetails field_178683_c field_178683_c +FD net/minecraft/client/gui/spectator/categories/TeleportToPlayer field_178674_a field_178674_a +FD net/minecraft/client/gui/spectator/categories/TeleportToPlayer field_178673_b field_178673_b +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam field_178672_a field_178672_a +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178678_a field_178678_a +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178676_b field_178676_b +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178677_c field_178677_c +FD net/minecraft/client/gui/spectator/categories/TeleportToTeam$TeamSelectionObject field_178675_d field_178675_d +FD net/minecraft/client/main/GameConfiguration userInfo field_178745_a +FD net/minecraft/client/main/GameConfiguration displayInfo field_178743_b +FD net/minecraft/client/main/GameConfiguration folderInfo field_178744_c +FD net/minecraft/client/main/GameConfiguration gameInfo field_178741_d +FD net/minecraft/client/main/GameConfiguration serverInfo field_178742_e +FD net/minecraft/client/main/GameConfiguration$DisplayInformation width field_178764_a +FD net/minecraft/client/main/GameConfiguration$DisplayInformation height field_178762_b +FD net/minecraft/client/main/GameConfiguration$DisplayInformation fullscreen field_178763_c +FD net/minecraft/client/main/GameConfiguration$DisplayInformation checkGlErrors field_178761_d +FD net/minecraft/client/main/GameConfiguration$FolderInformation mcDataDir field_178760_a +FD net/minecraft/client/main/GameConfiguration$FolderInformation resourcePacksDir field_178758_b +FD net/minecraft/client/main/GameConfiguration$FolderInformation assetsDir field_178759_c +FD net/minecraft/client/main/GameConfiguration$FolderInformation assetIndex field_178757_d +FD net/minecraft/client/main/GameConfiguration$GameInformation isDemo field_178756_a +FD net/minecraft/client/main/GameConfiguration$GameInformation version field_178755_b +FD net/minecraft/client/main/GameConfiguration$ServerInformation serverName field_178754_a +FD net/minecraft/client/main/GameConfiguration$ServerInformation serverPort field_178753_b +FD net/minecraft/client/main/GameConfiguration$UserInformation session field_178752_a +FD net/minecraft/client/main/GameConfiguration$UserInformation userProperties field_178750_b +FD net/minecraft/client/main/GameConfiguration$UserInformation profileProperties field_181172_c +FD net/minecraft/client/main/GameConfiguration$UserInformation proxy field_178751_c +FD net/minecraft/client/model/ModelArmorStand standRightSide field_178740_a +FD net/minecraft/client/model/ModelArmorStand standLeftSide field_178738_b +FD net/minecraft/client/model/ModelArmorStand standWaist field_178739_c +FD net/minecraft/client/model/ModelArmorStand standBase field_178737_d +FD net/minecraft/client/model/ModelBanner bannerSlate field_178690_a +FD net/minecraft/client/model/ModelBanner bannerStand field_178688_b +FD net/minecraft/client/model/ModelBanner bannerTop field_178689_c +FD net/minecraft/client/model/ModelBat batHead field_82895_a +FD net/minecraft/client/model/ModelBat batBody field_82893_b +FD net/minecraft/client/model/ModelBat batRightWing field_82894_c +FD net/minecraft/client/model/ModelBat batLeftWing field_82891_d +FD net/minecraft/client/model/ModelBat batOuterRightWing field_82892_e +FD net/minecraft/client/model/ModelBat batOuterLeftWing field_82890_f +FD net/minecraft/client/model/ModelBlaze blazeSticks field_78106_a +FD net/minecraft/client/model/ModelBlaze blazeHead field_78105_b +FD net/minecraft/client/model/ModelBoat boatSides field_78103_a +FD net/minecraft/client/model/ModelBook coverRight field_78102_a +FD net/minecraft/client/model/ModelBook coverLeft field_78100_b +FD net/minecraft/client/model/ModelBook pagesRight field_78101_c +FD net/minecraft/client/model/ModelBook pagesLeft field_78098_d +FD net/minecraft/client/model/ModelBook flippingPageRight field_78099_e +FD net/minecraft/client/model/ModelBook flippingPageLeft field_78096_f +FD net/minecraft/client/model/ModelBook bookSpine field_78097_g +FD net/minecraft/client/model/ModelChest chestLid field_78234_a +FD net/minecraft/client/model/ModelChest chestBelow field_78232_b +FD net/minecraft/client/model/ModelChest chestKnob field_78233_c +FD net/minecraft/client/model/ModelChicken head field_78142_a +FD net/minecraft/client/model/ModelChicken body field_78140_b +FD net/minecraft/client/model/ModelChicken rightLeg field_78141_c +FD net/minecraft/client/model/ModelChicken leftLeg field_78138_d +FD net/minecraft/client/model/ModelChicken rightWing field_78139_e +FD net/minecraft/client/model/ModelChicken leftWing field_78136_f +FD net/minecraft/client/model/ModelChicken bill field_78137_g +FD net/minecraft/client/model/ModelChicken chin field_78143_h +FD net/minecraft/client/model/ModelCreeper head field_78135_a +FD net/minecraft/client/model/ModelCreeper creeperArmor field_78133_b +FD net/minecraft/client/model/ModelCreeper body field_78134_c +FD net/minecraft/client/model/ModelCreeper leg1 field_78131_d +FD net/minecraft/client/model/ModelCreeper leg2 field_78132_e +FD net/minecraft/client/model/ModelCreeper leg3 field_78129_f +FD net/minecraft/client/model/ModelCreeper leg4 field_78130_g +FD net/minecraft/client/model/ModelEnderman isCarrying field_78126_a +FD net/minecraft/client/model/ModelEnderman isAttacking field_78125_b +FD net/minecraft/client/model/ModelEnderMite field_178716_a field_178716_a +FD net/minecraft/client/model/ModelEnderMite field_178714_b field_178714_b +FD net/minecraft/client/model/ModelEnderMite field_178715_c field_178715_c +FD net/minecraft/client/model/ModelEnderMite field_178713_d field_178713_d +FD net/minecraft/client/model/ModelGhast body field_78128_a +FD net/minecraft/client/model/ModelGhast tentacles field_78127_b +FD net/minecraft/client/model/ModelGuardian guardianBody field_178710_a +FD net/minecraft/client/model/ModelGuardian guardianEye field_178708_b +FD net/minecraft/client/model/ModelGuardian guardianSpines field_178709_c +FD net/minecraft/client/model/ModelGuardian guardianTail field_178707_d +FD net/minecraft/client/model/ModelHorse frontLeftLeg field_110688_A +FD net/minecraft/client/model/ModelHorse frontLeftShin field_110689_B +FD net/minecraft/client/model/ModelHorse frontLeftHoof field_110690_C +FD net/minecraft/client/model/ModelHorse frontRightLeg field_110684_D +FD net/minecraft/client/model/ModelHorse frontRightShin field_110685_E +FD net/minecraft/client/model/ModelHorse frontRightHoof field_110686_F +FD net/minecraft/client/model/ModelHorse muleLeftChest field_110687_G +FD net/minecraft/client/model/ModelHorse muleRightChest field_110695_H +FD net/minecraft/client/model/ModelHorse horseSaddleBottom field_110696_I +FD net/minecraft/client/model/ModelHorse horseSaddleFront field_110697_J +FD net/minecraft/client/model/ModelHorse horseSaddleBack field_110698_K +FD net/minecraft/client/model/ModelHorse horseLeftSaddleRope field_110691_L +FD net/minecraft/client/model/ModelHorse horseLeftSaddleMetal field_110692_M +FD net/minecraft/client/model/ModelHorse horseRightSaddleRope field_110693_N +FD net/minecraft/client/model/ModelHorse horseRightSaddleMetal field_110694_O +FD net/minecraft/client/model/ModelHorse horseLeftFaceMetal field_110700_P +FD net/minecraft/client/model/ModelHorse horseRightFaceMetal field_110699_Q +FD net/minecraft/client/model/ModelHorse horseLeftRein field_110702_R +FD net/minecraft/client/model/ModelHorse horseRightRein field_110701_S +FD net/minecraft/client/model/ModelHorse head field_110709_a +FD net/minecraft/client/model/ModelHorse field_178711_b field_178711_b +FD net/minecraft/client/model/ModelHorse field_178712_c field_178712_c +FD net/minecraft/client/model/ModelHorse horseLeftEar field_110705_d +FD net/minecraft/client/model/ModelHorse horseRightEar field_110706_e +FD net/minecraft/client/model/ModelHorse muleLeftEar field_110703_f +FD net/minecraft/client/model/ModelHorse muleRightEar field_110704_g +FD net/minecraft/client/model/ModelHorse neck field_110716_h +FD net/minecraft/client/model/ModelHorse horseFaceRopes field_110717_i +FD net/minecraft/client/model/ModelHorse mane field_110714_j +FD net/minecraft/client/model/ModelHorse body field_110715_k +FD net/minecraft/client/model/ModelHorse tailBase field_110712_l +FD net/minecraft/client/model/ModelHorse tailMiddle field_110713_m +FD net/minecraft/client/model/ModelHorse tailTip field_110710_n +FD net/minecraft/client/model/ModelHorse backLeftLeg field_110711_o +FD net/minecraft/client/model/ModelHorse backLeftShin field_110719_v +FD net/minecraft/client/model/ModelHorse backLeftHoof field_110718_w +FD net/minecraft/client/model/ModelHorse backRightLeg field_110722_x +FD net/minecraft/client/model/ModelHorse backRightShin field_110721_y +FD net/minecraft/client/model/ModelHorse backRightHoof field_110720_z +FD net/minecraft/client/model/ModelHumanoidHead head field_178717_b +FD net/minecraft/client/model/ModelBiped bipedHead field_78116_c +FD net/minecraft/client/model/ModelBiped bipedHeadwear field_178720_f +FD net/minecraft/client/model/ModelBiped bipedBody field_78115_e +FD net/minecraft/client/model/ModelBiped bipedRightArm field_178723_h +FD net/minecraft/client/model/ModelBiped bipedLeftArm field_178724_i +FD net/minecraft/client/model/ModelBiped bipedRightLeg field_178721_j +FD net/minecraft/client/model/ModelBiped bipedLeftLeg field_178722_k +FD net/minecraft/client/model/ModelBiped heldItemLeft field_78119_l +FD net/minecraft/client/model/ModelBiped heldItemRight field_78120_m +FD net/minecraft/client/model/ModelBiped isSneak field_78117_n +FD net/minecraft/client/model/ModelBiped aimedBow field_78118_o +FD net/minecraft/client/model/ModelMagmaCube segments field_78109_a +FD net/minecraft/client/model/ModelMagmaCube core field_78108_b +FD net/minecraft/client/model/ModelLeashKnot field_110723_a field_110723_a +FD net/minecraft/client/model/ModelMinecart sideModels field_78154_a +FD net/minecraft/client/model/ModelBase modelTextureMap field_78094_a +FD net/minecraft/client/model/ModelBase swingProgress field_78095_p +FD net/minecraft/client/model/ModelBase isRiding field_78093_q +FD net/minecraft/client/model/ModelBase isChild field_78091_s +FD net/minecraft/client/model/ModelBase boxList field_78092_r +FD net/minecraft/client/model/ModelBase textureWidth field_78090_t +FD net/minecraft/client/model/ModelBase textureHeight field_78089_u +FD net/minecraft/client/model/ModelOcelot ocelotBackLeftLeg field_78161_a +FD net/minecraft/client/model/ModelOcelot ocelotBackRightLeg field_78159_b +FD net/minecraft/client/model/ModelOcelot ocelotFrontLeftLeg field_78160_c +FD net/minecraft/client/model/ModelOcelot ocelotFrontRightLeg field_78157_d +FD net/minecraft/client/model/ModelOcelot ocelotTail field_78158_e +FD net/minecraft/client/model/ModelOcelot ocelotTail2 field_78155_f +FD net/minecraft/client/model/ModelOcelot ocelotHead field_78156_g +FD net/minecraft/client/model/ModelOcelot ocelotBody field_78162_h +FD net/minecraft/client/model/ModelOcelot field_78163_i field_78163_i +FD net/minecraft/client/model/ModelPlayer bipedLeftArmwear field_178734_a +FD net/minecraft/client/model/ModelPlayer bipedRightArmwear field_178732_b +FD net/minecraft/client/model/ModelPlayer bipedLeftLegwear field_178733_c +FD net/minecraft/client/model/ModelPlayer bipedRightLegwear field_178731_d +FD net/minecraft/client/model/ModelPlayer bipedBodyWear field_178730_v +FD net/minecraft/client/model/ModelPlayer bipedCape field_178729_w +FD net/minecraft/client/model/ModelPlayer bipedDeadmau5Head field_178736_x +FD net/minecraft/client/model/ModelPlayer smallArms field_178735_y +FD net/minecraft/client/model/TexturedQuad vertexPositions field_78239_a +FD net/minecraft/client/model/TexturedQuad nVertices field_78237_b +FD net/minecraft/client/model/TexturedQuad invertNormal field_78238_c +FD net/minecraft/client/model/ModelQuadruped head field_78150_a +FD net/minecraft/client/model/ModelQuadruped body field_78148_b +FD net/minecraft/client/model/ModelQuadruped leg1 field_78149_c +FD net/minecraft/client/model/ModelQuadruped leg2 field_78146_d +FD net/minecraft/client/model/ModelQuadruped leg3 field_78147_e +FD net/minecraft/client/model/ModelQuadruped leg4 field_78144_f +FD net/minecraft/client/model/ModelQuadruped childYOffset field_78145_g +FD net/minecraft/client/model/ModelQuadruped childZOffset field_78151_h +FD net/minecraft/client/model/ModelRabbit rabbitLeftFoot field_178698_a +FD net/minecraft/client/model/ModelRabbit rabbitRightFoot field_178696_b +FD net/minecraft/client/model/ModelRabbit rabbitLeftThigh field_178697_c +FD net/minecraft/client/model/ModelRabbit rabbitRightThigh field_178694_d +FD net/minecraft/client/model/ModelRabbit rabbitBody field_178695_e +FD net/minecraft/client/model/ModelRabbit rabbitLeftArm field_178692_f +FD net/minecraft/client/model/ModelRabbit rabbitRightArm field_178693_g +FD net/minecraft/client/model/ModelRabbit rabbitHead field_178704_h +FD net/minecraft/client/model/ModelRabbit rabbitRightEar field_178705_i +FD net/minecraft/client/model/ModelRabbit rabbitLeftEar field_178702_j +FD net/minecraft/client/model/ModelRabbit rabbitTail field_178703_k +FD net/minecraft/client/model/ModelRabbit rabbitNose field_178700_l +FD net/minecraft/client/model/ModelRabbit field_178701_m field_178701_m +FD net/minecraft/client/model/ModelRabbit field_178699_n field_178699_n +FD net/minecraft/client/model/ModelSheep1 headRotationAngleX field_78152_i +FD net/minecraft/client/model/ModelSheep2 headRotationAngleX field_78153_i +FD net/minecraft/client/model/ModelSign signBoard field_78166_a +FD net/minecraft/client/model/ModelSign signStick field_78165_b +FD net/minecraft/client/model/ModelSilverfish silverfishBodyParts field_78171_a +FD net/minecraft/client/model/ModelSilverfish silverfishWings field_78169_b +FD net/minecraft/client/model/ModelSilverfish field_78170_c field_78170_c +FD net/minecraft/client/model/ModelSilverfish silverfishBoxLength field_78167_d +FD net/minecraft/client/model/ModelSilverfish silverfishTexturePositions field_78168_e +FD net/minecraft/client/model/ModelSkeletonHead skeletonHead field_82896_a +FD net/minecraft/client/model/ModelSlime slimeBodies field_78200_a +FD net/minecraft/client/model/ModelSlime slimeRightEye field_78198_b +FD net/minecraft/client/model/ModelSlime slimeLeftEye field_78199_c +FD net/minecraft/client/model/ModelSlime slimeMouth field_78197_d +FD net/minecraft/client/model/ModelSnowMan body field_78196_a +FD net/minecraft/client/model/ModelSnowMan bottomBody field_78194_b +FD net/minecraft/client/model/ModelSnowMan head field_78195_c +FD net/minecraft/client/model/ModelSnowMan rightHand field_78192_d +FD net/minecraft/client/model/ModelSnowMan leftHand field_78193_e +FD net/minecraft/client/model/ModelSpider spiderHead field_78209_a +FD net/minecraft/client/model/ModelSpider spiderNeck field_78207_b +FD net/minecraft/client/model/ModelSpider spiderBody field_78208_c +FD net/minecraft/client/model/ModelSpider spiderLeg1 field_78205_d +FD net/minecraft/client/model/ModelSpider spiderLeg2 field_78206_e +FD net/minecraft/client/model/ModelSpider spiderLeg3 field_78203_f +FD net/minecraft/client/model/ModelSpider spiderLeg4 field_78204_g +FD net/minecraft/client/model/ModelSpider spiderLeg5 field_78212_h +FD net/minecraft/client/model/ModelSpider spiderLeg6 field_78213_i +FD net/minecraft/client/model/ModelSpider spiderLeg7 field_78210_j +FD net/minecraft/client/model/ModelSpider spiderLeg8 field_78211_k +FD net/minecraft/client/model/ModelSquid squidBody field_78202_a +FD net/minecraft/client/model/ModelSquid squidTentacles field_78201_b +FD net/minecraft/client/model/PositionTextureVertex vector3D field_78243_a +FD net/minecraft/client/model/PositionTextureVertex texturePositionX field_78241_b +FD net/minecraft/client/model/PositionTextureVertex texturePositionY field_78242_c +FD net/minecraft/client/model/ModelIronGolem ironGolemHead field_78178_a +FD net/minecraft/client/model/ModelIronGolem ironGolemBody field_78176_b +FD net/minecraft/client/model/ModelIronGolem ironGolemRightArm field_78177_c +FD net/minecraft/client/model/ModelIronGolem ironGolemLeftArm field_78174_d +FD net/minecraft/client/model/ModelIronGolem ironGolemLeftLeg field_78175_e +FD net/minecraft/client/model/ModelIronGolem ironGolemRightLeg field_78173_f +FD net/minecraft/client/model/ModelVillager villagerHead field_78191_a +FD net/minecraft/client/model/ModelVillager villagerBody field_78189_b +FD net/minecraft/client/model/ModelVillager villagerArms field_78190_c +FD net/minecraft/client/model/ModelVillager rightVillagerLeg field_78187_d +FD net/minecraft/client/model/ModelVillager leftVillagerLeg field_78188_e +FD net/minecraft/client/model/ModelVillager villagerNose field_82898_f +FD net/minecraft/client/model/ModelWitch field_82900_g field_82900_g +FD net/minecraft/client/model/ModelWitch field_82901_h field_82901_h +FD net/minecraft/client/model/ModelWitch witchHat field_82902_i +FD net/minecraft/client/model/ModelWither field_82905_a field_82905_a +FD net/minecraft/client/model/ModelWither field_82904_b field_82904_b +FD net/minecraft/client/model/ModelWolf wolfHeadMain field_78185_a +FD net/minecraft/client/model/ModelWolf wolfBody field_78183_b +FD net/minecraft/client/model/ModelWolf wolfLeg1 field_78184_c +FD net/minecraft/client/model/ModelWolf wolfLeg2 field_78181_d +FD net/minecraft/client/model/ModelWolf wolfLeg3 field_78182_e +FD net/minecraft/client/model/ModelWolf wolfLeg4 field_78179_f +FD net/minecraft/client/model/ModelWolf wolfTail field_78180_g +FD net/minecraft/client/model/ModelWolf wolfMane field_78186_h +FD net/minecraft/client/model/ModelDragon head field_78221_a +FD net/minecraft/client/model/ModelDragon spine field_78219_b +FD net/minecraft/client/model/ModelDragon jaw field_78220_c +FD net/minecraft/client/model/ModelDragon body field_78217_d +FD net/minecraft/client/model/ModelDragon rearLeg field_78218_e +FD net/minecraft/client/model/ModelDragon frontLeg field_78215_f +FD net/minecraft/client/model/ModelDragon rearLegTip field_78216_g +FD net/minecraft/client/model/ModelDragon frontLegTip field_78226_h +FD net/minecraft/client/model/ModelDragon rearFoot field_78227_i +FD net/minecraft/client/model/ModelDragon frontFoot field_78224_j +FD net/minecraft/client/model/ModelDragon wing field_78225_k +FD net/minecraft/client/model/ModelDragon wingTip field_78222_l +FD net/minecraft/client/model/ModelDragon partialTicks field_78223_m +FD net/minecraft/client/model/ModelEnderCrystal cube field_78230_a +FD net/minecraft/client/model/ModelEnderCrystal glass field_78228_b +FD net/minecraft/client/model/ModelEnderCrystal base field_78229_c +FD net/minecraft/client/model/ModelBox posX1 field_78252_a +FD net/minecraft/client/model/ModelBox posY1 field_78250_b +FD net/minecraft/client/model/ModelBox posZ1 field_78251_c +FD net/minecraft/client/model/ModelBox posX2 field_78248_d +FD net/minecraft/client/model/ModelBox posY2 field_78249_e +FD net/minecraft/client/model/ModelBox posZ2 field_78246_f +FD net/minecraft/client/model/ModelBox boxName field_78247_g +FD net/minecraft/client/model/ModelBox vertexPositions field_78253_h +FD net/minecraft/client/model/ModelBox quadList field_78254_i +FD net/minecraft/client/model/ModelRenderer textureWidth field_78801_a +FD net/minecraft/client/model/ModelRenderer textureHeight field_78799_b +FD net/minecraft/client/model/ModelRenderer rotationPointX field_78800_c +FD net/minecraft/client/model/ModelRenderer rotationPointY field_78797_d +FD net/minecraft/client/model/ModelRenderer rotationPointZ field_78798_e +FD net/minecraft/client/model/ModelRenderer rotateAngleX field_78795_f +FD net/minecraft/client/model/ModelRenderer rotateAngleY field_78796_g +FD net/minecraft/client/model/ModelRenderer rotateAngleZ field_78808_h +FD net/minecraft/client/model/ModelRenderer mirror field_78809_i +FD net/minecraft/client/model/ModelRenderer showModel field_78806_j +FD net/minecraft/client/model/ModelRenderer isHidden field_78807_k +FD net/minecraft/client/model/ModelRenderer cubeList field_78804_l +FD net/minecraft/client/model/ModelRenderer childModels field_78805_m +FD net/minecraft/client/model/ModelRenderer boxName field_78802_n +FD net/minecraft/client/model/ModelRenderer offsetX field_82906_o +FD net/minecraft/client/model/ModelRenderer offsetY field_82908_p +FD net/minecraft/client/model/ModelRenderer offsetZ field_82907_q +FD net/minecraft/client/model/ModelRenderer textureOffsetX field_78803_o +FD net/minecraft/client/model/ModelRenderer textureOffsetY field_78813_p +FD net/minecraft/client/model/ModelRenderer compiled field_78812_q +FD net/minecraft/client/model/ModelRenderer displayList field_78811_r +FD net/minecraft/client/model/ModelRenderer baseModel field_78810_s +FD net/minecraft/client/model/TextureOffset textureOffsetX field_78783_a +FD net/minecraft/client/model/TextureOffset textureOffsetY field_78782_b +FD net/minecraft/client/network/NetHandlerLoginClient logger field_147396_a +FD net/minecraft/client/network/NetHandlerLoginClient mc field_147394_b +FD net/minecraft/client/network/NetHandlerLoginClient previousGuiScreen field_147395_c +FD net/minecraft/client/network/NetHandlerLoginClient networkManager field_147393_d +FD net/minecraft/client/network/NetHandlerLoginClient gameProfile field_175091_e +FD net/minecraft/client/network/NetHandlerLoginClient$1 field_147495_a field_147495_a +FD net/minecraft/client/network/NetHandlerLoginClient$1 field_147494_b field_147494_b +FD net/minecraft/client/network/NetHandlerPlayClient currentServerMaxPlayers field_147304_c +FD net/minecraft/client/network/NetHandlerPlayClient logger field_147301_d +FD net/minecraft/client/network/NetHandlerPlayClient netManager field_147302_e +FD net/minecraft/client/network/NetHandlerPlayClient profile field_175107_d +FD net/minecraft/client/network/NetHandlerPlayClient guiScreenServer field_147307_j +FD net/minecraft/client/network/NetHandlerPlayClient gameController field_147299_f +FD net/minecraft/client/network/NetHandlerPlayClient clientWorldController field_147300_g +FD net/minecraft/client/network/NetHandlerPlayClient doneLoadingTerrain field_147309_h +FD net/minecraft/client/network/NetHandlerPlayClient playerInfoMap field_147310_i +FD net/minecraft/client/network/NetHandlerPlayClient field_147308_k field_147308_k +FD net/minecraft/client/network/NetHandlerPlayClient avRandomizer field_147306_l +FD net/minecraft/client/network/NetHandlerPlayClient$1 field_146300_a field_146300_a +FD net/minecraft/client/network/NetHandlerPlayClient$1 field_146299_f field_146299_f +FD net/minecraft/client/network/NetHandlerPlayClient$2 field_178897_a field_178897_a +FD net/minecraft/client/network/NetHandlerPlayClient$2 field_178896_b field_178896_b +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178900_a field_178900_a +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178898_b field_178898_b +FD net/minecraft/client/network/NetHandlerPlayClient$3 field_178899_c field_178899_c +FD net/minecraft/client/network/NetHandlerPlayClient$3$1 field_175395_a field_175395_a +FD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 field_178886_a field_178886_a +FD net/minecraft/client/network/NetHandlerPlayClient$4 field_178885_a field_178885_a +FD net/minecraft/client/network/NetHandlerPlayClient$4 field_178884_b field_178884_b +FD net/minecraft/client/multiplayer/ChunkProviderClient logger field_147436_a +FD net/minecraft/client/multiplayer/ChunkProviderClient blankChunk field_73238_a +FD net/minecraft/client/multiplayer/ChunkProviderClient chunkMapping field_73236_b +FD net/minecraft/client/multiplayer/ChunkProviderClient chunkListing field_73237_c +FD net/minecraft/client/multiplayer/ChunkProviderClient worldObj field_73235_d +FD net/minecraft/client/multiplayer/PlayerControllerMP mc field_78776_a +FD net/minecraft/client/multiplayer/PlayerControllerMP netClientHandler field_78774_b +FD net/minecraft/client/multiplayer/PlayerControllerMP currentBlock field_178895_c +FD net/minecraft/client/multiplayer/PlayerControllerMP currentItemHittingBlock field_85183_f +FD net/minecraft/client/multiplayer/PlayerControllerMP curBlockDamageMP field_78770_f +FD net/minecraft/client/multiplayer/PlayerControllerMP stepSoundTickCounter field_78780_h +FD net/minecraft/client/multiplayer/PlayerControllerMP blockHitDelay field_78781_i +FD net/minecraft/client/multiplayer/PlayerControllerMP isHittingBlock field_78778_j +FD net/minecraft/client/multiplayer/PlayerControllerMP currentGameType field_78779_k +FD net/minecraft/client/multiplayer/PlayerControllerMP currentPlayerItem field_78777_l +FD net/minecraft/client/multiplayer/WorldClient mc field_73037_M +FD net/minecraft/client/multiplayer/WorldClient previousActiveChunkSet field_73038_N +FD net/minecraft/client/multiplayer/WorldClient sendQueue field_73035_a +FD net/minecraft/client/multiplayer/WorldClient clientChunkProvider field_73033_b +FD net/minecraft/client/multiplayer/WorldClient entityList field_73032_d +FD net/minecraft/client/multiplayer/WorldClient entitySpawnQueue field_73036_L +FD net/minecraft/client/multiplayer/WorldClient$1 field_78833_a field_78833_a +FD net/minecraft/client/multiplayer/WorldClient$2 field_78835_a field_78835_a +FD net/minecraft/client/multiplayer/WorldClient$3 field_142027_a field_142027_a +FD net/minecraft/client/multiplayer/WorldClient$4 field_142029_a field_142029_a +FD net/minecraft/client/network/NetworkPlayerInfo gameProfile field_178867_a +FD net/minecraft/client/network/NetworkPlayerInfo gameType field_178866_b +FD net/minecraft/client/network/NetworkPlayerInfo responseTime field_78829_b +FD net/minecraft/client/network/NetworkPlayerInfo playerTexturesLoaded field_178864_d +FD net/minecraft/client/network/NetworkPlayerInfo locationSkin field_178865_e +FD net/minecraft/client/network/NetworkPlayerInfo locationCape field_178862_f +FD net/minecraft/client/network/NetworkPlayerInfo skinType field_178863_g +FD net/minecraft/client/network/NetworkPlayerInfo displayName field_178872_h +FD net/minecraft/client/network/NetworkPlayerInfo field_178873_i field_178873_i +FD net/minecraft/client/network/NetworkPlayerInfo field_178870_j field_178870_j +FD net/minecraft/client/network/NetworkPlayerInfo field_178871_k field_178871_k +FD net/minecraft/client/network/NetworkPlayerInfo field_178868_l field_178868_l +FD net/minecraft/client/network/NetworkPlayerInfo field_178869_m field_178869_m +FD net/minecraft/client/network/NetworkPlayerInfo$1 field_177224_a field_177224_a +FD net/minecraft/client/network/NetworkPlayerInfo$2 field_178875_a field_178875_a +FD net/minecraft/client/multiplayer/ServerAddress ipAddress field_78866_a +FD net/minecraft/client/multiplayer/ServerAddress serverPort field_78865_b +FD net/minecraft/client/multiplayer/ServerData serverName field_78847_a +FD net/minecraft/client/multiplayer/ServerData serverIP field_78845_b +FD net/minecraft/client/multiplayer/ServerData populationInfo field_78846_c +FD net/minecraft/client/multiplayer/ServerData serverMOTD field_78843_d +FD net/minecraft/client/multiplayer/ServerData pingToServer field_78844_e +FD net/minecraft/client/multiplayer/ServerData version field_82821_f +FD net/minecraft/client/multiplayer/ServerData gameVersion field_82822_g +FD net/minecraft/client/multiplayer/ServerData field_78841_f field_78841_f +FD net/minecraft/client/multiplayer/ServerData playerList field_147412_i +FD net/minecraft/client/multiplayer/ServerData resourceMode field_152587_j +FD net/minecraft/client/multiplayer/ServerData serverIcon field_147411_m +FD net/minecraft/client/multiplayer/ServerData lanServer field_181042_l +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode ENABLED ENABLED +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode DISABLED DISABLED +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode PROMPT PROMPT +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode motd field_152594_d +FD net/minecraft/client/multiplayer/ServerData$ServerResourceMode $VALUES $VALUES +FD net/minecraft/client/multiplayer/ServerList logger field_147415_a +FD net/minecraft/client/multiplayer/ServerList mc field_78859_a +FD net/minecraft/client/multiplayer/ServerList servers field_78858_b +FD net/minecraft/client/network/OldServerPinger PING_RESPONSE_SPLITTER field_147230_a +FD net/minecraft/client/network/OldServerPinger logger field_147228_b +FD net/minecraft/client/network/OldServerPinger pingDestinations field_147229_c +FD net/minecraft/client/network/OldServerPinger$1 field_147404_b field_147404_b +FD net/minecraft/client/network/OldServerPinger$1 field_147406_a field_147406_a +FD net/minecraft/client/network/OldServerPinger$1 field_147405_c field_147405_c +FD net/minecraft/client/network/OldServerPinger$1 field_147403_d field_147403_d +FD net/minecraft/client/network/OldServerPinger$1 field_183009_e field_183009_e +FD net/minecraft/client/network/OldServerPinger$1 field_175092_e field_175092_e +FD net/minecraft/client/network/OldServerPinger$2 field_147218_a field_147218_a +FD net/minecraft/client/network/OldServerPinger$2 field_147216_b field_147216_b +FD net/minecraft/client/network/OldServerPinger$2 field_147217_c field_147217_c +FD net/minecraft/client/network/OldServerPinger$2$1 field_147220_a field_147220_a +FD net/minecraft/client/particle/EntityCrit2FX field_174839_a field_174839_a +FD net/minecraft/client/particle/EntityDropParticleFX materialType field_70563_a +FD net/minecraft/client/particle/EntityDropParticleFX bobTimer field_70564_aq +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX field_70565_a field_70565_a +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordY field_70567_ar +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordZ field_70566_as +FD net/minecraft/client/particle/EntityEnchantmentTableParticleFX coordX field_70568_aq +FD net/minecraft/client/particle/EntityFirework$SparkFX baseTextureIndex field_92049_a +FD net/minecraft/client/particle/EntityFirework$SparkFX twinkle field_92048_ay +FD net/minecraft/client/particle/EntityFirework$SparkFX field_92047_az field_92047_az +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourRed field_92050_aA +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourGreen field_92051_aB +FD net/minecraft/client/particle/EntityFirework$SparkFX fadeColourBlue field_92052_aC +FD net/minecraft/client/particle/EntityFirework$SparkFX hasFadeColour field_92053_aD +FD net/minecraft/client/particle/EntityFirework$SparkFX trail field_92054_ax +FD net/minecraft/client/particle/EntityFirework$StarterFX twinkle field_92041_a +FD net/minecraft/client/particle/EntityFirework$StarterFX theEffectRenderer field_92040_ay +FD net/minecraft/client/particle/EntityFirework$StarterFX fireworkExplosions field_92039_az +FD net/minecraft/client/particle/EntityFirework$StarterFX fireworkAge field_92042_ax +FD net/minecraft/client/particle/EntityFlameFX flameScale field_70562_a +FD net/minecraft/client/particle/EntityFootStepFX FOOTPRINT_TEXTURE field_110126_a +FD net/minecraft/client/particle/EntityFootStepFX footstepMaxAge field_70578_aq +FD net/minecraft/client/particle/EntityFootStepFX currentFootSteps field_70577_ar +FD net/minecraft/client/particle/EntityFootStepFX footstepAge field_70576_a +FD net/minecraft/client/particle/EntityHeartFX particleScaleOverTime field_70575_a +FD net/minecraft/client/particle/EntityLargeExplodeFX EXPLOSION_TEXTURE field_110127_a +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70581_a field_70581_a +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70584_aq field_70584_aq +FD net/minecraft/client/particle/EntityLargeExplodeFX theRenderEngine field_70583_ar +FD net/minecraft/client/particle/EntityLargeExplodeFX field_70582_as field_70582_as +FD net/minecraft/client/particle/EntityLargeExplodeFX field_181549_az field_181549_az +FD net/minecraft/client/particle/EntityHugeExplodeFX timeSinceStart field_70579_a +FD net/minecraft/client/particle/EntityHugeExplodeFX maximumTime field_70580_aq +FD net/minecraft/client/particle/EntityPickupFX field_174840_a field_174840_a +FD net/minecraft/client/particle/EntityPickupFX age field_70594_ar +FD net/minecraft/client/particle/EntityPickupFX maxAge field_70593_as +FD net/minecraft/client/particle/EntityPickupFX field_174841_aA field_174841_aA +FD net/minecraft/client/particle/EntityPickupFX field_174842_aB field_174842_aB +FD net/minecraft/client/particle/EntityPickupFX field_174843_ax field_174843_ax +FD net/minecraft/client/particle/EntityLavaFX lavaParticleScale field_70586_a +FD net/minecraft/client/particle/MobAppearance entity field_174844_a +FD net/minecraft/client/particle/EntityNoteFX noteParticleScale field_70585_a +FD net/minecraft/client/particle/EntityFX particleRed field_70552_h +FD net/minecraft/client/particle/EntityFX particleGreen field_70553_i +FD net/minecraft/client/particle/EntityFX particleBlue field_70551_j +FD net/minecraft/client/particle/EntityFX particleAlpha field_82339_as +FD net/minecraft/client/particle/EntityFX particleIcon field_70550_a +FD net/minecraft/client/particle/EntityFX interpPosX field_70556_an +FD net/minecraft/client/particle/EntityFX interpPosY field_70554_ao +FD net/minecraft/client/particle/EntityFX interpPosZ field_70555_ap +FD net/minecraft/client/particle/EntityFX particleTextureIndexX field_94054_b +FD net/minecraft/client/particle/EntityFX particleTextureIndexY field_94055_c +FD net/minecraft/client/particle/EntityFX particleTextureJitterX field_70548_b +FD net/minecraft/client/particle/EntityFX particleTextureJitterY field_70549_c +FD net/minecraft/client/particle/EntityFX particleAge field_70546_d +FD net/minecraft/client/particle/EntityFX particleMaxAge field_70547_e +FD net/minecraft/client/particle/EntityFX particleScale field_70544_f +FD net/minecraft/client/particle/EntityFX particleGravity field_70545_g +FD net/minecraft/client/particle/EffectRenderer worldObj field_78878_a +FD net/minecraft/client/particle/EffectRenderer particleTextures field_110737_b +FD net/minecraft/client/particle/EffectRenderer fxLayers field_78876_b +FD net/minecraft/client/particle/EffectRenderer particleEmitters field_178933_d +FD net/minecraft/client/particle/EffectRenderer renderer field_78877_c +FD net/minecraft/client/particle/EffectRenderer rand field_78875_d +FD net/minecraft/client/particle/EffectRenderer particleTypes field_178932_g +FD net/minecraft/client/particle/EffectRenderer$1 field_147214_a field_147214_a +FD net/minecraft/client/particle/EffectRenderer$1 field_147213_b field_147213_b +FD net/minecraft/client/particle/EffectRenderer$2 field_147898_a field_147898_a +FD net/minecraft/client/particle/EffectRenderer$2 field_147897_b field_147897_b +FD net/minecraft/client/particle/EffectRenderer$3 field_147901_a field_147901_a +FD net/minecraft/client/particle/EffectRenderer$3 field_147900_b field_147900_b +FD net/minecraft/client/particle/EffectRenderer$4 field_147904_a field_147904_a +FD net/minecraft/client/particle/EffectRenderer$4 field_147903_b field_147903_b +FD net/minecraft/client/particle/EntityCloudFX field_70569_a field_70569_a +FD net/minecraft/client/particle/EntityPortalFX portalParticleScale field_70571_a +FD net/minecraft/client/particle/EntityPortalFX portalPosY field_70573_ar +FD net/minecraft/client/particle/EntityPortalFX portalPosZ field_70572_as +FD net/minecraft/client/particle/EntityPortalFX portalPosX field_70574_aq +FD net/minecraft/client/particle/EntityReddustFX reddustParticleScale field_70570_a +FD net/minecraft/client/particle/EntitySmokeFX smokeParticleScale field_70587_a +FD net/minecraft/client/particle/EntitySnowShovelFX snowDigParticleScale field_70588_a +FD net/minecraft/client/particle/EntitySpellParticleFX RANDOM field_174848_a +FD net/minecraft/client/particle/EntitySpellParticleFX baseSpellTextureIndex field_70590_a +FD net/minecraft/client/particle/EntityDiggingFX sourceState field_174847_a +FD net/minecraft/client/particle/EntityDiggingFX sourcePos field_181019_az +FD net/minecraft/client/particle/EntityParticleEmitter attachedEntity field_174851_a +FD net/minecraft/client/particle/EntityParticleEmitter lifetime field_174850_ay +FD net/minecraft/client/particle/EntityParticleEmitter particleTypes field_174849_az +FD net/minecraft/client/particle/EntityParticleEmitter age field_174852_ax +FD net/minecraft/client/entity/AbstractClientPlayer playerInfo field_175157_a +FD net/minecraft/util/MovementInput moveStrafe field_78902_a +FD net/minecraft/util/MovementInput moveForward field_78900_b +FD net/minecraft/util/MovementInput jump field_78901_c +FD net/minecraft/util/MovementInput sneak field_78899_d +FD net/minecraft/util/MovementInputFromOptions gameSettings field_78903_e +FD net/minecraft/client/entity/EntityPlayerSP sendQueue field_71174_a +FD net/minecraft/client/entity/EntityPlayerSP movementInput field_71158_b +FD net/minecraft/client/entity/EntityPlayerSP timeInPortal field_71086_bY +FD net/minecraft/client/entity/EntityPlayerSP prevTimeInPortal field_71080_cy +FD net/minecraft/client/entity/EntityPlayerSP statWriter field_146108_bO +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosX field_175172_bI +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosY field_175166_bJ +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPosZ field_175167_bK +FD net/minecraft/client/entity/EntityPlayerSP lastReportedYaw field_175164_bL +FD net/minecraft/client/entity/EntityPlayerSP lastReportedPitch field_175165_bM +FD net/minecraft/client/entity/EntityPlayerSP serverSneakState field_175170_bN +FD net/minecraft/client/entity/EntityPlayerSP serverSprintState field_175171_bO +FD net/minecraft/client/entity/EntityPlayerSP positionUpdateTicks field_175168_bP +FD net/minecraft/client/entity/EntityPlayerSP hasValidHealth field_175169_bQ +FD net/minecraft/client/entity/EntityPlayerSP clientBrand field_142022_ce +FD net/minecraft/client/entity/EntityPlayerSP horseJumpPowerCounter field_110320_a +FD net/minecraft/client/entity/EntityPlayerSP horseJumpPower field_110321_bQ +FD net/minecraft/client/entity/EntityPlayerSP mc field_71159_c +FD net/minecraft/client/entity/EntityPlayerSP sprintToggleTimer field_71156_d +FD net/minecraft/client/entity/EntityPlayerSP sprintingTicksLeft field_71157_e +FD net/minecraft/client/entity/EntityPlayerSP renderArmYaw field_71154_f +FD net/minecraft/client/entity/EntityPlayerSP renderArmPitch field_71155_g +FD net/minecraft/client/entity/EntityPlayerSP prevRenderArmYaw field_71163_h +FD net/minecraft/client/entity/EntityPlayerSP prevRenderArmPitch field_71164_i +FD net/minecraft/client/entity/EntityOtherPlayerMP isItemInUse field_71186_a +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPPosRotationIncrements field_71184_b +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPX field_71185_c +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPY field_71182_d +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPZ field_71183_e +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPYaw field_71180_f +FD net/minecraft/client/entity/EntityOtherPlayerMP otherPlayerMPPitch field_71181_g +FD net/minecraft/client/player/inventory/LocalBlockIntercommunication guiID field_175126_a +FD net/minecraft/client/player/inventory/LocalBlockIntercommunication displayName field_175125_b +FD net/minecraft/client/player/inventory/ContainerLocalMenu guiID field_174896_a +FD net/minecraft/client/player/inventory/ContainerLocalMenu field_174895_b field_174895_b +FD net/minecraft/entity/boss/BossStatus healthScale field_82828_a +FD net/minecraft/entity/boss/BossStatus statusBarTime field_82826_b +FD net/minecraft/entity/boss/BossStatus bossName field_82827_c +FD net/minecraft/entity/boss/BossStatus hasColorModifier field_82825_d +FD net/minecraft/client/renderer/WorldRenderer byteBuffer field_179001_a +FD net/minecraft/client/renderer/WorldRenderer rawIntBuffer field_178999_b +FD net/minecraft/client/renderer/WorldRenderer rawShortBuffer field_181676_c +FD net/minecraft/client/renderer/WorldRenderer rawFloatBuffer field_179000_c +FD net/minecraft/client/renderer/WorldRenderer vertexCount field_178997_d +FD net/minecraft/client/renderer/WorldRenderer vertexFormatElement field_181677_f +FD net/minecraft/client/renderer/WorldRenderer vertexFormatIndex field_181678_g +FD net/minecraft/client/renderer/WorldRenderer noColor field_78939_q +FD net/minecraft/client/renderer/WorldRenderer drawMode field_179006_k +FD net/minecraft/client/renderer/WorldRenderer xOffset field_179004_l +FD net/minecraft/client/renderer/WorldRenderer yOffset field_179005_m +FD net/minecraft/client/renderer/WorldRenderer zOffset field_179002_n +FD net/minecraft/client/renderer/WorldRenderer vertexFormat field_179011_q +FD net/minecraft/client/renderer/WorldRenderer isDrawing field_179010_r +FD net/minecraft/client/renderer/WorldRenderer$1 field_181659_a field_181659_a +FD net/minecraft/client/renderer/WorldRenderer$1 field_181660_b field_181660_b +FD net/minecraft/client/renderer/WorldRenderer$2 field_181661_a field_181661_a +FD net/minecraft/client/renderer/WorldRenderer$State field_179021_a field_179021_a +FD net/minecraft/client/renderer/WorldRenderer$State stateRawBuffer field_179019_b +FD net/minecraft/client/renderer/WorldRenderer$State stateVertexFormat field_179018_e +FD net/minecraft/client/renderer/WorldVertexBufferUploader$1 field_178958_a field_178958_a +FD net/minecraft/client/renderer/RegionRenderCache DEFAULT_STATE field_175632_f +FD net/minecraft/client/renderer/RegionRenderCache position field_175633_g +FD net/minecraft/client/renderer/RegionRenderCache combinedLights field_175634_h +FD net/minecraft/client/renderer/RegionRenderCache blockStates field_175635_i +FD net/minecraft/client/renderer/RegionRenderCacheBuilder worldRenderers field_179040_a +FD net/minecraft/client/renderer/ChunkRenderContainer renderChunks field_178009_a +FD net/minecraft/client/renderer/ChunkRenderContainer initialized field_178007_b +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityX field_178008_c +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityY field_178005_d +FD net/minecraft/client/renderer/ChunkRenderContainer viewEntityZ field_178006_e +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer instance field_147719_a +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer field_147717_b field_147717_b +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer field_147718_c field_147718_c +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer enderChest field_147716_d +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer banner field_179024_e +FD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer skull field_179023_f +FD net/minecraft/client/renderer/EnumFaceDirection DOWN DOWN +FD net/minecraft/client/renderer/EnumFaceDirection UP UP +FD net/minecraft/client/renderer/EnumFaceDirection NORTH NORTH +FD net/minecraft/client/renderer/EnumFaceDirection SOUTH SOUTH +FD net/minecraft/client/renderer/EnumFaceDirection WEST WEST +FD net/minecraft/client/renderer/EnumFaceDirection EAST EAST +FD net/minecraft/client/renderer/EnumFaceDirection facings field_179029_g +FD net/minecraft/client/renderer/EnumFaceDirection vertexInfos field_179035_h +FD net/minecraft/client/renderer/EnumFaceDirection $VALUES $VALUES +FD net/minecraft/client/renderer/EnumFaceDirection$Constants SOUTH_INDEX field_179181_a +FD net/minecraft/client/renderer/EnumFaceDirection$Constants UP_INDEX field_179179_b +FD net/minecraft/client/renderer/EnumFaceDirection$Constants EAST_INDEX field_179180_c +FD net/minecraft/client/renderer/EnumFaceDirection$Constants NORTH_INDEX field_179177_d +FD net/minecraft/client/renderer/EnumFaceDirection$Constants DOWN_INDEX field_179178_e +FD net/minecraft/client/renderer/EnumFaceDirection$Constants WEST_INDEX field_179176_f +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation xIndex field_179184_a +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation yIndex field_179182_b +FD net/minecraft/client/renderer/EnumFaceDirection$VertexInformation zIndex field_179183_c +FD net/minecraft/client/renderer/EntityRenderer bossColorModifierPrev field_82832_V +FD net/minecraft/client/renderer/EntityRenderer cloudFog field_78500_U +FD net/minecraft/client/renderer/EntityRenderer renderHand field_175074_C +FD net/minecraft/client/renderer/EntityRenderer drawBlockOutline field_175073_D +FD net/minecraft/client/renderer/EntityRenderer prevFrameTime field_78508_Y +FD net/minecraft/client/renderer/EntityRenderer renderEndNanoTime field_78510_Z +FD net/minecraft/client/renderer/EntityRenderer lightmapTexture field_78513_d +FD net/minecraft/client/renderer/EntityRenderer lightmapColors field_78504_Q +FD net/minecraft/client/renderer/EntityRenderer locationLightMap field_110922_T +FD net/minecraft/client/renderer/EntityRenderer lightmapUpdateNeeded field_78536_aa +FD net/minecraft/client/renderer/EntityRenderer torchFlickerX field_78514_e +FD net/minecraft/client/renderer/EntityRenderer torchFlickerDX field_175075_L +FD net/minecraft/client/renderer/EntityRenderer rainSoundCounter field_78534_ac +FD net/minecraft/client/renderer/EntityRenderer rainXCoords field_175076_N +FD net/minecraft/client/renderer/EntityRenderer rainYCoords field_175077_O +FD net/minecraft/client/renderer/EntityRenderer fogColorBuffer field_78521_m +FD net/minecraft/client/renderer/EntityRenderer fogColorRed field_175080_Q +FD net/minecraft/client/renderer/EntityRenderer fogColorGreen field_175082_R +FD net/minecraft/client/renderer/EntityRenderer fogColorBlue field_175081_S +FD net/minecraft/client/renderer/EntityRenderer fogColor2 field_78535_ad +FD net/minecraft/client/renderer/EntityRenderer fogColor1 field_78539_ae +FD net/minecraft/client/renderer/EntityRenderer debugViewDirection field_175079_V +FD net/minecraft/client/renderer/EntityRenderer debugView field_175078_W +FD net/minecraft/client/renderer/EntityRenderer cameraZoom field_78503_V +FD net/minecraft/client/renderer/EntityRenderer cameraYaw field_78502_W +FD net/minecraft/client/renderer/EntityRenderer cameraPitch field_78509_X +FD net/minecraft/client/renderer/EntityRenderer anaglyphEnable field_78517_a +FD net/minecraft/client/renderer/EntityRenderer theShaderGroup field_147707_d +FD net/minecraft/client/renderer/EntityRenderer shaderResourceLocations field_147712_ad +FD net/minecraft/client/renderer/EntityRenderer shaderIndex field_147713_ae +FD net/minecraft/client/renderer/EntityRenderer useShader field_175083_ad +FD net/minecraft/client/renderer/EntityRenderer frameCount field_175084_ae +FD net/minecraft/client/renderer/EntityRenderer anaglyphField field_78515_b +FD net/minecraft/client/renderer/EntityRenderer itemRenderer field_78516_c +FD net/minecraft/client/renderer/EntityRenderer shaderCount field_147708_e +FD net/minecraft/client/renderer/EntityRenderer logger field_147710_q +FD net/minecraft/client/renderer/EntityRenderer locationRainPng field_110924_q +FD net/minecraft/client/renderer/EntityRenderer locationSnowPng field_110923_r +FD net/minecraft/client/renderer/EntityRenderer mc field_78531_r +FD net/minecraft/client/renderer/EntityRenderer resourceManager field_147711_ac +FD net/minecraft/client/renderer/EntityRenderer random field_78537_ab +FD net/minecraft/client/renderer/EntityRenderer farPlaneDistance field_78530_s +FD net/minecraft/client/renderer/EntityRenderer theMapItemRenderer field_147709_v +FD net/minecraft/client/renderer/EntityRenderer rendererUpdateCount field_78529_t +FD net/minecraft/client/renderer/EntityRenderer pointedEntity field_78528_u +FD net/minecraft/client/renderer/EntityRenderer mouseFilterXAxis field_78527_v +FD net/minecraft/client/renderer/EntityRenderer mouseFilterYAxis field_78526_w +FD net/minecraft/client/renderer/EntityRenderer thirdPersonDistance field_78490_B +FD net/minecraft/client/renderer/EntityRenderer thirdPersonDistanceTemp field_78491_C +FD net/minecraft/client/renderer/EntityRenderer smoothCamYaw field_78496_H +FD net/minecraft/client/renderer/EntityRenderer smoothCamPitch field_78497_I +FD net/minecraft/client/renderer/EntityRenderer smoothCamFilterX field_78498_J +FD net/minecraft/client/renderer/EntityRenderer smoothCamFilterY field_78499_K +FD net/minecraft/client/renderer/EntityRenderer smoothCamPartialTicks field_78492_L +FD net/minecraft/client/renderer/EntityRenderer fovModifierHand field_78507_R +FD net/minecraft/client/renderer/EntityRenderer fovModifierHandPrev field_78506_S +FD net/minecraft/client/renderer/EntityRenderer bossColorModifier field_82831_U +FD net/minecraft/client/renderer/EntityRenderer$1 field_90032_a field_90032_a +FD net/minecraft/client/renderer/EntityRenderer$2 field_90025_c field_90025_c +FD net/minecraft/client/renderer/EntityRenderer$3 field_181048_a field_181048_a +FD net/minecraft/client/renderer/EntityRenderer$3 field_181049_b field_181049_b +FD net/minecraft/client/renderer/EntityRenderer$3 field_90028_b field_90028_b +FD net/minecraft/client/renderer/EntityRenderer$4 field_181046_a field_181046_a +FD net/minecraft/client/renderer/EntityRenderer$4 field_181047_b field_181047_b +FD net/minecraft/client/renderer/GlStateManager alphaState field_179160_a +FD net/minecraft/client/renderer/GlStateManager lightingState field_179158_b +FD net/minecraft/client/renderer/GlStateManager lightState field_179159_c +FD net/minecraft/client/renderer/GlStateManager colorMaterialState field_179156_d +FD net/minecraft/client/renderer/GlStateManager blendState field_179157_e +FD net/minecraft/client/renderer/GlStateManager depthState field_179154_f +FD net/minecraft/client/renderer/GlStateManager fogState field_179155_g +FD net/minecraft/client/renderer/GlStateManager cullState field_179167_h +FD net/minecraft/client/renderer/GlStateManager polygonOffsetState field_179168_i +FD net/minecraft/client/renderer/GlStateManager colorLogicState field_179165_j +FD net/minecraft/client/renderer/GlStateManager texGenState field_179166_k +FD net/minecraft/client/renderer/GlStateManager clearState field_179163_l +FD net/minecraft/client/renderer/GlStateManager stencilState field_179164_m +FD net/minecraft/client/renderer/GlStateManager normalizeState field_179161_n +FD net/minecraft/client/renderer/GlStateManager activeTextureUnit field_179162_o +FD net/minecraft/client/renderer/GlStateManager textureState field_179174_p +FD net/minecraft/client/renderer/GlStateManager activeShadeModel field_179173_q +FD net/minecraft/client/renderer/GlStateManager rescaleNormalState field_179172_r +FD net/minecraft/client/renderer/GlStateManager colorMaskState field_179171_s +FD net/minecraft/client/renderer/GlStateManager colorState field_179170_t +FD net/minecraft/client/renderer/GlStateManager$1 field_179175_a field_179175_a +FD net/minecraft/client/renderer/GlStateManager$AlphaState alphaTest field_179208_a +FD net/minecraft/client/renderer/GlStateManager$AlphaState func field_179206_b +FD net/minecraft/client/renderer/GlStateManager$AlphaState ref field_179207_c +FD net/minecraft/client/renderer/GlStateManager$BlendState blend field_179213_a +FD net/minecraft/client/renderer/GlStateManager$BlendState srcFactor field_179211_b +FD net/minecraft/client/renderer/GlStateManager$BlendState dstFactor field_179212_c +FD net/minecraft/client/renderer/GlStateManager$BlendState srcFactorAlpha field_179209_d +FD net/minecraft/client/renderer/GlStateManager$BlendState dstFactorAlpha field_179210_e +FD net/minecraft/client/renderer/GlStateManager$BooleanState capability field_179202_a +FD net/minecraft/client/renderer/GlStateManager$BooleanState currentState field_179201_b +FD net/minecraft/client/renderer/GlStateManager$ClearState depth field_179205_a +FD net/minecraft/client/renderer/GlStateManager$ClearState color field_179203_b +FD net/minecraft/client/renderer/GlStateManager$ClearState field_179204_c field_179204_c +FD net/minecraft/client/renderer/GlStateManager$Color red field_179195_a +FD net/minecraft/client/renderer/GlStateManager$Color green field_179193_b +FD net/minecraft/client/renderer/GlStateManager$Color blue field_179194_c +FD net/minecraft/client/renderer/GlStateManager$Color alpha field_179192_d +FD net/minecraft/client/renderer/GlStateManager$ColorLogicState colorLogicOp field_179197_a +FD net/minecraft/client/renderer/GlStateManager$ColorLogicState opcode field_179196_b +FD net/minecraft/client/renderer/GlStateManager$ColorMask red field_179188_a +FD net/minecraft/client/renderer/GlStateManager$ColorMask green field_179186_b +FD net/minecraft/client/renderer/GlStateManager$ColorMask blue field_179187_c +FD net/minecraft/client/renderer/GlStateManager$ColorMask alpha field_179185_d +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState colorMaterial field_179191_a +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState face field_179189_b +FD net/minecraft/client/renderer/GlStateManager$ColorMaterialState mode field_179190_c +FD net/minecraft/client/renderer/GlStateManager$CullState cullFace field_179054_a +FD net/minecraft/client/renderer/GlStateManager$CullState mode field_179053_b +FD net/minecraft/client/renderer/GlStateManager$DepthState depthTest field_179052_a +FD net/minecraft/client/renderer/GlStateManager$DepthState maskEnabled field_179050_b +FD net/minecraft/client/renderer/GlStateManager$DepthState depthFunc field_179051_c +FD net/minecraft/client/renderer/GlStateManager$FogState fog field_179049_a +FD net/minecraft/client/renderer/GlStateManager$FogState mode field_179047_b +FD net/minecraft/client/renderer/GlStateManager$FogState density field_179048_c +FD net/minecraft/client/renderer/GlStateManager$FogState start field_179045_d +FD net/minecraft/client/renderer/GlStateManager$FogState end field_179046_e +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState polygonOffsetFill field_179044_a +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState polygonOffsetLine field_179042_b +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState factor field_179043_c +FD net/minecraft/client/renderer/GlStateManager$PolygonOffsetState units field_179041_d +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179081_a field_179081_a +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179079_b field_179079_b +FD net/minecraft/client/renderer/GlStateManager$StencilFunc field_179080_c field_179080_c +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179078_a field_179078_a +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179076_b field_179076_b +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179077_c field_179077_c +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179074_d field_179074_d +FD net/minecraft/client/renderer/GlStateManager$StencilState field_179075_e field_179075_e +FD net/minecraft/client/renderer/GlStateManager$TexGen S S +FD net/minecraft/client/renderer/GlStateManager$TexGen T T +FD net/minecraft/client/renderer/GlStateManager$TexGen R R +FD net/minecraft/client/renderer/GlStateManager$TexGen Q Q +FD net/minecraft/client/renderer/GlStateManager$TexGen $VALUES $VALUES +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord textureGen field_179067_a +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord coord field_179065_b +FD net/minecraft/client/renderer/GlStateManager$TexGenCoord param field_179066_c +FD net/minecraft/client/renderer/GlStateManager$TexGenState s field_179064_a +FD net/minecraft/client/renderer/GlStateManager$TexGenState t field_179062_b +FD net/minecraft/client/renderer/GlStateManager$TexGenState r field_179063_c +FD net/minecraft/client/renderer/GlStateManager$TexGenState q field_179061_d +FD net/minecraft/client/renderer/GlStateManager$TextureState texture2DState field_179060_a +FD net/minecraft/client/renderer/GlStateManager$TextureState textureName field_179059_b +FD net/minecraft/client/renderer/ItemRenderer RES_MAP_BACKGROUND field_110931_c +FD net/minecraft/client/renderer/ItemRenderer RES_UNDERWATER_OVERLAY field_110929_d +FD net/minecraft/client/renderer/ItemRenderer mc field_78455_a +FD net/minecraft/client/renderer/ItemRenderer itemToRender field_78453_b +FD net/minecraft/client/renderer/ItemRenderer equippedProgress field_78454_c +FD net/minecraft/client/renderer/ItemRenderer prevEquippedProgress field_78451_d +FD net/minecraft/client/renderer/ItemRenderer renderManager field_178111_g +FD net/minecraft/client/renderer/ItemRenderer itemRenderer field_178112_h +FD net/minecraft/client/renderer/ItemRenderer equippedItemSlot field_78450_g +FD net/minecraft/client/renderer/ItemRenderer$1 field_178094_a field_178094_a +FD net/minecraft/client/renderer/ItemModelMesher simpleShapes field_178093_a +FD net/minecraft/client/renderer/ItemModelMesher simpleShapesCache field_178091_b +FD net/minecraft/client/renderer/ItemModelMesher shapers field_178092_c +FD net/minecraft/client/renderer/ItemModelMesher modelManager field_178090_d +FD net/minecraft/client/renderer/RenderGlobal entityOutlineFramebuffer field_175015_z +FD net/minecraft/client/renderer/RenderGlobal entityOutlineShader field_174991_A +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosX field_174992_B +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosY field_174993_C +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosZ field_174987_D +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkX field_174988_E +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkY field_174989_F +FD net/minecraft/client/renderer/RenderGlobal frustumUpdatePosChunkZ field_174990_G +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityX field_174997_H +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityY field_174998_I +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityZ field_174999_J +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityPitch field_175000_K +FD net/minecraft/client/renderer/RenderGlobal lastViewEntityYaw field_174994_L +FD net/minecraft/client/renderer/RenderGlobal renderDispatcher field_174995_M +FD net/minecraft/client/renderer/RenderGlobal renderContainer field_174996_N +FD net/minecraft/client/renderer/RenderGlobal renderDistanceChunks field_72739_F +FD net/minecraft/client/renderer/RenderGlobal renderEntitiesStartupCounter field_72740_G +FD net/minecraft/client/renderer/RenderGlobal countEntitiesTotal field_72748_H +FD net/minecraft/client/renderer/RenderGlobal countEntitiesRendered field_72749_I +FD net/minecraft/client/renderer/RenderGlobal countEntitiesHidden field_72750_J +FD net/minecraft/client/renderer/RenderGlobal debugFixTerrainFrustum field_175002_T +FD net/minecraft/client/renderer/RenderGlobal debugFixedClippingHelper field_175001_U +FD net/minecraft/client/renderer/RenderGlobal debugTerrainMatrix field_175004_V +FD net/minecraft/client/renderer/RenderGlobal debugTerrainFrustumPosition field_175003_W +FD net/minecraft/client/renderer/RenderGlobal vboEnabled field_175005_X +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortX field_147596_f +FD net/minecraft/client/renderer/RenderGlobal renderChunkFactory field_175007_a +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortY field_147597_g +FD net/minecraft/client/renderer/RenderGlobal prevRenderSortZ field_147602_h +FD net/minecraft/client/renderer/RenderGlobal displayListEntitiesDirty field_147595_R +FD net/minecraft/client/renderer/RenderGlobal logger field_147599_m +FD net/minecraft/client/renderer/RenderGlobal locationMoonPhasesPng field_110927_h +FD net/minecraft/client/renderer/RenderGlobal locationSunPng field_110928_i +FD net/minecraft/client/renderer/RenderGlobal locationCloudsPng field_110925_j +FD net/minecraft/client/renderer/RenderGlobal locationEndSkyPng field_110926_k +FD net/minecraft/client/renderer/RenderGlobal locationForcefieldPng field_175006_g +FD net/minecraft/client/renderer/RenderGlobal mc field_72777_q +FD net/minecraft/client/renderer/RenderGlobal renderEngine field_72770_i +FD net/minecraft/client/renderer/RenderGlobal renderManager field_175010_j +FD net/minecraft/client/renderer/RenderGlobal theWorld field_72769_h +FD net/minecraft/client/renderer/RenderGlobal chunksToUpdate field_175009_l +FD net/minecraft/client/renderer/RenderGlobal renderInfos field_72755_R +FD net/minecraft/client/renderer/RenderGlobal setTileEntities field_181024_n +FD net/minecraft/client/renderer/RenderGlobal viewFrustum field_175008_n +FD net/minecraft/client/renderer/RenderGlobal starGLCallList field_72772_v +FD net/minecraft/client/renderer/RenderGlobal glSkyList field_72771_w +FD net/minecraft/client/renderer/RenderGlobal glSkyList2 field_72781_x +FD net/minecraft/client/renderer/RenderGlobal vertexBufferFormat field_175014_r +FD net/minecraft/client/renderer/RenderGlobal starVBO field_175013_s +FD net/minecraft/client/renderer/RenderGlobal skyVBO field_175012_t +FD net/minecraft/client/renderer/RenderGlobal sky2VBO field_175011_u +FD net/minecraft/client/renderer/RenderGlobal cloudTickCounter field_72773_u +FD net/minecraft/client/renderer/RenderGlobal damagedBlocks field_72738_E +FD net/minecraft/client/renderer/RenderGlobal mapSoundPositions field_147593_P +FD net/minecraft/client/renderer/RenderGlobal destroyBlockIcons field_94141_F +FD net/minecraft/client/renderer/RenderGlobal$1 field_85101_a field_85101_a +FD net/minecraft/client/renderer/RenderGlobal$1 field_85099_b field_85099_b +FD net/minecraft/client/renderer/RenderGlobal$1 field_85100_c field_85100_c +FD net/minecraft/client/renderer/RenderGlobal$1 field_85098_d field_85098_d +FD net/minecraft/client/renderer/RenderGlobal$2 field_178037_a field_178037_a +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation renderChunk field_178036_a +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation facing field_178034_b +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation setFacing field_178035_c +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation counter field_178032_d +FD net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation field_178033_e field_178033_e +FD net/minecraft/client/renderer/ImageBufferDownload imageData field_78438_a +FD net/minecraft/client/renderer/ImageBufferDownload imageWidth field_78436_b +FD net/minecraft/client/renderer/ImageBufferDownload imageHeight field_78437_c +FD net/minecraft/client/shader/Framebuffer framebufferTextureWidth field_147622_a +FD net/minecraft/client/shader/Framebuffer framebufferTextureHeight field_147620_b +FD net/minecraft/client/shader/Framebuffer framebufferWidth field_147621_c +FD net/minecraft/client/shader/Framebuffer framebufferHeight field_147618_d +FD net/minecraft/client/shader/Framebuffer useDepth field_147619_e +FD net/minecraft/client/shader/Framebuffer framebufferObject field_147616_f +FD net/minecraft/client/shader/Framebuffer framebufferTexture field_147617_g +FD net/minecraft/client/shader/Framebuffer depthBuffer field_147624_h +FD net/minecraft/client/shader/Framebuffer framebufferColor field_147625_i +FD net/minecraft/client/shader/Framebuffer framebufferFilter field_147623_j +FD net/minecraft/client/renderer/Tessellator worldRenderer field_178183_a +FD net/minecraft/client/renderer/Tessellator vboUploader field_178182_b +FD net/minecraft/client/renderer/Tessellator instance field_78398_a +FD net/minecraft/client/renderer/VertexBufferUploader vertexBuffer field_178179_a +FD net/minecraft/client/renderer/ViewFrustum renderGlobal field_178169_a +FD net/minecraft/client/renderer/ViewFrustum world field_178167_b +FD net/minecraft/client/renderer/ViewFrustum countChunksY field_178168_c +FD net/minecraft/client/renderer/ViewFrustum countChunksX field_178165_d +FD net/minecraft/client/renderer/ViewFrustum countChunksZ field_178166_e +FD net/minecraft/client/renderer/ViewFrustum renderChunks field_178164_f +FD net/minecraft/client/renderer/BlockModelShapes bakedModelStore field_178129_a +FD net/minecraft/client/renderer/BlockModelShapes blockStateMapper field_178127_b +FD net/minecraft/client/renderer/BlockModelShapes modelManager field_178128_c +FD net/minecraft/client/renderer/BlockModelShapes$1 field_178143_a field_178143_a +FD net/minecraft/client/renderer/BlockModelShapes$2 field_178136_a field_178136_a +FD net/minecraft/client/renderer/BlockModelShapes$3 field_178137_a field_178137_a +FD net/minecraft/client/renderer/BlockModelShapes$4 field_178134_a field_178134_a +FD net/minecraft/client/renderer/BlockModelShapes$5 field_178135_a field_178135_a +FD net/minecraft/client/renderer/BlockModelShapes$6 field_178139_a field_178139_a +FD net/minecraft/client/renderer/BlockModelShapes$7 field_178138_a field_178138_a +FD net/minecraft/client/renderer/BlockModelShapes$8 field_178257_a field_178257_a +FD net/minecraft/client/renderer/BlockRendererDispatcher blockModelShapes field_175028_a +FD net/minecraft/client/renderer/BlockRendererDispatcher gameSettings field_175026_b +FD net/minecraft/client/renderer/BlockRendererDispatcher blockModelRenderer field_175027_c +FD net/minecraft/client/renderer/BlockRendererDispatcher chestRenderer field_175024_d +FD net/minecraft/client/renderer/BlockRendererDispatcher fluidRenderer field_175025_e +FD net/minecraft/client/renderer/BlockFluidRenderer atlasSpritesLava field_178272_a +FD net/minecraft/client/renderer/BlockFluidRenderer atlasSpritesWater field_178271_b +FD net/minecraft/client/renderer/BlockModelRenderer$1 field_178290_a field_178290_a +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo DOWN DOWN +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo UP UP +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo NORTH NORTH +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo SOUTH SOUTH +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo WEST WEST +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo EAST EAST +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178276_g field_178276_g +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178288_h field_178288_h +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178289_i field_178289_i +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178286_j field_178286_j +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178287_k field_178287_k +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178284_l field_178284_l +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo field_178285_m field_178285_m +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo VALUES field_178282_n +FD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo $VALUES $VALUES +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace field_178208_a field_178208_a +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace vertexColorMultiplier field_178206_b +FD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace vertexBrightness field_178207_c +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations DOWN DOWN +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations UP UP +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations NORTH NORTH +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations SOUTH SOUTH +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations WEST WEST +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations EAST EAST +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178191_g field_178191_g +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178200_h field_178200_h +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178201_i field_178201_i +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations field_178198_j field_178198_j +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations VALUES field_178199_k +FD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations $VALUES $VALUES +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation DOWN DOWN +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation UP UP +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation NORTH NORTH +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation SOUTH SOUTH +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation WEST WEST +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation EAST EAST +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_DOWN FLIP_DOWN +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_UP FLIP_UP +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_NORTH FLIP_NORTH +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_SOUTH FLIP_SOUTH +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_WEST FLIP_WEST +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation FLIP_EAST FLIP_EAST +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation field_178229_m field_178229_m +FD net/minecraft/client/renderer/BlockModelRenderer$Orientation $VALUES $VALUES +FD net/minecraft/client/renderer/block/model/BakedQuad vertexData field_178215_a +FD net/minecraft/client/renderer/block/model/BakedQuad tintIndex field_178213_b +FD net/minecraft/client/renderer/block/model/BakedQuad face field_178214_c +FD net/minecraft/client/renderer/block/model/BlockPart positionFrom field_178241_a +FD net/minecraft/client/renderer/block/model/BlockPart positionTo field_178239_b +FD net/minecraft/client/renderer/block/model/BlockPart mapFaces field_178240_c +FD net/minecraft/client/renderer/block/model/BlockPart partRotation field_178237_d +FD net/minecraft/client/renderer/block/model/BlockPart shade field_178238_e +FD net/minecraft/client/renderer/block/model/BlockPart$1 field_178234_a field_178234_a +FD net/minecraft/client/renderer/block/model/BlockPartFace FACING_DEFAULT field_178246_a +FD net/minecraft/client/renderer/block/model/BlockPartFace cullFace field_178244_b +FD net/minecraft/client/renderer/block/model/BlockPartFace tintIndex field_178245_c +FD net/minecraft/client/renderer/block/model/BlockPartFace texture field_178242_d +FD net/minecraft/client/renderer/block/model/BlockPartFace blockFaceUV field_178243_e +FD net/minecraft/client/renderer/block/model/BlockPartRotation origin field_178344_a +FD net/minecraft/client/renderer/block/model/BlockPartRotation axis field_178342_b +FD net/minecraft/client/renderer/block/model/BlockPartRotation angle field_178343_c +FD net/minecraft/client/renderer/block/model/BlockPartRotation rescale field_178341_d +FD net/minecraft/client/renderer/block/model/BlockFaceUV uvs field_178351_a +FD net/minecraft/client/renderer/block/model/BlockFaceUV rotation field_178350_b +FD net/minecraft/client/renderer/block/model/ModelBlock SERIALIZER field_178319_a +FD net/minecraft/client/renderer/block/model/ModelBlock name field_178317_b +FD net/minecraft/client/renderer/block/model/ModelBlock textures field_178318_c +FD net/minecraft/client/renderer/block/model/ModelBlock parent field_178315_d +FD net/minecraft/client/renderer/block/model/ModelBlock parentLocation field_178316_e +FD net/minecraft/client/renderer/block/model/ModelBlock LOGGER field_178313_f +FD net/minecraft/client/renderer/block/model/ModelBlock elements field_178314_g +FD net/minecraft/client/renderer/block/model/ModelBlock gui3d field_178321_h +FD net/minecraft/client/renderer/block/model/ModelBlock ambientOcclusion field_178322_i +FD net/minecraft/client/renderer/block/model/ModelBlock cameraTransforms field_178320_j +FD net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep model field_178324_a +FD net/minecraft/client/renderer/block/model/ModelBlock$Bookkeep modelExt field_178323_b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition GSON field_178333_a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition mapVariants field_178332_b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$MissingVariantException field_178438_a field_178438_a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant modelLocation field_178437_a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant modelRotation field_178435_b +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant uvLock field_178436_c +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant weight field_178434_d +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants name field_178423_a +FD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants listVariants field_178422_b +FD net/minecraft/client/renderer/block/model/BreakingFour texture field_178218_d +FD net/minecraft/client/renderer/block/model/BreakingFour$1 field_178419_a field_178419_a +FD net/minecraft/client/renderer/block/model/FaceBakery SCALE_ROTATION_22_5 field_178418_a +FD net/minecraft/client/renderer/block/model/FaceBakery SCALE_ROTATION_GENERAL field_178417_b +FD net/minecraft/client/renderer/block/model/FaceBakery$1 field_178400_a field_178400_a +FD net/minecraft/client/renderer/block/model/FaceBakery$1 field_178399_b field_178399_b +FD net/minecraft/client/renderer/block/model/ItemModelGenerator LAYERS field_178398_a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$1 field_178390_a field_178390_a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span spanFacing field_178389_a +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178387_b field_178387_b +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178388_c field_178388_c +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span field_178386_d field_178386_d +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing UP UP +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing DOWN DOWN +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing LEFT LEFT +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing RIGHT RIGHT +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing facing field_178376_e +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing field_178373_f field_178373_f +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing field_178374_g field_178374_g +FD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing $VALUES $VALUES +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f DEFAULT field_178366_a +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f rotation field_178364_b +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f translation field_178365_c +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f scale field_178363_d +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer ROTATION_DEFAULT field_178362_a +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer TRANSLATION_DEFAULT field_178360_b +FD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer SCALE_DEFAULT field_178361_c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms DEFAULT field_178357_a +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181690_b field_181690_b +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181691_c field_181691_c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181692_d field_181692_d +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181693_e field_181693_e +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181694_f field_181694_f +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181695_g field_181695_g +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181696_h field_181696_h +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181697_i field_181697_i +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms field_181698_j field_181698_j +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms thirdPerson field_178355_b +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms firstPerson field_178356_c +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms head field_178353_d +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms gui field_178354_e +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms ground field_181699_o +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms fixed field_181700_p +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$1 field_181684_a field_181684_a +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType NONE NONE +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType THIRD_PERSON THIRD_PERSON +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType FIRST_PERSON FIRST_PERSON +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType HEAD HEAD +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType GUI GUI +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType GROUND GROUND +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType FIXED FIXED +FD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType $VALUES $VALUES +FD net/minecraft/client/renderer/block/statemap/StateMapperBase mapStateModelLocations field_178133_b +FD net/minecraft/client/renderer/block/statemap/BlockStateMapper blockStateMap field_178450_a +FD net/minecraft/client/renderer/block/statemap/BlockStateMapper setBuiltInBlocks field_178449_b +FD net/minecraft/client/renderer/block/statemap/StateMap name field_178142_a +FD net/minecraft/client/renderer/block/statemap/StateMap suffix field_178141_c +FD net/minecraft/client/renderer/block/statemap/StateMap ignored field_178140_d +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder name field_178445_a +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder suffix field_178443_b +FD net/minecraft/client/renderer/block/statemap/StateMap$Builder ignored field_178444_c +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer DESIGNS field_178466_c +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer BANNERTEXTURES field_178464_d +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer bannerModel field_178465_e +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture systemTime field_178472_a +FD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer$TimedBannerTexture bannerTexture field_178471_b +FD net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer beaconBeam field_147523_b +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher instance field_147556_a +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerX field_147554_b +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerY field_147555_c +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher staticPlayerZ field_147552_d +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderEngine field_147553_e +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher worldObj field_147550_f +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entity field_147551_g +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityYaw field_147562_h +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityPitch field_147563_i +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityX field_147560_j +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityY field_147561_k +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher entityZ field_147558_l +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher mapSpecialRenderers field_147559_m +FD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher fontRenderer field_147557_n +FD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer DESTROY_STAGES field_178460_a +FD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer rendererDispatcher field_147501_a +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureTrappedDouble field_147507_b +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureChristmasDouble field_147508_c +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureNormalDouble field_147505_d +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureTrapped field_147506_e +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureChristmas field_147503_f +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer textureNormal field_147504_g +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer simpleChest field_147510_h +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer largeChest field_147511_i +FD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer isChristmas field_147509_j +FD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer TEXTURE_BOOK field_147540_b +FD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer field_147541_c field_147541_c +FD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer ENDER_CHEST_TEXTURE field_147520_b +FD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer field_147521_c field_147521_c +FD net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer blockRenderer field_178462_c +FD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer SIGN_TEXTURE field_147513_b +FD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer model field_147514_c +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer instance field_147536_b +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer SKELETON_TEXTURES field_147537_c +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer WITHER_SKELETON_TEXTURES field_147534_d +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer ZOMBIE_TEXTURES field_147535_e +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer CREEPER_TEXTURES field_147532_f +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer skeletonHead field_178467_h +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer humanoidHead field_178468_i +FD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer$1 field_178458_a field_178458_a +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer field_147528_b field_147528_b +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer END_SKY_TEXTURE field_147529_c +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer END_PORTAL_TEXTURE field_147526_d +FD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer field_147527_e field_147527_e +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator renderChunk field_178553_a +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator lock field_178551_b +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator listFinishRunnables field_178552_c +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator type field_178549_d +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator regionRenderCacheBuilder field_178550_e +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator compiledChunk field_178547_f +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator status field_178548_g +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator finished field_178554_h +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status PENDING PENDING +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status COMPILING COMPILING +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status UPLOADING UPLOADING +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status DONE DONE +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status $VALUES $VALUES +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type REBUILD_CHUNK REBUILD_CHUNK +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type RESORT_TRANSPARENCY RESORT_TRANSPARENCY +FD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type $VALUES $VALUES +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher logger field_178523_a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher threadFactory field_178521_b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher listThreadedWorkers field_178522_c +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueChunkUpdates field_178519_d +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueFreeRenderBuilders field_178520_e +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher worldVertexUploader field_178517_f +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher vertexUploader field_178518_g +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher queueChunkUploads field_178524_h +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher renderWorker field_178525_i +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 field_178527_a field_178527_a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 field_178526_b field_178526_b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 field_178529_a field_178529_a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 field_178528_b field_178528_b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178534_a field_178534_a +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178532_b field_178532_b +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178533_c field_178533_c +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178530_d field_178530_d +FD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 field_178531_e field_178531_e +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker LOGGER field_152478_a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker chunkRenderDispatcher field_178477_b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker regionRenderCacheBuilder field_178478_c +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 field_178480_a field_178480_a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 field_178479_b field_178479_b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178484_a field_178484_a +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178482_b field_178482_b +FD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 field_178483_c field_178483_c +FD net/minecraft/client/renderer/chunk/CompiledChunk DUMMY field_178502_a +FD net/minecraft/client/renderer/chunk/CompiledChunk layersUsed field_178500_b +FD net/minecraft/client/renderer/chunk/CompiledChunk layersStarted field_178501_c +FD net/minecraft/client/renderer/chunk/CompiledChunk empty field_178498_d +FD net/minecraft/client/renderer/chunk/CompiledChunk tileEntities field_178499_e +FD net/minecraft/client/renderer/chunk/CompiledChunk setVisibility field_178496_f +FD net/minecraft/client/renderer/chunk/CompiledChunk state field_178497_g +FD net/minecraft/client/renderer/chunk/ListedRenderChunk baseDisplayList field_178601_d +FD net/minecraft/client/renderer/chunk/RenderChunk renderChunksUpdated field_178592_a +FD net/minecraft/client/renderer/chunk/RenderChunk compiledChunk field_178590_b +FD net/minecraft/client/renderer/chunk/RenderChunk boundingBox field_178591_c +FD net/minecraft/client/renderer/chunk/RenderChunk world field_178588_d +FD net/minecraft/client/renderer/chunk/RenderChunk renderGlobal field_178589_e +FD net/minecraft/client/renderer/chunk/RenderChunk position field_178586_f +FD net/minecraft/client/renderer/chunk/RenderChunk lockCompileTask field_178587_g +FD net/minecraft/client/renderer/chunk/RenderChunk lockCompiledChunk field_178598_h +FD net/minecraft/client/renderer/chunk/RenderChunk compileTask field_178599_i +FD net/minecraft/client/renderer/chunk/RenderChunk setTileEntities field_181056_j +FD net/minecraft/client/renderer/chunk/RenderChunk index field_178596_j +FD net/minecraft/client/renderer/chunk/RenderChunk modelviewMatrix field_178597_k +FD net/minecraft/client/renderer/chunk/RenderChunk vertexBuffers field_178594_l +FD net/minecraft/client/renderer/chunk/RenderChunk frameIndex field_178595_m +FD net/minecraft/client/renderer/chunk/RenderChunk needsUpdate field_178593_n +FD net/minecraft/client/renderer/chunk/RenderChunk mapEnumFacing field_181702_p +FD net/minecraft/client/renderer/chunk/VisGraph field_178616_a field_178616_a +FD net/minecraft/client/renderer/chunk/VisGraph field_178614_b field_178614_b +FD net/minecraft/client/renderer/chunk/VisGraph field_178615_c field_178615_c +FD net/minecraft/client/renderer/chunk/VisGraph field_178612_d field_178612_d +FD net/minecraft/client/renderer/chunk/VisGraph field_178613_e field_178613_e +FD net/minecraft/client/renderer/chunk/VisGraph field_178611_f field_178611_f +FD net/minecraft/client/renderer/chunk/VisGraph$1 field_178617_a field_178617_a +FD net/minecraft/client/renderer/chunk/SetVisibility COUNT_FACES field_178623_a +FD net/minecraft/client/renderer/chunk/SetVisibility bitSet field_178622_b +FD net/minecraft/client/renderer/culling/ClippingHelperImpl instance field_78563_e +FD net/minecraft/client/renderer/culling/ClippingHelperImpl projectionMatrixBuffer field_78561_f +FD net/minecraft/client/renderer/culling/ClippingHelperImpl modelviewMatrixBuffer field_78562_g +FD net/minecraft/client/renderer/culling/ClippingHelperImpl field_78564_h field_78564_h +FD net/minecraft/client/renderer/culling/Frustum clippingHelper field_78552_a +FD net/minecraft/client/renderer/culling/Frustum xPosition field_78550_b +FD net/minecraft/client/renderer/culling/Frustum yPosition field_78551_c +FD net/minecraft/client/renderer/culling/Frustum zPosition field_78549_d +FD net/minecraft/client/renderer/culling/ClippingHelper frustum field_78557_a +FD net/minecraft/client/renderer/culling/ClippingHelper projectionMatrix field_178625_b +FD net/minecraft/client/renderer/culling/ClippingHelper modelviewMatrix field_178626_c +FD net/minecraft/client/renderer/culling/ClippingHelper clippingMatrix field_78554_d +FD net/minecraft/client/renderer/entity/ArmorStandRenderer TEXTURE_ARMOR_STAND field_177103_a +FD net/minecraft/client/renderer/entity/ArmorStandRenderer$1 field_177196_a field_177196_a +FD net/minecraft/client/renderer/entity/RenderArrow arrowTextures field_110780_a +FD net/minecraft/client/renderer/entity/RenderBat batTextures field_110835_a +FD net/minecraft/client/renderer/entity/RenderBlaze blazeTextures field_110837_a +FD net/minecraft/client/renderer/entity/RenderBoat modelBoat field_76998_a +FD net/minecraft/client/renderer/entity/RenderBoat boatTextures field_110782_f +FD net/minecraft/client/renderer/entity/RenderCaveSpider caveSpiderTextures field_110893_a +FD net/minecraft/client/renderer/entity/RenderChicken chickenTextures field_110920_a +FD net/minecraft/client/renderer/entity/RenderCow cowTextures field_110833_a +FD net/minecraft/client/renderer/entity/RenderCreeper creeperTextures field_110830_f +FD net/minecraft/client/renderer/tileentity/RenderEnderCrystal enderCrystalTextures field_110787_a +FD net/minecraft/client/renderer/tileentity/RenderEnderCrystal modelEnderCrystal field_76995_b +FD net/minecraft/client/renderer/entity/RenderDragon modelDragon field_77084_b +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonCrystalBeamTextures field_110843_g +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonExplodingTextures field_110842_f +FD net/minecraft/client/renderer/entity/RenderDragon enderDragonTextures field_110844_k +FD net/minecraft/client/renderer/entity/RenderEnderman endermanTextures field_110839_f +FD net/minecraft/client/renderer/entity/RenderEnderman endermanModel field_77078_a +FD net/minecraft/client/renderer/entity/RenderEnderman rnd field_77077_b +FD net/minecraft/client/renderer/entity/RenderEndermite ENDERMITE_TEXTURES field_177108_a +FD net/minecraft/client/renderer/entity/RenderManager renderEngine field_78724_e +FD net/minecraft/client/renderer/entity/RenderManager worldObj field_78722_g +FD net/minecraft/client/renderer/entity/RenderManager livingPlayer field_78734_h +FD net/minecraft/client/renderer/entity/RenderManager pointedEntity field_147941_i +FD net/minecraft/client/renderer/entity/RenderManager playerViewY field_78735_i +FD net/minecraft/client/renderer/entity/RenderManager playerViewX field_78732_j +FD net/minecraft/client/renderer/entity/RenderManager options field_78733_k +FD net/minecraft/client/renderer/entity/RenderManager viewerPosX field_78730_l +FD net/minecraft/client/renderer/entity/RenderManager viewerPosY field_78731_m +FD net/minecraft/client/renderer/entity/RenderManager viewerPosZ field_78728_n +FD net/minecraft/client/renderer/entity/RenderManager entityRenderMap field_78729_o +FD net/minecraft/client/renderer/entity/RenderManager skinMap field_178636_l +FD net/minecraft/client/renderer/entity/RenderManager playerRenderer field_178637_m +FD net/minecraft/client/renderer/entity/RenderManager textRenderer field_78736_p +FD net/minecraft/client/renderer/entity/RenderManager renderPosX field_78725_b +FD net/minecraft/client/renderer/entity/RenderManager renderPosY field_78726_c +FD net/minecraft/client/renderer/entity/RenderManager renderPosZ field_78723_d +FD net/minecraft/client/renderer/entity/RenderManager renderOutlines field_178639_r +FD net/minecraft/client/renderer/entity/RenderManager renderShadow field_178638_s +FD net/minecraft/client/renderer/entity/RenderManager debugBoundingBox field_85095_o +FD net/minecraft/client/renderer/entity/Render shadowTextures field_110778_a +FD net/minecraft/client/renderer/entity/Render renderManager field_76990_c +FD net/minecraft/client/renderer/entity/Render shadowSize field_76989_e +FD net/minecraft/client/renderer/entity/Render shadowOpaque field_76987_f +FD net/minecraft/client/renderer/entity/RenderXPOrb experienceOrbTextures field_110785_a +FD net/minecraft/client/renderer/entity/RenderFireball scale field_77002_a +FD net/minecraft/client/renderer/entity/RenderFish FISH_PARTICLES field_110792_a +FD net/minecraft/client/renderer/entity/RenderGhast ghastTextures field_110869_a +FD net/minecraft/client/renderer/entity/RenderGhast ghastShootingTextures field_110868_f +FD net/minecraft/client/renderer/entity/RenderGiantZombie zombieTextures field_110871_a +FD net/minecraft/client/renderer/entity/RenderGiantZombie scale field_77073_a +FD net/minecraft/client/renderer/entity/RenderGiantZombie$1 field_177197_a field_177197_a +FD net/minecraft/client/renderer/entity/RenderGuardian field_177115_a field_177115_a +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_TEXTURE field_177114_e +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_ELDER_TEXTURE field_177116_j +FD net/minecraft/client/renderer/entity/RenderGuardian GUARDIAN_BEAM_TEXTURE field_177117_k +FD net/minecraft/client/renderer/entity/RenderHorse field_110852_a field_110852_a +FD net/minecraft/client/renderer/entity/RenderHorse whiteHorseTextures field_110850_f +FD net/minecraft/client/renderer/entity/RenderHorse muleTextures field_110851_g +FD net/minecraft/client/renderer/entity/RenderHorse donkeyTextures field_110855_h +FD net/minecraft/client/renderer/entity/RenderHorse zombieHorseTextures field_110854_k +FD net/minecraft/client/renderer/entity/RenderHorse skeletonHorseTextures field_110853_l +FD net/minecraft/client/renderer/entity/RenderBiped modelBipedMain field_77071_a +FD net/minecraft/client/renderer/entity/RenderBiped field_77070_b field_77070_b +FD net/minecraft/client/renderer/entity/RenderBiped DEFAULT_RES_LOC field_177118_j +FD net/minecraft/client/renderer/entity/RenderEntityItem itemRenderer field_177080_a +FD net/minecraft/client/renderer/entity/RenderEntityItem field_177079_e field_177079_e +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mapBackgroundTextures field_110789_a +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mc field_147917_g +FD net/minecraft/client/renderer/tileentity/RenderItemFrame itemFrameModel field_177072_f +FD net/minecraft/client/renderer/tileentity/RenderItemFrame mapModel field_177073_g +FD net/minecraft/client/renderer/tileentity/RenderItemFrame itemRenderer field_177074_h +FD net/minecraft/client/renderer/entity/RenderItem zLevel field_77023_b +FD net/minecraft/client/renderer/entity/RenderItem RES_ITEM_GLINT field_110798_h +FD net/minecraft/client/renderer/entity/RenderItem notRenderingEffectsInGUI field_175058_l +FD net/minecraft/client/renderer/entity/RenderItem itemModelMesher field_175059_m +FD net/minecraft/client/renderer/entity/RenderItem textureManager field_175057_n +FD net/minecraft/client/renderer/entity/RenderItem$1 field_147929_a field_147929_a +FD net/minecraft/client/renderer/entity/RenderItem$1 field_147928_b field_147928_b +FD net/minecraft/client/renderer/entity/RenderItem$2 field_147926_a field_147926_a +FD net/minecraft/client/renderer/entity/RenderItem$2 field_147925_b field_147925_b +FD net/minecraft/client/renderer/entity/RenderItem$3 field_147935_a field_147935_a +FD net/minecraft/client/renderer/entity/RenderItem$3 field_147934_b field_147934_b +FD net/minecraft/client/renderer/entity/RenderItem$4 field_147932_a field_147932_a +FD net/minecraft/client/renderer/entity/RenderItem$4 field_147931_b field_147931_b +FD net/minecraft/client/renderer/entity/RenderItem$5 field_178117_a field_178117_a +FD net/minecraft/client/renderer/entity/RenderItem$6 field_178118_a field_178118_a +FD net/minecraft/client/renderer/entity/RenderItem$7 field_178115_a field_178115_a +FD net/minecraft/client/renderer/entity/RenderItem$8 field_178116_a field_178116_a +FD net/minecraft/client/renderer/entity/RenderItem$9 field_178114_a field_178114_a +FD net/minecraft/client/renderer/entity/RenderMagmaCube magmaCubeTextures field_110873_a +FD net/minecraft/client/renderer/entity/RenderLeashKnot leashKnotTextures field_110802_a +FD net/minecraft/client/renderer/entity/RenderLeashKnot leashKnotModel field_110801_f +FD net/minecraft/client/renderer/entity/RendererLivingEntity logger field_147923_a +FD net/minecraft/client/renderer/entity/RendererLivingEntity textureBrightness field_177096_e +FD net/minecraft/client/renderer/entity/RendererLivingEntity mainModel field_77045_g +FD net/minecraft/client/renderer/entity/RendererLivingEntity brightnessBuffer field_177095_g +FD net/minecraft/client/renderer/entity/RendererLivingEntity layerRenderers field_177097_h +FD net/minecraft/client/renderer/entity/RendererLivingEntity renderOutlines field_177098_i +FD net/minecraft/client/renderer/entity/RendererLivingEntity$1 field_178679_a field_178679_a +FD net/minecraft/client/renderer/entity/RenderMinecart modelMinecart field_77013_a +FD net/minecraft/client/renderer/entity/RenderMinecart minecartTextures field_110804_g +FD net/minecraft/client/renderer/entity/RenderMooshroom mooshroomTextures field_110880_a +FD net/minecraft/client/renderer/entity/RenderOcelot blackOcelotTextures field_110877_a +FD net/minecraft/client/renderer/entity/RenderOcelot ocelotTextures field_110875_f +FD net/minecraft/client/renderer/entity/RenderOcelot redOcelotTextures field_110876_g +FD net/minecraft/client/renderer/entity/RenderOcelot siameseOcelotTextures field_110878_h +FD net/minecraft/client/renderer/entity/RenderPainting KRISTOFFER_PAINTING_TEXTURE field_110807_a +FD net/minecraft/client/renderer/entity/RenderPig pigTextures field_110887_f +FD net/minecraft/client/renderer/entity/RenderPigZombie ZOMBIE_PIGMAN_TEXTURE field_177120_j +FD net/minecraft/client/renderer/entity/RenderPigZombie$1 field_177198_a field_177198_a +FD net/minecraft/client/renderer/entity/RenderRabbit BROWN field_177127_a +FD net/minecraft/client/renderer/entity/RenderRabbit WHITE field_177126_e +FD net/minecraft/client/renderer/entity/RenderRabbit BLACK field_177132_j +FD net/minecraft/client/renderer/entity/RenderRabbit GOLD field_177133_k +FD net/minecraft/client/renderer/entity/RenderRabbit SALT field_177130_l +FD net/minecraft/client/renderer/entity/RenderRabbit WHITE_SPLOTCHED field_177131_m +FD net/minecraft/client/renderer/entity/RenderRabbit TOAST field_177128_n +FD net/minecraft/client/renderer/entity/RenderRabbit CAERBANNOG field_177129_o +FD net/minecraft/client/renderer/entity/RenderSheep shearedSheepTextures field_110884_f +FD net/minecraft/client/renderer/entity/RenderSilverfish silverfishTextures field_110882_a +FD net/minecraft/client/renderer/entity/RenderSkeleton skeletonTextures field_110862_k +FD net/minecraft/client/renderer/entity/RenderSkeleton witherSkeletonTextures field_110861_l +FD net/minecraft/client/renderer/entity/RenderSkeleton$1 field_177199_a field_177199_a +FD net/minecraft/client/renderer/entity/RenderSlime slimeTextures field_110897_a +FD net/minecraft/client/renderer/entity/RenderSnowMan snowManTextures field_110895_a +FD net/minecraft/client/renderer/entity/RenderSpider spiderTextures field_110890_f +FD net/minecraft/client/renderer/entity/RenderSquid squidTextures field_110901_a +FD net/minecraft/client/renderer/entity/RenderSnowball field_177084_a field_177084_a +FD net/minecraft/client/renderer/entity/RenderSnowball field_177083_e field_177083_e +FD net/minecraft/client/renderer/entity/RenderIronGolem ironGolemTextures field_110899_a +FD net/minecraft/client/renderer/entity/RenderVillager villagerTextures field_110903_f +FD net/minecraft/client/renderer/entity/RenderVillager farmerVillagerTextures field_110904_g +FD net/minecraft/client/renderer/entity/RenderVillager librarianVillagerTextures field_110908_h +FD net/minecraft/client/renderer/entity/RenderVillager priestVillagerTextures field_110907_k +FD net/minecraft/client/renderer/entity/RenderVillager smithVillagerTextures field_110905_l +FD net/minecraft/client/renderer/entity/RenderVillager butcherVillagerTextures field_110906_m +FD net/minecraft/client/renderer/entity/RenderWitch witchTextures field_110910_a +FD net/minecraft/client/renderer/entity/RenderWither invulnerableWitherTextures field_110913_a +FD net/minecraft/client/renderer/entity/RenderWither witherTextures field_110912_f +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull invulnerableWitherTextures field_110811_a +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull witherTextures field_110810_f +FD net/minecraft/client/renderer/tileentity/RenderWitherSkull skeletonHeadModel field_82401_a +FD net/minecraft/client/renderer/entity/RenderWolf wolfTextures field_110917_a +FD net/minecraft/client/renderer/entity/RenderWolf tamedWolfTextures field_110915_f +FD net/minecraft/client/renderer/entity/RenderWolf anrgyWolfTextures field_110916_g +FD net/minecraft/client/renderer/entity/RenderZombie zombieTextures field_110865_p +FD net/minecraft/client/renderer/entity/RenderZombie zombieVillagerTextures field_110864_q +FD net/minecraft/client/renderer/entity/RenderZombie field_82434_o field_82434_o +FD net/minecraft/client/renderer/entity/RenderZombie zombieVillagerModel field_82432_p +FD net/minecraft/client/renderer/entity/RenderZombie field_177121_n field_177121_n +FD net/minecraft/client/renderer/entity/RenderZombie field_177122_o field_177122_o +FD net/minecraft/client/renderer/entity/RenderZombie$1 field_177200_a field_177200_a +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderer field_177190_a +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase ENCHANTED_ITEM_GLINT_RES field_177188_b +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase modelLeggings field_177189_c +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase modelArmor field_177186_d +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase alpha field_177187_e +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorR field_177184_f +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorG field_177185_g +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase colorB field_177192_h +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase skipRenderGlint field_177193_i +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase ARMOR_TEXTURE_RES_MAP field_177191_j +FD net/minecraft/client/renderer/entity/layers/LayerArmorBase$1 field_178747_a field_178747_a +FD net/minecraft/client/renderer/entity/layers/LayerArrow field_177168_a field_177168_a +FD net/minecraft/client/renderer/entity/layers/LayerCape playerRenderer field_177167_a +FD net/minecraft/client/renderer/entity/layers/LayerHeldBlock endermanRenderer field_177174_a +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge LIGHTNING_TEXTURE field_177172_a +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge creeperRenderer field_177170_b +FD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge creeperModel field_177171_c +FD net/minecraft/client/renderer/entity/layers/LayerCustomHead field_177209_a field_177209_a +FD net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head playerRenderer field_177208_a +FD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes TEXTURE field_177212_a +FD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes dragonRenderer field_177211_b +FD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes RES_ENDERMAN_EYES field_177203_a +FD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes endermanRenderer field_177202_b +FD net/minecraft/client/renderer/entity/layers/LayerHeldItem livingEntityRenderer field_177206_a +FD net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom mooshroomRenderer field_177205_a +FD net/minecraft/client/renderer/entity/layers/LayerSaddle TEXTURE field_177158_a +FD net/minecraft/client/renderer/entity/layers/LayerSaddle pigRenderer field_177156_b +FD net/minecraft/client/renderer/entity/layers/LayerSaddle pigModel field_177157_c +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool TEXTURE field_177165_a +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool sheepRenderer field_177163_b +FD net/minecraft/client/renderer/entity/layers/LayerSheepWool sheepModel field_177164_c +FD net/minecraft/client/renderer/entity/layers/LayerSlimeGel slimeRenderer field_177161_a +FD net/minecraft/client/renderer/entity/layers/LayerSlimeGel slimeModel field_177160_b +FD net/minecraft/client/renderer/entity/layers/LayerSnowmanHead snowManRenderer field_177152_a +FD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes SPIDER_EYES field_177150_a +FD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes spiderRenderer field_177149_b +FD net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower ironGolemRenderer field_177154_a +FD net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch witchRenderer field_177144_a +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura WITHER_ARMOR field_177217_a +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura witherRenderer field_177215_b +FD net/minecraft/client/renderer/entity/layers/LayerWitherAura witherModel field_177216_c +FD net/minecraft/client/renderer/entity/layers/LayerWolfCollar WOLF_COLLAR field_177147_a +FD net/minecraft/client/renderer/entity/layers/LayerWolfCollar wolfRenderer field_177146_b +FD net/minecraft/client/renderer/entity/RenderPlayer smallArms field_177140_a +FD net/minecraft/client/util/JsonBlendingMode field_148118_a field_148118_a +FD net/minecraft/client/util/JsonBlendingMode field_148116_b field_148116_b +FD net/minecraft/client/util/JsonBlendingMode field_148117_c field_148117_c +FD net/minecraft/client/util/JsonBlendingMode field_148114_d field_148114_d +FD net/minecraft/client/util/JsonBlendingMode field_148115_e field_148115_e +FD net/minecraft/client/util/JsonBlendingMode field_148112_f field_148112_f +FD net/minecraft/client/util/JsonBlendingMode field_148113_g field_148113_g +FD net/minecraft/client/util/JsonBlendingMode field_148119_h field_148119_h +FD net/minecraft/client/shader/ShaderManager logger field_148003_a +FD net/minecraft/client/shader/ShaderManager defaultShaderUniform field_148001_b +FD net/minecraft/client/shader/ShaderManager staticShaderManager field_148002_c +FD net/minecraft/client/shader/ShaderManager currentProgram field_147999_d +FD net/minecraft/client/shader/ShaderManager field_148000_e field_148000_e +FD net/minecraft/client/shader/ShaderManager shaderSamplers field_147997_f +FD net/minecraft/client/shader/ShaderManager samplerNames field_147998_g +FD net/minecraft/client/shader/ShaderManager shaderSamplerLocations field_148010_h +FD net/minecraft/client/shader/ShaderManager shaderUniforms field_148011_i +FD net/minecraft/client/shader/ShaderManager shaderUniformLocations field_148008_j +FD net/minecraft/client/shader/ShaderManager mappedShaderUniforms field_148009_k +FD net/minecraft/client/shader/ShaderManager program field_148006_l +FD net/minecraft/client/shader/ShaderManager programFilename field_148007_m +FD net/minecraft/client/shader/ShaderManager useFaceCulling field_148004_n +FD net/minecraft/client/shader/ShaderManager isDirty field_148005_o +FD net/minecraft/client/shader/ShaderManager field_148016_p field_148016_p +FD net/minecraft/client/shader/ShaderManager attribLocations field_148015_q +FD net/minecraft/client/shader/ShaderManager attributes field_148014_r +FD net/minecraft/client/shader/ShaderManager vertexShaderLoader field_148013_s +FD net/minecraft/client/shader/ShaderManager fragmentShaderLoader field_148012_t +FD net/minecraft/client/shader/ShaderGroup mainFramebuffer field_148035_a +FD net/minecraft/client/shader/ShaderGroup resourceManager field_148033_b +FD net/minecraft/client/shader/ShaderGroup shaderGroupName field_148034_c +FD net/minecraft/client/shader/ShaderGroup listShaders field_148031_d +FD net/minecraft/client/shader/ShaderGroup mapFramebuffers field_148032_e +FD net/minecraft/client/shader/ShaderGroup listFramebuffers field_148029_f +FD net/minecraft/client/shader/ShaderGroup projectionMatrix field_148030_g +FD net/minecraft/client/shader/ShaderGroup mainFramebufferWidth field_148038_h +FD net/minecraft/client/shader/ShaderGroup mainFramebufferHeight field_148039_i +FD net/minecraft/client/shader/ShaderGroup field_148036_j field_148036_j +FD net/minecraft/client/shader/ShaderGroup field_148037_k field_148037_k +FD net/minecraft/client/shader/Shader framebufferIn field_148052_a +FD net/minecraft/client/shader/Shader framebufferOut field_148050_b +FD net/minecraft/client/shader/Shader manager field_148051_c +FD net/minecraft/client/shader/Shader listAuxFramebuffers field_148048_d +FD net/minecraft/client/shader/Shader listAuxNames field_148049_e +FD net/minecraft/client/shader/Shader listAuxWidths field_148046_f +FD net/minecraft/client/shader/Shader listAuxHeights field_148047_g +FD net/minecraft/client/shader/Shader projectionMatrix field_148053_h +FD net/minecraft/client/shader/ShaderLoader shaderType field_148061_a +FD net/minecraft/client/shader/ShaderLoader shaderFilename field_148059_b +FD net/minecraft/client/shader/ShaderLoader shader field_148060_c +FD net/minecraft/client/shader/ShaderLoader shaderAttachCount field_148058_d +FD net/minecraft/client/shader/ShaderLoader$ShaderType VERTEX VERTEX +FD net/minecraft/client/shader/ShaderLoader$ShaderType FRAGMENT FRAGMENT +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderName field_148072_c +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderExtension field_148069_d +FD net/minecraft/client/shader/ShaderLoader$ShaderType shaderMode field_148070_e +FD net/minecraft/client/shader/ShaderLoader$ShaderType loadedShaders field_148067_f +FD net/minecraft/client/shader/ShaderLoader$ShaderType $VALUES $VALUES +FD net/minecraft/client/shader/ShaderLinkHelper logger field_148080_a +FD net/minecraft/client/shader/ShaderLinkHelper staticShaderLinkHelper field_148079_b +FD net/minecraft/client/shader/ShaderUniform logger field_148104_a +FD net/minecraft/client/shader/ShaderUniform uniformLocation field_148102_b +FD net/minecraft/client/shader/ShaderUniform uniformCount field_148103_c +FD net/minecraft/client/shader/ShaderUniform uniformType field_148100_d +FD net/minecraft/client/shader/ShaderUniform uniformIntBuffer field_148101_e +FD net/minecraft/client/shader/ShaderUniform uniformFloatBuffer field_148098_f +FD net/minecraft/client/shader/ShaderUniform shaderName field_148099_g +FD net/minecraft/client/shader/ShaderUniform dirty field_148105_h +FD net/minecraft/client/shader/ShaderUniform shaderManager field_148106_i +FD net/minecraft/client/renderer/texture/AbstractTexture glTextureId field_110553_a +FD net/minecraft/client/renderer/texture/AbstractTexture blur field_174940_b +FD net/minecraft/client/renderer/texture/AbstractTexture mipmap field_174941_c +FD net/minecraft/client/renderer/texture/AbstractTexture blurLast field_174938_d +FD net/minecraft/client/renderer/texture/AbstractTexture mipmapLast field_174939_e +FD net/minecraft/client/renderer/texture/DynamicTexture dynamicTextureData field_110566_b +FD net/minecraft/client/renderer/texture/DynamicTexture width field_94233_j +FD net/minecraft/client/renderer/texture/DynamicTexture height field_94234_k +FD net/minecraft/client/renderer/ThreadDownloadImageData logger field_147644_c +FD net/minecraft/client/renderer/ThreadDownloadImageData threadDownloadCounter field_147643_d +FD net/minecraft/client/renderer/ThreadDownloadImageData cacheFile field_152434_e +FD net/minecraft/client/renderer/ThreadDownloadImageData imageUrl field_110562_b +FD net/minecraft/client/renderer/ThreadDownloadImageData imageBuffer field_110563_c +FD net/minecraft/client/renderer/ThreadDownloadImageData bufferedImage field_110560_d +FD net/minecraft/client/renderer/ThreadDownloadImageData imageThread field_110561_e +FD net/minecraft/client/renderer/ThreadDownloadImageData textureUploaded field_110559_g +FD net/minecraft/client/renderer/ThreadDownloadImageData$1 field_110932_a field_110932_a +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture LOG field_174947_f +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture textureLocation field_174948_g +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture field_174949_h field_174949_h +FD net/minecraft/client/renderer/texture/LayeredColorMaskTexture field_174950_i field_174950_i +FD net/minecraft/client/renderer/texture/LayeredTexture layeredTextureNames field_110567_b +FD net/minecraft/client/renderer/texture/LayeredTexture logger field_147638_c +FD net/minecraft/client/renderer/texture/SimpleTexture textureLocation field_110568_b +FD net/minecraft/client/renderer/texture/SimpleTexture logger field_147639_c +FD net/minecraft/client/renderer/texture/Stitcher mipmapLevelStitcher field_147971_a +FD net/minecraft/client/renderer/texture/Stitcher setStitchHolders field_94319_a +FD net/minecraft/client/renderer/texture/Stitcher stitchSlots field_94317_b +FD net/minecraft/client/renderer/texture/Stitcher currentWidth field_94318_c +FD net/minecraft/client/renderer/texture/Stitcher currentHeight field_94315_d +FD net/minecraft/client/renderer/texture/Stitcher maxWidth field_94316_e +FD net/minecraft/client/renderer/texture/Stitcher maxHeight field_94313_f +FD net/minecraft/client/renderer/texture/Stitcher forcePowerOf2 field_94314_g +FD net/minecraft/client/renderer/texture/Stitcher maxTileDimension field_94323_h +FD net/minecraft/client/renderer/texture/Stitcher$Holder theTexture field_98151_a +FD net/minecraft/client/renderer/texture/Stitcher$Holder width field_94204_c +FD net/minecraft/client/renderer/texture/Stitcher$Holder height field_94201_d +FD net/minecraft/client/renderer/texture/Stitcher$Holder mipmapLevelHolder field_147968_d +FD net/minecraft/client/renderer/texture/Stitcher$Holder rotated field_94202_e +FD net/minecraft/client/renderer/texture/Stitcher$Holder scaleFactor field_94205_a +FD net/minecraft/client/renderer/texture/Stitcher$Slot originX field_94192_a +FD net/minecraft/client/renderer/texture/Stitcher$Slot originY field_94190_b +FD net/minecraft/client/renderer/texture/Stitcher$Slot width field_94191_c +FD net/minecraft/client/renderer/texture/Stitcher$Slot height field_94188_d +FD net/minecraft/client/renderer/texture/Stitcher$Slot subSlots field_94189_e +FD net/minecraft/client/renderer/texture/Stitcher$Slot holder field_94187_f +FD net/minecraft/client/renderer/StitcherException holder field_98149_a +FD net/minecraft/client/renderer/texture/TextureMap LOCATION_MISSING_TEXTURE field_174945_f +FD net/minecraft/client/renderer/texture/TextureMap locationBlocksTexture field_110575_b +FD net/minecraft/client/renderer/texture/TextureMap logger field_147635_d +FD net/minecraft/client/renderer/texture/TextureMap listAnimatedSprites field_94258_i +FD net/minecraft/client/renderer/texture/TextureMap mapRegisteredSprites field_110574_e +FD net/minecraft/client/renderer/texture/TextureMap mapUploadedSprites field_94252_e +FD net/minecraft/client/renderer/texture/TextureMap basePath field_94254_c +FD net/minecraft/client/renderer/texture/TextureMap iconCreator field_174946_m +FD net/minecraft/client/renderer/texture/TextureMap mipmapLevels field_147636_j +FD net/minecraft/client/renderer/texture/TextureMap missingImage field_94249_f +FD net/minecraft/client/renderer/texture/TextureMap$1 field_147980_a field_147980_a +FD net/minecraft/client/renderer/texture/TextureMap$1 field_147979_b field_147979_b +FD net/minecraft/client/renderer/texture/TextureMap$2 field_147977_a field_147977_a +FD net/minecraft/client/renderer/texture/TextureMap$2 field_147976_b field_147976_b +FD net/minecraft/client/renderer/texture/TextureMap$3 field_147974_a field_147974_a +FD net/minecraft/client/renderer/texture/TextureMap$3 field_147973_b field_147973_b +FD net/minecraft/client/renderer/texture/TextureAtlasSprite framesTextureData field_110976_a +FD net/minecraft/client/renderer/texture/TextureAtlasSprite interpolatedFrameData field_176605_b +FD net/minecraft/client/renderer/texture/TextureAtlasSprite rotated field_130222_e +FD net/minecraft/client/renderer/texture/TextureAtlasSprite originX field_110975_c +FD net/minecraft/client/renderer/texture/TextureAtlasSprite originY field_110974_d +FD net/minecraft/client/renderer/texture/TextureAtlasSprite width field_130223_c +FD net/minecraft/client/renderer/texture/TextureAtlasSprite height field_130224_d +FD net/minecraft/client/renderer/texture/TextureAtlasSprite frameCounter field_110973_g +FD net/minecraft/client/renderer/texture/TextureAtlasSprite tickCounter field_110983_h +FD net/minecraft/client/renderer/texture/TextureAtlasSprite iconName field_110984_i +FD net/minecraft/client/renderer/texture/TextureAtlasSprite animationMetadata field_110982_k +FD net/minecraft/client/renderer/texture/TextureAtlasSprite minU field_110979_l +FD net/minecraft/client/renderer/texture/TextureAtlasSprite maxU field_110980_m +FD net/minecraft/client/renderer/texture/TextureAtlasSprite minV field_110977_n +FD net/minecraft/client/renderer/texture/TextureAtlasSprite maxV field_110978_o +FD net/minecraft/client/renderer/texture/TextureAtlasSprite locationNameClock field_176607_p +FD net/minecraft/client/renderer/texture/TextureAtlasSprite locationNameCompass field_176606_q +FD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 field_147983_a field_147983_a +FD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 field_147982_b field_147982_b +FD net/minecraft/client/renderer/texture/TextureManager logger field_147646_a +FD net/minecraft/client/renderer/texture/TextureManager mapTextureObjects field_110585_a +FD net/minecraft/client/renderer/texture/TextureManager listTickables field_110583_b +FD net/minecraft/client/renderer/texture/TextureManager mapTextureCounters field_110584_c +FD net/minecraft/client/renderer/texture/TextureManager theResourceManager field_110582_d +FD net/minecraft/client/renderer/texture/TextureManager$1 field_135062_a field_135062_a +FD net/minecraft/client/renderer/texture/TextureManager$1 field_135061_b field_135061_b +FD net/minecraft/client/renderer/texture/TextureUtil missingTexture field_111001_a +FD net/minecraft/client/renderer/texture/TextureUtil missingTextureData field_110999_b +FD net/minecraft/client/renderer/texture/TextureUtil logger field_147959_c +FD net/minecraft/client/renderer/texture/TextureUtil dataBuffer field_111000_c +FD net/minecraft/client/renderer/texture/TextureUtil mipmapBuffer field_147957_g +FD net/minecraft/client/renderer/texture/TextureClock currentAngle field_94239_h +FD net/minecraft/client/renderer/texture/TextureClock angleDelta field_94240_i +FD net/minecraft/client/renderer/texture/TextureCompass currentAngle field_94244_i +FD net/minecraft/client/renderer/texture/TextureCompass angleDelta field_94242_j +FD net/minecraft/client/renderer/texture/TextureCompass locationSprite field_176608_l +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats BLOCK field_176600_a +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats ITEM field_176599_b +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats OLDMODEL_POSITION_TEX_NORMAL field_181703_c +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats PARTICLE_POSITION_TEX_COLOR_LMAP field_181704_d +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION field_181705_e +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_COLOR field_181706_f +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX field_181707_g +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_NORMAL field_181708_h +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_COLOR field_181709_i +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_NORMAL field_181710_j +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_LMAP_COLOR field_181711_k +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_TEX_COLOR_NORMAL field_181712_l +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats POSITION_3F field_181713_m +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats COLOR_4UB field_181714_n +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats TEX_2F field_181715_o +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats TEX_2S field_181716_p +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats NORMAL_3B field_181717_q +FD net/minecraft/client/renderer/vertex/DefaultVertexFormats PADDING_1B field_181718_r +FD net/minecraft/client/renderer/vertex/VertexBuffer glBufferId field_177365_a +FD net/minecraft/client/renderer/vertex/VertexBuffer vertexFormat field_177363_b +FD net/minecraft/client/renderer/vertex/VertexBuffer count field_177364_c +FD net/minecraft/client/renderer/vertex/VertexFormat LOGGER field_177357_a +FD net/minecraft/client/renderer/vertex/VertexFormat elements field_177355_b +FD net/minecraft/client/renderer/vertex/VertexFormat offsets field_177356_c +FD net/minecraft/client/renderer/vertex/VertexFormat nextOffset field_177353_d +FD net/minecraft/client/renderer/vertex/VertexFormat colorElementOffset field_177354_e +FD net/minecraft/client/renderer/vertex/VertexFormat uvOffsetsById field_177351_f +FD net/minecraft/client/renderer/vertex/VertexFormat normalElementOffset field_177352_g +FD net/minecraft/client/renderer/vertex/VertexFormat$1 field_177382_a field_177382_a +FD net/minecraft/client/renderer/vertex/VertexFormatElement LOGGER field_177381_a +FD net/minecraft/client/renderer/vertex/VertexFormatElement type field_177379_b +FD net/minecraft/client/renderer/vertex/VertexFormatElement usage field_177380_c +FD net/minecraft/client/renderer/vertex/VertexFormatElement index field_177377_d +FD net/minecraft/client/renderer/vertex/VertexFormatElement elementCount field_177378_e +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType FLOAT FLOAT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType UBYTE UBYTE +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType BYTE BYTE +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType USHORT USHORT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType SHORT SHORT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType UINT UINT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType INT INT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType size field_177407_h +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType displayName field_177408_i +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType glConstant field_177405_j +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType $VALUES $VALUES +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage POSITION POSITION +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage NORMAL NORMAL +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage COLOR COLOR +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage UV UV +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage MATRIX MATRIX +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage BLEND_WEIGHT BLEND_WEIGHT +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage PADDING PADDING +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage displayName field_177392_h +FD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage $VALUES $VALUES +FD net/minecraft/client/resources/AbstractResourcePack resourcePackFile field_110597_b +FD net/minecraft/client/resources/AbstractResourcePack resourceLog field_110598_a +FD net/minecraft/client/resources/ResourceIndex logger field_152783_a +FD net/minecraft/client/resources/ResourceIndex resourceMap field_152784_b +FD net/minecraft/client/resources/DefaultPlayerSkin TEXTURE_STEVE field_177337_a +FD net/minecraft/client/resources/DefaultPlayerSkin TEXTURE_ALEX field_177336_b +FD net/minecraft/client/resources/DefaultResourcePack defaultResourceDomains field_110608_a +FD net/minecraft/client/resources/DefaultResourcePack mapAssets field_152781_b +FD net/minecraft/client/resources/FallbackResourceManager resourcePacks field_110540_a +FD net/minecraft/client/resources/FallbackResourceManager logger field_177246_b +FD net/minecraft/client/resources/FallbackResourceManager frmMetadataSerializer field_110539_b +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger inputStream field_177330_a +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger message field_177328_b +FD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger isClosed field_177329_c +FD net/minecraft/client/resources/FileResourcePack entryNameSplitter field_110601_c +FD net/minecraft/client/resources/FileResourcePack resourcePackZipFile field_110600_d +FD net/minecraft/client/resources/FoliageColorReloadListener LOC_FOLIAGE_PNG field_130079_a +FD net/minecraft/client/resources/GrassColorReloadListener LOC_GRASS_PNG field_130078_a +FD net/minecraft/client/resources/ResourcePackRepository rprDefaultResourcePack field_110620_b +FD net/minecraft/client/resources/ResourcePackRepository rprMetadataSerializer field_110621_c +FD net/minecraft/client/resources/ResourcePackRepository logger field_177320_c +FD net/minecraft/client/resources/ResourcePackRepository resourcePackFilter field_110622_a +FD net/minecraft/client/resources/ResourcePackRepository dirResourcepacks field_110618_d +FD net/minecraft/client/resources/ResourcePackRepository dirServerResourcepacks field_148534_e +FD net/minecraft/client/resources/ResourcePackRepository resourcePackInstance field_148532_f +FD net/minecraft/client/resources/ResourcePackRepository lock field_177321_h +FD net/minecraft/client/resources/ResourcePackRepository downloadingPacks field_177322_i +FD net/minecraft/client/resources/ResourcePackRepository repositoryEntriesAll field_110619_e +FD net/minecraft/client/resources/ResourcePackRepository repositoryEntries field_110617_f +FD net/minecraft/client/resources/ResourcePackRepository$2 field_177324_a field_177324_a +FD net/minecraft/client/resources/ResourcePackRepository$2 field_177323_b field_177323_b +FD net/minecraft/client/resources/ResourcePackRepository$2 field_148523_a field_148523_a +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177327_a field_177327_a +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177325_b field_177325_b +FD net/minecraft/client/resources/ResourcePackRepository$3 field_177326_c field_177326_c +FD net/minecraft/client/resources/ResourcePackRepository$Entry field_110525_a field_110525_a +FD net/minecraft/client/resources/ResourcePackRepository$Entry resourcePackFile field_110523_b +FD net/minecraft/client/resources/ResourcePackRepository$Entry reResourcePack field_110524_c +FD net/minecraft/client/resources/ResourcePackRepository$Entry rePackMetadataSection field_110521_d +FD net/minecraft/client/resources/ResourcePackRepository$Entry texturePackIcon field_110522_e +FD net/minecraft/client/resources/ResourcePackRepository$Entry locationTexturePackIcon field_110520_f +FD net/minecraft/client/resources/SimpleReloadableResourceManager logger field_147967_a +FD net/minecraft/client/resources/SimpleReloadableResourceManager joinerResourcePacks field_130074_a +FD net/minecraft/client/resources/SimpleReloadableResourceManager domainResourceManagers field_110548_a +FD net/minecraft/client/resources/SimpleReloadableResourceManager reloadListeners field_110546_b +FD net/minecraft/client/resources/SimpleReloadableResourceManager setResourceDomains field_135057_d +FD net/minecraft/client/resources/SimpleReloadableResourceManager rmMetadataSerializer field_110547_c +FD net/minecraft/client/resources/SimpleReloadableResourceManager$1 field_130076_a field_130076_a +FD net/minecraft/client/resources/SimpleResource mapMetadataSections field_110535_a +FD net/minecraft/client/resources/SimpleResource resourcePackName field_177242_b +FD net/minecraft/client/resources/SimpleResource srResourceLocation field_110533_b +FD net/minecraft/client/resources/SimpleResource resourceInputStream field_110534_c +FD net/minecraft/client/resources/SimpleResource mcmetaInputStream field_110531_d +FD net/minecraft/client/resources/SimpleResource srMetadataSerializer field_110532_e +FD net/minecraft/client/resources/SimpleResource mcmetaJsonChecked field_110529_f +FD net/minecraft/client/resources/SimpleResource mcmetaJson field_110530_g +FD net/minecraft/client/resources/SkinManager THREAD_POOL field_152794_b +FD net/minecraft/client/resources/SkinManager textureManager field_152795_c +FD net/minecraft/client/resources/SkinManager skinCacheDir field_152796_d +FD net/minecraft/client/resources/SkinManager sessionService field_152797_e +FD net/minecraft/client/resources/SkinManager skinCacheLoader field_152798_f +FD net/minecraft/client/resources/SkinManager$1 field_152787_a field_152787_a +FD net/minecraft/client/resources/SkinManager$2 field_152635_a field_152635_a +FD net/minecraft/client/resources/SkinManager$2 field_152636_b field_152636_b +FD net/minecraft/client/resources/SkinManager$2 field_152637_c field_152637_c +FD net/minecraft/client/resources/SkinManager$2 field_152638_d field_152638_d +FD net/minecraft/client/resources/SkinManager$2 field_177249_e field_177249_e +FD net/minecraft/client/resources/SkinManager$2 field_152639_e field_152639_e +FD net/minecraft/client/resources/SkinManager$3 field_152799_a field_152799_a +FD net/minecraft/client/resources/SkinManager$3 field_152800_b field_152800_b +FD net/minecraft/client/resources/SkinManager$3 field_152801_c field_152801_c +FD net/minecraft/client/resources/SkinManager$3 field_152802_d field_152802_d +FD net/minecraft/client/resources/SkinManager$3$1 field_152803_a field_152803_a +FD net/minecraft/client/resources/SkinManager$3$1 field_152804_b field_152804_b +FD net/minecraft/client/resources/I18n i18nLocale field_135054_a +FD net/minecraft/client/resources/Language languageCode field_135039_a +FD net/minecraft/client/resources/Language region field_135037_b +FD net/minecraft/client/resources/Language name field_135038_c +FD net/minecraft/client/resources/Language bidirectional field_135036_d +FD net/minecraft/client/resources/LanguageManager currentLocale field_135049_a +FD net/minecraft/client/resources/LanguageManager logger field_147648_b +FD net/minecraft/client/resources/LanguageManager theMetadataSerializer field_135047_b +FD net/minecraft/client/resources/LanguageManager currentLanguage field_135048_c +FD net/minecraft/client/resources/LanguageManager languageMap field_135046_d +FD net/minecraft/client/resources/Locale properties field_135032_a +FD net/minecraft/client/resources/Locale splitter field_135030_b +FD net/minecraft/client/resources/Locale pattern field_135031_c +FD net/minecraft/client/resources/Locale unicode field_135029_d +FD net/minecraft/client/resources/data/IMetadataSerializer metadataSectionSerializerRegistry field_110508_a +FD net/minecraft/client/resources/data/IMetadataSerializer gsonBuilder field_110506_b +FD net/minecraft/client/resources/data/IMetadataSerializer gson field_110507_c +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration section field_110502_a +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration clazz field_110500_b +FD net/minecraft/client/resources/data/IMetadataSerializer$Registration field_110501_c field_110501_c +FD net/minecraft/client/resources/data/AnimationFrame frameIndex field_110499_a +FD net/minecraft/client/resources/data/AnimationFrame frameTime field_110498_b +FD net/minecraft/client/resources/data/AnimationMetadataSection animationFrames field_110478_a +FD net/minecraft/client/resources/data/AnimationMetadataSection frameWidth field_110476_b +FD net/minecraft/client/resources/data/AnimationMetadataSection frameHeight field_110477_c +FD net/minecraft/client/resources/data/AnimationMetadataSection frameTime field_110475_d +FD net/minecraft/client/resources/data/AnimationMetadataSection interpolate field_177220_e +FD net/minecraft/client/resources/data/FontMetadataSection charWidths field_110467_a +FD net/minecraft/client/resources/data/FontMetadataSection charLefts field_110465_b +FD net/minecraft/client/resources/data/FontMetadataSection charSpacings field_110466_c +FD net/minecraft/client/resources/data/LanguageMetadataSection languages field_135019_a +FD net/minecraft/client/resources/data/PackMetadataSection packDescription field_110464_a +FD net/minecraft/client/resources/data/PackMetadataSection packFormat field_110463_b +FD net/minecraft/client/resources/data/TextureMetadataSection textureBlur field_110482_a +FD net/minecraft/client/resources/data/TextureMetadataSection textureClamp field_110481_b +FD net/minecraft/client/resources/data/TextureMetadataSection listMipmaps field_148536_c +FD net/minecraft/client/resources/model/ModelRotation X0_Y0 X0_Y0 +FD net/minecraft/client/resources/model/ModelRotation X0_Y90 X0_Y90 +FD net/minecraft/client/resources/model/ModelRotation X0_Y180 X0_Y180 +FD net/minecraft/client/resources/model/ModelRotation X0_Y270 X0_Y270 +FD net/minecraft/client/resources/model/ModelRotation X90_Y0 X90_Y0 +FD net/minecraft/client/resources/model/ModelRotation X90_Y90 X90_Y90 +FD net/minecraft/client/resources/model/ModelRotation X90_Y180 X90_Y180 +FD net/minecraft/client/resources/model/ModelRotation X90_Y270 X90_Y270 +FD net/minecraft/client/resources/model/ModelRotation X180_Y0 X180_Y0 +FD net/minecraft/client/resources/model/ModelRotation X180_Y90 X180_Y90 +FD net/minecraft/client/resources/model/ModelRotation X180_Y180 X180_Y180 +FD net/minecraft/client/resources/model/ModelRotation X180_Y270 X180_Y270 +FD net/minecraft/client/resources/model/ModelRotation X270_Y0 X270_Y0 +FD net/minecraft/client/resources/model/ModelRotation X270_Y90 X270_Y90 +FD net/minecraft/client/resources/model/ModelRotation X270_Y180 X270_Y180 +FD net/minecraft/client/resources/model/ModelRotation X270_Y270 X270_Y270 +FD net/minecraft/client/resources/model/ModelRotation mapRotations field_177546_q +FD net/minecraft/client/resources/model/ModelRotation combinedXY field_177545_r +FD net/minecraft/client/resources/model/ModelRotation matrix4d field_177544_s +FD net/minecraft/client/resources/model/ModelRotation quartersX field_177543_t +FD net/minecraft/client/resources/model/ModelRotation quartersY field_177542_u +FD net/minecraft/client/resources/model/ModelRotation $VALUES $VALUES +FD net/minecraft/client/resources/model/BuiltInModel cameraTransforms field_177557_a +FD net/minecraft/client/resources/model/ModelBakery MODEL_MISSING field_177604_a +FD net/minecraft/client/resources/model/ModelBakery LOCATIONS_BUILTIN_TEXTURES field_177602_b +FD net/minecraft/client/resources/model/ModelBakery LOGGER field_177603_c +FD net/minecraft/client/resources/model/ModelBakery BUILT_IN_MODELS field_177600_d +FD net/minecraft/client/resources/model/ModelBakery JOINER field_177601_e +FD net/minecraft/client/resources/model/ModelBakery resourceManager field_177598_f +FD net/minecraft/client/resources/model/ModelBakery sprites field_177599_g +FD net/minecraft/client/resources/model/ModelBakery models field_177611_h +FD net/minecraft/client/resources/model/ModelBakery variants field_177612_i +FD net/minecraft/client/resources/model/ModelBakery textureMap field_177609_j +FD net/minecraft/client/resources/model/ModelBakery blockModelShapes field_177610_k +FD net/minecraft/client/resources/model/ModelBakery faceBakery field_177607_l +FD net/minecraft/client/resources/model/ModelBakery itemModelGenerator field_177608_m +FD net/minecraft/client/resources/model/ModelBakery bakedRegistry field_177605_n +FD net/minecraft/client/resources/model/ModelBakery MODEL_GENERATED field_177606_o +FD net/minecraft/client/resources/model/ModelBakery MODEL_COMPASS field_177618_p +FD net/minecraft/client/resources/model/ModelBakery MODEL_CLOCK field_177617_q +FD net/minecraft/client/resources/model/ModelBakery MODEL_ENTITY field_177616_r +FD net/minecraft/client/resources/model/ModelBakery itemLocations field_177615_s +FD net/minecraft/client/resources/model/ModelBakery blockDefinitions field_177614_t +FD net/minecraft/client/resources/model/ModelBakery variantNames field_177613_u +FD net/minecraft/client/resources/model/ModelBakery$1 field_177506_a field_177506_a +FD net/minecraft/client/resources/model/ModelBakery$2 field_177061_a field_177061_a +FD net/minecraft/client/resources/model/ModelBakery$2 field_177060_b field_177060_b +FD net/minecraft/client/resources/model/ModelManager modelRegistry field_174958_a +FD net/minecraft/client/resources/model/ModelManager texMap field_174956_b +FD net/minecraft/client/resources/model/ModelManager modelProvider field_174957_c +FD net/minecraft/client/resources/model/ModelManager defaultModel field_174955_d +FD net/minecraft/client/resources/model/ModelResourceLocation variant field_177519_c +FD net/minecraft/client/resources/model/SimpleBakedModel generalQuads field_177563_a +FD net/minecraft/client/resources/model/SimpleBakedModel faceQuads field_177561_b +FD net/minecraft/client/resources/model/SimpleBakedModel ambientOcclusion field_177562_c +FD net/minecraft/client/resources/model/SimpleBakedModel gui3d field_177559_d +FD net/minecraft/client/resources/model/SimpleBakedModel texture field_177560_e +FD net/minecraft/client/resources/model/SimpleBakedModel cameraTransforms field_177558_f +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderGeneralQuads field_177656_a +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderFaceQuads field_177654_b +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderAmbientOcclusion field_177655_c +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderTexture field_177652_d +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderGui3d field_177653_e +FD net/minecraft/client/resources/model/SimpleBakedModel$Builder builderCameraTransforms field_177651_f +FD net/minecraft/client/resources/model/WeightedBakedModel totalWeight field_177567_a +FD net/minecraft/client/resources/model/WeightedBakedModel models field_177565_b +FD net/minecraft/client/resources/model/WeightedBakedModel baseModel field_177566_c +FD net/minecraft/client/resources/model/WeightedBakedModel$Builder listItems field_177678_a +FD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem model field_177636_b +FD net/minecraft/client/audio/PositionedSound positionedSoundLocation field_147664_a +FD net/minecraft/client/audio/PositionedSound volume field_147662_b +FD net/minecraft/client/audio/PositionedSound pitch field_147663_c +FD net/minecraft/client/audio/PositionedSound xPosF field_147660_d +FD net/minecraft/client/audio/PositionedSound yPosF field_147661_e +FD net/minecraft/client/audio/PositionedSound zPosF field_147658_f +FD net/minecraft/client/audio/PositionedSound repeat field_147659_g +FD net/minecraft/client/audio/PositionedSound repeatDelay field_147665_h +FD net/minecraft/client/audio/PositionedSound attenuationType field_147666_i +FD net/minecraft/client/audio/MovingSound donePlaying field_147668_j +FD net/minecraft/client/audio/GuardianSound guardian field_174934_k +FD net/minecraft/client/audio/MovingSoundMinecart minecart field_147670_k +FD net/minecraft/client/audio/MovingSoundMinecart distance field_147669_l +FD net/minecraft/client/audio/MovingSoundMinecartRiding player field_147672_k +FD net/minecraft/client/audio/MovingSoundMinecartRiding minecart field_147671_l +FD net/minecraft/client/audio/SoundCategory MASTER MASTER +FD net/minecraft/client/audio/SoundCategory MUSIC MUSIC +FD net/minecraft/client/audio/SoundCategory RECORDS RECORDS +FD net/minecraft/client/audio/SoundCategory WEATHER WEATHER +FD net/minecraft/client/audio/SoundCategory BLOCKS BLOCKS +FD net/minecraft/client/audio/SoundCategory MOBS MOBS +FD net/minecraft/client/audio/SoundCategory ANIMALS ANIMALS +FD net/minecraft/client/audio/SoundCategory PLAYERS PLAYERS +FD net/minecraft/client/audio/SoundCategory AMBIENT AMBIENT +FD net/minecraft/client/audio/SoundCategory NAME_CATEGORY_MAP field_147168_j +FD net/minecraft/client/audio/SoundCategory ID_CATEGORY_MAP field_147169_k +FD net/minecraft/client/audio/SoundCategory categoryName field_147166_l +FD net/minecraft/client/audio/SoundCategory categoryId field_147167_m +FD net/minecraft/client/audio/SoundCategory $VALUES $VALUES +FD net/minecraft/client/audio/SoundList soundList field_148577_a +FD net/minecraft/client/audio/SoundList replaceExisting field_148575_b +FD net/minecraft/client/audio/SoundList category field_148576_c +FD net/minecraft/client/audio/SoundList$SoundEntry name field_148569_a +FD net/minecraft/client/audio/SoundList$SoundEntry volume field_148567_b +FD net/minecraft/client/audio/SoundList$SoundEntry pitch field_148568_c +FD net/minecraft/client/audio/SoundList$SoundEntry weight field_148565_d +FD net/minecraft/client/audio/SoundList$SoundEntry type field_148566_e +FD net/minecraft/client/audio/SoundList$SoundEntry streaming field_148564_f +FD net/minecraft/client/audio/SoundList$SoundEntry$Type FILE FILE +FD net/minecraft/client/audio/SoundList$SoundEntry$Type SOUND_EVENT SOUND_EVENT +FD net/minecraft/client/audio/SoundList$SoundEntry$Type field_148583_c field_148583_c +FD net/minecraft/client/audio/SoundList$SoundEntry$Type $VALUES $VALUES +FD net/minecraft/client/audio/ISound$AttenuationType NONE NONE +FD net/minecraft/client/audio/ISound$AttenuationType LINEAR LINEAR +FD net/minecraft/client/audio/ISound$AttenuationType type field_148589_c +FD net/minecraft/client/audio/ISound$AttenuationType $VALUES $VALUES +FD net/minecraft/server/integrated/IntegratedPlayerList hostPlayerData field_72416_e +FD net/minecraft/server/integrated/IntegratedServer logger field_147148_h +FD net/minecraft/server/integrated/IntegratedServer mc field_71349_l +FD net/minecraft/server/integrated/IntegratedServer theWorldSettings field_71350_m +FD net/minecraft/server/integrated/IntegratedServer isGamePaused field_71348_o +FD net/minecraft/server/integrated/IntegratedServer isPublic field_71346_p +FD net/minecraft/server/integrated/IntegratedServer lanServerPing field_71345_q +FD net/minecraft/server/integrated/IntegratedServer$1 field_76974_a field_76974_a +FD net/minecraft/server/integrated/IntegratedServer$2 field_76972_a field_76972_a +FD net/minecraft/server/integrated/IntegratedServer$3 field_177494_a field_177494_a +FD net/minecraft/client/network/LanServerDetector field_148551_a field_148551_a +FD net/minecraft/client/network/LanServerDetector logger field_148550_b +FD net/minecraft/client/network/LanServerDetector$LanServer lanServerMotd field_77492_a +FD net/minecraft/client/network/LanServerDetector$LanServer lanServerIpPort field_77490_b +FD net/minecraft/client/network/LanServerDetector$LanServer timeLastSeen field_77491_c +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind localServerList field_77500_a +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind broadcastAddress field_77498_b +FD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind socket field_77499_c +FD net/minecraft/client/network/LanServerDetector$LanServerList wasUpdated field_77556_a +FD net/minecraft/client/network/LanServerDetector$LanServerList listOfLanServers field_77555_b +FD net/minecraft/client/multiplayer/ThreadLanServerPing field_148658_a field_148658_a +FD net/minecraft/client/multiplayer/ThreadLanServerPing logger field_148657_b +FD net/minecraft/client/multiplayer/ThreadLanServerPing motd field_77528_b +FD net/minecraft/client/multiplayer/ThreadLanServerPing socket field_77529_c +FD net/minecraft/client/multiplayer/ThreadLanServerPing isStopping field_77526_d +FD net/minecraft/client/multiplayer/ThreadLanServerPing address field_77527_e +FD net/minecraft/client/audio/MusicTicker rand field_147679_a +FD net/minecraft/client/audio/MusicTicker mc field_147677_b +FD net/minecraft/client/audio/MusicTicker currentMusic field_147678_c +FD net/minecraft/client/audio/MusicTicker timeUntilNextMusic field_147676_d +FD net/minecraft/client/audio/MusicTicker$MusicType MENU MENU +FD net/minecraft/client/audio/MusicTicker$MusicType GAME GAME +FD net/minecraft/client/audio/MusicTicker$MusicType CREATIVE CREATIVE +FD net/minecraft/client/audio/MusicTicker$MusicType CREDITS CREDITS +FD net/minecraft/client/audio/MusicTicker$MusicType NETHER NETHER +FD net/minecraft/client/audio/MusicTicker$MusicType END_BOSS END_BOSS +FD net/minecraft/client/audio/MusicTicker$MusicType END END +FD net/minecraft/client/audio/MusicTicker$MusicType musicLocation field_148645_h +FD net/minecraft/client/audio/MusicTicker$MusicType minDelay field_148646_i +FD net/minecraft/client/audio/MusicTicker$MusicType maxDelay field_148643_j +FD net/minecraft/client/audio/MusicTicker$MusicType $VALUES $VALUES +FD net/minecraft/client/audio/SoundPoolEntry location field_148656_a +FD net/minecraft/client/audio/SoundPoolEntry streamingSound field_148654_b +FD net/minecraft/client/audio/SoundPoolEntry pitch field_148655_c +FD net/minecraft/client/audio/SoundPoolEntry volume field_148653_d +FD net/minecraft/client/audio/SoundManager LOG_MARKER field_148623_a +FD net/minecraft/client/audio/SoundManager logger field_148621_b +FD net/minecraft/client/audio/SoundManager sndHandler field_148622_c +FD net/minecraft/client/audio/SoundManager options field_148619_d +FD net/minecraft/client/audio/SoundManager sndSystem field_148620_e +FD net/minecraft/client/audio/SoundManager loaded field_148617_f +FD net/minecraft/client/audio/SoundManager playTime field_148618_g +FD net/minecraft/client/audio/SoundManager playingSounds field_148629_h +FD net/minecraft/client/audio/SoundManager invPlayingSounds field_148630_i +FD net/minecraft/client/audio/SoundManager playingSoundPoolEntries field_148627_j +FD net/minecraft/client/audio/SoundManager categorySounds field_148628_k +FD net/minecraft/client/audio/SoundManager tickableSounds field_148625_l +FD net/minecraft/client/audio/SoundManager delayedSounds field_148626_m +FD net/minecraft/client/audio/SoundManager playingSoundsStopTime field_148624_n +FD net/minecraft/client/audio/SoundManager$1 field_148631_a field_148631_a +FD net/minecraft/client/audio/SoundManager$1$1 field_177950_a field_177950_a +FD net/minecraft/client/audio/SoundManager$2 field_148592_a field_148592_a +FD net/minecraft/client/audio/SoundManager$2$1 field_148593_a field_148593_a +FD net/minecraft/client/audio/SoundManager$SoundSystemStarterThread field_148591_a field_148591_a +FD net/minecraft/client/audio/SoundEventAccessorComposite soundPool field_148736_a +FD net/minecraft/client/audio/SoundEventAccessorComposite rnd field_148734_b +FD net/minecraft/client/audio/SoundEventAccessorComposite soundLocation field_148735_c +FD net/minecraft/client/audio/SoundEventAccessorComposite category field_148732_d +FD net/minecraft/client/audio/SoundEventAccessorComposite eventPitch field_148733_e +FD net/minecraft/client/audio/SoundEventAccessorComposite eventVolume field_148731_f +FD net/minecraft/client/audio/SoundHandler missing_sound field_147700_a +FD net/minecraft/client/audio/SoundHandler logger field_147698_b +FD net/minecraft/client/audio/SoundHandler GSON field_147699_c +FD net/minecraft/client/audio/SoundHandler TYPE field_147696_d +FD net/minecraft/client/audio/SoundHandler sndRegistry field_147697_e +FD net/minecraft/client/audio/SoundHandler sndManager field_147694_f +FD net/minecraft/client/audio/SoundHandler mcResourceManager field_147695_g +FD net/minecraft/client/audio/SoundHandler$2 field_148726_a field_148726_a +FD net/minecraft/client/audio/SoundHandler$2 field_148724_b field_148724_b +FD net/minecraft/client/audio/SoundHandler$2 field_148725_c field_148725_c +FD net/minecraft/client/audio/SoundHandler$2 field_148723_d field_148723_d +FD net/minecraft/client/audio/SoundHandler$3 field_148765_a field_148765_a +FD net/minecraft/client/audio/SoundRegistry soundRegistry field_148764_a +FD net/minecraft/client/audio/SoundEventAccessor entry field_148739_a +FD net/minecraft/client/audio/SoundEventAccessor weight field_148738_b +FD net/minecraft/client/stream/Metadata field_152811_a field_152811_a +FD net/minecraft/client/stream/Metadata name field_152812_b +FD net/minecraft/client/stream/Metadata description field_152813_c +FD net/minecraft/client/stream/Metadata payload field_152814_d +FD net/minecraft/client/stream/BroadcastController ingestServTester field_152860_A +FD net/minecraft/client/stream/BroadcastController streamCallback field_177948_B +FD net/minecraft/client/stream/BroadcastController field_177949_C field_177949_C +FD net/minecraft/client/stream/BroadcastController logger field_152861_B +FD net/minecraft/client/stream/BroadcastController field_152862_C field_152862_C +FD net/minecraft/client/stream/BroadcastController lastError field_152863_D +FD net/minecraft/client/stream/BroadcastController errorCode field_152864_E +FD net/minecraft/client/stream/BroadcastController field_152865_a field_152865_a +FD net/minecraft/client/stream/BroadcastController field_152866_b field_152866_b +FD net/minecraft/client/stream/BroadcastController broadcastListener field_152867_c +FD net/minecraft/client/stream/BroadcastController field_152868_d field_152868_d +FD net/minecraft/client/stream/BroadcastController field_152869_e field_152869_e +FD net/minecraft/client/stream/BroadcastController field_152870_f field_152870_f +FD net/minecraft/client/stream/BroadcastController field_152871_g field_152871_g +FD net/minecraft/client/stream/BroadcastController streamCore field_152872_h +FD net/minecraft/client/stream/BroadcastController theStream field_152873_i +FD net/minecraft/client/stream/BroadcastController field_152874_j field_152874_j +FD net/minecraft/client/stream/BroadcastController field_152875_k field_152875_k +FD net/minecraft/client/stream/BroadcastController field_152876_l field_152876_l +FD net/minecraft/client/stream/BroadcastController field_152877_m field_152877_m +FD net/minecraft/client/stream/BroadcastController field_152878_n field_152878_n +FD net/minecraft/client/stream/BroadcastController broadcastState field_152879_o +FD net/minecraft/client/stream/BroadcastController field_152880_p field_152880_p +FD net/minecraft/client/stream/BroadcastController videoParamaters field_152881_q +FD net/minecraft/client/stream/BroadcastController audioParamaters field_152882_r +FD net/minecraft/client/stream/BroadcastController ingestList field_152883_s +FD net/minecraft/client/stream/BroadcastController ingestServ field_152884_t +FD net/minecraft/client/stream/BroadcastController authenticationToken field_152885_u +FD net/minecraft/client/stream/BroadcastController channelInfo field_152886_v +FD net/minecraft/client/stream/BroadcastController userInfo field_152887_w +FD net/minecraft/client/stream/BroadcastController streamInfo field_152888_x +FD net/minecraft/client/stream/BroadcastController archivingState field_152889_y +FD net/minecraft/client/stream/BroadcastController field_152890_z field_152890_z +FD net/minecraft/client/stream/BroadcastController$1 field_177945_a field_177945_a +FD net/minecraft/client/stream/BroadcastController$2 field_177772_a field_177772_a +FD net/minecraft/client/stream/BroadcastController$3 field_177773_a field_177773_a +FD net/minecraft/client/stream/BroadcastController$BroadcastState Uninitialized Uninitialized +FD net/minecraft/client/stream/BroadcastController$BroadcastState Initialized Initialized +FD net/minecraft/client/stream/BroadcastController$BroadcastState Authenticating Authenticating +FD net/minecraft/client/stream/BroadcastController$BroadcastState Authenticated Authenticated +FD net/minecraft/client/stream/BroadcastController$BroadcastState LoggingIn LoggingIn +FD net/minecraft/client/stream/BroadcastController$BroadcastState LoggedIn LoggedIn +FD net/minecraft/client/stream/BroadcastController$BroadcastState FindingIngestServer FindingIngestServer +FD net/minecraft/client/stream/BroadcastController$BroadcastState ReceivedIngestServers ReceivedIngestServers +FD net/minecraft/client/stream/BroadcastController$BroadcastState ReadyToBroadcast ReadyToBroadcast +FD net/minecraft/client/stream/BroadcastController$BroadcastState Starting Starting +FD net/minecraft/client/stream/BroadcastController$BroadcastState Broadcasting Broadcasting +FD net/minecraft/client/stream/BroadcastController$BroadcastState Stopping Stopping +FD net/minecraft/client/stream/BroadcastController$BroadcastState Paused Paused +FD net/minecraft/client/stream/BroadcastController$BroadcastState IngestTesting IngestTesting +FD net/minecraft/client/stream/BroadcastController$BroadcastState $VALUES $VALUES +FD net/minecraft/client/stream/ChatController field_153003_a field_153003_a +FD net/minecraft/client/stream/ChatController field_153004_b field_153004_b +FD net/minecraft/client/stream/ChatController field_153006_d field_153006_d +FD net/minecraft/client/stream/ChatController field_153007_e field_153007_e +FD net/minecraft/client/stream/ChatController field_175992_e field_175992_e +FD net/minecraft/client/stream/ChatController field_153008_f field_153008_f +FD net/minecraft/client/stream/ChatController field_153011_i field_153011_i +FD net/minecraft/client/stream/ChatController field_153012_j field_153012_j +FD net/minecraft/client/stream/ChatController field_175998_i field_175998_i +FD net/minecraft/client/stream/ChatController field_153015_m field_153015_m +FD net/minecraft/client/stream/ChatController field_175997_k field_175997_k +FD net/minecraft/client/stream/ChatController field_175995_l field_175995_l +FD net/minecraft/client/stream/ChatController field_175996_m field_175996_m +FD net/minecraft/client/stream/ChatController field_175993_n field_175993_n +FD net/minecraft/client/stream/ChatController field_175994_o field_175994_o +FD net/minecraft/client/stream/ChatController field_175999_p field_175999_p +FD net/minecraft/client/stream/ChatController LOGGER field_153018_p +FD net/minecraft/client/stream/ChatController$1 field_176000_a field_176000_a +FD net/minecraft/client/stream/ChatController$2 field_175976_a field_175976_a +FD net/minecraft/client/stream/ChatController$2 field_175974_b field_175974_b +FD net/minecraft/client/stream/ChatController$2 field_175975_c field_175975_c +FD net/minecraft/client/stream/ChatController$EnumChannelState Created Created +FD net/minecraft/client/stream/ChatController$EnumChannelState Connecting Connecting +FD net/minecraft/client/stream/ChatController$EnumChannelState Connected Connected +FD net/minecraft/client/stream/ChatController$EnumChannelState Disconnecting Disconnecting +FD net/minecraft/client/stream/ChatController$EnumChannelState Disconnected Disconnected +FD net/minecraft/client/stream/ChatController$EnumChannelState $VALUES $VALUES +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176048_a field_176048_a +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176046_b field_176046_b +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176047_c field_176047_c +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176044_d field_176044_d +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176045_e field_176045_e +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176042_f field_176042_f +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176043_g field_176043_g +FD net/minecraft/client/stream/ChatController$ChatChannelListener field_176049_h field_176049_h +FD net/minecraft/client/stream/ChatController$ChatState Uninitialized Uninitialized +FD net/minecraft/client/stream/ChatController$ChatState Initializing Initializing +FD net/minecraft/client/stream/ChatController$ChatState Initialized Initialized +FD net/minecraft/client/stream/ChatController$ChatState ShuttingDown ShuttingDown +FD net/minecraft/client/stream/ChatController$ChatState $VALUES $VALUES +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode None None +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode Url Url +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode TextureAtlas TextureAtlas +FD net/minecraft/client/stream/ChatController$EnumEmoticonMode $VALUES $VALUES +FD net/minecraft/client/stream/IngestServerTester field_176005_A field_176005_A +FD net/minecraft/client/stream/IngestServerTester field_176006_B field_176006_B +FD net/minecraft/client/stream/IngestServerTester field_153044_b field_153044_b +FD net/minecraft/client/stream/IngestServerTester field_153045_c field_153045_c +FD net/minecraft/client/stream/IngestServerTester field_153046_d field_153046_d +FD net/minecraft/client/stream/IngestServerTester field_153047_e field_153047_e +FD net/minecraft/client/stream/IngestServerTester field_153048_f field_153048_f +FD net/minecraft/client/stream/IngestServerTester field_153049_g field_153049_g +FD net/minecraft/client/stream/IngestServerTester field_153050_h field_153050_h +FD net/minecraft/client/stream/IngestServerTester field_153051_i field_153051_i +FD net/minecraft/client/stream/IngestServerTester field_153052_j field_153052_j +FD net/minecraft/client/stream/IngestServerTester audioParameters field_153053_k +FD net/minecraft/client/stream/IngestServerTester field_153054_l field_153054_l +FD net/minecraft/client/stream/IngestServerTester field_153055_m field_153055_m +FD net/minecraft/client/stream/IngestServerTester field_153056_n field_153056_n +FD net/minecraft/client/stream/IngestServerTester field_153057_o field_153057_o +FD net/minecraft/client/stream/IngestServerTester field_153058_p field_153058_p +FD net/minecraft/client/stream/IngestServerTester field_153059_q field_153059_q +FD net/minecraft/client/stream/IngestServerTester field_153060_r field_153060_r +FD net/minecraft/client/stream/IngestServerTester field_153061_s field_153061_s +FD net/minecraft/client/stream/IngestServerTester field_153062_t field_153062_t +FD net/minecraft/client/stream/IngestServerTester field_153063_u field_153063_u +FD net/minecraft/client/stream/IngestServerTester field_153064_v field_153064_v +FD net/minecraft/client/stream/IngestServerTester field_153065_w field_153065_w +FD net/minecraft/client/stream/IngestServerTester field_153066_x field_153066_x +FD net/minecraft/client/stream/IngestServerTester field_176009_x field_176009_x +FD net/minecraft/client/stream/IngestServerTester field_176008_y field_176008_y +FD net/minecraft/client/stream/IngestServerTester field_176007_z field_176007_z +FD net/minecraft/client/stream/IngestServerTester$1 field_176010_a field_176010_a +FD net/minecraft/client/stream/IngestServerTester$2 field_176001_a field_176001_a +FD net/minecraft/client/stream/IngestServerTester$3 field_176003_a field_176003_a +FD net/minecraft/client/stream/IngestServerTester$3 field_176002_b field_176002_b +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Uninitalized Uninitalized +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Starting Starting +FD net/minecraft/client/stream/IngestServerTester$IngestTestState ConnectingToServer ConnectingToServer +FD net/minecraft/client/stream/IngestServerTester$IngestTestState TestingServer TestingServer +FD net/minecraft/client/stream/IngestServerTester$IngestTestState DoneTestingServer DoneTestingServer +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Finished Finished +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Cancelling Cancelling +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Cancelled Cancelled +FD net/minecraft/client/stream/IngestServerTester$IngestTestState Failed Failed +FD net/minecraft/client/stream/IngestServerTester$IngestTestState $VALUES $VALUES +FD net/minecraft/client/stream/IStream$AuthFailureReason ERROR ERROR +FD net/minecraft/client/stream/IStream$AuthFailureReason INVALID_TOKEN INVALID_TOKEN +FD net/minecraft/client/stream/IStream$AuthFailureReason $VALUES $VALUES +FD net/minecraft/client/stream/TwitchStream STREAM_MARKER field_152949_a +FD net/minecraft/client/stream/TwitchStream LOGGER field_152950_b +FD net/minecraft/client/stream/TwitchStream broadcastController field_152951_c +FD net/minecraft/client/stream/TwitchStream chatController field_152952_d +FD net/minecraft/client/stream/TwitchStream field_176029_e field_176029_e +FD net/minecraft/client/stream/TwitchStream mc field_152953_e +FD net/minecraft/client/stream/TwitchStream twitchComponent field_152954_f +FD net/minecraft/client/stream/TwitchStream field_152955_g field_152955_g +FD net/minecraft/client/stream/TwitchStream framebuffer field_152956_h +FD net/minecraft/client/stream/TwitchStream field_152957_i field_152957_i +FD net/minecraft/client/stream/TwitchStream targetFPS field_152958_j +FD net/minecraft/client/stream/TwitchStream field_152959_k field_152959_k +FD net/minecraft/client/stream/TwitchStream field_152960_l field_152960_l +FD net/minecraft/client/stream/TwitchStream loggedIn field_152961_m +FD net/minecraft/client/stream/TwitchStream field_152962_n field_152962_n +FD net/minecraft/client/stream/TwitchStream field_152963_o field_152963_o +FD net/minecraft/client/stream/TwitchStream authFailureReason field_152964_p +FD net/minecraft/client/stream/TwitchStream field_152965_q field_152965_q +FD net/minecraft/client/stream/TwitchStream$1 field_153083_a field_153083_a +FD net/minecraft/client/stream/TwitchStream$1 field_153084_b field_153084_b +FD net/minecraft/client/stream/TwitchStream$1$1 field_153082_a field_153082_a +FD net/minecraft/client/stream/NullStream field_152938_a field_152938_a +FD net/minecraft/util/Vector3d x field_181059_a +FD net/minecraft/util/Vector3d y field_181060_b +FD net/minecraft/util/Vector3d z field_181061_c +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE1_RGB field_176097_z +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE2_RGB field_176080_A +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND0_RGB field_176081_B +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND1_RGB field_176082_C +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND2_RGB field_176076_D +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE_ALPHA field_176077_E +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE0_ALPHA field_176078_F +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE1_ALPHA field_176079_G +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE2_ALPHA field_176084_H +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND0_ALPHA field_176085_I +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND1_ALPHA field_176086_J +FD net/minecraft/client/renderer/OpenGlHelper GL_OPERAND2_ALPHA field_176087_K +FD net/minecraft/client/renderer/OpenGlHelper extBlendFuncSeparate field_153211_u +FD net/minecraft/client/renderer/OpenGlHelper openGL21 field_148827_a +FD net/minecraft/client/renderer/OpenGlHelper shadersSupported field_148824_g +FD net/minecraft/client/renderer/OpenGlHelper vboSupported field_176083_O +FD net/minecraft/client/renderer/OpenGlHelper vboSupportedAti field_181062_Q +FD net/minecraft/client/renderer/OpenGlHelper GL_ARRAY_BUFFER field_176089_P +FD net/minecraft/client/renderer/OpenGlHelper GL_STATIC_DRAW field_148826_e +FD net/minecraft/client/renderer/OpenGlHelper framebufferType field_153212_w +FD net/minecraft/client/renderer/OpenGlHelper shadersAvailable field_153213_x +FD net/minecraft/client/renderer/OpenGlHelper arbShaders field_153214_y +FD net/minecraft/client/renderer/OpenGlHelper arbMultitexture field_153215_z +FD net/minecraft/client/renderer/OpenGlHelper arbTextureEnvCombine field_176088_V +FD net/minecraft/client/renderer/OpenGlHelper openGL14 field_148828_i +FD net/minecraft/client/renderer/OpenGlHelper logText field_153196_B +FD net/minecraft/client/renderer/OpenGlHelper nvidia field_153197_d +FD net/minecraft/client/renderer/OpenGlHelper cpu field_183030_aa +FD net/minecraft/client/renderer/OpenGlHelper arbVbo field_176090_Y +FD net/minecraft/client/renderer/OpenGlHelper ati field_181063_b +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAMEBUFFER field_153198_e +FD net/minecraft/client/renderer/OpenGlHelper GL_RENDERBUFFER field_153199_f +FD net/minecraft/client/renderer/OpenGlHelper GL_COLOR_ATTACHMENT0 field_153200_g +FD net/minecraft/client/renderer/OpenGlHelper GL_DEPTH_ATTACHMENT field_153201_h +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAMEBUFFER_COMPLETE field_153202_i +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_ATTACHMENT field_153203_j +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_MISS_ATTACH field_153204_k +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_DRAW_BUFFER field_153205_l +FD net/minecraft/client/renderer/OpenGlHelper GL_FB_INCOMPLETE_READ_BUFFER field_153206_m +FD net/minecraft/client/renderer/OpenGlHelper framebufferSupported field_148823_f +FD net/minecraft/client/renderer/OpenGlHelper GL_LINK_STATUS field_153207_o +FD net/minecraft/client/renderer/OpenGlHelper GL_COMPILE_STATUS field_153208_p +FD net/minecraft/client/renderer/OpenGlHelper GL_VERTEX_SHADER field_153209_q +FD net/minecraft/client/renderer/OpenGlHelper GL_FRAGMENT_SHADER field_153210_r +FD net/minecraft/client/renderer/OpenGlHelper defaultTexUnit field_77478_a +FD net/minecraft/client/renderer/OpenGlHelper lightmapTexUnit field_77476_b +FD net/minecraft/client/renderer/OpenGlHelper GL_TEXTURE2 field_176096_r +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE field_176095_s +FD net/minecraft/client/renderer/OpenGlHelper GL_INTERPOLATE field_176094_t +FD net/minecraft/client/renderer/OpenGlHelper GL_PRIMARY_COLOR field_176093_u +FD net/minecraft/client/renderer/OpenGlHelper GL_CONSTANT field_176092_v +FD net/minecraft/client/renderer/OpenGlHelper GL_PREVIOUS field_176091_w +FD net/minecraft/client/renderer/OpenGlHelper GL_COMBINE_RGB field_176099_x +FD net/minecraft/client/renderer/OpenGlHelper GL_SOURCE0_RGB field_176098_y +FD net/minecraft/client/main/Main$1 field_178749_a field_178749_a +FD net/minecraft/client/main/Main$1 field_178748_b field_178748_b +FD net/minecraft/realms/RealmsConnect$1 field_154355_a field_154355_a +FD net/minecraft/realms/RealmsConnect$1 field_154356_b field_154356_b +FD net/minecraft/realms/RealmsConnect$1 field_154357_c field_154357_c +FD net/minecraft/server/MinecraftServer canSpawnAnimals field_71324_y +FD net/minecraft/server/MinecraftServer canSpawnNPCs field_71323_z +FD net/minecraft/server/MinecraftServer pvpEnabled field_71284_A +FD net/minecraft/server/MinecraftServer allowFlight field_71285_B +FD net/minecraft/server/MinecraftServer motd field_71286_C +FD net/minecraft/server/MinecraftServer buildLimit field_71280_D +FD net/minecraft/server/MinecraftServer maxPlayerIdleMinutes field_143008_E +FD net/minecraft/server/MinecraftServer serverKeyPair field_71292_I +FD net/minecraft/server/MinecraftServer serverOwner field_71293_J +FD net/minecraft/server/MinecraftServer folderName field_71294_K +FD net/minecraft/server/MinecraftServer worldName field_71287_L +FD net/minecraft/server/MinecraftServer isDemo field_71288_M +FD net/minecraft/server/MinecraftServer enableBonusChest field_71289_N +FD net/minecraft/server/MinecraftServer worldIsBeingDeleted field_71290_O +FD net/minecraft/server/MinecraftServer resourcePackUrl field_147141_M +FD net/minecraft/server/MinecraftServer resourcePackHash field_175588_P +FD net/minecraft/server/MinecraftServer serverIsRunning field_71296_Q +FD net/minecraft/server/MinecraftServer timeOfLastWarning field_71299_R +FD net/minecraft/server/MinecraftServer userMessage field_71298_S +FD net/minecraft/server/MinecraftServer startProfiling field_71295_T +FD net/minecraft/server/MinecraftServer isGamemodeForced field_104057_T +FD net/minecraft/server/MinecraftServer authService field_152364_T +FD net/minecraft/server/MinecraftServer sessionService field_147143_S +FD net/minecraft/server/MinecraftServer nanoTimeSinceStatusRefresh field_147142_T +FD net/minecraft/server/MinecraftServer profileRepo field_152365_W +FD net/minecraft/server/MinecraftServer profileCache field_152366_X +FD net/minecraft/server/MinecraftServer USER_CACHE_FILE field_152367_a +FD net/minecraft/server/MinecraftServer serverThread field_175590_aa +FD net/minecraft/server/MinecraftServer currentTime field_175591_ab +FD net/minecraft/server/MinecraftServer commandManager field_71321_q +FD net/minecraft/server/MinecraftServer theProfiler field_71304_b +FD net/minecraft/server/MinecraftServer worldServers field_71305_c +FD net/minecraft/server/MinecraftServer serverProxy field_110456_c +FD net/minecraft/server/MinecraftServer currentTask field_71302_d +FD net/minecraft/server/MinecraftServer percentDone field_71303_e +FD net/minecraft/server/MinecraftServer tickTimeArray field_71311_j +FD net/minecraft/server/MinecraftServer timeOfLastDimensionTick field_71312_k +FD net/minecraft/server/MinecraftServer futureTaskQueue field_175589_i +FD net/minecraft/server/MinecraftServer logger field_147145_h +FD net/minecraft/server/MinecraftServer mcServer field_71309_l +FD net/minecraft/server/MinecraftServer anvilConverterForAnvilFile field_71310_m +FD net/minecraft/server/MinecraftServer usageSnooper field_71307_n +FD net/minecraft/server/MinecraftServer anvilFile field_71308_o +FD net/minecraft/server/MinecraftServer playersOnline field_71322_p +FD net/minecraft/server/MinecraftServer networkSystem field_147144_o +FD net/minecraft/server/MinecraftServer statusResponse field_147147_p +FD net/minecraft/server/MinecraftServer random field_147146_q +FD net/minecraft/server/MinecraftServer hostname field_71320_r +FD net/minecraft/server/MinecraftServer serverPort field_71319_s +FD net/minecraft/server/MinecraftServer serverConfigManager field_71318_t +FD net/minecraft/server/MinecraftServer serverRunning field_71317_u +FD net/minecraft/server/MinecraftServer serverStopped field_71316_v +FD net/minecraft/server/MinecraftServer tickCounter field_71315_w +FD net/minecraft/server/MinecraftServer onlineMode field_71325_x +FD net/minecraft/server/MinecraftServer$1 field_74267_a field_74267_a +FD net/minecraft/server/MinecraftServer$1 startTime field_96245_b +FD net/minecraft/server/MinecraftServer$2 field_96244_a field_96244_a +FD net/minecraft/server/MinecraftServer$3 field_73716_a field_73716_a +FD net/minecraft/server/MinecraftServer$4 field_74274_a field_74274_a +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154341_a field_154341_a +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154342_b field_154342_b +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154343_c field_154343_c +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154344_d field_154344_d +FD net/minecraft/realms/RealmsServerStatusPinger$1 field_154345_e field_154345_e +MD net/minecraft/util/EnumChatFormatting func_175744_a (I)Lnet/minecraft/util/EnumChatFormatting; func_175744_a +MD net/minecraft/util/EnumChatFormatting getTextWithoutFormattingCodes (Ljava/lang/String;)Ljava/lang/String; func_110646_a +MD net/minecraft/util/EnumChatFormatting getValidValues (ZZ)Ljava/util/Collection; func_96296_a +MD net/minecraft/util/EnumChatFormatting getColorIndex ()I func_175746_b +MD net/minecraft/util/EnumChatFormatting getValueByName (Ljava/lang/String;)Lnet/minecraft/util/EnumChatFormatting; func_96300_b +MD net/minecraft/util/EnumChatFormatting isFancyStyling ()Z func_96301_b +MD net/minecraft/util/EnumChatFormatting func_175745_c (Ljava/lang/String;)Ljava/lang/String; func_175745_c +MD net/minecraft/util/EnumChatFormatting isColor ()Z func_96302_c +MD net/minecraft/util/EnumChatFormatting getFriendlyName ()Ljava/lang/String; func_96297_d +MD net/minecraft/util/EnumChatFormatting toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumChatFormatting valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumChatFormatting; valueOf +MD net/minecraft/util/EnumChatFormatting values ()[Lnet/minecraft/util/EnumChatFormatting; values +MD net/minecraft/crash/CrashReport getDescription ()Ljava/lang/String; func_71501_a +MD net/minecraft/crash/CrashReport saveToFile (Ljava/io/File;)Z func_147149_a +MD net/minecraft/crash/CrashReport makeCategory (Ljava/lang/String;)Lnet/minecraft/crash/CrashReportCategory; func_85058_a +MD net/minecraft/crash/CrashReport makeCategoryDepth (Ljava/lang/String;I)Lnet/minecraft/crash/CrashReportCategory; func_85057_a +MD net/minecraft/crash/CrashReport getSectionsInStringBuilder (Ljava/lang/StringBuilder;)V func_71506_a +MD net/minecraft/crash/CrashReport makeCrashReport (Ljava/lang/Throwable;Ljava/lang/String;)Lnet/minecraft/crash/CrashReport; func_85055_a +MD net/minecraft/crash/CrashReport getCrashCause ()Ljava/lang/Throwable; func_71505_b +MD net/minecraft/crash/CrashReport getCauseStackTraceOrString ()Ljava/lang/String; func_71498_d +MD net/minecraft/crash/CrashReport getCompleteReport ()Ljava/lang/String; func_71502_e +MD net/minecraft/crash/CrashReport getFile ()Ljava/io/File; func_71497_f +MD net/minecraft/crash/CrashReport getCategory ()Lnet/minecraft/crash/CrashReportCategory; func_85056_g +MD net/minecraft/crash/CrashReport populateEnvironment ()V func_71504_g +MD net/minecraft/crash/CrashReport getWittyComment ()Ljava/lang/String; func_71503_h +MD net/minecraft/crash/CrashReport$1 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$1 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$2 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$2 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$3 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$3 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$4 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$4 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$5 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$5 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$6 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$6 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReport$7 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReport$7 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory getStackTrace ()[Ljava/lang/StackTraceElement; func_147152_a +MD net/minecraft/crash/CrashReportCategory getCoordinateInfo (DDD)Ljava/lang/String; func_85074_a +MD net/minecraft/crash/CrashReportCategory getPrunedStackTrace (I)I func_85073_a +MD net/minecraft/crash/CrashReportCategory addBlockInfo (Lnet/minecraft/crash/CrashReportCategory;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;I)V func_180523_a +MD net/minecraft/crash/CrashReportCategory addBlockInfo (Lnet/minecraft/crash/CrashReportCategory;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_175750_a +MD net/minecraft/crash/CrashReportCategory getCoordinateInfo (Lnet/minecraft/util/BlockPos;)Ljava/lang/String; func_180522_a +MD net/minecraft/crash/CrashReportCategory firstTwoElementsOfStackTraceMatch (Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;)Z func_85069_a +MD net/minecraft/crash/CrashReportCategory addCrashSection (Ljava/lang/String;Ljava/lang/Object;)V func_71507_a +MD net/minecraft/crash/CrashReportCategory addCrashSectionThrowable (Ljava/lang/String;Ljava/lang/Throwable;)V func_71499_a +MD net/minecraft/crash/CrashReportCategory addCrashSectionCallable (Ljava/lang/String;Ljava/util/concurrent/Callable;)V func_71500_a +MD net/minecraft/crash/CrashReportCategory appendToStringBuilder (Ljava/lang/StringBuilder;)V func_85072_a +MD net/minecraft/crash/CrashReportCategory trimStackTraceEntriesFromBottom (I)V func_85070_b +MD net/minecraft/crash/CrashReportCategory$1 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReportCategory$1 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$2 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReportCategory$2 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$3 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReportCategory$3 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$6 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReportCategory$6 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$7 call ()Ljava/lang/String; call +MD net/minecraft/crash/CrashReportCategory$7 call ()Ljava/lang/Object; call +MD net/minecraft/crash/CrashReportCategory$Entry getKey ()Ljava/lang/String; func_85089_a +MD net/minecraft/crash/CrashReportCategory$Entry getValue ()Ljava/lang/String; func_85090_b +MD net/minecraft/util/ReportedException getCrashReport ()Lnet/minecraft/crash/CrashReport; func_71575_a +MD net/minecraft/util/ReportedException getCause ()Ljava/lang/Throwable; getCause +MD net/minecraft/util/ReportedException getMessage ()Ljava/lang/String; getMessage +MD net/minecraft/util/ChatAllowedCharacters isAllowedCharacter (C)Z func_71566_a +MD net/minecraft/util/ChatAllowedCharacters filterAllowedCharacters (Ljava/lang/String;)Ljava/lang/String; func_71565_a +MD net/minecraft/util/Util getOSType ()Lnet/minecraft/util/Util$EnumOS; func_110647_a +MD net/minecraft/util/Util runTask (Ljava/util/concurrent/FutureTask;Lorg/apache/logging/log4j/Logger;)Ljava/lang/Object; func_181617_a +MD net/minecraft/util/Util$EnumOS valueOf (Ljava/lang/String;)Lnet/minecraft/util/Util$EnumOS; valueOf +MD net/minecraft/util/Util$EnumOS values ()[Lnet/minecraft/util/Util$EnumOS; values +MD net/minecraft/command/IAdminCommand notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;ILjava/lang/String;[Ljava/lang/Object;)V func_152372_a +MD net/minecraft/command/CommandBase getRequiredPermissionLevel ()I func_82362_a +MD net/minecraft/command/CommandBase parseCoordinate (DLjava/lang/String;IIZ)Lnet/minecraft/command/CommandBase$CoordinateArg; func_175767_a +MD net/minecraft/command/CommandBase parseCoordinate (DLjava/lang/String;Z)Lnet/minecraft/command/CommandBase$CoordinateArg; func_175770_a +MD net/minecraft/command/CommandBase setAdminCommander (Lnet/minecraft/command/IAdminCommand;)V func_71529_a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;)I func_175755_a +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;D)D func_180526_a +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;DD)D func_175756_a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;I)I func_180528_a +MD net/minecraft/command/CommandBase parseInt (Ljava/lang/String;II)I func_175764_a +MD net/minecraft/command/CommandBase parseLong (Ljava/lang/String;JJ)J func_175760_a +MD net/minecraft/command/CommandBase doesStringStartWith (Ljava/lang/String;Ljava/lang/String;)Z func_71523_a +MD net/minecraft/command/CommandBase joinNiceStringFromCollection (Ljava/util/Collection;)Ljava/lang/String; func_96333_a +MD net/minecraft/command/CommandBase join (Ljava/util/List;)Lnet/minecraft/util/IChatComponent; func_180530_a +MD net/minecraft/command/CommandBase compareTo (Lnet/minecraft/command/ICommand;)I compareTo +MD net/minecraft/command/CommandBase getPlayer (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; func_82359_c +MD net/minecraft/command/CommandBase getEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/entity/Entity; func_175759_a +MD net/minecraft/command/CommandBase notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;ILjava/lang/String;[Ljava/lang/Object;)V func_152374_a +MD net/minecraft/command/CommandBase notifyOperators (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/ICommand;Ljava/lang/String;[Ljava/lang/Object;)V func_152373_a +MD net/minecraft/command/CommandBase getChatComponentFromNthArg (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)Lnet/minecraft/util/IChatComponent; func_147178_a +MD net/minecraft/command/CommandBase parseBlockPos (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;IZ)Lnet/minecraft/util/BlockPos; func_175757_a +MD net/minecraft/command/CommandBase joinNiceString ([Ljava/lang/Object;)Ljava/lang/String; func_71527_a +MD net/minecraft/command/CommandBase buildString ([Ljava/lang/String;I)Ljava/lang/String; func_180529_a +MD net/minecraft/command/CommandBase func_175771_a ([Ljava/lang/String;ILnet/minecraft/util/BlockPos;)Ljava/util/List; func_175771_a +MD net/minecraft/command/CommandBase getListOfStringsMatchingLastWord ([Ljava/lang/String;Ljava/util/Collection;)Ljava/util/List; func_175762_a +MD net/minecraft/command/CommandBase getListOfStringsMatchingLastWord ([Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List; func_71530_a +MD net/minecraft/command/CommandBase parseDouble (DLjava/lang/String;IIZ)D func_175769_b +MD net/minecraft/command/CommandBase parseDouble (DLjava/lang/String;Z)D func_175761_b +MD net/minecraft/command/CommandBase parseLong (Ljava/lang/String;)J func_175766_b +MD net/minecraft/command/CommandBase getCommandSenderAsPlayer (Lnet/minecraft/command/ICommandSender;)Lnet/minecraft/entity/player/EntityPlayerMP; func_71521_c +MD net/minecraft/command/CommandBase getEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/Entity; func_175768_b +MD net/minecraft/command/CommandBase getChatComponentFromNthArg (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;IZ)Lnet/minecraft/util/IChatComponent; func_147176_a +MD net/minecraft/command/CommandBase func_181043_b ([Ljava/lang/String;ILnet/minecraft/util/BlockPos;)Ljava/util/List; func_181043_b +MD net/minecraft/command/CommandBase parseDouble (Ljava/lang/String;)D func_175765_c +MD net/minecraft/command/CommandBase func_175763_c (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/util/List; func_175763_c +MD net/minecraft/command/CommandBase parseBoolean (Ljava/lang/String;)Z func_180527_d +MD net/minecraft/command/CommandBase getPlayerName (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/lang/String; func_96332_d +MD net/minecraft/command/CommandBase getEntityName (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Ljava/lang/String; func_175758_e +MD net/minecraft/command/CommandBase getItemByText (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/item/Item; func_147179_f +MD net/minecraft/command/CommandBase getBlockByText (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/block/Block; func_147180_g +MD net/minecraft/command/CommandBase compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/command/CommandBase$CoordinateArg func_179628_a ()D func_179628_a +MD net/minecraft/command/CommandBase$CoordinateArg func_179629_b ()D func_179629_b +MD net/minecraft/command/CommandBase$CoordinateArg func_179630_c ()Z func_179630_c +MD net/minecraft/command/CommandHandler registerCommand (Lnet/minecraft/command/ICommand;)Lnet/minecraft/command/ICommand; func_71560_a +MD net/minecraft/command/CommandHandler getUsernameIndex (Lnet/minecraft/command/ICommand;[Ljava/lang/String;)I func_82370_a +MD net/minecraft/command/CommandHandler tryExecute (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;Lnet/minecraft/command/ICommand;Ljava/lang/String;)Z func_175786_a +MD net/minecraft/command/CommandHandler dropFirstString ([Ljava/lang/String;)[Ljava/lang/String; func_71559_a +MD net/minecraft/command/ICommand canCommandSenderUseCommand (Lnet/minecraft/command/ICommandSender;)Z func_71519_b +MD net/minecraft/command/ICommand processCommand (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;)V func_71515_b +MD net/minecraft/command/ICommand addTabCompletionOptions (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_180525_a +MD net/minecraft/command/ICommand getCommandAliases ()Ljava/util/List; func_71514_a +MD net/minecraft/command/ICommand isUsernameIndex ([Ljava/lang/String;I)Z func_82358_a +MD net/minecraft/command/ICommand getCommandName ()Ljava/lang/String; func_71517_b +MD net/minecraft/command/ICommand getCommandUsage (Lnet/minecraft/command/ICommandSender;)Ljava/lang/String; func_71518_a +MD net/minecraft/command/ICommandManager getCommands ()Ljava/util/Map; func_71555_a +MD net/minecraft/command/ICommandManager getPossibleCommands (Lnet/minecraft/command/ICommandSender;)Ljava/util/List; func_71557_a +MD net/minecraft/command/ICommandManager executeCommand (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)I func_71556_a +MD net/minecraft/command/ICommandManager getTabCompletionOptions (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_180524_a +MD net/minecraft/command/ICommandSender canCommandSenderUseCommand (ILjava/lang/String;)Z func_70003_b +MD net/minecraft/command/ICommandSender addChatMessage (Lnet/minecraft/util/IChatComponent;)V func_145747_a +MD net/minecraft/command/ICommandSender setCommandStat (Lnet/minecraft/command/CommandResultStats$Type;I)V func_174794_a +MD net/minecraft/command/ICommandSender getPosition ()Lnet/minecraft/util/BlockPos; func_180425_c +MD net/minecraft/command/ICommandSender getPositionVector ()Lnet/minecraft/util/Vec3; func_174791_d +MD net/minecraft/command/ICommandSender getEntityWorld ()Lnet/minecraft/world/World; func_130014_f_ +MD net/minecraft/command/ICommandSender getName ()Ljava/lang/String; func_70005_c_ +MD net/minecraft/command/ICommandSender getCommandSenderEntity ()Lnet/minecraft/entity/Entity; func_174793_f +MD net/minecraft/command/ICommandSender getDisplayName ()Lnet/minecraft/util/IChatComponent; func_145748_c_ +MD net/minecraft/command/ICommandSender sendCommandFeedback ()Z func_174792_t_ +MD net/minecraft/command/CommandResultStats readStatsFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_179668_a +MD net/minecraft/command/CommandResultStats setCommandStatScore (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/command/CommandResultStats$Type;I)V func_179672_a +MD net/minecraft/command/CommandResultStats addAllStats (Lnet/minecraft/command/CommandResultStats;)V func_179671_a +MD net/minecraft/command/CommandResultStats removeScoreBoardStat (Lnet/minecraft/command/CommandResultStats;Lnet/minecraft/command/CommandResultStats$Type;)V func_179669_a +MD net/minecraft/command/CommandResultStats setScoreBoardStat (Lnet/minecraft/command/CommandResultStats;Lnet/minecraft/command/CommandResultStats$Type;Ljava/lang/String;Ljava/lang/String;)V func_179667_a +MD net/minecraft/command/CommandResultStats writeStatsToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_179670_b +MD net/minecraft/command/CommandResultStats$Type getTypeID ()I func_179636_a +MD net/minecraft/command/CommandResultStats$Type getTypeByName (Ljava/lang/String;)Lnet/minecraft/command/CommandResultStats$Type; func_179635_a +MD net/minecraft/command/CommandResultStats$Type getTypeName ()Ljava/lang/String; func_179637_b +MD net/minecraft/command/CommandResultStats$Type getTypeNames ()[Ljava/lang/String; func_179634_c +MD net/minecraft/command/CommandResultStats$Type valueOf (Ljava/lang/String;)Lnet/minecraft/command/CommandResultStats$Type; valueOf +MD net/minecraft/command/CommandResultStats$Type values ()[Lnet/minecraft/command/CommandResultStats$Type; values +MD net/minecraft/command/PlayerSelector func_179650_a (I)I func_179650_a +MD net/minecraft/command/PlayerSelector func_179661_a (Lnet/minecraft/util/BlockPos;III)Lnet/minecraft/util/AxisAlignedBB; func_179661_a +MD net/minecraft/command/PlayerSelector matchesMultiplePlayers (Ljava/lang/String;)Z func_82377_a +MD net/minecraft/command/PlayerSelector func_179658_a (Ljava/util/List;Ljava/util/Map;Lnet/minecraft/command/ICommandSender;Ljava/lang/Class;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_179658_a +MD net/minecraft/command/PlayerSelector func_96560_a (Ljava/util/Map;)Ljava/util/Map; func_96560_a +MD net/minecraft/command/PlayerSelector func_180698_a (Ljava/util/Map;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_180698_a +MD net/minecraft/command/PlayerSelector filterResults (Ljava/util/Map;Ljava/lang/Class;Ljava/util/List;Ljava/lang/String;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_179660_a +MD net/minecraft/command/PlayerSelector func_179663_a (Ljava/util/Map;Ljava/lang/String;)Ljava/util/List; func_179663_a +MD net/minecraft/command/PlayerSelector parseIntWithDefault (Ljava/util/Map;Ljava/lang/String;I)I func_179653_a +MD net/minecraft/command/PlayerSelector matchOnePlayer (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; func_82386_a +MD net/minecraft/command/PlayerSelector matchOneEntity (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/entity/Entity; func_179652_a +MD net/minecraft/command/PlayerSelector getWorlds (Lnet/minecraft/command/ICommandSender;Ljava/util/Map;)Ljava/util/List; func_179654_a +MD net/minecraft/command/PlayerSelector hasArguments (Ljava/lang/String;)Z func_82378_b +MD net/minecraft/command/PlayerSelector getXpLevelPredicates (Ljava/util/Map;)Ljava/util/List; func_179648_b +MD net/minecraft/command/PlayerSelector func_179664_b (Ljava/util/Map;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_179664_b +MD net/minecraft/command/PlayerSelector func_179651_b (Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String; func_179651_b +MD net/minecraft/command/PlayerSelector matchEntitiesToChatComponent (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; func_150869_b +MD net/minecraft/command/PlayerSelector matchEntities (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/List; func_179656_b +MD net/minecraft/command/PlayerSelector isEntityTypeValid (Lnet/minecraft/command/ICommandSender;Ljava/util/Map;)Z func_179655_b +MD net/minecraft/command/PlayerSelector getArgumentMap (Ljava/lang/String;)Ljava/util/Map; func_82381_h +MD net/minecraft/command/PlayerSelector getGamemodePredicates (Ljava/util/Map;)Ljava/util/List; func_179649_c +MD net/minecraft/command/PlayerSelector getTeamPredicates (Ljava/util/Map;)Ljava/util/List; func_179659_d +MD net/minecraft/command/PlayerSelector getScorePredicates (Ljava/util/Map;)Ljava/util/List; func_179657_e +MD net/minecraft/command/PlayerSelector getNamePredicates (Ljava/util/Map;)Ljava/util/List; func_179647_f +MD net/minecraft/command/PlayerSelector getRotationsPredicates (Ljava/util/Map;)Ljava/util/List; func_179662_g +MD net/minecraft/command/PlayerSelector func_179665_h (Ljava/util/Map;)Z func_179665_h +MD net/minecraft/command/PlayerSelector$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$2 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$3 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$3 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$4 compare (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)I compare +MD net/minecraft/command/PlayerSelector$4 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/command/PlayerSelector$5 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$5 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$6 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$6 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$7 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$7 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$8 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$8 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$9 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$9 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$10 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$10 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$11 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$11 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/PlayerSelector$12 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/command/PlayerSelector$12 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/server/CommandAchievement$1 apply (Lnet/minecraft/stats/Achievement;)Z apply +MD net/minecraft/command/server/CommandAchievement$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/command/server/CommandBanIp func_147210_a (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Ljava/lang/String;)V func_147210_a +MD net/minecraft/command/CommandClearInventory func_147209_d ()[Ljava/lang/String; func_147209_d +MD net/minecraft/command/CommandDebug func_147202_a (ILjava/lang/String;Ljava/lang/StringBuilder;)V func_147202_a +MD net/minecraft/command/CommandDebug saveProfileResults (JI)V func_147205_a +MD net/minecraft/command/CommandDebug getProfileResults (JI)Ljava/lang/String; func_147204_b +MD net/minecraft/command/CommandDebug getWittyComment ()Ljava/lang/String; func_147203_d +MD net/minecraft/command/CommandDefaultGameMode setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_71541_a +MD net/minecraft/command/CommandEffect getAllUsernames ()[Ljava/lang/String; func_98152_d +MD net/minecraft/command/CommandEnchant getListOfPlayers ()[Ljava/lang/String; func_90022_d +MD net/minecraft/command/CommandXP getAllUsernames ()[Ljava/lang/String; func_71542_c +MD net/minecraft/command/CommandDifficulty getDifficultyFromCommand (Ljava/lang/String;)Lnet/minecraft/world/EnumDifficulty; func_180531_e +MD net/minecraft/command/CommandGameMode getListOfPlayerUsernames ()[Ljava/lang/String; func_71538_c +MD net/minecraft/command/CommandGameMode getGameModeFromCommand (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; func_71539_b +MD net/minecraft/command/CommandGameRule func_175773_a (Lnet/minecraft/world/GameRules;Ljava/lang/String;)V func_175773_a +MD net/minecraft/command/CommandGameRule getGameRules ()Lnet/minecraft/world/GameRules; func_82366_d +MD net/minecraft/command/CommandGive getPlayers ()[Ljava/lang/String; func_71536_c +MD net/minecraft/command/CommandHelp getCommands ()Ljava/util/Map; func_71535_c +MD net/minecraft/command/CommandHelp getSortedPossibleCommands (Lnet/minecraft/command/ICommandSender;)Ljava/util/List; func_71534_d +MD net/minecraft/command/CommandReplaceItem getUsernames ()[Ljava/lang/String; func_175784_d +MD net/minecraft/command/CommandReplaceItem getSlotForShortcut (Ljava/lang/String;)I func_175783_e +MD net/minecraft/command/server/CommandScoreboard getObjective (Ljava/lang/String;Z)Lnet/minecraft/scoreboard/ScoreObjective; func_147189_a +MD net/minecraft/command/server/CommandScoreboard func_147184_a (Z)Ljava/util/List; func_147184_a +MD net/minecraft/command/server/CommandScoreboard func_175780_b (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;)Z func_175780_b +MD net/minecraft/command/server/CommandScoreboard addObjective (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147193_c +MD net/minecraft/command/server/CommandScoreboard addTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147185_d +MD net/minecraft/command/server/CommandScoreboard getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; func_147192_d +MD net/minecraft/command/server/CommandScoreboard listObjectives (Lnet/minecraft/command/ICommandSender;)V func_147196_d +MD net/minecraft/command/server/CommandScoreboard setTeamOption (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147200_e +MD net/minecraft/command/server/CommandScoreboard func_175782_e ()Ljava/util/List; func_175782_e +MD net/minecraft/command/server/CommandScoreboard getTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; func_147183_a +MD net/minecraft/command/server/CommandScoreboard removeTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147194_f +MD net/minecraft/command/server/CommandScoreboard listTeams (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147186_g +MD net/minecraft/command/server/CommandScoreboard joinTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147190_h +MD net/minecraft/command/server/CommandScoreboard removeObjective (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;)V func_147191_h +MD net/minecraft/command/server/CommandScoreboard leaveTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147199_i +MD net/minecraft/command/server/CommandScoreboard emptyTeam (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147188_j +MD net/minecraft/command/server/CommandScoreboard setObjectiveDisplay (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147198_k +MD net/minecraft/command/server/CommandScoreboard listPlayers (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147195_l +MD net/minecraft/command/server/CommandScoreboard setPlayer (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147197_m +MD net/minecraft/command/server/CommandScoreboard resetPlayers (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_147187_n +MD net/minecraft/command/server/CommandScoreboard func_175779_n (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_175779_n +MD net/minecraft/command/server/CommandScoreboard func_175781_o (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_175781_o +MD net/minecraft/command/server/CommandScoreboard func_175778_p (Lnet/minecraft/command/ICommandSender;[Ljava/lang/String;I)V func_175778_p +MD net/minecraft/command/CommandSpreadPlayers func_110668_a (Lnet/minecraft/command/CommandSpreadPlayers$Position;DLnet/minecraft/world/World;Ljava/util/Random;DDDD[Lnet/minecraft/command/CommandSpreadPlayers$Position;Z)I func_110668_a +MD net/minecraft/command/CommandSpreadPlayers func_110671_a (Ljava/util/List;Lnet/minecraft/world/World;[Lnet/minecraft/command/CommandSpreadPlayers$Position;Z)D func_110671_a +MD net/minecraft/command/CommandSpreadPlayers func_110670_a (Ljava/util/Random;IDDDD)[Lnet/minecraft/command/CommandSpreadPlayers$Position; func_110670_a +MD net/minecraft/command/CommandSpreadPlayers func_110669_a (Lnet/minecraft/command/ICommandSender;Ljava/util/List;Lnet/minecraft/command/CommandSpreadPlayers$Position;DDLnet/minecraft/world/World;Z)V func_110669_a +MD net/minecraft/command/CommandSpreadPlayers func_110667_a (Ljava/util/List;)I func_110667_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111095_a ()V func_111095_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111093_a (DDDD)Z func_111093_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111092_a (Lnet/minecraft/world/World;)I func_111092_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111099_a (Lnet/minecraft/command/CommandSpreadPlayers$Position;)D func_111099_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111097_a (Ljava/util/Random;DDDD)V func_111097_a +MD net/minecraft/command/CommandSpreadPlayers$Position func_111096_b ()F func_111096_b +MD net/minecraft/command/CommandSpreadPlayers$Position func_111098_b (Lnet/minecraft/world/World;)Z func_111098_b +MD net/minecraft/command/CommandSpreadPlayers$Position func_111094_b (Lnet/minecraft/command/CommandSpreadPlayers$Position;)V func_111094_b +MD net/minecraft/command/CommandStats func_175776_d ()[Ljava/lang/String; func_175776_d +MD net/minecraft/command/CommandStats func_175777_e ()Ljava/util/List; func_175777_e +MD net/minecraft/command/CommandTime setTime (Lnet/minecraft/command/ICommandSender;I)V func_71552_a +MD net/minecraft/command/CommandTime addTime (Lnet/minecraft/command/ICommandSender;I)V func_71553_b +MD net/minecraft/command/CommandToggleDownfall toggleDownfall ()V func_71554_c +MD net/minecraft/command/CommandWorldBorder getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; func_175772_d +MD net/minecraft/command/CommandException getErrorObjects ()[Ljava/lang/Object; func_74844_a +MD net/minecraft/util/BlockPos up ()Lnet/minecraft/util/BlockPos; func_177984_a +MD net/minecraft/util/BlockPos add (DDD)Lnet/minecraft/util/BlockPos; func_177963_a +MD net/minecraft/util/BlockPos add (III)Lnet/minecraft/util/BlockPos; func_177982_a +MD net/minecraft/util/BlockPos fromLong (J)Lnet/minecraft/util/BlockPos; func_177969_a +MD net/minecraft/util/BlockPos getAllInBox (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Ljava/lang/Iterable; func_177980_a +MD net/minecraft/util/BlockPos offset (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/BlockPos; func_177972_a +MD net/minecraft/util/BlockPos offset (Lnet/minecraft/util/EnumFacing;I)Lnet/minecraft/util/BlockPos; func_177967_a +MD net/minecraft/util/BlockPos add (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; func_177971_a +MD net/minecraft/util/BlockPos down ()Lnet/minecraft/util/BlockPos; func_177977_b +MD net/minecraft/util/BlockPos up (I)Lnet/minecraft/util/BlockPos; func_177981_b +MD net/minecraft/util/BlockPos getAllInBoxMutable (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Ljava/lang/Iterable; func_177975_b +MD net/minecraft/util/BlockPos subtract (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; func_177973_b +MD net/minecraft/util/BlockPos north ()Lnet/minecraft/util/BlockPos; func_177978_c +MD net/minecraft/util/BlockPos down (I)Lnet/minecraft/util/BlockPos; func_177979_c +MD net/minecraft/util/BlockPos crossProduct (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/BlockPos; func_177955_d +MD net/minecraft/util/BlockPos south ()Lnet/minecraft/util/BlockPos; func_177968_d +MD net/minecraft/util/BlockPos north (I)Lnet/minecraft/util/BlockPos; func_177964_d +MD net/minecraft/util/BlockPos west ()Lnet/minecraft/util/BlockPos; func_177976_e +MD net/minecraft/util/BlockPos south (I)Lnet/minecraft/util/BlockPos; func_177970_e +MD net/minecraft/util/BlockPos east ()Lnet/minecraft/util/BlockPos; func_177974_f +MD net/minecraft/util/BlockPos west (I)Lnet/minecraft/util/BlockPos; func_177985_f +MD net/minecraft/util/BlockPos toLong ()J func_177986_g +MD net/minecraft/util/BlockPos east (I)Lnet/minecraft/util/BlockPos; func_177965_g +MD net/minecraft/util/BlockPos$1 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/BlockPos$1$1 computeNext ()Lnet/minecraft/util/BlockPos; computeNext +MD net/minecraft/util/BlockPos$1$1 computeNext ()Ljava/lang/Object; computeNext +MD net/minecraft/util/BlockPos$2 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/BlockPos$2$1 computeNext ()Lnet/minecraft/util/BlockPos$MutableBlockPos; computeNext +MD net/minecraft/util/BlockPos$2$1 computeNext ()Ljava/lang/Object; computeNext +MD net/minecraft/util/BlockPos$MutableBlockPos access$002 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I access$002 +MD net/minecraft/util/BlockPos$MutableBlockPos access$102 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I access$102 +MD net/minecraft/util/BlockPos$MutableBlockPos set (III)Lnet/minecraft/util/BlockPos$MutableBlockPos; func_181079_c +MD net/minecraft/util/BlockPos$MutableBlockPos access$202 (Lnet/minecraft/util/BlockPos$MutableBlockPos;I)I access$202 +MD net/minecraft/dispenser/IBlockSource getBlockPos ()Lnet/minecraft/util/BlockPos; func_180699_d +MD net/minecraft/dispenser/IBlockSource getBlockMetadata ()I func_82620_h +MD net/minecraft/dispenser/IBlockSource getBlockTileEntity ()Lnet/minecraft/tileentity/TileEntity; func_150835_j +MD net/minecraft/util/Cartesian access$200 (Ljava/lang/Class;I)[Ljava/lang/Object; access$200 +MD net/minecraft/util/Cartesian cartesianProduct (Ljava/lang/Class;Ljava/lang/Iterable;)Ljava/lang/Iterable; func_179318_a +MD net/minecraft/util/Cartesian cartesianProduct (Ljava/lang/Iterable;)Ljava/lang/Iterable; func_179321_a +MD net/minecraft/util/Cartesian createArray (Ljava/lang/Class;I)[Ljava/lang/Object; func_179319_b +MD net/minecraft/util/Cartesian toArray (Ljava/lang/Class;Ljava/lang/Iterable;)[Ljava/lang/Object; func_179322_b +MD net/minecraft/util/Cartesian arraysAsLists (Ljava/lang/Iterable;)Ljava/lang/Iterable; func_179323_b +MD net/minecraft/util/Cartesian$GetList apply ([Ljava/lang/Object;)Ljava/util/List; apply +MD net/minecraft/util/Cartesian$GetList apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/util/Cartesian$Product iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/Cartesian$Product$ProductIterator next ()[Ljava/lang/Object; next +MD net/minecraft/util/Cartesian$Product$ProductIterator endOfData ()V func_179422_b +MD net/minecraft/util/Cartesian$Product$ProductIterator hasNext ()Z hasNext +MD net/minecraft/util/Cartesian$Product$ProductIterator next ()Ljava/lang/Object; next +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem doDispense (Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;Lnet/minecraft/dispenser/IPosition;)V func_82486_a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem playDispenseSound (Lnet/minecraft/dispenser/IBlockSource;)V func_82485_a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem spawnDispenseParticles (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/util/EnumFacing;)V func_82489_a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem func_82488_a (Lnet/minecraft/util/EnumFacing;)I func_82488_a +MD net/minecraft/dispenser/BehaviorDefaultDispenseItem dispenseStack (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; func_82487_b +MD net/minecraft/util/RegistryNamespacedDefaultedByKey validateKey ()V func_177776_a +MD net/minecraft/util/EnumFacing getIndex ()I func_176745_a +MD net/minecraft/util/EnumFacing fromAngle (D)Lnet/minecraft/util/EnumFacing; func_176733_a +MD net/minecraft/util/EnumFacing getFacingFromVector (FFF)Lnet/minecraft/util/EnumFacing; func_176737_a +MD net/minecraft/util/EnumFacing getFront (I)Lnet/minecraft/util/EnumFacing; func_82600_a +MD net/minecraft/util/EnumFacing rotateAround (Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/util/EnumFacing; func_176732_a +MD net/minecraft/util/EnumFacing getFacingFromAxis (Lnet/minecraft/util/EnumFacing$AxisDirection;Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/util/EnumFacing; func_181076_a +MD net/minecraft/util/EnumFacing byName (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; func_176739_a +MD net/minecraft/util/EnumFacing random (Ljava/util/Random;)Lnet/minecraft/util/EnumFacing; func_176741_a +MD net/minecraft/util/EnumFacing getHorizontalIndex ()I func_176736_b +MD net/minecraft/util/EnumFacing getHorizontal (I)Lnet/minecraft/util/EnumFacing; func_176731_b +MD net/minecraft/util/EnumFacing getAxisDirection ()Lnet/minecraft/util/EnumFacing$AxisDirection; func_176743_c +MD net/minecraft/util/EnumFacing getOpposite ()Lnet/minecraft/util/EnumFacing; func_176734_d +MD net/minecraft/util/EnumFacing rotateY ()Lnet/minecraft/util/EnumFacing; func_176746_e +MD net/minecraft/util/EnumFacing rotateYCCW ()Lnet/minecraft/util/EnumFacing; func_176735_f +MD net/minecraft/util/EnumFacing getFrontOffsetX ()I func_82601_c +MD net/minecraft/util/EnumFacing getFrontOffsetY ()I func_96559_d +MD net/minecraft/util/EnumFacing getFrontOffsetZ ()I func_82599_e +MD net/minecraft/util/EnumFacing getName2 ()Ljava/lang/String; func_176742_j +MD net/minecraft/util/EnumFacing getAxis ()Lnet/minecraft/util/EnumFacing$Axis; func_176740_k +MD net/minecraft/util/EnumFacing getDirectionVec ()Lnet/minecraft/util/Vec3i; func_176730_m +MD net/minecraft/util/EnumFacing rotateX ()Lnet/minecraft/util/EnumFacing; func_176744_n +MD net/minecraft/util/EnumFacing rotateZ ()Lnet/minecraft/util/EnumFacing; func_176738_p +MD net/minecraft/util/EnumFacing toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; valueOf +MD net/minecraft/util/EnumFacing values ()[Lnet/minecraft/util/EnumFacing; values +MD net/minecraft/util/EnumFacing$Axis getName2 ()Ljava/lang/String; func_176719_a +MD net/minecraft/util/EnumFacing$Axis apply (Lnet/minecraft/util/EnumFacing;)Z apply +MD net/minecraft/util/EnumFacing$Axis byName (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Axis; func_176717_a +MD net/minecraft/util/EnumFacing$Axis isVertical ()Z func_176720_b +MD net/minecraft/util/EnumFacing$Axis isHorizontal ()Z func_176722_c +MD net/minecraft/util/EnumFacing$Axis getPlane ()Lnet/minecraft/util/EnumFacing$Plane; func_176716_d +MD net/minecraft/util/EnumFacing$Axis apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EnumFacing$Axis toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing$Axis valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Axis; valueOf +MD net/minecraft/util/EnumFacing$Axis values ()[Lnet/minecraft/util/EnumFacing$Axis; values +MD net/minecraft/util/EnumFacing$AxisDirection getOffset ()I func_179524_a +MD net/minecraft/util/EnumFacing$AxisDirection toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumFacing$AxisDirection valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$AxisDirection; valueOf +MD net/minecraft/util/EnumFacing$AxisDirection values ()[Lnet/minecraft/util/EnumFacing$AxisDirection; values +MD net/minecraft/util/EnumFacing$Plane facings ()[Lnet/minecraft/util/EnumFacing; func_179516_a +MD net/minecraft/util/EnumFacing$Plane apply (Lnet/minecraft/util/EnumFacing;)Z apply +MD net/minecraft/util/EnumFacing$Plane random (Ljava/util/Random;)Lnet/minecraft/util/EnumFacing; func_179518_a +MD net/minecraft/util/EnumFacing$Plane apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EnumFacing$Plane iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/EnumFacing$Plane valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing$Plane; valueOf +MD net/minecraft/util/EnumFacing$Plane values ()[Lnet/minecraft/util/EnumFacing$Plane; values +MD net/minecraft/dispenser/IBehaviorDispenseItem dispense (Lnet/minecraft/dispenser/IBlockSource;Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; func_82482_a +MD net/minecraft/util/ObjectIntIdentityMap getByValue (I)Ljava/lang/Object; func_148745_a +MD net/minecraft/util/ObjectIntIdentityMap put (Ljava/lang/Object;I)V func_148746_a +MD net/minecraft/util/ObjectIntIdentityMap get (Ljava/lang/Object;)I func_148747_b +MD net/minecraft/util/ObjectIntIdentityMap iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/dispenser/ILocation getWorld ()Lnet/minecraft/world/World; func_82618_k +MD net/minecraft/util/MapPopulator populateMap (Ljava/lang/Iterable;Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map; func_179399_a +MD net/minecraft/util/MapPopulator createMap (Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Map; func_179400_b +MD net/minecraft/util/RegistryNamespaced getObjectById (I)Ljava/lang/Object; func_148754_a +MD net/minecraft/util/RegistryNamespaced register (ILjava/lang/Object;Ljava/lang/Object;)V func_177775_a +MD net/minecraft/util/RegistryNamespaced getIDForObject (Ljava/lang/Object;)I func_148757_b +MD net/minecraft/util/RegistryNamespaced getNameForObject (Ljava/lang/Object;)Ljava/lang/Object; func_177774_c +MD net/minecraft/util/EnumParticleTypes getParticleNames ()[Ljava/lang/String; func_179349_a +MD net/minecraft/util/EnumParticleTypes getParticleFromId (I)Lnet/minecraft/util/EnumParticleTypes; func_179342_a +MD net/minecraft/util/EnumParticleTypes getParticleName ()Ljava/lang/String; func_179346_b +MD net/minecraft/util/EnumParticleTypes getParticleID ()I func_179348_c +MD net/minecraft/util/EnumParticleTypes getArgumentCount ()I func_179345_d +MD net/minecraft/util/EnumParticleTypes getShouldIgnoreRange ()Z func_179344_e +MD net/minecraft/util/EnumParticleTypes hasArguments ()Z func_179343_f +MD net/minecraft/util/EnumParticleTypes valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumParticleTypes; valueOf +MD net/minecraft/util/EnumParticleTypes values ()[Lnet/minecraft/util/EnumParticleTypes; values +MD net/minecraft/dispenser/IPosition getX ()D func_82615_a +MD net/minecraft/dispenser/IPosition getY ()D func_82617_b +MD net/minecraft/dispenser/IPosition getZ ()D func_82616_c +MD net/minecraft/util/IRegistry getObject (Ljava/lang/Object;)Ljava/lang/Object; func_82594_a +MD net/minecraft/util/IRegistry putObject (Ljava/lang/Object;Ljava/lang/Object;)V func_82595_a +MD net/minecraft/util/Rotations writeToNBT ()Lnet/minecraft/nbt/NBTTagList; func_179414_a +MD net/minecraft/util/Rotations getX ()F func_179415_b +MD net/minecraft/util/Rotations getY ()F func_179416_c +MD net/minecraft/util/Rotations getZ ()F func_179413_d +MD net/minecraft/util/Rotations equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/RegistrySimple createUnderlyingMap ()Ljava/util/Map; func_148740_a +MD net/minecraft/util/RegistrySimple getKeys ()Ljava/util/Set; func_148742_b +MD net/minecraft/util/RegistrySimple containsKey (Ljava/lang/Object;)Z func_148741_d +MD net/minecraft/util/RegistrySimple iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/Vec3i distanceSq (DDD)D func_177954_c +MD net/minecraft/util/Vec3i distanceSqToCenter (DDD)D func_177957_d +MD net/minecraft/util/Vec3i crossProduct (Lnet/minecraft/util/Vec3i;)Lnet/minecraft/util/Vec3i; func_177955_d +MD net/minecraft/util/Vec3i compareTo (Lnet/minecraft/util/Vec3i;)I compareTo +MD net/minecraft/util/Vec3i distanceSq (Lnet/minecraft/util/Vec3i;)D func_177951_i +MD net/minecraft/util/Vec3i getX ()I func_177958_n +MD net/minecraft/util/Vec3i getY ()I func_177956_o +MD net/minecraft/util/Vec3i getZ ()I func_177952_p +MD net/minecraft/util/Vec3i compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/util/Vec3i equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/Vec3i hashCode ()I hashCode +MD net/minecraft/util/Vec3i toString ()Ljava/lang/String; toString +MD net/minecraft/util/StatCollector getLastTranslationUpdateTimeInMilliseconds ()J func_150827_a +MD net/minecraft/util/StatCollector translateToLocal (Ljava/lang/String;)Ljava/lang/String; func_74838_a +MD net/minecraft/util/StatCollector translateToLocalFormatted (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; func_74837_a +MD net/minecraft/util/StatCollector translateToFallback (Ljava/lang/String;)Ljava/lang/String; func_150826_b +MD net/minecraft/util/StatCollector canTranslate (Ljava/lang/String;)Z func_94522_b +MD net/minecraft/util/StringTranslate getInstance ()Lnet/minecraft/util/StringTranslate; func_74808_a +MD net/minecraft/util/StringTranslate translateKey (Ljava/lang/String;)Ljava/lang/String; func_74805_b +MD net/minecraft/util/StringTranslate translateKeyFormat (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; func_74803_a +MD net/minecraft/util/StringTranslate replaceWith (Ljava/util/Map;)V func_135063_a +MD net/minecraft/util/StringTranslate isKeyTranslated (Ljava/lang/String;)Z func_94520_b +MD net/minecraft/util/StringTranslate getLastUpdateTimeInMilliseconds ()J func_150510_c +MD net/minecraft/util/StringTranslate tryTranslateKey (Ljava/lang/String;)Ljava/lang/String; func_135064_c +MD net/minecraft/nbt/NBTTagByteArray getByteArray ()[B func_150292_c +MD net/minecraft/nbt/NBTTagCompound readNBT (BLjava/lang/String;Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTBase; func_152449_a +MD net/minecraft/nbt/NBTTagCompound merge (Lnet/minecraft/nbt/NBTTagCompound;)V func_179237_a +MD net/minecraft/nbt/NBTTagCompound readType (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)B func_152447_a +MD net/minecraft/nbt/NBTTagCompound getTag (Ljava/lang/String;)Lnet/minecraft/nbt/NBTBase; func_74781_a +MD net/minecraft/nbt/NBTTagCompound setByte (Ljava/lang/String;B)V func_74774_a +MD net/minecraft/nbt/NBTTagCompound setDouble (Ljava/lang/String;D)V func_74780_a +MD net/minecraft/nbt/NBTTagCompound setFloat (Ljava/lang/String;F)V func_74776_a +MD net/minecraft/nbt/NBTTagCompound setInteger (Ljava/lang/String;I)V func_74768_a +MD net/minecraft/nbt/NBTTagCompound createCrashReport (Ljava/lang/String;ILjava/lang/ClassCastException;)Lnet/minecraft/crash/CrashReport; func_82581_a +MD net/minecraft/nbt/NBTTagCompound setLong (Ljava/lang/String;J)V func_74772_a +MD net/minecraft/nbt/NBTTagCompound setTag (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;)V func_74782_a +MD net/minecraft/nbt/NBTTagCompound writeEntry (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;Ljava/io/DataOutput;)V func_150298_a +MD net/minecraft/nbt/NBTTagCompound setString (Ljava/lang/String;Ljava/lang/String;)V func_74778_a +MD net/minecraft/nbt/NBTTagCompound setShort (Ljava/lang/String;S)V func_74777_a +MD net/minecraft/nbt/NBTTagCompound setBoolean (Ljava/lang/String;Z)V func_74757_a +MD net/minecraft/nbt/NBTTagCompound setByteArray (Ljava/lang/String;[B)V func_74773_a +MD net/minecraft/nbt/NBTTagCompound setIntArray (Ljava/lang/String;[I)V func_74783_a +MD net/minecraft/nbt/NBTTagCompound access$000 (Lnet/minecraft/nbt/NBTTagCompound;)Ljava/util/Map; access$000 +MD net/minecraft/nbt/NBTTagCompound readKey (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)Ljava/lang/String; func_152448_b +MD net/minecraft/nbt/NBTTagCompound getTagId (Ljava/lang/String;)B func_150299_b +MD net/minecraft/nbt/NBTTagCompound hasKey (Ljava/lang/String;I)Z func_150297_b +MD net/minecraft/nbt/NBTTagCompound getKeySet ()Ljava/util/Set; func_150296_c +MD net/minecraft/nbt/NBTTagCompound hasKey (Ljava/lang/String;)Z func_74764_b +MD net/minecraft/nbt/NBTTagCompound getTagList (Ljava/lang/String;I)Lnet/minecraft/nbt/NBTTagList; func_150295_c +MD net/minecraft/nbt/NBTTagCompound getByte (Ljava/lang/String;)B func_74771_c +MD net/minecraft/nbt/NBTTagCompound getShort (Ljava/lang/String;)S func_74765_d +MD net/minecraft/nbt/NBTTagCompound getInteger (Ljava/lang/String;)I func_74762_e +MD net/minecraft/nbt/NBTTagCompound getLong (Ljava/lang/String;)J func_74763_f +MD net/minecraft/nbt/NBTTagCompound getFloat (Ljava/lang/String;)F func_74760_g +MD net/minecraft/nbt/NBTTagCompound getDouble (Ljava/lang/String;)D func_74769_h +MD net/minecraft/nbt/NBTTagCompound getString (Ljava/lang/String;)Ljava/lang/String; func_74779_i +MD net/minecraft/nbt/NBTTagCompound getByteArray (Ljava/lang/String;)[B func_74770_j +MD net/minecraft/nbt/NBTTagCompound getIntArray (Ljava/lang/String;)[I func_74759_k +MD net/minecraft/nbt/NBTTagCompound getCompoundTag (Ljava/lang/String;)Lnet/minecraft/nbt/NBTTagCompound; func_74775_l +MD net/minecraft/nbt/NBTTagCompound getBoolean (Ljava/lang/String;)Z func_74767_n +MD net/minecraft/nbt/NBTTagCompound removeTag (Ljava/lang/String;)V func_82580_o +MD net/minecraft/nbt/NBTTagCompound$1 call ()Ljava/lang/String; call +MD net/minecraft/nbt/NBTTagCompound$1 call ()Ljava/lang/Object; call +MD net/minecraft/nbt/NBTTagCompound$2 call ()Ljava/lang/String; call +MD net/minecraft/nbt/NBTTagCompound$2 call ()Ljava/lang/Object; call +MD net/minecraft/nbt/NBTTagIntArray getIntArray ()[I func_150302_c +MD net/minecraft/nbt/NBTTagList removeTag (I)Lnet/minecraft/nbt/NBTBase; func_74744_a +MD net/minecraft/nbt/NBTTagList set (ILnet/minecraft/nbt/NBTBase;)V func_150304_a +MD net/minecraft/nbt/NBTTagList appendTag (Lnet/minecraft/nbt/NBTBase;)V func_74742_a +MD net/minecraft/nbt/NBTTagList getCompoundTagAt (I)Lnet/minecraft/nbt/NBTTagCompound; func_150305_b +MD net/minecraft/nbt/NBTTagList tagCount ()I func_74745_c +MD net/minecraft/nbt/NBTTagList getIntArrayAt (I)[I func_150306_c +MD net/minecraft/nbt/NBTTagList getDoubleAt (I)D func_150309_d +MD net/minecraft/nbt/NBTTagList getFloatAt (I)F func_150308_e +MD net/minecraft/nbt/NBTTagList getTagType ()I func_150303_d +MD net/minecraft/nbt/NBTTagList getStringTagAt (I)Ljava/lang/String; func_150307_f +MD net/minecraft/nbt/NBTTagList get (I)Lnet/minecraft/nbt/NBTBase; func_179238_g +MD net/minecraft/nbt/NBTSizeTracker read (J)V func_152450_a +MD net/minecraft/nbt/CompressedStreamTools write (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/DataOutput;)V func_74800_a +MD net/minecraft/nbt/CompressedStreamTools safeWrite (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/File;)V func_74793_a +MD net/minecraft/nbt/CompressedStreamTools writeCompressed (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/OutputStream;)V func_74799_a +MD net/minecraft/nbt/CompressedStreamTools writeTag (Lnet/minecraft/nbt/NBTBase;Ljava/io/DataOutput;)V func_150663_a +MD net/minecraft/nbt/CompressedStreamTools func_152455_a (Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTBase; func_152455_a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/DataInput;Lnet/minecraft/nbt/NBTSizeTracker;)Lnet/minecraft/nbt/NBTTagCompound; func_152456_a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/DataInputStream;)Lnet/minecraft/nbt/NBTTagCompound; func_74794_a +MD net/minecraft/nbt/CompressedStreamTools read (Ljava/io/File;)Lnet/minecraft/nbt/NBTTagCompound; func_74797_a +MD net/minecraft/nbt/CompressedStreamTools readCompressed (Ljava/io/InputStream;)Lnet/minecraft/nbt/NBTTagCompound; func_74796_a +MD net/minecraft/nbt/CompressedStreamTools write (Lnet/minecraft/nbt/NBTTagCompound;Ljava/io/File;)V func_74795_b +MD net/minecraft/nbt/NBTUtil readGameProfileFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lcom/mojang/authlib/GameProfile; func_152459_a +MD net/minecraft/nbt/NBTUtil writeGameProfile (Lnet/minecraft/nbt/NBTTagCompound;Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/nbt/NBTTagCompound; func_180708_a +MD net/minecraft/nbt/NBTUtil func_181123_a (Lnet/minecraft/nbt/NBTBase;Lnet/minecraft/nbt/NBTBase;Z)Z func_181123_a +MD net/minecraft/nbt/NBTBase getId ()B func_74732_a +MD net/minecraft/nbt/NBTBase createNewByType (B)Lnet/minecraft/nbt/NBTBase; func_150284_a +MD net/minecraft/nbt/NBTBase read (Ljava/io/DataInput;ILnet/minecraft/nbt/NBTSizeTracker;)V func_152446_a +MD net/minecraft/nbt/NBTBase write (Ljava/io/DataOutput;)V func_74734_a +MD net/minecraft/nbt/NBTBase getString ()Ljava/lang/String; func_150285_a_ +MD net/minecraft/nbt/NBTBase copy ()Lnet/minecraft/nbt/NBTBase; func_74737_b +MD net/minecraft/nbt/NBTBase hasNoTags ()Z func_82582_d +MD net/minecraft/nbt/NBTBase equals (Ljava/lang/Object;)Z equals +MD net/minecraft/nbt/NBTBase hashCode ()I hashCode +MD net/minecraft/nbt/NBTBase toString ()Ljava/lang/String; toString +MD net/minecraft/nbt/NBTBase$NBTPrimitive getLong ()J func_150291_c +MD net/minecraft/nbt/NBTBase$NBTPrimitive getInt ()I func_150287_d +MD net/minecraft/nbt/NBTBase$NBTPrimitive getShort ()S func_150289_e +MD net/minecraft/nbt/NBTBase$NBTPrimitive getByte ()B func_150290_f +MD net/minecraft/nbt/NBTBase$NBTPrimitive getDouble ()D func_150286_g +MD net/minecraft/nbt/NBTBase$NBTPrimitive getFloat ()F func_150288_h +MD net/minecraft/nbt/JsonToNBT getTagFromJson (Ljava/lang/String;)Lnet/minecraft/nbt/NBTTagCompound; func_180713_a +MD net/minecraft/nbt/JsonToNBT func_150312_a (Ljava/lang/String;C)I func_150312_a +MD net/minecraft/nbt/JsonToNBT func_179269_a (Ljava/lang/String;I)Ljava/lang/String; func_179269_a +MD net/minecraft/nbt/JsonToNBT func_150316_a (Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/nbt/JsonToNBT$Any; func_150316_a +MD net/minecraft/nbt/JsonToNBT func_179270_a (Ljava/lang/String;Z)Lnet/minecraft/nbt/JsonToNBT$Any; func_179270_a +MD net/minecraft/nbt/JsonToNBT func_179272_a ([Ljava/lang/String;)Lnet/minecraft/nbt/JsonToNBT$Any; func_179272_a +MD net/minecraft/nbt/JsonToNBT func_150310_b (Ljava/lang/String;)I func_150310_b +MD net/minecraft/nbt/JsonToNBT func_179271_b (Ljava/lang/String;I)Z func_179271_b +MD net/minecraft/nbt/JsonToNBT func_150314_a (Ljava/lang/String;Z)Ljava/lang/String; func_150314_a +MD net/minecraft/nbt/JsonToNBT func_150313_b (Ljava/lang/String;Z)Ljava/lang/String; func_150313_b +MD net/minecraft/nbt/JsonToNBT func_150311_c (Ljava/lang/String;Z)Ljava/lang/String; func_150311_c +MD net/minecraft/nbt/JsonToNBT$Any parse ()Lnet/minecraft/nbt/NBTBase; func_150489_a +MD net/minecraft/network/NettyEncryptionTranslator func_150502_a (Lio/netty/buffer/ByteBuf;)[B func_150502_a +MD net/minecraft/network/NettyEncryptionTranslator cipher (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V func_150504_a +MD net/minecraft/network/NettyEncryptionTranslator decipher (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; func_150503_a +MD net/minecraft/network/NettyEncryptingDecoder decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/network/NettyEncryptingDecoder decode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Ljava/util/List;)V decode +MD net/minecraft/network/NettyEncryptingEncoder encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NettyEncryptingEncoder encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NettyCompressionDecoder setCompressionTreshold (I)V func_179303_a +MD net/minecraft/network/NettyCompressionDecoder decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/network/NettyCompressionEncoder setCompressionTreshold (I)V func_179299_a +MD net/minecraft/network/NettyCompressionEncoder encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NettyCompressionEncoder encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/NetworkManager processReceivedPackets ()V func_74428_b +MD net/minecraft/network/NetworkManager setCompressionTreshold (I)V func_179289_a +MD net/minecraft/network/NetworkManager access$000 (Lnet/minecraft/network/NetworkManager;)Lio/netty/channel/Channel; access$000 +MD net/minecraft/network/NetworkManager setConnectionState (Lnet/minecraft/network/EnumConnectionState;)V func_150723_a +MD net/minecraft/network/NetworkManager setNetHandler (Lnet/minecraft/network/INetHandler;)V func_150719_a +MD net/minecraft/network/NetworkManager closeChannel (Lnet/minecraft/util/IChatComponent;)V func_150718_a +MD net/minecraft/network/NetworkManager sendPacket (Lnet/minecraft/network/Packet;)V func_179290_a +MD net/minecraft/network/NetworkManager sendPacket (Lnet/minecraft/network/Packet;Lio/netty/util/concurrent/GenericFutureListener;[Lio/netty/util/concurrent/GenericFutureListener;)V func_179288_a +MD net/minecraft/network/NetworkManager dispatchPacket (Lnet/minecraft/network/Packet;[Lio/netty/util/concurrent/GenericFutureListener;)V func_150732_b +MD net/minecraft/network/NetworkManager channelRead0 (Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;)V channelRead0 +MD net/minecraft/network/NetworkManager createNetworkManagerAndConnect (Ljava/net/InetAddress;IZ)Lnet/minecraft/network/NetworkManager; func_181124_a +MD net/minecraft/network/NetworkManager provideLocalClient (Ljava/net/SocketAddress;)Lnet/minecraft/network/NetworkManager; func_150722_a +MD net/minecraft/network/NetworkManager enableEncryption (Ljavax/crypto/SecretKey;)V func_150727_a +MD net/minecraft/network/NetworkManager getRemoteAddress ()Ljava/net/SocketAddress; func_74430_c +MD net/minecraft/network/NetworkManager isLocalChannel ()Z func_150731_c +MD net/minecraft/network/NetworkManager getIsencrypted ()Z func_179292_f +MD net/minecraft/network/NetworkManager isChannelOpen ()Z func_150724_d +MD net/minecraft/network/NetworkManager hasNoChannel ()Z func_179291_h +MD net/minecraft/network/NetworkManager getNetHandler ()Lnet/minecraft/network/INetHandler; func_150729_e +MD net/minecraft/network/NetworkManager getExitMessage ()Lnet/minecraft/util/IChatComponent; func_150730_f +MD net/minecraft/network/NetworkManager disableAutoRead ()V func_150721_g +MD net/minecraft/network/NetworkManager checkDisconnected ()V func_179293_l +MD net/minecraft/network/NetworkManager flushOutboundQueue ()V func_150733_h +MD net/minecraft/network/NetworkManager channelActive (Lio/netty/channel/ChannelHandlerContext;)V channelActive +MD net/minecraft/network/NetworkManager channelInactive (Lio/netty/channel/ChannelHandlerContext;)V channelInactive +MD net/minecraft/network/NetworkManager channelRead0 (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead0 +MD net/minecraft/network/NetworkManager exceptionCaught (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V exceptionCaught +MD net/minecraft/network/NetworkManager$1 load ()Lio/netty/channel/nio/NioEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkManager$2 load ()Lio/netty/channel/epoll/EpollEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkManager$3 load ()Lio/netty/channel/local/LocalEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkManager$4 run ()V run +MD net/minecraft/network/NetworkManager$5 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkManager$6 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener access$100 (Lnet/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener;)Lnet/minecraft/network/Packet; access$100 +MD net/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener access$200 (Lnet/minecraft/network/NetworkManager$InboundHandlerTuplePacketListener;)[Lio/netty/util/concurrent/GenericFutureListener; access$200 +MD net/minecraft/network/EnumConnectionState getId ()I func_150759_c +MD net/minecraft/network/EnumConnectionState getById (I)Lnet/minecraft/network/EnumConnectionState; func_150760_a +MD net/minecraft/network/EnumConnectionState getFromPacket (Lnet/minecraft/network/Packet;)Lnet/minecraft/network/EnumConnectionState; func_150752_a +MD net/minecraft/network/EnumConnectionState getPacket (Lnet/minecraft/network/EnumPacketDirection;I)Lnet/minecraft/network/Packet; func_179244_a +MD net/minecraft/network/EnumConnectionState getPacketId (Lnet/minecraft/network/EnumPacketDirection;Lnet/minecraft/network/Packet;)Ljava/lang/Integer; func_179246_a +MD net/minecraft/network/EnumConnectionState registerPacket (Lnet/minecraft/network/EnumPacketDirection;Ljava/lang/Class;)Lnet/minecraft/network/EnumConnectionState; func_179245_a +MD net/minecraft/network/EnumConnectionState valueOf (Ljava/lang/String;)Lnet/minecraft/network/EnumConnectionState; valueOf +MD net/minecraft/network/EnumConnectionState values ()[Lnet/minecraft/network/EnumConnectionState; values +MD net/minecraft/network/PacketBuffer readByteArray ()[B func_179251_a +MD net/minecraft/network/PacketBuffer getVarIntSize (I)I func_150790_a +MD net/minecraft/network/PacketBuffer writeBlockPos (Lnet/minecraft/util/BlockPos;)V func_179255_a +MD net/minecraft/network/PacketBuffer writeNBTTagCompoundToBuffer (Lnet/minecraft/nbt/NBTTagCompound;)V func_150786_a +MD net/minecraft/network/PacketBuffer writeChatComponent (Lnet/minecraft/util/IChatComponent;)V func_179256_a +MD net/minecraft/network/PacketBuffer readEnumValue (Ljava/lang/Class;)Ljava/lang/Enum; func_179257_a +MD net/minecraft/network/PacketBuffer writeEnumValue (Ljava/lang/Enum;)V func_179249_a +MD net/minecraft/network/PacketBuffer writeString (Ljava/lang/String;)Lnet/minecraft/network/PacketBuffer; func_180714_a +MD net/minecraft/network/PacketBuffer writeUuid (Ljava/util/UUID;)V func_179252_a +MD net/minecraft/network/PacketBuffer writeItemStackToBuffer (Lnet/minecraft/item/ItemStack;)V func_150788_a +MD net/minecraft/network/PacketBuffer writeByteArray ([B)V func_179250_a +MD net/minecraft/network/PacketBuffer writeVarIntToBuffer (I)V func_150787_b +MD net/minecraft/network/PacketBuffer writeVarLong (J)V func_179254_b +MD net/minecraft/network/PacketBuffer readBlockPos ()Lnet/minecraft/util/BlockPos; func_179259_c +MD net/minecraft/network/PacketBuffer readStringFromBuffer (I)Ljava/lang/String; func_150789_c +MD net/minecraft/network/PacketBuffer readChatComponent ()Lnet/minecraft/util/IChatComponent; func_179258_d +MD net/minecraft/network/PacketBuffer readVarIntFromBuffer ()I func_150792_a +MD net/minecraft/network/PacketBuffer readVarLong ()J func_179260_f +MD net/minecraft/network/PacketBuffer readUuid ()Ljava/util/UUID; func_179253_g +MD net/minecraft/network/PacketBuffer readNBTTagCompoundFromBuffer ()Lnet/minecraft/nbt/NBTTagCompound; func_150793_b +MD net/minecraft/network/PacketBuffer readItemStackFromBuffer ()Lnet/minecraft/item/ItemStack; func_150791_c +MD net/minecraft/network/PacketBuffer alloc ()Lio/netty/buffer/ByteBufAllocator; alloc +MD net/minecraft/network/PacketBuffer array ()[B array +MD net/minecraft/network/PacketBuffer arrayOffset ()I arrayOffset +MD net/minecraft/network/PacketBuffer bytesBefore (B)I bytesBefore +MD net/minecraft/network/PacketBuffer bytesBefore (IB)I bytesBefore +MD net/minecraft/network/PacketBuffer bytesBefore (IIB)I bytesBefore +MD net/minecraft/network/PacketBuffer capacity ()I capacity +MD net/minecraft/network/PacketBuffer capacity (I)Lio/netty/buffer/ByteBuf; capacity +MD net/minecraft/network/PacketBuffer clear ()Lio/netty/buffer/ByteBuf; clear +MD net/minecraft/network/PacketBuffer compareTo (Lio/netty/buffer/ByteBuf;)I compareTo +MD net/minecraft/network/PacketBuffer compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/network/PacketBuffer copy ()Lio/netty/buffer/ByteBuf; copy +MD net/minecraft/network/PacketBuffer copy (II)Lio/netty/buffer/ByteBuf; copy +MD net/minecraft/network/PacketBuffer discardReadBytes ()Lio/netty/buffer/ByteBuf; discardReadBytes +MD net/minecraft/network/PacketBuffer discardSomeReadBytes ()Lio/netty/buffer/ByteBuf; discardSomeReadBytes +MD net/minecraft/network/PacketBuffer duplicate ()Lio/netty/buffer/ByteBuf; duplicate +MD net/minecraft/network/PacketBuffer ensureWritable (I)Lio/netty/buffer/ByteBuf; ensureWritable +MD net/minecraft/network/PacketBuffer ensureWritable (IZ)I ensureWritable +MD net/minecraft/network/PacketBuffer equals (Ljava/lang/Object;)Z equals +MD net/minecraft/network/PacketBuffer forEachByte (IILio/netty/buffer/ByteBufProcessor;)I forEachByte +MD net/minecraft/network/PacketBuffer forEachByte (Lio/netty/buffer/ByteBufProcessor;)I forEachByte +MD net/minecraft/network/PacketBuffer forEachByteDesc (IILio/netty/buffer/ByteBufProcessor;)I forEachByteDesc +MD net/minecraft/network/PacketBuffer forEachByteDesc (Lio/netty/buffer/ByteBufProcessor;)I forEachByteDesc +MD net/minecraft/network/PacketBuffer getBoolean (I)Z getBoolean +MD net/minecraft/network/PacketBuffer getByte (I)B getByte +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/io/OutputStream;I)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (ILjava/nio/channels/GatheringByteChannel;I)I getBytes +MD net/minecraft/network/PacketBuffer getBytes (I[B)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getBytes (I[BII)Lio/netty/buffer/ByteBuf; getBytes +MD net/minecraft/network/PacketBuffer getChar (I)C getChar +MD net/minecraft/network/PacketBuffer getDouble (I)D getDouble +MD net/minecraft/network/PacketBuffer getFloat (I)F getFloat +MD net/minecraft/network/PacketBuffer getInt (I)I getInt +MD net/minecraft/network/PacketBuffer getLong (I)J getLong +MD net/minecraft/network/PacketBuffer getMedium (I)I getMedium +MD net/minecraft/network/PacketBuffer getShort (I)S getShort +MD net/minecraft/network/PacketBuffer getUnsignedByte (I)S getUnsignedByte +MD net/minecraft/network/PacketBuffer getUnsignedInt (I)J getUnsignedInt +MD net/minecraft/network/PacketBuffer getUnsignedMedium (I)I getUnsignedMedium +MD net/minecraft/network/PacketBuffer getUnsignedShort (I)I getUnsignedShort +MD net/minecraft/network/PacketBuffer hasArray ()Z hasArray +MD net/minecraft/network/PacketBuffer hasMemoryAddress ()Z hasMemoryAddress +MD net/minecraft/network/PacketBuffer hashCode ()I hashCode +MD net/minecraft/network/PacketBuffer indexOf (IIB)I indexOf +MD net/minecraft/network/PacketBuffer internalNioBuffer (II)Ljava/nio/ByteBuffer; internalNioBuffer +MD net/minecraft/network/PacketBuffer isDirect ()Z isDirect +MD net/minecraft/network/PacketBuffer isReadable ()Z isReadable +MD net/minecraft/network/PacketBuffer isReadable (I)Z isReadable +MD net/minecraft/network/PacketBuffer isWritable ()Z isWritable +MD net/minecraft/network/PacketBuffer isWritable (I)Z isWritable +MD net/minecraft/network/PacketBuffer markReaderIndex ()Lio/netty/buffer/ByteBuf; markReaderIndex +MD net/minecraft/network/PacketBuffer markWriterIndex ()Lio/netty/buffer/ByteBuf; markWriterIndex +MD net/minecraft/network/PacketBuffer maxCapacity ()I maxCapacity +MD net/minecraft/network/PacketBuffer maxWritableBytes ()I maxWritableBytes +MD net/minecraft/network/PacketBuffer memoryAddress ()J memoryAddress +MD net/minecraft/network/PacketBuffer nioBuffer ()Ljava/nio/ByteBuffer; nioBuffer +MD net/minecraft/network/PacketBuffer nioBuffer (II)Ljava/nio/ByteBuffer; nioBuffer +MD net/minecraft/network/PacketBuffer nioBufferCount ()I nioBufferCount +MD net/minecraft/network/PacketBuffer nioBuffers ()[Ljava/nio/ByteBuffer; nioBuffers +MD net/minecraft/network/PacketBuffer nioBuffers (II)[Ljava/nio/ByteBuffer; nioBuffers +MD net/minecraft/network/PacketBuffer order ()Ljava/nio/ByteOrder; order +MD net/minecraft/network/PacketBuffer order (Ljava/nio/ByteOrder;)Lio/netty/buffer/ByteBuf; order +MD net/minecraft/network/PacketBuffer readBoolean ()Z readBoolean +MD net/minecraft/network/PacketBuffer readByte ()B readByte +MD net/minecraft/network/PacketBuffer readBytes (I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/io/OutputStream;I)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes (Ljava/nio/channels/GatheringByteChannel;I)I readBytes +MD net/minecraft/network/PacketBuffer readBytes ([B)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readBytes ([BII)Lio/netty/buffer/ByteBuf; readBytes +MD net/minecraft/network/PacketBuffer readChar ()C readChar +MD net/minecraft/network/PacketBuffer readDouble ()D readDouble +MD net/minecraft/network/PacketBuffer readFloat ()F readFloat +MD net/minecraft/network/PacketBuffer readInt ()I readInt +MD net/minecraft/network/PacketBuffer readLong ()J readLong +MD net/minecraft/network/PacketBuffer readMedium ()I readMedium +MD net/minecraft/network/PacketBuffer readShort ()S readShort +MD net/minecraft/network/PacketBuffer readSlice (I)Lio/netty/buffer/ByteBuf; readSlice +MD net/minecraft/network/PacketBuffer readUnsignedByte ()S readUnsignedByte +MD net/minecraft/network/PacketBuffer readUnsignedInt ()J readUnsignedInt +MD net/minecraft/network/PacketBuffer readUnsignedMedium ()I readUnsignedMedium +MD net/minecraft/network/PacketBuffer readUnsignedShort ()I readUnsignedShort +MD net/minecraft/network/PacketBuffer readableBytes ()I readableBytes +MD net/minecraft/network/PacketBuffer readerIndex ()I readerIndex +MD net/minecraft/network/PacketBuffer readerIndex (I)Lio/netty/buffer/ByteBuf; readerIndex +MD net/minecraft/network/PacketBuffer refCnt ()I refCnt +MD net/minecraft/network/PacketBuffer release ()Z release +MD net/minecraft/network/PacketBuffer release (I)Z release +MD net/minecraft/network/PacketBuffer resetReaderIndex ()Lio/netty/buffer/ByteBuf; resetReaderIndex +MD net/minecraft/network/PacketBuffer resetWriterIndex ()Lio/netty/buffer/ByteBuf; resetWriterIndex +MD net/minecraft/network/PacketBuffer retain ()Lio/netty/buffer/ByteBuf; retain +MD net/minecraft/network/PacketBuffer retain ()Lio/netty/util/ReferenceCounted; retain +MD net/minecraft/network/PacketBuffer retain (I)Lio/netty/buffer/ByteBuf; retain +MD net/minecraft/network/PacketBuffer retain (I)Lio/netty/util/ReferenceCounted; retain +MD net/minecraft/network/PacketBuffer setBoolean (IZ)Lio/netty/buffer/ByteBuf; setBoolean +MD net/minecraft/network/PacketBuffer setByte (II)Lio/netty/buffer/ByteBuf; setByte +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/io/InputStream;I)I setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (ILjava/nio/channels/ScatteringByteChannel;I)I setBytes +MD net/minecraft/network/PacketBuffer setBytes (I[B)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setBytes (I[BII)Lio/netty/buffer/ByteBuf; setBytes +MD net/minecraft/network/PacketBuffer setChar (II)Lio/netty/buffer/ByteBuf; setChar +MD net/minecraft/network/PacketBuffer setDouble (ID)Lio/netty/buffer/ByteBuf; setDouble +MD net/minecraft/network/PacketBuffer setFloat (IF)Lio/netty/buffer/ByteBuf; setFloat +MD net/minecraft/network/PacketBuffer setIndex (II)Lio/netty/buffer/ByteBuf; setIndex +MD net/minecraft/network/PacketBuffer setInt (II)Lio/netty/buffer/ByteBuf; setInt +MD net/minecraft/network/PacketBuffer setLong (IJ)Lio/netty/buffer/ByteBuf; setLong +MD net/minecraft/network/PacketBuffer setMedium (II)Lio/netty/buffer/ByteBuf; setMedium +MD net/minecraft/network/PacketBuffer setShort (II)Lio/netty/buffer/ByteBuf; setShort +MD net/minecraft/network/PacketBuffer setZero (II)Lio/netty/buffer/ByteBuf; setZero +MD net/minecraft/network/PacketBuffer skipBytes (I)Lio/netty/buffer/ByteBuf; skipBytes +MD net/minecraft/network/PacketBuffer slice ()Lio/netty/buffer/ByteBuf; slice +MD net/minecraft/network/PacketBuffer slice (II)Lio/netty/buffer/ByteBuf; slice +MD net/minecraft/network/PacketBuffer toString ()Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer toString (IILjava/nio/charset/Charset;)Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer toString (Ljava/nio/charset/Charset;)Ljava/lang/String; toString +MD net/minecraft/network/PacketBuffer unwrap ()Lio/netty/buffer/ByteBuf; unwrap +MD net/minecraft/network/PacketBuffer writableBytes ()I writableBytes +MD net/minecraft/network/PacketBuffer writeBoolean (Z)Lio/netty/buffer/ByteBuf; writeBoolean +MD net/minecraft/network/PacketBuffer writeByte (I)Lio/netty/buffer/ByteBuf; writeByte +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Lio/netty/buffer/ByteBuf;II)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/io/InputStream;I)I writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/nio/ByteBuffer;)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes (Ljava/nio/channels/ScatteringByteChannel;I)I writeBytes +MD net/minecraft/network/PacketBuffer writeBytes ([B)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeBytes ([BII)Lio/netty/buffer/ByteBuf; writeBytes +MD net/minecraft/network/PacketBuffer writeChar (I)Lio/netty/buffer/ByteBuf; writeChar +MD net/minecraft/network/PacketBuffer writeDouble (D)Lio/netty/buffer/ByteBuf; writeDouble +MD net/minecraft/network/PacketBuffer writeFloat (F)Lio/netty/buffer/ByteBuf; writeFloat +MD net/minecraft/network/PacketBuffer writeInt (I)Lio/netty/buffer/ByteBuf; writeInt +MD net/minecraft/network/PacketBuffer writeLong (J)Lio/netty/buffer/ByteBuf; writeLong +MD net/minecraft/network/PacketBuffer writeMedium (I)Lio/netty/buffer/ByteBuf; writeMedium +MD net/minecraft/network/PacketBuffer writeShort (I)Lio/netty/buffer/ByteBuf; writeShort +MD net/minecraft/network/PacketBuffer writeZero (I)Lio/netty/buffer/ByteBuf; writeZero +MD net/minecraft/network/PacketBuffer writerIndex ()I writerIndex +MD net/minecraft/network/PacketBuffer writerIndex (I)Lio/netty/buffer/ByteBuf; writerIndex +MD net/minecraft/util/MessageDeserializer decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/util/MessageSerializer encode (Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/util/MessageSerializer encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/network/INetHandler onDisconnect (Lnet/minecraft/util/IChatComponent;)V func_147231_a +MD net/minecraft/util/MessageDeserializer2 decode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V decode +MD net/minecraft/util/MessageSerializer2 encode (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/util/MessageSerializer2 encode (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V encode +MD net/minecraft/util/ChatComponentStyle createDeepCopyIterator (Ljava/lang/Iterable;)Ljava/util/Iterator; func_150262_a +MD net/minecraft/util/ChatComponentStyle equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ChatComponentStyle hashCode ()I hashCode +MD net/minecraft/util/ChatComponentStyle iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/ChatComponentStyle toString ()Ljava/lang/String; toString +MD net/minecraft/util/ChatComponentStyle$1 apply (Lnet/minecraft/util/IChatComponent;)Ljava/util/Iterator; apply +MD net/minecraft/util/ChatComponentStyle$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/util/ChatComponentStyle$2 apply (Lnet/minecraft/util/IChatComponent;)Lnet/minecraft/util/IChatComponent; apply +MD net/minecraft/util/ChatComponentStyle$2 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/event/ClickEvent getAction ()Lnet/minecraft/event/ClickEvent$Action; func_150669_a +MD net/minecraft/event/ClickEvent getValue ()Ljava/lang/String; func_150668_b +MD net/minecraft/event/ClickEvent equals (Ljava/lang/Object;)Z equals +MD net/minecraft/event/ClickEvent hashCode ()I hashCode +MD net/minecraft/event/ClickEvent toString ()Ljava/lang/String; toString +MD net/minecraft/event/ClickEvent$Action shouldAllowInChat ()Z func_150674_a +MD net/minecraft/event/ClickEvent$Action getValueByCanonicalName (Ljava/lang/String;)Lnet/minecraft/event/ClickEvent$Action; func_150672_a +MD net/minecraft/event/ClickEvent$Action getCanonicalName ()Ljava/lang/String; func_150673_b +MD net/minecraft/event/ClickEvent$Action valueOf (Ljava/lang/String;)Lnet/minecraft/event/ClickEvent$Action; valueOf +MD net/minecraft/event/ClickEvent$Action values ()[Lnet/minecraft/event/ClickEvent$Action; values +MD net/minecraft/util/IChatComponent getSiblings ()Ljava/util/List; func_150253_a +MD net/minecraft/util/IChatComponent appendSibling (Lnet/minecraft/util/IChatComponent;)Lnet/minecraft/util/IChatComponent; func_150257_a +MD net/minecraft/util/IChatComponent setChatStyle (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/IChatComponent; func_150255_a +MD net/minecraft/util/IChatComponent appendText (Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; func_150258_a +MD net/minecraft/util/IChatComponent getChatStyle ()Lnet/minecraft/util/ChatStyle; func_150256_b +MD net/minecraft/util/IChatComponent getUnformattedText ()Ljava/lang/String; func_150260_c +MD net/minecraft/util/IChatComponent getFormattedText ()Ljava/lang/String; func_150254_d +MD net/minecraft/util/IChatComponent getUnformattedTextForChat ()Ljava/lang/String; func_150261_e +MD net/minecraft/util/IChatComponent createCopy ()Lnet/minecraft/util/IChatComponent; func_150259_f +MD net/minecraft/util/IChatComponent$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/util/IChatComponent; deserialize +MD net/minecraft/util/IChatComponent$Serializer componentToJson (Lnet/minecraft/util/IChatComponent;)Ljava/lang/String; func_150696_a +MD net/minecraft/util/IChatComponent$Serializer serialize (Lnet/minecraft/util/IChatComponent;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/IChatComponent$Serializer serializeChatStyle (Lnet/minecraft/util/ChatStyle;Lcom/google/gson/JsonObject;Lcom/google/gson/JsonSerializationContext;)V func_150695_a +MD net/minecraft/util/IChatComponent$Serializer jsonToComponent (Ljava/lang/String;)Lnet/minecraft/util/IChatComponent; func_150699_a +MD net/minecraft/util/IChatComponent$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/util/IChatComponent$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/ChatComponentProcessor processComponent (Lnet/minecraft/command/ICommandSender;Lnet/minecraft/util/IChatComponent;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/IChatComponent; func_179985_a +MD net/minecraft/event/HoverEvent getAction ()Lnet/minecraft/event/HoverEvent$Action; func_150701_a +MD net/minecraft/event/HoverEvent getValue ()Lnet/minecraft/util/IChatComponent; func_150702_b +MD net/minecraft/event/HoverEvent equals (Ljava/lang/Object;)Z equals +MD net/minecraft/event/HoverEvent hashCode ()I hashCode +MD net/minecraft/event/HoverEvent toString ()Ljava/lang/String; toString +MD net/minecraft/event/HoverEvent$Action shouldAllowInChat ()Z func_150686_a +MD net/minecraft/event/HoverEvent$Action getValueByCanonicalName (Ljava/lang/String;)Lnet/minecraft/event/HoverEvent$Action; func_150684_a +MD net/minecraft/event/HoverEvent$Action getCanonicalName ()Ljava/lang/String; func_150685_b +MD net/minecraft/event/HoverEvent$Action valueOf (Ljava/lang/String;)Lnet/minecraft/event/HoverEvent$Action; valueOf +MD net/minecraft/event/HoverEvent$Action values ()[Lnet/minecraft/event/HoverEvent$Action; values +MD net/minecraft/util/ChatComponentScore setValue (Ljava/lang/String;)V func_179997_b +MD net/minecraft/util/ChatComponentScore getName ()Ljava/lang/String; func_179995_g +MD net/minecraft/util/ChatComponentScore getObjective ()Ljava/lang/String; func_179994_h +MD net/minecraft/util/ChatComponentScore createCopy ()Lnet/minecraft/util/ChatComponentScore; func_150259_f +MD net/minecraft/util/ChatComponentSelector getSelector ()Ljava/lang/String; func_179992_g +MD net/minecraft/util/ChatComponentSelector createCopy ()Lnet/minecraft/util/ChatComponentSelector; func_150259_f +MD net/minecraft/util/ChatStyle getColor ()Lnet/minecraft/util/EnumChatFormatting; func_150215_a +MD net/minecraft/util/ChatStyle setColor (Lnet/minecraft/util/EnumChatFormatting;)Lnet/minecraft/util/ChatStyle; func_150238_a +MD net/minecraft/util/ChatStyle setChatClickEvent (Lnet/minecraft/event/ClickEvent;)Lnet/minecraft/util/ChatStyle; func_150241_a +MD net/minecraft/util/ChatStyle setChatHoverEvent (Lnet/minecraft/event/HoverEvent;)Lnet/minecraft/util/ChatStyle; func_150209_a +MD net/minecraft/util/ChatStyle setParentStyle (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/ChatStyle; func_150221_a +MD net/minecraft/util/ChatStyle access$502 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/util/EnumChatFormatting;)Lnet/minecraft/util/EnumChatFormatting; access$502 +MD net/minecraft/util/ChatStyle access$702 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/event/ClickEvent;)Lnet/minecraft/event/ClickEvent; access$702 +MD net/minecraft/util/ChatStyle access$802 (Lnet/minecraft/util/ChatStyle;Lnet/minecraft/event/HoverEvent;)Lnet/minecraft/event/HoverEvent; access$802 +MD net/minecraft/util/ChatStyle access$002 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; access$002 +MD net/minecraft/util/ChatStyle access$602 (Lnet/minecraft/util/ChatStyle;Ljava/lang/String;)Ljava/lang/String; access$602 +MD net/minecraft/util/ChatStyle setBold (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; func_150227_a +MD net/minecraft/util/ChatStyle setInsertion (Ljava/lang/String;)Lnet/minecraft/util/ChatStyle; func_179989_a +MD net/minecraft/util/ChatStyle getBold ()Z func_150223_b +MD net/minecraft/util/ChatStyle access$000 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; access$000 +MD net/minecraft/util/ChatStyle access$102 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; access$102 +MD net/minecraft/util/ChatStyle setItalic (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; func_150217_b +MD net/minecraft/util/ChatStyle getItalic ()Z func_150242_c +MD net/minecraft/util/ChatStyle access$100 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; access$100 +MD net/minecraft/util/ChatStyle access$202 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; access$202 +MD net/minecraft/util/ChatStyle setStrikethrough (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; func_150225_c +MD net/minecraft/util/ChatStyle getStrikethrough ()Z func_150236_d +MD net/minecraft/util/ChatStyle access$200 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; access$200 +MD net/minecraft/util/ChatStyle access$302 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; access$302 +MD net/minecraft/util/ChatStyle setUnderlined (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; func_150228_d +MD net/minecraft/util/ChatStyle getUnderlined ()Z func_150234_e +MD net/minecraft/util/ChatStyle access$300 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; access$300 +MD net/minecraft/util/ChatStyle access$402 (Lnet/minecraft/util/ChatStyle;Ljava/lang/Boolean;)Ljava/lang/Boolean; access$402 +MD net/minecraft/util/ChatStyle setObfuscated (Ljava/lang/Boolean;)Lnet/minecraft/util/ChatStyle; func_150237_e +MD net/minecraft/util/ChatStyle getObfuscated ()Z func_150233_f +MD net/minecraft/util/ChatStyle access$400 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/Boolean; access$400 +MD net/minecraft/util/ChatStyle isEmpty ()Z func_150229_g +MD net/minecraft/util/ChatStyle access$500 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/util/EnumChatFormatting; access$500 +MD net/minecraft/util/ChatStyle getChatClickEvent ()Lnet/minecraft/event/ClickEvent; func_150235_h +MD net/minecraft/util/ChatStyle access$600 (Lnet/minecraft/util/ChatStyle;)Ljava/lang/String; access$600 +MD net/minecraft/util/ChatStyle getChatHoverEvent ()Lnet/minecraft/event/HoverEvent; func_150210_i +MD net/minecraft/util/ChatStyle access$700 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/event/ClickEvent; access$700 +MD net/minecraft/util/ChatStyle getInsertion ()Ljava/lang/String; func_179986_j +MD net/minecraft/util/ChatStyle access$800 (Lnet/minecraft/util/ChatStyle;)Lnet/minecraft/event/HoverEvent; access$800 +MD net/minecraft/util/ChatStyle getFormattingCode ()Ljava/lang/String; func_150218_j +MD net/minecraft/util/ChatStyle createShallowCopy ()Lnet/minecraft/util/ChatStyle; func_150232_l +MD net/minecraft/util/ChatStyle createDeepCopy ()Lnet/minecraft/util/ChatStyle; func_150206_m +MD net/minecraft/util/ChatStyle getParent ()Lnet/minecraft/util/ChatStyle; func_150224_n +MD net/minecraft/util/ChatStyle equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ChatStyle hashCode ()I hashCode +MD net/minecraft/util/ChatStyle toString ()Ljava/lang/String; toString +MD net/minecraft/util/ChatStyle$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/util/ChatStyle; deserialize +MD net/minecraft/util/ChatStyle$Serializer serialize (Lnet/minecraft/util/ChatStyle;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/ChatStyle$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/util/ChatStyle$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/util/ChatComponentText getChatComponentText_TextValue ()Ljava/lang/String; func_150265_g +MD net/minecraft/util/ChatComponentText createCopy ()Lnet/minecraft/util/ChatComponentText; func_150259_f +MD net/minecraft/util/ChatComponentTranslation getFormatArgumentAsComponent (I)Lnet/minecraft/util/IChatComponent; func_150272_a +MD net/minecraft/util/ChatComponentTranslation initializeFromFormat (Ljava/lang/String;)V func_150269_b +MD net/minecraft/util/ChatComponentTranslation ensureInitialized ()V func_150270_g +MD net/minecraft/util/ChatComponentTranslation createCopy ()Lnet/minecraft/util/ChatComponentTranslation; func_150259_f +MD net/minecraft/util/ChatComponentTranslation getKey ()Ljava/lang/String; func_150268_i +MD net/minecraft/util/ChatComponentTranslation getFormatArgs ()[Ljava/lang/Object; func_150271_j +MD net/minecraft/network/Packet readPacketData (Lnet/minecraft/network/PacketBuffer;)V func_148837_a +MD net/minecraft/network/Packet processPacket (Lnet/minecraft/network/INetHandler;)V func_148833_a +MD net/minecraft/network/Packet writePacketData (Lnet/minecraft/network/PacketBuffer;)V func_148840_b +MD net/minecraft/network/EnumPacketDirection valueOf (Ljava/lang/String;)Lnet/minecraft/network/EnumPacketDirection; valueOf +MD net/minecraft/network/EnumPacketDirection values ()[Lnet/minecraft/network/EnumPacketDirection; values +MD net/minecraft/network/PacketThreadUtil checkThreadAndEnqueue (Lnet/minecraft/network/Packet;Lnet/minecraft/network/INetHandler;Lnet/minecraft/util/IThreadListener;)V func_180031_a +MD net/minecraft/network/PacketThreadUtil$1 run ()V run +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getX ()D func_148932_c +MD net/minecraft/network/play/server/S08PacketPlayerPosLook processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getY ()D func_148928_d +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getZ ()D func_148933_e +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getYaw ()F func_148931_f +MD net/minecraft/network/play/server/S08PacketPlayerPosLook getPitch ()F func_148930_g +MD net/minecraft/network/play/server/S08PacketPlayerPosLook func_179834_f ()Ljava/util/Set; func_179834_f +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180055_a ()I func_180055_a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180053_a (I)Ljava/util/Set; func_180053_a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180056_a (Ljava/util/Set;)I func_180056_a +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags func_180054_b (I)Z func_180054_b +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags; valueOf +MD net/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags values ()[Lnet/minecraft/network/play/server/S08PacketPlayerPosLook$EnumFlags; values +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerPosLook (Lnet/minecraft/network/play/server/S08PacketPlayerPosLook;)V func_147258_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnObject (Lnet/minecraft/network/play/server/S0EPacketSpawnObject;)V func_147235_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnExperienceOrb (Lnet/minecraft/network/play/server/S11PacketSpawnExperienceOrb;)V func_147286_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnGlobalEntity (Lnet/minecraft/network/play/server/S2CPacketSpawnGlobalEntity;)V func_147292_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnMob (Lnet/minecraft/network/play/server/S0FPacketSpawnMob;)V func_147281_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPainting (Lnet/minecraft/network/play/server/S10PacketSpawnPainting;)V func_147288_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPlayer (Lnet/minecraft/network/play/server/S0CPacketSpawnPlayer;)V func_147237_a +MD net/minecraft/network/play/INetHandlerPlayClient handleAnimation (Lnet/minecraft/network/play/server/S0BPacketAnimation;)V func_147279_a +MD net/minecraft/network/play/INetHandlerPlayClient handleStatistics (Lnet/minecraft/network/play/server/S37PacketStatistics;)V func_147293_a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockBreakAnim (Lnet/minecraft/network/play/server/S25PacketBlockBreakAnim;)V func_147294_a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateTileEntity (Lnet/minecraft/network/play/server/S35PacketUpdateTileEntity;)V func_147273_a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockAction (Lnet/minecraft/network/play/server/S24PacketBlockAction;)V func_147261_a +MD net/minecraft/network/play/INetHandlerPlayClient handleBlockChange (Lnet/minecraft/network/play/server/S23PacketBlockChange;)V func_147234_a +MD net/minecraft/network/play/INetHandlerPlayClient handleServerDifficulty (Lnet/minecraft/network/play/server/S41PacketServerDifficulty;)V func_175101_a +MD net/minecraft/network/play/INetHandlerPlayClient handleTabComplete (Lnet/minecraft/network/play/server/S3APacketTabComplete;)V func_147274_a +MD net/minecraft/network/play/INetHandlerPlayClient handleChat (Lnet/minecraft/network/play/server/S02PacketChat;)V func_147251_a +MD net/minecraft/network/play/INetHandlerPlayClient handleMultiBlockChange (Lnet/minecraft/network/play/server/S22PacketMultiBlockChange;)V func_147287_a +MD net/minecraft/network/play/INetHandlerPlayClient handleConfirmTransaction (Lnet/minecraft/network/play/server/S32PacketConfirmTransaction;)V func_147239_a +MD net/minecraft/network/play/INetHandlerPlayClient handleCloseWindow (Lnet/minecraft/network/play/server/S2EPacketCloseWindow;)V func_147276_a +MD net/minecraft/network/play/INetHandlerPlayClient handleOpenWindow (Lnet/minecraft/network/play/server/S2DPacketOpenWindow;)V func_147265_a +MD net/minecraft/network/play/INetHandlerPlayClient handleWindowItems (Lnet/minecraft/network/play/server/S30PacketWindowItems;)V func_147241_a +MD net/minecraft/network/play/INetHandlerPlayClient handleWindowProperty (Lnet/minecraft/network/play/server/S31PacketWindowProperty;)V func_147245_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetSlot (Lnet/minecraft/network/play/server/S2FPacketSetSlot;)V func_147266_a +MD net/minecraft/network/play/INetHandlerPlayClient handleCustomPayload (Lnet/minecraft/network/play/server/S3FPacketCustomPayload;)V func_147240_a +MD net/minecraft/network/play/INetHandlerPlayClient handleDisconnect (Lnet/minecraft/network/play/server/S40PacketDisconnect;)V func_147253_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityStatus (Lnet/minecraft/network/play/server/S19PacketEntityStatus;)V func_147236_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityNBT (Lnet/minecraft/network/play/server/S49PacketUpdateEntityNBT;)V func_175097_a +MD net/minecraft/network/play/INetHandlerPlayClient handleExplosion (Lnet/minecraft/network/play/server/S27PacketExplosion;)V func_147283_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetCompressionLevel (Lnet/minecraft/network/play/server/S46PacketSetCompressionLevel;)V func_175100_a +MD net/minecraft/network/play/INetHandlerPlayClient handleChangeGameState (Lnet/minecraft/network/play/server/S2BPacketChangeGameState;)V func_147252_a +MD net/minecraft/network/play/INetHandlerPlayClient handleKeepAlive (Lnet/minecraft/network/play/server/S00PacketKeepAlive;)V func_147272_a +MD net/minecraft/network/play/INetHandlerPlayClient handleChunkData (Lnet/minecraft/network/play/server/S21PacketChunkData;)V func_147263_a +MD net/minecraft/network/play/INetHandlerPlayClient handleMapChunkBulk (Lnet/minecraft/network/play/server/S26PacketMapChunkBulk;)V func_147269_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEffect (Lnet/minecraft/network/play/server/S28PacketEffect;)V func_147277_a +MD net/minecraft/network/play/INetHandlerPlayClient handleParticles (Lnet/minecraft/network/play/server/S2APacketParticles;)V func_147289_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSoundEffect (Lnet/minecraft/network/play/server/S29PacketSoundEffect;)V func_147255_a +MD net/minecraft/network/play/INetHandlerPlayClient handleJoinGame (Lnet/minecraft/network/play/server/S01PacketJoinGame;)V func_147282_a +MD net/minecraft/network/play/INetHandlerPlayClient handleMaps (Lnet/minecraft/network/play/server/S34PacketMaps;)V func_147264_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityMovement (Lnet/minecraft/network/play/server/S14PacketEntity;)V func_147259_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSignEditorOpen (Lnet/minecraft/network/play/server/S36PacketSignEditorOpen;)V func_147268_a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerAbilities (Lnet/minecraft/network/play/server/S39PacketPlayerAbilities;)V func_147270_a +MD net/minecraft/network/play/INetHandlerPlayClient handleCombatEvent (Lnet/minecraft/network/play/server/S42PacketCombatEvent;)V func_175098_a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerListItem (Lnet/minecraft/network/play/server/S38PacketPlayerListItem;)V func_147256_a +MD net/minecraft/network/play/INetHandlerPlayClient handleUseBed (Lnet/minecraft/network/play/server/S0APacketUseBed;)V func_147278_a +MD net/minecraft/network/play/INetHandlerPlayClient handleDestroyEntities (Lnet/minecraft/network/play/server/S13PacketDestroyEntities;)V func_147238_a +MD net/minecraft/network/play/INetHandlerPlayClient handleRemoveEntityEffect (Lnet/minecraft/network/play/server/S1EPacketRemoveEntityEffect;)V func_147262_a +MD net/minecraft/network/play/INetHandlerPlayClient handleResourcePack (Lnet/minecraft/network/play/server/S48PacketResourcePackSend;)V func_175095_a +MD net/minecraft/network/play/INetHandlerPlayClient handleRespawn (Lnet/minecraft/network/play/server/S07PacketRespawn;)V func_147280_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityHeadLook (Lnet/minecraft/network/play/server/S19PacketEntityHeadLook;)V func_147267_a +MD net/minecraft/network/play/INetHandlerPlayClient handleWorldBorder (Lnet/minecraft/network/play/server/S44PacketWorldBorder;)V func_175093_a +MD net/minecraft/network/play/INetHandlerPlayClient handleCamera (Lnet/minecraft/network/play/server/S43PacketCamera;)V func_175094_a +MD net/minecraft/network/play/INetHandlerPlayClient handleHeldItemChange (Lnet/minecraft/network/play/server/S09PacketHeldItemChange;)V func_147257_a +MD net/minecraft/network/play/INetHandlerPlayClient handleDisplayScoreboard (Lnet/minecraft/network/play/server/S3DPacketDisplayScoreboard;)V func_147254_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityMetadata (Lnet/minecraft/network/play/server/S1CPacketEntityMetadata;)V func_147284_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityAttach (Lnet/minecraft/network/play/server/S1BPacketEntityAttach;)V func_147243_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityVelocity (Lnet/minecraft/network/play/server/S12PacketEntityVelocity;)V func_147244_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityEquipment (Lnet/minecraft/network/play/server/S04PacketEntityEquipment;)V func_147242_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSetExperience (Lnet/minecraft/network/play/server/S1FPacketSetExperience;)V func_147295_a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateHealth (Lnet/minecraft/network/play/server/S06PacketUpdateHealth;)V func_147249_a +MD net/minecraft/network/play/INetHandlerPlayClient handleScoreboardObjective (Lnet/minecraft/network/play/server/S3BPacketScoreboardObjective;)V func_147291_a +MD net/minecraft/network/play/INetHandlerPlayClient handleTeams (Lnet/minecraft/network/play/server/S3EPacketTeams;)V func_147247_a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateScore (Lnet/minecraft/network/play/server/S3CPacketUpdateScore;)V func_147250_a +MD net/minecraft/network/play/INetHandlerPlayClient handleSpawnPosition (Lnet/minecraft/network/play/server/S05PacketSpawnPosition;)V func_147271_a +MD net/minecraft/network/play/INetHandlerPlayClient handleTimeUpdate (Lnet/minecraft/network/play/server/S03PacketTimeUpdate;)V func_147285_a +MD net/minecraft/network/play/INetHandlerPlayClient handleTitle (Lnet/minecraft/network/play/server/S45PacketTitle;)V func_175099_a +MD net/minecraft/network/play/INetHandlerPlayClient handleUpdateSign (Lnet/minecraft/network/play/server/S33PacketUpdateSign;)V func_147248_a +MD net/minecraft/network/play/INetHandlerPlayClient handlePlayerListHeaderFooter (Lnet/minecraft/network/play/server/S47PacketPlayerListHeaderFooter;)V func_175096_a +MD net/minecraft/network/play/INetHandlerPlayClient handleCollectItem (Lnet/minecraft/network/play/server/S0DPacketCollectItem;)V func_147246_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityTeleport (Lnet/minecraft/network/play/server/S18PacketEntityTeleport;)V func_147275_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityProperties (Lnet/minecraft/network/play/server/S20PacketEntityProperties;)V func_147290_a +MD net/minecraft/network/play/INetHandlerPlayClient handleEntityEffect (Lnet/minecraft/network/play/server/S1DPacketEntityEffect;)V func_147260_a +MD net/minecraft/network/play/server/S0EPacketSpawnObject getEntityID ()I func_149001_c +MD net/minecraft/network/play/server/S0EPacketSpawnObject setX (I)V func_148996_a +MD net/minecraft/network/play/server/S0EPacketSpawnObject processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S0EPacketSpawnObject getX ()I func_148997_d +MD net/minecraft/network/play/server/S0EPacketSpawnObject setY (I)V func_148995_b +MD net/minecraft/network/play/server/S0EPacketSpawnObject getY ()I func_148998_e +MD net/minecraft/network/play/server/S0EPacketSpawnObject setZ (I)V func_149005_c +MD net/minecraft/network/play/server/S0EPacketSpawnObject getZ ()I func_148994_f +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedX (I)V func_149003_d +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedX ()I func_149010_g +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedY (I)V func_149000_e +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedY ()I func_149004_h +MD net/minecraft/network/play/server/S0EPacketSpawnObject setSpeedZ (I)V func_149007_f +MD net/minecraft/network/play/server/S0EPacketSpawnObject getSpeedZ ()I func_148999_i +MD net/minecraft/network/play/server/S0EPacketSpawnObject func_149002_g (I)V func_149002_g +MD net/minecraft/network/play/server/S0EPacketSpawnObject getPitch ()I func_149008_j +MD net/minecraft/network/play/server/S0EPacketSpawnObject getYaw ()I func_149006_k +MD net/minecraft/network/play/server/S0EPacketSpawnObject getType ()I func_148993_l +MD net/minecraft/network/play/server/S0EPacketSpawnObject func_149009_m ()I func_149009_m +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getEntityID ()I func_148985_c +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getX ()I func_148984_d +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getY ()I func_148983_e +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getZ ()I func_148982_f +MD net/minecraft/network/play/server/S11PacketSpawnExperienceOrb getXPValue ()I func_148986_g +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149052_c ()I func_149052_c +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149051_d ()I func_149051_d +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149050_e ()I func_149050_e +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149049_f ()I func_149049_f +MD net/minecraft/network/play/server/S2CPacketSpawnGlobalEntity func_149053_g ()I func_149053_g +MD net/minecraft/network/play/server/S0FPacketSpawnMob func_149027_c ()Ljava/util/List; func_149027_c +MD net/minecraft/network/play/server/S0FPacketSpawnMob processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S0FPacketSpawnMob getEntityID ()I func_149024_d +MD net/minecraft/network/play/server/S0FPacketSpawnMob getEntityType ()I func_149025_e +MD net/minecraft/network/play/server/S0FPacketSpawnMob getX ()I func_149023_f +MD net/minecraft/network/play/server/S0FPacketSpawnMob getY ()I func_149034_g +MD net/minecraft/network/play/server/S0FPacketSpawnMob getZ ()I func_149029_h +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityX ()I func_149026_i +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityY ()I func_149033_j +MD net/minecraft/network/play/server/S0FPacketSpawnMob getVelocityZ ()I func_149031_k +MD net/minecraft/network/play/server/S0FPacketSpawnMob getYaw ()B func_149028_l +MD net/minecraft/network/play/server/S0FPacketSpawnMob getPitch ()B func_149030_m +MD net/minecraft/network/play/server/S0FPacketSpawnMob getHeadPitch ()B func_149032_n +MD net/minecraft/network/play/server/S10PacketSpawnPainting getEntityID ()I func_148965_c +MD net/minecraft/network/play/server/S10PacketSpawnPainting processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S10PacketSpawnPainting getPosition ()Lnet/minecraft/util/BlockPos; func_179837_b +MD net/minecraft/network/play/server/S10PacketSpawnPainting getFacing ()Lnet/minecraft/util/EnumFacing; func_179836_c +MD net/minecraft/network/play/server/S10PacketSpawnPainting getTitle ()Ljava/lang/String; func_148961_h +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer func_148944_c ()Ljava/util/List; func_148944_c +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getEntityID ()I func_148943_d +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getPlayer ()Ljava/util/UUID; func_179819_c +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getX ()I func_148942_f +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getY ()I func_148949_g +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getZ ()I func_148946_h +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getYaw ()B func_148941_i +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getPitch ()B func_148945_j +MD net/minecraft/network/play/server/S0CPacketSpawnPlayer getCurrentItemID ()I func_148947_k +MD net/minecraft/network/play/server/S0BPacketAnimation getEntityID ()I func_148978_c +MD net/minecraft/network/play/server/S0BPacketAnimation processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S0BPacketAnimation getAnimationType ()I func_148977_d +MD net/minecraft/network/play/server/S37PacketStatistics func_148974_c ()Ljava/util/Map; func_148974_c +MD net/minecraft/network/play/server/S37PacketStatistics processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getBreakerId ()I func_148845_c +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getPosition ()Lnet/minecraft/util/BlockPos; func_179821_b +MD net/minecraft/network/play/server/S25PacketBlockBreakAnim getProgress ()I func_148846_g +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getPos ()Lnet/minecraft/util/BlockPos; func_179823_a +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getTileEntityType ()I func_148853_f +MD net/minecraft/network/play/server/S35PacketUpdateTileEntity getNbtCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_148857_g +MD net/minecraft/network/play/server/S24PacketBlockAction getBlockPosition ()Lnet/minecraft/util/BlockPos; func_179825_a +MD net/minecraft/network/play/server/S24PacketBlockAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S24PacketBlockAction getData1 ()I func_148869_g +MD net/minecraft/network/play/server/S24PacketBlockAction getData2 ()I func_148864_h +MD net/minecraft/network/play/server/S24PacketBlockAction getBlockType ()Lnet/minecraft/block/Block; func_148868_c +MD net/minecraft/network/play/server/S23PacketBlockChange getBlockState ()Lnet/minecraft/block/state/IBlockState; func_180728_a +MD net/minecraft/network/play/server/S23PacketBlockChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S23PacketBlockChange getBlockPosition ()Lnet/minecraft/util/BlockPos; func_179827_b +MD net/minecraft/network/play/server/S41PacketServerDifficulty isDifficultyLocked ()Z func_179830_a +MD net/minecraft/network/play/server/S41PacketServerDifficulty processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S41PacketServerDifficulty getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_179831_b +MD net/minecraft/network/play/server/S3APacketTabComplete func_149630_c ()[Ljava/lang/String; func_149630_c +MD net/minecraft/network/play/server/S3APacketTabComplete processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S02PacketChat getChatComponent ()Lnet/minecraft/util/IChatComponent; func_148915_c +MD net/minecraft/network/play/server/S02PacketChat processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S02PacketChat isChat ()Z func_148916_d +MD net/minecraft/network/play/server/S02PacketChat getType ()B func_179841_c +MD net/minecraft/network/play/server/S22PacketMultiBlockChange getChangedBlocks ()[Lnet/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData; func_179844_a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange access$000 (Lnet/minecraft/network/play/server/S22PacketMultiBlockChange;)Lnet/minecraft/world/ChunkCoordIntPair; access$000 +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData getPos ()Lnet/minecraft/util/BlockPos; func_180090_a +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData func_180089_b ()S func_180089_b +MD net/minecraft/network/play/server/S22PacketMultiBlockChange$BlockUpdateData getBlockState ()Lnet/minecraft/block/state/IBlockState; func_180088_c +MD net/minecraft/network/play/server/S32PacketConfirmTransaction getWindowId ()I func_148889_c +MD net/minecraft/network/play/server/S32PacketConfirmTransaction processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S32PacketConfirmTransaction getActionNumber ()S func_148890_d +MD net/minecraft/network/play/server/S32PacketConfirmTransaction func_148888_e ()Z func_148888_e +MD net/minecraft/network/play/server/S2EPacketCloseWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2DPacketOpenWindow getWindowId ()I func_148901_c +MD net/minecraft/network/play/server/S2DPacketOpenWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2DPacketOpenWindow getGuiId ()Ljava/lang/String; func_148902_e +MD net/minecraft/network/play/server/S2DPacketOpenWindow getWindowTitle ()Lnet/minecraft/util/IChatComponent; func_179840_c +MD net/minecraft/network/play/server/S2DPacketOpenWindow getSlotCount ()I func_148898_f +MD net/minecraft/network/play/server/S2DPacketOpenWindow getEntityId ()I func_148897_h +MD net/minecraft/network/play/server/S2DPacketOpenWindow hasSlots ()Z func_148900_g +MD net/minecraft/network/play/server/S30PacketWindowItems func_148911_c ()I func_148911_c +MD net/minecraft/network/play/server/S30PacketWindowItems processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S30PacketWindowItems getItemStacks ()[Lnet/minecraft/item/ItemStack; func_148910_d +MD net/minecraft/network/play/server/S31PacketWindowProperty getWindowId ()I func_149182_c +MD net/minecraft/network/play/server/S31PacketWindowProperty processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S31PacketWindowProperty getVarIndex ()I func_149181_d +MD net/minecraft/network/play/server/S31PacketWindowProperty getVarValue ()I func_149180_e +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149175_c ()I func_149175_c +MD net/minecraft/network/play/server/S2FPacketSetSlot processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149173_d ()I func_149173_d +MD net/minecraft/network/play/server/S2FPacketSetSlot func_149174_e ()Lnet/minecraft/item/ItemStack; func_149174_e +MD net/minecraft/network/play/server/S3FPacketCustomPayload getChannelName ()Ljava/lang/String; func_149169_c +MD net/minecraft/network/play/server/S3FPacketCustomPayload processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3FPacketCustomPayload getBufferData ()Lnet/minecraft/network/PacketBuffer; func_180735_b +MD net/minecraft/network/play/server/S40PacketDisconnect getReason ()Lnet/minecraft/util/IChatComponent; func_149165_c +MD net/minecraft/network/play/server/S40PacketDisconnect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S19PacketEntityStatus getOpCode ()B func_149160_c +MD net/minecraft/network/play/server/S19PacketEntityStatus getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_149161_a +MD net/minecraft/network/play/server/S19PacketEntityStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_179763_a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_179764_a +MD net/minecraft/network/play/server/S49PacketUpdateEntityNBT processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S27PacketExplosion func_149149_c ()F func_149149_c +MD net/minecraft/network/play/server/S27PacketExplosion processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S27PacketExplosion func_149144_d ()F func_149144_d +MD net/minecraft/network/play/server/S27PacketExplosion func_149147_e ()F func_149147_e +MD net/minecraft/network/play/server/S27PacketExplosion getX ()D func_149148_f +MD net/minecraft/network/play/server/S27PacketExplosion getY ()D func_149143_g +MD net/minecraft/network/play/server/S27PacketExplosion getZ ()D func_149145_h +MD net/minecraft/network/play/server/S27PacketExplosion getStrength ()F func_149146_i +MD net/minecraft/network/play/server/S27PacketExplosion getAffectedBlockPositions ()Ljava/util/List; func_149150_j +MD net/minecraft/network/play/server/S46PacketSetCompressionLevel getThreshold ()I func_179760_a +MD net/minecraft/network/play/server/S46PacketSetCompressionLevel processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2BPacketChangeGameState getGameState ()I func_149138_c +MD net/minecraft/network/play/server/S2BPacketChangeGameState processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2BPacketChangeGameState func_149137_d ()F func_149137_d +MD net/minecraft/network/play/server/S00PacketKeepAlive func_149134_c ()I func_149134_c +MD net/minecraft/network/play/server/S00PacketKeepAlive processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedDataBytes ()[B func_149272_d +MD net/minecraft/network/play/server/S21PacketChunkData func_180737_a (IZZ)I func_180737_a +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedData (Lnet/minecraft/world/chunk/Chunk;ZZI)Lnet/minecraft/network/play/server/S21PacketChunkData$Extracted; func_179756_a +MD net/minecraft/network/play/server/S21PacketChunkData processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S21PacketChunkData func_179757_a ([B[BI)I func_179757_a +MD net/minecraft/network/play/server/S21PacketChunkData getChunkX ()I func_149273_e +MD net/minecraft/network/play/server/S21PacketChunkData getChunkZ ()I func_149271_f +MD net/minecraft/network/play/server/S21PacketChunkData getExtractedSize ()I func_149276_g +MD net/minecraft/network/play/server/S21PacketChunkData func_149274_i ()Z func_149274_i +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkCount ()I func_149254_d +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkX (I)I func_149255_a +MD net/minecraft/network/play/server/S26PacketMapChunkBulk processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkZ (I)I func_149253_b +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkBytes (I)[B func_149256_c +MD net/minecraft/network/play/server/S26PacketMapChunkBulk getChunkSize (I)I func_179754_d +MD net/minecraft/network/play/server/S28PacketEffect isSoundServerwide ()Z func_149244_c +MD net/minecraft/network/play/server/S28PacketEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S28PacketEffect getSoundType ()I func_149242_d +MD net/minecraft/network/play/server/S28PacketEffect getSoundData ()I func_149241_e +MD net/minecraft/network/play/server/S28PacketEffect getSoundPos ()Lnet/minecraft/util/BlockPos; func_179746_d +MD net/minecraft/network/play/server/S2APacketParticles getParticleType ()Lnet/minecraft/util/EnumParticleTypes; func_179749_a +MD net/minecraft/network/play/server/S2APacketParticles processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S2APacketParticles isLongDistance ()Z func_179750_b +MD net/minecraft/network/play/server/S2APacketParticles getXCoordinate ()D func_149220_d +MD net/minecraft/network/play/server/S2APacketParticles getYCoordinate ()D func_149226_e +MD net/minecraft/network/play/server/S2APacketParticles getZCoordinate ()D func_149225_f +MD net/minecraft/network/play/server/S2APacketParticles getXOffset ()F func_149221_g +MD net/minecraft/network/play/server/S2APacketParticles getYOffset ()F func_149224_h +MD net/minecraft/network/play/server/S2APacketParticles getZOffset ()F func_149223_i +MD net/minecraft/network/play/server/S2APacketParticles getParticleSpeed ()F func_149227_j +MD net/minecraft/network/play/server/S2APacketParticles getParticleCount ()I func_149222_k +MD net/minecraft/network/play/server/S2APacketParticles getParticleArgs ()[I func_179748_k +MD net/minecraft/network/play/server/S29PacketSoundEffect getSoundName ()Ljava/lang/String; func_149212_c +MD net/minecraft/network/play/server/S29PacketSoundEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S29PacketSoundEffect getX ()D func_149207_d +MD net/minecraft/network/play/server/S29PacketSoundEffect getY ()D func_149211_e +MD net/minecraft/network/play/server/S29PacketSoundEffect getZ ()D func_149210_f +MD net/minecraft/network/play/server/S29PacketSoundEffect getVolume ()F func_149208_g +MD net/minecraft/network/play/server/S29PacketSoundEffect getPitch ()F func_149209_h +MD net/minecraft/network/play/server/S01PacketJoinGame getEntityId ()I func_149197_c +MD net/minecraft/network/play/server/S01PacketJoinGame processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S01PacketJoinGame isHardcoreMode ()Z func_149195_d +MD net/minecraft/network/play/server/S01PacketJoinGame getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_149198_e +MD net/minecraft/network/play/server/S01PacketJoinGame getDimension ()I func_149194_f +MD net/minecraft/network/play/server/S01PacketJoinGame getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_149192_g +MD net/minecraft/network/play/server/S01PacketJoinGame getMaxPlayers ()I func_149193_h +MD net/minecraft/network/play/server/S01PacketJoinGame getWorldType ()Lnet/minecraft/world/WorldType; func_149196_i +MD net/minecraft/network/play/server/S01PacketJoinGame isReducedDebugInfo ()Z func_179744_h +MD net/minecraft/network/play/server/S34PacketMaps getMapId ()I func_149188_c +MD net/minecraft/network/play/server/S34PacketMaps setMapdataTo (Lnet/minecraft/world/storage/MapData;)V func_179734_a +MD net/minecraft/network/play/server/S34PacketMaps processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S14PacketEntity func_149062_c ()B func_149062_c +MD net/minecraft/network/play/server/S14PacketEntity getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_149065_a +MD net/minecraft/network/play/server/S14PacketEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S14PacketEntity func_149061_d ()B func_149061_d +MD net/minecraft/network/play/server/S14PacketEntity func_149064_e ()B func_149064_e +MD net/minecraft/network/play/server/S14PacketEntity func_149066_f ()B func_149066_f +MD net/minecraft/network/play/server/S14PacketEntity func_149063_g ()B func_149063_g +MD net/minecraft/network/play/server/S14PacketEntity func_149060_h ()Z func_149060_h +MD net/minecraft/network/play/server/S14PacketEntity getOnGround ()Z func_179742_g +MD net/minecraft/network/play/server/S14PacketEntity toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S36PacketSignEditorOpen getSignPosition ()Lnet/minecraft/util/BlockPos; func_179777_a +MD net/minecraft/network/play/server/S36PacketSignEditorOpen processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isInvulnerable ()Z func_149112_c +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setFlySpeed (F)V func_149104_a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setInvulnerable (Z)V func_149108_a +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isFlying ()Z func_149106_d +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setWalkSpeed (F)V func_149110_b +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setFlying (Z)V func_149102_b +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isAllowFlying ()Z func_149105_e +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setAllowFlying (Z)V func_149109_c +MD net/minecraft/network/play/server/S39PacketPlayerAbilities isCreativeMode ()Z func_149103_f +MD net/minecraft/network/play/server/S39PacketPlayerAbilities setCreativeMode (Z)V func_149111_d +MD net/minecraft/network/play/server/S39PacketPlayerAbilities getFlySpeed ()F func_149101_g +MD net/minecraft/network/play/server/S39PacketPlayerAbilities getWalkSpeed ()F func_149107_h +MD net/minecraft/network/play/server/S42PacketCombatEvent processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S42PacketCombatEvent$Event valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S42PacketCombatEvent$Event; valueOf +MD net/minecraft/network/play/server/S42PacketCombatEvent$Event values ()[Lnet/minecraft/network/play/server/S42PacketCombatEvent$Event; values +MD net/minecraft/network/play/server/S38PacketPlayerListItem getEntries ()Ljava/util/List; func_179767_a +MD net/minecraft/network/play/server/S38PacketPlayerListItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S38PacketPlayerListItem getAction ()Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; func_179768_b +MD net/minecraft/network/play/server/S38PacketPlayerListItem toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S38PacketPlayerListItem$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; valueOf +MD net/minecraft/network/play/server/S38PacketPlayerListItem$Action values ()[Lnet/minecraft/network/play/server/S38PacketPlayerListItem$Action; values +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getProfile ()Lcom/mojang/authlib/GameProfile; func_179962_a +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getPing ()I func_179963_b +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getGameMode ()Lnet/minecraft/world/WorldSettings$GameType; func_179960_c +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData getDisplayName ()Lnet/minecraft/util/IChatComponent; func_179961_d +MD net/minecraft/network/play/server/S38PacketPlayerListItem$AddPlayerData toString ()Ljava/lang/String; toString +MD net/minecraft/network/play/server/S0APacketUseBed getBedPosition ()Lnet/minecraft/util/BlockPos; func_179798_a +MD net/minecraft/network/play/server/S0APacketUseBed getPlayer (Lnet/minecraft/world/World;)Lnet/minecraft/entity/player/EntityPlayer; func_149091_a +MD net/minecraft/network/play/server/S0APacketUseBed processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S13PacketDestroyEntities getEntityIDs ()[I func_149098_c +MD net/minecraft/network/play/server/S13PacketDestroyEntities processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect getEntityId ()I func_149076_c +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1EPacketRemoveEntityEffect getEffectId ()I func_149075_d +MD net/minecraft/network/play/server/S48PacketResourcePackSend getURL ()Ljava/lang/String; func_179783_a +MD net/minecraft/network/play/server/S48PacketResourcePackSend processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S48PacketResourcePackSend getHash ()Ljava/lang/String; func_179784_b +MD net/minecraft/network/play/server/S07PacketRespawn getDimensionID ()I func_149082_c +MD net/minecraft/network/play/server/S07PacketRespawn processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S07PacketRespawn getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_149081_d +MD net/minecraft/network/play/server/S07PacketRespawn getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_149083_e +MD net/minecraft/network/play/server/S07PacketRespawn getWorldType ()Lnet/minecraft/world/WorldType; func_149080_f +MD net/minecraft/network/play/server/S19PacketEntityHeadLook getYaw ()B func_149380_c +MD net/minecraft/network/play/server/S19PacketEntityHeadLook getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_149381_a +MD net/minecraft/network/play/server/S19PacketEntityHeadLook processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S44PacketWorldBorder func_179788_a (Lnet/minecraft/world/border/WorldBorder;)V func_179788_a +MD net/minecraft/network/play/server/S44PacketWorldBorder processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S44PacketWorldBorder$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S44PacketWorldBorder$Action; valueOf +MD net/minecraft/network/play/server/S44PacketWorldBorder$Action values ()[Lnet/minecraft/network/play/server/S44PacketWorldBorder$Action; values +MD net/minecraft/network/play/server/S43PacketCamera getEntity (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_179780_a +MD net/minecraft/network/play/server/S43PacketCamera processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S09PacketHeldItemChange getHeldItemHotbarIndex ()I func_149385_c +MD net/minecraft/network/play/server/S09PacketHeldItemChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard func_149371_c ()I func_149371_c +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3DPacketDisplayScoreboard func_149370_d ()Ljava/lang/String; func_149370_d +MD net/minecraft/network/play/server/S1CPacketEntityMetadata func_149376_c ()Ljava/util/List; func_149376_c +MD net/minecraft/network/play/server/S1CPacketEntityMetadata processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1CPacketEntityMetadata getEntityId ()I func_149375_d +MD net/minecraft/network/play/server/S1BPacketEntityAttach getLeash ()I func_149404_c +MD net/minecraft/network/play/server/S1BPacketEntityAttach processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1BPacketEntityAttach getEntityId ()I func_149403_d +MD net/minecraft/network/play/server/S1BPacketEntityAttach getVehicleEntityId ()I func_149402_e +MD net/minecraft/network/play/server/S12PacketEntityVelocity getEntityID ()I func_149412_c +MD net/minecraft/network/play/server/S12PacketEntityVelocity processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionX ()I func_149411_d +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionY ()I func_149410_e +MD net/minecraft/network/play/server/S12PacketEntityVelocity getMotionZ ()I func_149409_f +MD net/minecraft/network/play/server/S04PacketEntityEquipment getItemStack ()Lnet/minecraft/item/ItemStack; func_149390_c +MD net/minecraft/network/play/server/S04PacketEntityEquipment processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S04PacketEntityEquipment getEntityID ()I func_149389_d +MD net/minecraft/network/play/server/S04PacketEntityEquipment getEquipmentSlot ()I func_149388_e +MD net/minecraft/network/play/server/S1FPacketSetExperience func_149397_c ()F func_149397_c +MD net/minecraft/network/play/server/S1FPacketSetExperience processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1FPacketSetExperience getTotalExperience ()I func_149396_d +MD net/minecraft/network/play/server/S1FPacketSetExperience getLevel ()I func_149395_e +MD net/minecraft/network/play/server/S06PacketUpdateHealth getHealth ()F func_149332_c +MD net/minecraft/network/play/server/S06PacketUpdateHealth processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S06PacketUpdateHealth getFoodLevel ()I func_149330_d +MD net/minecraft/network/play/server/S06PacketUpdateHealth getSaturationLevel ()F func_149331_e +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149339_c ()Ljava/lang/String; func_149339_c +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149337_d ()Ljava/lang/String; func_149337_d +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_149338_e ()I func_149338_e +MD net/minecraft/network/play/server/S3BPacketScoreboardObjective func_179817_d ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; func_179817_d +MD net/minecraft/network/play/server/S3EPacketTeams getName ()Ljava/lang/String; func_149312_c +MD net/minecraft/network/play/server/S3EPacketTeams processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3EPacketTeams getDisplayName ()Ljava/lang/String; func_149306_d +MD net/minecraft/network/play/server/S3EPacketTeams getPrefix ()Ljava/lang/String; func_149311_e +MD net/minecraft/network/play/server/S3EPacketTeams getSuffix ()Ljava/lang/String; func_149309_f +MD net/minecraft/network/play/server/S3EPacketTeams getPlayers ()Ljava/util/Collection; func_149310_g +MD net/minecraft/network/play/server/S3EPacketTeams getAction ()I func_149307_h +MD net/minecraft/network/play/server/S3EPacketTeams getFriendlyFlags ()I func_149308_i +MD net/minecraft/network/play/server/S3EPacketTeams getColor ()I func_179813_h +MD net/minecraft/network/play/server/S3EPacketTeams getNameTagVisibility ()Ljava/lang/String; func_179814_i +MD net/minecraft/network/play/server/S3CPacketUpdateScore getPlayerName ()Ljava/lang/String; func_149324_c +MD net/minecraft/network/play/server/S3CPacketUpdateScore processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S3CPacketUpdateScore getObjectiveName ()Ljava/lang/String; func_149321_d +MD net/minecraft/network/play/server/S3CPacketUpdateScore getScoreValue ()I func_149323_e +MD net/minecraft/network/play/server/S3CPacketUpdateScore getScoreAction ()Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; func_180751_d +MD net/minecraft/network/play/server/S3CPacketUpdateScore$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; valueOf +MD net/minecraft/network/play/server/S3CPacketUpdateScore$Action values ()[Lnet/minecraft/network/play/server/S3CPacketUpdateScore$Action; values +MD net/minecraft/network/play/server/S05PacketSpawnPosition getSpawnPos ()Lnet/minecraft/util/BlockPos; func_179800_a +MD net/minecraft/network/play/server/S05PacketSpawnPosition processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S03PacketTimeUpdate getTotalWorldTime ()J func_149366_c +MD net/minecraft/network/play/server/S03PacketTimeUpdate processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S03PacketTimeUpdate getWorldTime ()J func_149365_d +MD net/minecraft/network/play/server/S45PacketTitle getType ()Lnet/minecraft/network/play/server/S45PacketTitle$Type; func_179807_a +MD net/minecraft/network/play/server/S45PacketTitle processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S45PacketTitle getMessage ()Lnet/minecraft/util/IChatComponent; func_179805_b +MD net/minecraft/network/play/server/S45PacketTitle getFadeInTime ()I func_179806_c +MD net/minecraft/network/play/server/S45PacketTitle getDisplayTime ()I func_179804_d +MD net/minecraft/network/play/server/S45PacketTitle getFadeOutTime ()I func_179803_e +MD net/minecraft/network/play/server/S45PacketTitle$Type getNames ()[Ljava/lang/String; func_179971_a +MD net/minecraft/network/play/server/S45PacketTitle$Type byName (Ljava/lang/String;)Lnet/minecraft/network/play/server/S45PacketTitle$Type; func_179969_a +MD net/minecraft/network/play/server/S45PacketTitle$Type valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/server/S45PacketTitle$Type; valueOf +MD net/minecraft/network/play/server/S45PacketTitle$Type values ()[Lnet/minecraft/network/play/server/S45PacketTitle$Type; values +MD net/minecraft/network/play/server/S33PacketUpdateSign getPos ()Lnet/minecraft/util/BlockPos; func_179704_a +MD net/minecraft/network/play/server/S33PacketUpdateSign processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S33PacketUpdateSign getLines ()[Lnet/minecraft/util/IChatComponent; func_180753_b +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter getHeader ()Lnet/minecraft/util/IChatComponent; func_179700_a +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S47PacketPlayerListHeaderFooter getFooter ()Lnet/minecraft/util/IChatComponent; func_179701_b +MD net/minecraft/network/play/server/S0DPacketCollectItem getCollectedItemEntityID ()I func_149354_c +MD net/minecraft/network/play/server/S0DPacketCollectItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S0DPacketCollectItem getEntityID ()I func_149353_d +MD net/minecraft/network/play/server/S18PacketEntityTeleport getEntityId ()I func_149451_c +MD net/minecraft/network/play/server/S18PacketEntityTeleport processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S18PacketEntityTeleport getX ()I func_149449_d +MD net/minecraft/network/play/server/S18PacketEntityTeleport getY ()I func_149448_e +MD net/minecraft/network/play/server/S18PacketEntityTeleport getZ ()I func_149446_f +MD net/minecraft/network/play/server/S18PacketEntityTeleport getYaw ()B func_149450_g +MD net/minecraft/network/play/server/S18PacketEntityTeleport getPitch ()B func_149447_h +MD net/minecraft/network/play/server/S18PacketEntityTeleport getOnGround ()Z func_179697_g +MD net/minecraft/network/play/server/S20PacketEntityProperties getEntityId ()I func_149442_c +MD net/minecraft/network/play/server/S20PacketEntityProperties processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S20PacketEntityProperties func_149441_d ()Ljava/util/List; func_149441_d +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151409_a ()Ljava/lang/String; func_151409_a +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151410_b ()D func_151410_b +MD net/minecraft/network/play/server/S20PacketEntityProperties$Snapshot func_151408_c ()Ljava/util/Collection; func_151408_c +MD net/minecraft/network/play/server/S1DPacketEntityEffect func_149429_c ()Z func_149429_c +MD net/minecraft/network/play/server/S1DPacketEntityEffect processPacket (Lnet/minecraft/network/play/INetHandlerPlayClient;)V func_148833_a +MD net/minecraft/network/play/server/S1DPacketEntityEffect getEntityId ()I func_149426_d +MD net/minecraft/network/play/server/S1DPacketEntityEffect getEffectId ()B func_149427_e +MD net/minecraft/network/play/server/S1DPacketEntityEffect getAmplifier ()B func_149428_f +MD net/minecraft/network/play/server/S1DPacketEntityEffect getDuration ()I func_180755_e +MD net/minecraft/network/play/server/S1DPacketEntityEffect func_179707_f ()Z func_179707_f +MD net/minecraft/network/play/INetHandlerPlayServer processTabComplete (Lnet/minecraft/network/play/client/C14PacketTabComplete;)V func_147341_a +MD net/minecraft/network/play/INetHandlerPlayServer processChatMessage (Lnet/minecraft/network/play/client/C01PacketChatMessage;)V func_147354_a +MD net/minecraft/network/play/INetHandlerPlayServer processClientStatus (Lnet/minecraft/network/play/client/C16PacketClientStatus;)V func_147342_a +MD net/minecraft/network/play/INetHandlerPlayServer processClientSettings (Lnet/minecraft/network/play/client/C15PacketClientSettings;)V func_147352_a +MD net/minecraft/network/play/INetHandlerPlayServer processConfirmTransaction (Lnet/minecraft/network/play/client/C0FPacketConfirmTransaction;)V func_147339_a +MD net/minecraft/network/play/INetHandlerPlayServer processEnchantItem (Lnet/minecraft/network/play/client/C11PacketEnchantItem;)V func_147338_a +MD net/minecraft/network/play/INetHandlerPlayServer processClickWindow (Lnet/minecraft/network/play/client/C0EPacketClickWindow;)V func_147351_a +MD net/minecraft/network/play/INetHandlerPlayServer processCloseWindow (Lnet/minecraft/network/play/client/C0DPacketCloseWindow;)V func_147356_a +MD net/minecraft/network/play/INetHandlerPlayServer processVanilla250Packet (Lnet/minecraft/network/play/client/C17PacketCustomPayload;)V func_147349_a +MD net/minecraft/network/play/INetHandlerPlayServer processUseEntity (Lnet/minecraft/network/play/client/C02PacketUseEntity;)V func_147340_a +MD net/minecraft/network/play/INetHandlerPlayServer processKeepAlive (Lnet/minecraft/network/play/client/C00PacketKeepAlive;)V func_147353_a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayer (Lnet/minecraft/network/play/client/C03PacketPlayer;)V func_147347_a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerAbilities (Lnet/minecraft/network/play/client/C13PacketPlayerAbilities;)V func_147348_a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerDigging (Lnet/minecraft/network/play/client/C07PacketPlayerDigging;)V func_147345_a +MD net/minecraft/network/play/INetHandlerPlayServer processEntityAction (Lnet/minecraft/network/play/client/C0BPacketEntityAction;)V func_147357_a +MD net/minecraft/network/play/INetHandlerPlayServer processInput (Lnet/minecraft/network/play/client/C0CPacketInput;)V func_147358_a +MD net/minecraft/network/play/INetHandlerPlayServer handleResourcePackStatus (Lnet/minecraft/network/play/client/C19PacketResourcePackStatus;)V func_175086_a +MD net/minecraft/network/play/INetHandlerPlayServer processHeldItemChange (Lnet/minecraft/network/play/client/C09PacketHeldItemChange;)V func_147355_a +MD net/minecraft/network/play/INetHandlerPlayServer processCreativeInventoryAction (Lnet/minecraft/network/play/client/C10PacketCreativeInventoryAction;)V func_147344_a +MD net/minecraft/network/play/INetHandlerPlayServer processUpdateSign (Lnet/minecraft/network/play/client/C12PacketUpdateSign;)V func_147343_a +MD net/minecraft/network/play/INetHandlerPlayServer handleAnimation (Lnet/minecraft/network/play/client/C0APacketAnimation;)V func_175087_a +MD net/minecraft/network/play/INetHandlerPlayServer handleSpectate (Lnet/minecraft/network/play/client/C18PacketSpectate;)V func_175088_a +MD net/minecraft/network/play/INetHandlerPlayServer processPlayerBlockPlacement (Lnet/minecraft/network/play/client/C08PacketPlayerBlockPlacement;)V func_147346_a +MD net/minecraft/network/play/client/C14PacketTabComplete getMessage ()Ljava/lang/String; func_149419_c +MD net/minecraft/network/play/client/C14PacketTabComplete processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C14PacketTabComplete getTargetBlock ()Lnet/minecraft/util/BlockPos; func_179709_b +MD net/minecraft/network/play/client/C01PacketChatMessage getMessage ()Ljava/lang/String; func_149439_c +MD net/minecraft/network/play/client/C01PacketChatMessage processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C16PacketClientStatus getStatus ()Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; func_149435_c +MD net/minecraft/network/play/client/C16PacketClientStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C16PacketClientStatus$EnumState valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; valueOf +MD net/minecraft/network/play/client/C16PacketClientStatus$EnumState values ()[Lnet/minecraft/network/play/client/C16PacketClientStatus$EnumState; values +MD net/minecraft/network/play/client/C15PacketClientSettings getLang ()Ljava/lang/String; func_149524_c +MD net/minecraft/network/play/client/C15PacketClientSettings processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C15PacketClientSettings getChatVisibility ()Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; func_149523_e +MD net/minecraft/network/play/client/C15PacketClientSettings isColorsEnabled ()Z func_149520_f +MD net/minecraft/network/play/client/C15PacketClientSettings getModelPartFlags ()I func_149521_d +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction getWindowId ()I func_149532_c +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C0FPacketConfirmTransaction getUid ()S func_149533_d +MD net/minecraft/network/play/client/C11PacketEnchantItem getWindowId ()I func_149539_c +MD net/minecraft/network/play/client/C11PacketEnchantItem processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C11PacketEnchantItem getButton ()I func_149537_d +MD net/minecraft/network/play/client/C0EPacketClickWindow getWindowId ()I func_149548_c +MD net/minecraft/network/play/client/C0EPacketClickWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C0EPacketClickWindow getSlotId ()I func_149544_d +MD net/minecraft/network/play/client/C0EPacketClickWindow getUsedButton ()I func_149543_e +MD net/minecraft/network/play/client/C0EPacketClickWindow getActionNumber ()S func_149547_f +MD net/minecraft/network/play/client/C0EPacketClickWindow getClickedItem ()Lnet/minecraft/item/ItemStack; func_149546_g +MD net/minecraft/network/play/client/C0EPacketClickWindow getMode ()I func_149542_h +MD net/minecraft/network/play/client/C0DPacketCloseWindow processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C17PacketCustomPayload getChannelName ()Ljava/lang/String; func_149559_c +MD net/minecraft/network/play/client/C17PacketCustomPayload processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C17PacketCustomPayload getBufferData ()Lnet/minecraft/network/PacketBuffer; func_180760_b +MD net/minecraft/network/play/client/C02PacketUseEntity getAction ()Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; func_149565_c +MD net/minecraft/network/play/client/C02PacketUseEntity getEntityFromWorld (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_149564_a +MD net/minecraft/network/play/client/C02PacketUseEntity processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C02PacketUseEntity getHitVec ()Lnet/minecraft/util/Vec3; func_179712_b +MD net/minecraft/network/play/client/C02PacketUseEntity$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; valueOf +MD net/minecraft/network/play/client/C02PacketUseEntity$Action values ()[Lnet/minecraft/network/play/client/C02PacketUseEntity$Action; values +MD net/minecraft/network/play/client/C00PacketKeepAlive getKey ()I func_149460_c +MD net/minecraft/network/play/client/C00PacketKeepAlive processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C03PacketPlayer getPositionX ()D func_149464_c +MD net/minecraft/network/play/client/C03PacketPlayer processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C03PacketPlayer setMoving (Z)V func_149469_a +MD net/minecraft/network/play/client/C03PacketPlayer getPositionY ()D func_149467_d +MD net/minecraft/network/play/client/C03PacketPlayer getPositionZ ()D func_149472_e +MD net/minecraft/network/play/client/C03PacketPlayer getYaw ()F func_149462_g +MD net/minecraft/network/play/client/C03PacketPlayer getPitch ()F func_149470_h +MD net/minecraft/network/play/client/C03PacketPlayer isOnGround ()Z func_149465_i +MD net/minecraft/network/play/client/C03PacketPlayer isMoving ()Z func_149466_j +MD net/minecraft/network/play/client/C03PacketPlayer getRotating ()Z func_149463_k +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isInvulnerable ()Z func_149494_c +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setFlySpeed (F)V func_149485_a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setInvulnerable (Z)V func_149490_a +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isFlying ()Z func_149488_d +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setWalkSpeed (F)V func_149492_b +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setFlying (Z)V func_149483_b +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isAllowFlying ()Z func_149486_e +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setAllowFlying (Z)V func_149491_c +MD net/minecraft/network/play/client/C13PacketPlayerAbilities isCreativeMode ()Z func_149484_f +MD net/minecraft/network/play/client/C13PacketPlayerAbilities setCreativeMode (Z)V func_149493_d +MD net/minecraft/network/play/client/C07PacketPlayerDigging getPosition ()Lnet/minecraft/util/BlockPos; func_179715_a +MD net/minecraft/network/play/client/C07PacketPlayerDigging processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C07PacketPlayerDigging getFacing ()Lnet/minecraft/util/EnumFacing; func_179714_b +MD net/minecraft/network/play/client/C07PacketPlayerDigging getStatus ()Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; func_180762_c +MD net/minecraft/network/play/client/C07PacketPlayerDigging$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; valueOf +MD net/minecraft/network/play/client/C07PacketPlayerDigging$Action values ()[Lnet/minecraft/network/play/client/C07PacketPlayerDigging$Action; values +MD net/minecraft/network/play/client/C0BPacketEntityAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C0BPacketEntityAction getAction ()Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; func_180764_b +MD net/minecraft/network/play/client/C0BPacketEntityAction getAuxData ()I func_149512_e +MD net/minecraft/network/play/client/C0BPacketEntityAction$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; valueOf +MD net/minecraft/network/play/client/C0BPacketEntityAction$Action values ()[Lnet/minecraft/network/play/client/C0BPacketEntityAction$Action; values +MD net/minecraft/network/play/client/C0CPacketInput getStrafeSpeed ()F func_149620_c +MD net/minecraft/network/play/client/C0CPacketInput processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C0CPacketInput getForwardSpeed ()F func_149616_d +MD net/minecraft/network/play/client/C0CPacketInput isJumping ()Z func_149618_e +MD net/minecraft/network/play/client/C0CPacketInput isSneaking ()Z func_149617_f +MD net/minecraft/network/play/client/C19PacketResourcePackStatus processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action valueOf (Ljava/lang/String;)Lnet/minecraft/network/play/client/C19PacketResourcePackStatus$Action; valueOf +MD net/minecraft/network/play/client/C19PacketResourcePackStatus$Action values ()[Lnet/minecraft/network/play/client/C19PacketResourcePackStatus$Action; values +MD net/minecraft/network/play/client/C09PacketHeldItemChange getSlotId ()I func_149614_c +MD net/minecraft/network/play/client/C09PacketHeldItemChange processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction getSlotId ()I func_149627_c +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C10PacketCreativeInventoryAction getStack ()Lnet/minecraft/item/ItemStack; func_149625_d +MD net/minecraft/network/play/client/C12PacketUpdateSign getPosition ()Lnet/minecraft/util/BlockPos; func_179722_a +MD net/minecraft/network/play/client/C12PacketUpdateSign processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C12PacketUpdateSign getLines ()[Lnet/minecraft/util/IChatComponent; func_180768_b +MD net/minecraft/network/play/client/C0APacketAnimation processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C18PacketSpectate processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C18PacketSpectate getEntity (Lnet/minecraft/world/WorldServer;)Lnet/minecraft/entity/Entity; func_179727_a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPosition ()Lnet/minecraft/util/BlockPos; func_179724_a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement processPacket (Lnet/minecraft/network/play/INetHandlerPlayServer;)V func_148833_a +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockDirection ()I func_149568_f +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getStack ()Lnet/minecraft/item/ItemStack; func_149574_g +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetX ()F func_149573_h +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetY ()F func_149569_i +MD net/minecraft/network/play/client/C08PacketPlayerBlockPlacement getPlacedBlockOffsetZ ()F func_149575_j +MD net/minecraft/network/handshake/client/C00Handshake getRequestedState ()Lnet/minecraft/network/EnumConnectionState; func_149594_c +MD net/minecraft/network/handshake/client/C00Handshake processPacket (Lnet/minecraft/network/handshake/INetHandlerHandshakeServer;)V func_148833_a +MD net/minecraft/network/handshake/client/C00Handshake getProtocolVersion ()I func_149595_d +MD net/minecraft/network/handshake/INetHandlerHandshakeServer processHandshake (Lnet/minecraft/network/handshake/client/C00Handshake;)V func_147383_a +MD net/minecraft/network/login/INetHandlerLoginClient handleLoginSuccess (Lnet/minecraft/network/login/server/S02PacketLoginSuccess;)V func_147390_a +MD net/minecraft/network/login/INetHandlerLoginClient handleEncryptionRequest (Lnet/minecraft/network/login/server/S01PacketEncryptionRequest;)V func_147389_a +MD net/minecraft/network/login/INetHandlerLoginClient handleEnableCompression (Lnet/minecraft/network/login/server/S03PacketEnableCompression;)V func_180464_a +MD net/minecraft/network/login/INetHandlerLoginClient handleDisconnect (Lnet/minecraft/network/login/server/S00PacketDisconnect;)V func_147388_a +MD net/minecraft/network/login/server/S02PacketLoginSuccess getProfile ()Lcom/mojang/authlib/GameProfile; func_179730_a +MD net/minecraft/network/login/server/S02PacketLoginSuccess processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V func_148833_a +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getServerId ()Ljava/lang/String; func_149609_c +MD net/minecraft/network/login/server/S01PacketEncryptionRequest processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V func_148833_a +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getPublicKey ()Ljava/security/PublicKey; func_149608_d +MD net/minecraft/network/login/server/S01PacketEncryptionRequest getVerifyToken ()[B func_149607_e +MD net/minecraft/network/login/server/S03PacketEnableCompression getCompressionTreshold ()I func_179731_a +MD net/minecraft/network/login/server/S03PacketEnableCompression processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V func_148833_a +MD net/minecraft/network/login/server/S00PacketDisconnect func_149603_c ()Lnet/minecraft/util/IChatComponent; func_149603_c +MD net/minecraft/network/login/server/S00PacketDisconnect processPacket (Lnet/minecraft/network/login/INetHandlerLoginClient;)V func_148833_a +MD net/minecraft/network/login/INetHandlerLoginServer processLoginStart (Lnet/minecraft/network/login/client/C00PacketLoginStart;)V func_147316_a +MD net/minecraft/network/login/INetHandlerLoginServer processEncryptionResponse (Lnet/minecraft/network/login/client/C01PacketEncryptionResponse;)V func_147315_a +MD net/minecraft/network/login/client/C00PacketLoginStart getProfile ()Lcom/mojang/authlib/GameProfile; func_149304_c +MD net/minecraft/network/login/client/C00PacketLoginStart processPacket (Lnet/minecraft/network/login/INetHandlerLoginServer;)V func_148833_a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse getSecretKey (Ljava/security/PrivateKey;)Ljavax/crypto/SecretKey; func_149300_a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse processPacket (Lnet/minecraft/network/login/INetHandlerLoginServer;)V func_148833_a +MD net/minecraft/network/login/client/C01PacketEncryptionResponse getVerifyToken (Ljava/security/PrivateKey;)[B func_149299_b +MD net/minecraft/network/status/INetHandlerStatusClient handlePong (Lnet/minecraft/network/status/server/S01PacketPong;)V func_147398_a +MD net/minecraft/network/status/INetHandlerStatusClient handleServerInfo (Lnet/minecraft/network/status/server/S00PacketServerInfo;)V func_147397_a +MD net/minecraft/network/status/server/S01PacketPong processPacket (Lnet/minecraft/network/status/INetHandlerStatusClient;)V func_148833_a +MD net/minecraft/network/status/server/S00PacketServerInfo getResponse ()Lnet/minecraft/network/ServerStatusResponse; func_149294_c +MD net/minecraft/network/status/server/S00PacketServerInfo processPacket (Lnet/minecraft/network/status/INetHandlerStatusClient;)V func_148833_a +MD net/minecraft/network/ServerStatusResponse getServerDescription ()Lnet/minecraft/util/IChatComponent; func_151317_a +MD net/minecraft/network/ServerStatusResponse setServerDescription (Lnet/minecraft/util/IChatComponent;)V func_151315_a +MD net/minecraft/network/ServerStatusResponse setFavicon (Ljava/lang/String;)V func_151320_a +MD net/minecraft/network/ServerStatusResponse setPlayerCountData (Lnet/minecraft/network/ServerStatusResponse$PlayerCountData;)V func_151319_a +MD net/minecraft/network/ServerStatusResponse setProtocolVersionInfo (Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier;)V func_151321_a +MD net/minecraft/network/ServerStatusResponse getPlayerCountData ()Lnet/minecraft/network/ServerStatusResponse$PlayerCountData; func_151318_b +MD net/minecraft/network/ServerStatusResponse getProtocolVersionInfo ()Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier; func_151322_c +MD net/minecraft/network/ServerStatusResponse getFavicon ()Ljava/lang/String; func_151316_d +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getMaxPlayers ()I func_151332_a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData setPlayers ([Lcom/mojang/authlib/GameProfile;)V func_151330_a +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getOnlinePlayerCount ()I func_151333_b +MD net/minecraft/network/ServerStatusResponse$PlayerCountData getPlayers ()[Lcom/mojang/authlib/GameProfile; func_151331_c +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse$PlayerCountData; deserialize +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse$PlayerCountData;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$PlayerCountData$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse; deserialize +MD net/minecraft/network/ServerStatusResponse$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier getName ()Ljava/lang/String; func_151303_a +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier getProtocol ()I func_151304_b +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier; deserialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer serialize (Lnet/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/network/ServerStatusResponse$MinecraftProtocolVersionIdentifier$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/network/status/INetHandlerStatusServer processPing (Lnet/minecraft/network/status/client/C01PacketPing;)V func_147311_a +MD net/minecraft/network/status/INetHandlerStatusServer processServerQuery (Lnet/minecraft/network/status/client/C00PacketServerQuery;)V func_147312_a +MD net/minecraft/network/status/client/C01PacketPing getClientTime ()J func_149289_c +MD net/minecraft/network/status/client/C01PacketPing processPacket (Lnet/minecraft/network/status/INetHandlerStatusServer;)V func_148833_a +MD net/minecraft/network/status/client/C00PacketServerQuery processPacket (Lnet/minecraft/network/status/INetHandlerStatusServer;)V func_148833_a +MD net/minecraft/util/ResourceLocation getResourcePath ()Ljava/lang/String; func_110623_a +MD net/minecraft/util/ResourceLocation splitObjectName (Ljava/lang/String;)[Ljava/lang/String; func_177516_a +MD net/minecraft/util/ResourceLocation getResourceDomain ()Ljava/lang/String; func_110624_b +MD net/minecraft/util/ResourceLocation equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/ResourceLocation hashCode ()I hashCode +MD net/minecraft/util/ResourceLocation toString ()Ljava/lang/String; toString +MD net/minecraft/dispenser/BehaviorProjectileDispense func_82498_a ()F func_82498_a +MD net/minecraft/dispenser/BehaviorProjectileDispense getProjectileEntity (Lnet/minecraft/world/World;Lnet/minecraft/dispenser/IPosition;)Lnet/minecraft/entity/IProjectile; func_82499_a +MD net/minecraft/dispenser/BehaviorProjectileDispense func_82500_b ()F func_82500_b +MD net/minecraft/init/Bootstrap isRegistered ()Z func_179869_a +MD net/minecraft/init/Bootstrap printToSYSOUT (Ljava/lang/String;)V func_179870_a +MD net/minecraft/init/Bootstrap registerDispenserBehaviors ()V func_151353_a +MD net/minecraft/init/Bootstrap register ()V func_151354_b +MD net/minecraft/init/Bootstrap redirectOutputToLog ()V func_179868_d +MD net/minecraft/client/util/JsonException func_151379_a (Ljava/lang/Exception;)Lnet/minecraft/client/util/JsonException; func_151379_a +MD net/minecraft/client/util/JsonException func_151380_a (Ljava/lang/String;)V func_151380_a +MD net/minecraft/client/util/JsonException func_151381_b (Ljava/lang/String;)V func_151381_b +MD net/minecraft/client/util/JsonException getMessage ()Ljava/lang/String; getMessage +MD net/minecraft/client/util/JsonException$Entry func_151373_a (Ljava/lang/String;)V func_151373_a +MD net/minecraft/client/util/JsonException$Entry access$100 (Lnet/minecraft/client/util/JsonException$Entry;Ljava/lang/String;)V access$100 +MD net/minecraft/client/util/JsonException$Entry func_151372_b ()Ljava/lang/String; func_151372_b +MD net/minecraft/client/util/JsonException$Entry access$202 (Lnet/minecraft/client/util/JsonException$Entry;Ljava/lang/String;)Ljava/lang/String; access$202 +MD net/minecraft/client/util/JsonException$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/server/ServerEula hasAcceptedEULA ()Z func_154346_a +MD net/minecraft/server/ServerEula loadEULAFile (Ljava/io/File;)Z func_154347_a +MD net/minecraft/server/ServerEula createEULAFile ()V func_154348_b +MD net/minecraft/util/LoggingPrintStream logString (Ljava/lang/String;)V func_179882_a +MD net/minecraft/util/LoggingPrintStream println (Ljava/lang/Object;)V println +MD net/minecraft/util/LoggingPrintStream println (Ljava/lang/String;)V println +MD net/minecraft/network/ThreadQuickExitException fillInStackTrace ()Ljava/lang/Throwable; fillInStackTrace +MD net/minecraft/network/rcon/IServer getHostname ()Ljava/lang/String; func_71277_t +MD net/minecraft/network/rcon/IServer getPort ()I func_71234_u +MD net/minecraft/network/rcon/IServer getMotd ()Ljava/lang/String; func_71274_v +MD net/minecraft/network/rcon/IServer getMinecraftVersion ()Ljava/lang/String; func_71249_w +MD net/minecraft/network/rcon/IServer getCurrentPlayerCount ()I func_71233_x +MD net/minecraft/network/rcon/IServer getMaxPlayers ()I func_71275_y +MD net/minecraft/network/rcon/IServer getAllUsernames ()[Ljava/lang/String; func_71213_z +MD net/minecraft/network/rcon/IServer isDebuggingEnabled ()Z func_71239_B +MD net/minecraft/network/rcon/IServer getFolderName ()Ljava/lang/String; func_71270_I +MD net/minecraft/network/rcon/IServer saveProperties ()V func_71326_a +MD net/minecraft/network/rcon/IServer getIntProperty (Ljava/lang/String;I)I func_71327_a +MD net/minecraft/network/rcon/IServer setProperty (Ljava/lang/String;Ljava/lang/Object;)V func_71328_a +MD net/minecraft/network/rcon/IServer getStringProperty (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; func_71330_a +MD net/minecraft/network/rcon/IServer handleRConCommand (Ljava/lang/String;)Ljava/lang/String; func_71252_i +MD net/minecraft/network/rcon/IServer getSettingsFilename ()Ljava/lang/String; func_71329_c +MD net/minecraft/network/rcon/IServer getPlugins ()Ljava/lang/String; func_71258_A +MD net/minecraft/network/rcon/IServer logInfo (Ljava/lang/String;)V func_71244_g +MD net/minecraft/network/rcon/IServer logWarning (Ljava/lang/String;)V func_71236_h +MD net/minecraft/network/rcon/IServer logSevere (Ljava/lang/String;)V func_71201_j +MD net/minecraft/network/rcon/IServer logDebug (Ljava/lang/String;)V func_71198_k +MD net/minecraft/scoreboard/ServerScoreboard func_96547_a (Lnet/minecraft/scoreboard/ScoreboardSaveData;)V func_96547_a +MD net/minecraft/scoreboard/ServerScoreboard markSaveDataDirty ()V func_96551_b +MD net/minecraft/scoreboard/ServerScoreboard func_96550_d (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/List; func_96550_d +MD net/minecraft/scoreboard/ServerScoreboard func_96549_e (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96549_e +MD net/minecraft/scoreboard/ServerScoreboard func_96548_f (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/List; func_96548_f +MD net/minecraft/scoreboard/ServerScoreboard sendDisplaySlotRemovalPackets (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96546_g +MD net/minecraft/scoreboard/ServerScoreboard func_96552_h (Lnet/minecraft/scoreboard/ScoreObjective;)I func_96552_h +MD net/minecraft/server/dedicated/PropertyManager generateNewProperties ()V func_73666_a +MD net/minecraft/server/dedicated/PropertyManager getIntProperty (Ljava/lang/String;I)I func_73669_a +MD net/minecraft/server/dedicated/PropertyManager getLongProperty (Ljava/lang/String;J)J func_179885_a +MD net/minecraft/server/dedicated/PropertyManager setProperty (Ljava/lang/String;Ljava/lang/Object;)V func_73667_a +MD net/minecraft/server/dedicated/PropertyManager getStringProperty (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; func_73671_a +MD net/minecraft/server/dedicated/PropertyManager getBooleanProperty (Ljava/lang/String;Z)Z func_73670_a +MD net/minecraft/server/dedicated/PropertyManager saveProperties ()V func_73668_b +MD net/minecraft/server/dedicated/PropertyManager getPropertiesFile ()Ljava/io/File; func_73665_c +MD net/minecraft/util/ITickable update ()V func_73660_a +MD net/minecraft/server/dedicated/DedicatedPlayerList loadOpsList ()V func_72417_t +MD net/minecraft/server/dedicated/DedicatedPlayerList saveOpsList ()V func_72419_u +MD net/minecraft/server/dedicated/DedicatedPlayerList readWhiteList ()V func_72418_v +MD net/minecraft/server/dedicated/DedicatedPlayerList saveWhiteList ()V func_72421_w +MD net/minecraft/server/dedicated/DedicatedPlayerList getServerInstance ()Lnet/minecraft/server/dedicated/DedicatedServer; func_72365_p +MD net/minecraft/server/dedicated/DedicatedPlayerList saveIpBanList ()V func_152618_v +MD net/minecraft/server/dedicated/DedicatedPlayerList saveUserBanList ()V func_152617_w +MD net/minecraft/server/dedicated/DedicatedPlayerList loadIpBanList ()V func_152619_x +MD net/minecraft/server/dedicated/DedicatedPlayerList loadUserBansList ()V func_152620_y +MD net/minecraft/server/dedicated/DedicatedServer addPendingCommand (Ljava/lang/String;Lnet/minecraft/command/ICommandSender;)V func_71331_a +MD net/minecraft/server/dedicated/DedicatedServer getBooleanProperty (Ljava/lang/String;Z)Z func_71332_a +MD net/minecraft/server/dedicated/DedicatedServer executePendingCommands ()V func_71333_ah +MD net/minecraft/server/dedicated/DedicatedServer getConfigurationManager ()Lnet/minecraft/server/dedicated/DedicatedPlayerList; func_71203_ab +MD net/minecraft/server/dedicated/DedicatedServer setGuiEnabled ()V func_120011_ar +MD net/minecraft/server/dedicated/DedicatedServer convertFiles ()Z func_152368_aE +MD net/minecraft/server/dedicated/DedicatedServer getMaxTickTime ()J func_175593_aQ +MD net/minecraft/server/dedicated/DedicatedServer access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/server/dedicated/DedicatedServer sleepFiveSeconds ()V func_152369_aG +MD net/minecraft/server/dedicated/DedicatedServer$1 run ()V run +MD net/minecraft/server/dedicated/DedicatedServer$2 run ()V run +MD net/minecraft/server/dedicated/DedicatedServer$3 call ()Ljava/lang/String; call +MD net/minecraft/server/dedicated/DedicatedServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/dedicated/DedicatedServer$4 call ()Ljava/lang/String; call +MD net/minecraft/server/dedicated/DedicatedServer$4 call ()Ljava/lang/Object; call +MD net/minecraft/server/dedicated/ServerHangWatchdog scheduleHalt ()V func_180248_a +MD net/minecraft/server/dedicated/ServerHangWatchdog run ()V run +MD net/minecraft/server/dedicated/ServerHangWatchdog$1 run ()V run +MD net/minecraft/server/gui/MinecraftServerGui getStatsComponent ()Ljavax/swing/JComponent; func_120019_b +MD net/minecraft/server/gui/MinecraftServerGui func_164247_a (Ljavax/swing/JTextArea;Ljavax/swing/JScrollPane;Ljava/lang/String;)V func_164247_a +MD net/minecraft/server/gui/MinecraftServerGui createServerGui (Lnet/minecraft/server/dedicated/DedicatedServer;)V func_120016_a +MD net/minecraft/server/gui/MinecraftServerGui access$000 (Lnet/minecraft/server/gui/MinecraftServerGui;)Lnet/minecraft/server/dedicated/DedicatedServer; access$000 +MD net/minecraft/server/gui/MinecraftServerGui getPlayerListComponent ()Ljavax/swing/JComponent; func_120020_c +MD net/minecraft/server/gui/MinecraftServerGui getLogComponent ()Ljavax/swing/JComponent; func_120018_d +MD net/minecraft/server/gui/MinecraftServerGui$1 windowClosing (Ljava/awt/event/WindowEvent;)V windowClosing +MD net/minecraft/server/gui/MinecraftServerGui$2 actionPerformed (Ljava/awt/event/ActionEvent;)V actionPerformed +MD net/minecraft/server/gui/MinecraftServerGui$3 focusGained (Ljava/awt/event/FocusEvent;)V focusGained +MD net/minecraft/server/gui/MinecraftServerGui$4 run ()V run +MD net/minecraft/server/gui/MinecraftServerGui$5 run ()V run +MD net/minecraft/server/gui/StatsComponent func_120034_a ()V func_120034_a +MD net/minecraft/server/gui/StatsComponent access$000 (Lnet/minecraft/server/gui/StatsComponent;)V access$000 +MD net/minecraft/server/gui/StatsComponent func_120035_a ([J)D func_120035_a +MD net/minecraft/server/gui/StatsComponent paint (Ljava/awt/Graphics;)V paint +MD net/minecraft/server/gui/StatsComponent$1 actionPerformed (Ljava/awt/event/ActionEvent;)V actionPerformed +MD net/minecraft/client/renderer/DestroyBlockProgress setPartialBlockDamage (I)V func_73107_a +MD net/minecraft/client/renderer/DestroyBlockProgress getPosition ()Lnet/minecraft/util/BlockPos; func_180246_b +MD net/minecraft/client/renderer/DestroyBlockProgress setCloudUpdateTick (I)V func_82744_b +MD net/minecraft/client/renderer/DestroyBlockProgress getPartialBlockDamage ()I func_73106_e +MD net/minecraft/client/renderer/DestroyBlockProgress getCreationCloudUpdateTick ()I func_82743_f +MD net/minecraft/world/demo/DemoWorldManager sendDemoReminder ()V func_73101_e +MD net/minecraft/entity/EntityTracker updateTrackedEntities ()V func_72788_a +MD net/minecraft/entity/EntityTracker func_180245_a (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_180245_a +MD net/minecraft/entity/EntityTracker func_85172_a (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/chunk/Chunk;)V func_85172_a +MD net/minecraft/entity/EntityTracker trackEntity (Lnet/minecraft/entity/Entity;)V func_72786_a +MD net/minecraft/entity/EntityTracker trackEntity (Lnet/minecraft/entity/Entity;II)V func_72791_a +MD net/minecraft/entity/EntityTracker addEntityToTracker (Lnet/minecraft/entity/Entity;IIZ)V func_72785_a +MD net/minecraft/entity/EntityTracker sendToAllTrackingEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/network/Packet;)V func_151247_a +MD net/minecraft/entity/EntityTracker removePlayerFromTrackers (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72787_a +MD net/minecraft/entity/EntityTracker untrackEntity (Lnet/minecraft/entity/Entity;)V func_72790_b +MD net/minecraft/entity/EntityTracker func_151248_b (Lnet/minecraft/entity/Entity;Lnet/minecraft/network/Packet;)V func_151248_b +MD net/minecraft/entity/EntityTracker$1 call ()Ljava/lang/String; call +MD net/minecraft/entity/EntityTracker$1 call ()Ljava/lang/Object; call +MD net/minecraft/server/management/PlayerManager getWorldServer ()Lnet/minecraft/world/WorldServer; func_72688_a +MD net/minecraft/server/management/PlayerManager setPlayerViewRadius (I)V func_152622_a +MD net/minecraft/server/management/PlayerManager hasPlayerInstance (II)Z func_152621_a +MD net/minecraft/server/management/PlayerManager overlaps (IIIII)Z func_72684_a +MD net/minecraft/server/management/PlayerManager getPlayerInstance (IIZ)Lnet/minecraft/server/management/PlayerManager$PlayerInstance; func_72690_a +MD net/minecraft/server/management/PlayerManager markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V func_180244_a +MD net/minecraft/server/management/PlayerManager access$100 (Lnet/minecraft/server/management/PlayerManager;)Lnet/minecraft/world/WorldServer; access$100 +MD net/minecraft/server/management/PlayerManager addPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72683_a +MD net/minecraft/server/management/PlayerManager isPlayerWatchingChunk (Lnet/minecraft/entity/player/EntityPlayerMP;II)Z func_72694_a +MD net/minecraft/server/management/PlayerManager updatePlayerInstances ()V func_72693_b +MD net/minecraft/server/management/PlayerManager getFurthestViewableBlock (I)I func_72686_a +MD net/minecraft/server/management/PlayerManager access$200 (Lnet/minecraft/server/management/PlayerManager;)Lnet/minecraft/util/LongHashMap; access$200 +MD net/minecraft/server/management/PlayerManager filterChunkLoadQueue (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72691_b +MD net/minecraft/server/management/PlayerManager access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/server/management/PlayerManager access$300 (Lnet/minecraft/server/management/PlayerManager;)Ljava/util/List; access$300 +MD net/minecraft/server/management/PlayerManager removePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72695_c +MD net/minecraft/server/management/PlayerManager access$400 (Lnet/minecraft/server/management/PlayerManager;)Ljava/util/List; access$400 +MD net/minecraft/server/management/PlayerManager updateMountedMovingPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72685_d +MD net/minecraft/server/management/PlayerManager$PlayerInstance processChunk ()V func_111194_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance flagChunkForUpdate (III)V func_151253_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance sendTileToAllPlayersWatchingChunk (Lnet/minecraft/tileentity/TileEntity;)V func_151252_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance increaseInhabitedTime (Lnet/minecraft/world/chunk/Chunk;)V func_111196_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance sendToAllPlayersWatchingChunk (Lnet/minecraft/network/Packet;)V func_151251_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance access$500 (Lnet/minecraft/server/management/PlayerManager$PlayerInstance;)Lnet/minecraft/world/ChunkCoordIntPair; access$500 +MD net/minecraft/server/management/PlayerManager$PlayerInstance addPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_73255_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance onUpdate ()V func_73254_a +MD net/minecraft/server/management/PlayerManager$PlayerInstance access$600 (Lnet/minecraft/server/management/PlayerManager$PlayerInstance;)Ljava/util/List; access$600 +MD net/minecraft/server/management/PlayerManager$PlayerInstance removePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_73252_b +MD net/minecraft/world/gen/ChunkProviderServer func_152380_a ()Ljava/util/List; func_152380_a +MD net/minecraft/world/gen/ChunkProviderServer saveChunkExtraData (Lnet/minecraft/world/chunk/Chunk;)V func_73243_a +MD net/minecraft/world/gen/ChunkProviderServer unloadAllChunks ()V func_73240_a +MD net/minecraft/world/gen/ChunkProviderServer dropChunk (II)V func_73241_b +MD net/minecraft/world/gen/ChunkProviderServer saveChunkData (Lnet/minecraft/world/chunk/Chunk;)V func_73242_b +MD net/minecraft/world/gen/ChunkProviderServer loadChunk (II)Lnet/minecraft/world/chunk/Chunk; func_73158_c +MD net/minecraft/world/gen/ChunkProviderServer loadChunkFromFile (II)Lnet/minecraft/world/chunk/Chunk; func_73239_e +MD net/minecraft/world/WorldServer saveLevel ()V func_73042_a +MD net/minecraft/world/WorldServer getTileEntitiesIn (IIIIII)Ljava/util/List; func_147486_a +MD net/minecraft/world/WorldServer fireBlockEvent (Lnet/minecraft/block/BlockEventData;)Z func_147485_a +MD net/minecraft/world/WorldServer adjustPosToNearbyEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_175736_a +MD net/minecraft/world/WorldServer spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDIDDDD[I)V func_175739_a +MD net/minecraft/world/WorldServer spawnParticle (Lnet/minecraft/util/EnumParticleTypes;ZDDDIDDDD[I)V func_180505_a +MD net/minecraft/world/WorldServer getEntityFromUuid (Ljava/util/UUID;)Lnet/minecraft/entity/Entity; func_175733_a +MD net/minecraft/world/WorldServer canCreatureTypeSpawnHere (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry;Lnet/minecraft/util/BlockPos;)Z func_175732_a +MD net/minecraft/world/WorldServer getSpawnListEntryForTypeAt (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase$SpawnListEntry; func_175734_a +MD net/minecraft/world/WorldServer saveAllChunks (ZLnet/minecraft/util/IProgressUpdate;)V func_73044_a +MD net/minecraft/world/WorldServer resetRainAndThunder ()V func_73051_P +MD net/minecraft/world/WorldServer canSpawnNPCs ()Z func_175738_ah +MD net/minecraft/world/WorldServer canSpawnAnimals ()Z func_175735_ai +MD net/minecraft/world/WorldServer setDebugWorldSettings ()V func_175737_aj +MD net/minecraft/world/WorldServer sendQueuedBlockEvents ()V func_147488_Z +MD net/minecraft/world/WorldServer createSpawnPosition (Lnet/minecraft/world/WorldSettings;)V func_73052_b +MD net/minecraft/world/WorldServer wakeAllPlayers ()V func_73053_d +MD net/minecraft/world/WorldServer areAllPlayersAsleep ()Z func_73056_e +MD net/minecraft/world/WorldServer resetUpdateEntityTick ()V func_82742_i +MD net/minecraft/world/WorldServer createBonusChest ()V func_73047_i +MD net/minecraft/world/WorldServer getSpawnCoordinate ()Lnet/minecraft/util/BlockPos; func_180504_m +MD net/minecraft/world/WorldServer saveChunkData ()V func_104140_m +MD net/minecraft/world/WorldServer flush ()V func_73041_k +MD net/minecraft/world/WorldServer getMinecraftServer ()Lnet/minecraft/server/MinecraftServer; func_73046_m +MD net/minecraft/world/WorldServer getEntityTracker ()Lnet/minecraft/entity/EntityTracker; func_73039_n +MD net/minecraft/world/WorldServer getPlayerManager ()Lnet/minecraft/server/management/PlayerManager; func_73040_p +MD net/minecraft/world/WorldServer getDefaultTeleporter ()Lnet/minecraft/world/Teleporter; func_85176_s +MD net/minecraft/world/WorldServer$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z apply +MD net/minecraft/world/WorldServer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/player/EntityPlayerMP getStatFile ()Lnet/minecraft/stats/StatisticsFile; func_147099_x +MD net/minecraft/entity/player/EntityPlayerMP getSpectatingEntity ()Lnet/minecraft/entity/Entity; func_175398_C +MD net/minecraft/entity/player/EntityPlayerMP getLastActiveTime ()J func_154331_x +MD net/minecraft/entity/player/EntityPlayerMP getTabListDisplayName ()Lnet/minecraft/util/IChatComponent; func_175396_E +MD net/minecraft/entity/player/EntityPlayerMP handleFalling (DZ)V func_71122_b +MD net/minecraft/entity/player/EntityPlayerMP setEntityActionState (FFZZ)V func_110430_a +MD net/minecraft/entity/player/EntityPlayerMP sendTileEntityUpdate (Lnet/minecraft/tileentity/TileEntity;)V func_147097_b +MD net/minecraft/entity/player/EntityPlayerMP handleClientSettings (Lnet/minecraft/network/play/client/C15PacketClientSettings;)V func_147100_a +MD net/minecraft/entity/player/EntityPlayerMP loadResourcePack (Ljava/lang/String;Ljava/lang/String;)V func_175397_a +MD net/minecraft/entity/player/EntityPlayerMP sendContainerToPlayer (Lnet/minecraft/inventory/Container;)V func_71120_a +MD net/minecraft/entity/player/EntityPlayerMP canPlayersAttack ()Z func_175400_cq +MD net/minecraft/entity/player/EntityPlayerMP getNextWindowId ()V func_71117_bO +MD net/minecraft/entity/player/EntityPlayerMP removeEntity (Lnet/minecraft/entity/Entity;)V func_152339_d +MD net/minecraft/entity/player/EntityPlayerMP setSpectatingEntity (Lnet/minecraft/entity/Entity;)V func_175399_e +MD net/minecraft/entity/player/EntityPlayerMP addSelfToInternalCraftingInventory ()V func_71116_b +MD net/minecraft/entity/player/EntityPlayerMP updateBiomesExplored ()V func_147098_j +MD net/minecraft/entity/player/EntityPlayerMP onUpdateEntity ()V func_71127_g +MD net/minecraft/entity/player/EntityPlayerMP updateHeldItem ()V func_71113_k +MD net/minecraft/entity/player/EntityPlayerMP closeContainer ()V func_71128_l +MD net/minecraft/entity/player/EntityPlayerMP mountEntityAndWakeUp ()V func_71123_m +MD net/minecraft/entity/player/EntityPlayerMP setPlayerHealthUpdated ()V func_71118_n +MD net/minecraft/entity/player/EntityPlayerMP getServerForPlayer ()Lnet/minecraft/world/WorldServer; func_71121_q +MD net/minecraft/entity/player/EntityPlayerMP getPlayerIP ()Ljava/lang/String; func_71114_r +MD net/minecraft/entity/player/EntityPlayerMP getChatVisibility ()Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; func_147096_v +MD net/minecraft/entity/player/EntityPlayerMP markPlayerActive ()V func_143004_u +MD net/minecraft/server/management/ItemInWorldManager updateBlockRemoving ()V func_73075_a +MD net/minecraft/server/management/ItemInWorldManager setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_73076_a +MD net/minecraft/server/management/ItemInWorldManager blockRemoving (Lnet/minecraft/util/BlockPos;)V func_180785_a +MD net/minecraft/server/management/ItemInWorldManager onBlockClicked (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_180784_a +MD net/minecraft/server/management/ItemInWorldManager setWorld (Lnet/minecraft/world/WorldServer;)V func_73080_a +MD net/minecraft/server/management/ItemInWorldManager tryUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;)Z func_73085_a +MD net/minecraft/server/management/ItemInWorldManager activateBlockOrUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z func_180236_a +MD net/minecraft/server/management/ItemInWorldManager getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_73081_b +MD net/minecraft/server/management/ItemInWorldManager initializeGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_73077_b +MD net/minecraft/server/management/ItemInWorldManager tryHarvestBlock (Lnet/minecraft/util/BlockPos;)Z func_180237_b +MD net/minecraft/server/management/ItemInWorldManager survivalOrAdventure ()Z func_180239_c +MD net/minecraft/server/management/ItemInWorldManager removeBlock (Lnet/minecraft/util/BlockPos;)Z func_180235_c +MD net/minecraft/server/management/ItemInWorldManager isCreative ()Z func_73083_d +MD net/minecraft/server/management/ItemInWorldManager cancelDestroyingBlock ()V func_180238_e +MD net/minecraft/entity/EntityTrackerEntry sendDestroyEntityPacketToTrackedPlayers ()V func_73119_a +MD net/minecraft/entity/EntityTrackerEntry sendPacketToTrackedPlayers (Lnet/minecraft/network/Packet;)V func_151259_a +MD net/minecraft/entity/EntityTrackerEntry updatePlayerList (Ljava/util/List;)V func_73122_a +MD net/minecraft/entity/EntityTrackerEntry removeFromTrackedPlayers (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_73118_a +MD net/minecraft/entity/EntityTrackerEntry sendMetadataToAllAssociatedPlayers ()V func_111190_b +MD net/minecraft/entity/EntityTrackerEntry func_151261_b (Lnet/minecraft/network/Packet;)V func_151261_b +MD net/minecraft/entity/EntityTrackerEntry updatePlayerEntities (Ljava/util/List;)V func_73125_b +MD net/minecraft/entity/EntityTrackerEntry updatePlayerEntity (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_73117_b +MD net/minecraft/entity/EntityTrackerEntry createSpawnPacket ()Lnet/minecraft/network/Packet; func_151260_c +MD net/minecraft/entity/EntityTrackerEntry func_180233_c (Lnet/minecraft/entity/player/EntityPlayerMP;)Z func_180233_c +MD net/minecraft/entity/EntityTrackerEntry removeTrackedPlayerSymmetric (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_73123_c +MD net/minecraft/entity/EntityTrackerEntry isPlayerWatchingThisChunk (Lnet/minecraft/entity/player/EntityPlayerMP;)Z func_73121_d +MD net/minecraft/entity/EntityTrackerEntry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/EntityTrackerEntry hashCode ()I hashCode +MD net/minecraft/network/PingResponseHandler writeAndFlush (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V func_151256_a +MD net/minecraft/network/PingResponseHandler getStringBuffer (Ljava/lang/String;)Lio/netty/buffer/ByteBuf; func_151255_a +MD net/minecraft/network/PingResponseHandler channelRead (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead +MD net/minecraft/network/NetworkSystem addLocalEndpoint ()Ljava/net/SocketAddress; func_151270_a +MD net/minecraft/network/NetworkSystem addLanEndpoint (Ljava/net/InetAddress;I)V func_151265_a +MD net/minecraft/network/NetworkSystem access$000 (Lnet/minecraft/network/NetworkSystem;)Ljava/util/List; access$000 +MD net/minecraft/network/NetworkSystem terminateEndpoints ()V func_151268_b +MD net/minecraft/network/NetworkSystem access$100 (Lnet/minecraft/network/NetworkSystem;)Lnet/minecraft/server/MinecraftServer; access$100 +MD net/minecraft/network/NetworkSystem networkTick ()V func_151269_c +MD net/minecraft/network/NetworkSystem getServer ()Lnet/minecraft/server/MinecraftServer; func_151267_d +MD net/minecraft/network/NetworkSystem$1 load ()Lio/netty/channel/nio/NioEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkSystem$2 load ()Lio/netty/channel/epoll/EpollEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkSystem$3 load ()Lio/netty/channel/local/LocalEventLoopGroup; func_179280_b +MD net/minecraft/network/NetworkSystem$4 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkSystem$5 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/network/NetworkSystem$6 call ()Ljava/lang/String; call +MD net/minecraft/network/NetworkSystem$6 call ()Ljava/lang/Object; call +MD net/minecraft/network/NetworkSystem$7 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/network/NetHandlerPlayServer getNetworkManager ()Lnet/minecraft/network/NetworkManager; func_147362_b +MD net/minecraft/network/NetHandlerPlayServer setPlayerLocation (DDDFF)V func_147364_a +MD net/minecraft/network/NetHandlerPlayServer setPlayerLocation (DDDFFLjava/util/Set;)V func_175089_a +MD net/minecraft/network/NetHandlerPlayServer sendPacket (Lnet/minecraft/network/Packet;)V func_147359_a +MD net/minecraft/network/NetHandlerPlayServer func_183006_b (Lnet/minecraft/network/play/client/C03PacketPlayer;)Z func_183006_b +MD net/minecraft/network/NetHandlerPlayServer kickPlayerFromServer (Ljava/lang/String;)V func_147360_c +MD net/minecraft/network/NetHandlerPlayServer currentTimeMillis ()J func_147363_d +MD net/minecraft/network/NetHandlerPlayServer handleSlashCommand (Ljava/lang/String;)V func_147361_d +MD net/minecraft/network/NetHandlerPlayServer$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/network/NetHandlerPlayServer$2 run ()V run +MD net/minecraft/network/NetHandlerPlayServer$3 call ()Ljava/lang/String; call +MD net/minecraft/network/NetHandlerPlayServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/network/NetHandlerLoginServer getOfflineProfile (Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; func_152506_a +MD net/minecraft/server/network/NetHandlerLoginServer closeConnection (Ljava/lang/String;)V func_147322_a +MD net/minecraft/server/network/NetHandlerLoginServer access$000 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Lnet/minecraft/server/MinecraftServer; access$000 +MD net/minecraft/server/network/NetHandlerLoginServer access$102 (Lnet/minecraft/server/network/NetHandlerLoginServer;Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; access$102 +MD net/minecraft/server/network/NetHandlerLoginServer access$502 (Lnet/minecraft/server/network/NetHandlerLoginServer;Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState;)Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; access$502 +MD net/minecraft/server/network/NetHandlerLoginServer tryAcceptPlayer ()V func_147326_c +MD net/minecraft/server/network/NetHandlerLoginServer access$100 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Lcom/mojang/authlib/GameProfile; access$100 +MD net/minecraft/server/network/NetHandlerLoginServer access$200 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Ljava/lang/String; access$200 +MD net/minecraft/server/network/NetHandlerLoginServer getConnectionInfo ()Ljava/lang/String; func_147317_d +MD net/minecraft/server/network/NetHandlerLoginServer access$300 (Lnet/minecraft/server/network/NetHandlerLoginServer;)Ljavax/crypto/SecretKey; access$300 +MD net/minecraft/server/network/NetHandlerLoginServer access$400 ()Lorg/apache/logging/log4j/Logger; access$400 +MD net/minecraft/server/network/NetHandlerLoginServer$1 operationComplete (Lio/netty/channel/ChannelFuture;)V operationComplete +MD net/minecraft/server/network/NetHandlerLoginServer$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/server/network/NetHandlerLoginServer$2 run ()V run +MD net/minecraft/server/network/NetHandlerLoginServer$LoginState valueOf (Ljava/lang/String;)Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; valueOf +MD net/minecraft/server/network/NetHandlerLoginServer$LoginState values ()[Lnet/minecraft/server/network/NetHandlerLoginServer$LoginState; values +MD net/minecraft/server/management/BanEntry getBanEndDate ()Ljava/util/Date; func_73680_d +MD net/minecraft/server/management/BanEntry getBanReason ()Ljava/lang/String; func_73686_f +MD net/minecraft/server/management/PlayerProfileCache getUsernames ()[Ljava/lang/String; func_152654_a +MD net/minecraft/server/management/PlayerProfileCache getEntriesWithLimit (I)Ljava/util/List; func_152656_a +MD net/minecraft/server/management/PlayerProfileCache addEntry (Lcom/mojang/authlib/GameProfile;)V func_152649_a +MD net/minecraft/server/management/PlayerProfileCache addEntry (Lcom/mojang/authlib/GameProfile;Ljava/util/Date;)V func_152651_a +MD net/minecraft/server/management/PlayerProfileCache getGameProfileForUsername (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; func_152655_a +MD net/minecraft/server/management/PlayerProfileCache getProfileByUUID (Ljava/util/UUID;)Lcom/mojang/authlib/GameProfile; func_152652_a +MD net/minecraft/server/management/PlayerProfileCache getGameProfile (Lnet/minecraft/server/MinecraftServer;Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; func_152650_a +MD net/minecraft/server/management/PlayerProfileCache load ()V func_152657_b +MD net/minecraft/server/management/PlayerProfileCache getByUUID (Ljava/util/UUID;)Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry; func_152653_b +MD net/minecraft/server/management/PlayerProfileCache save ()V func_152658_c +MD net/minecraft/server/management/PlayerProfileCache$1 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PlayerProfileCache$1 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PlayerProfileCache$2 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/server/management/PlayerProfileCache$2 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/server/management/PlayerProfileCache$2 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry getGameProfile ()Lcom/mojang/authlib/GameProfile; func_152668_a +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry access$200 (Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry;)Ljava/util/Date; access$200 +MD net/minecraft/server/management/PlayerProfileCache$ProfileEntry getExpirationDate ()Ljava/util/Date; func_152670_b +MD net/minecraft/server/management/PlayerProfileCache$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry; deserialize +MD net/minecraft/server/management/PlayerProfileCache$Serializer serialize (Lnet/minecraft/server/management/PlayerProfileCache$ProfileEntry;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/PlayerProfileCache$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/server/management/PlayerProfileCache$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/BanList isBanned (Ljava/net/SocketAddress;)Z func_152708_a +MD net/minecraft/server/management/BanList getBanEntry (Ljava/net/SocketAddress;)Lnet/minecraft/server/management/IPBanEntry; func_152709_b +MD net/minecraft/server/management/BanList addressToString (Ljava/net/SocketAddress;)Ljava/lang/String; func_152707_c +MD net/minecraft/server/management/IPBanEntry getIPFromJson (Lcom/google/gson/JsonObject;)Ljava/lang/String; func_152647_b +MD net/minecraft/server/management/PreYggdrasilConverter access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/server/management/PreYggdrasilConverter access$400 (Ljava/io/File;)V access$400 +MD net/minecraft/server/management/PreYggdrasilConverter readFile (Ljava/io/File;Ljava/util/Map;)Ljava/util/List; func_152721_a +MD net/minecraft/server/management/PreYggdrasilConverter getStringUUIDFromName (Ljava/lang/String;)Ljava/lang/String; func_152719_a +MD net/minecraft/server/management/PreYggdrasilConverter access$200 (Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; access$200 +MD net/minecraft/server/management/PreYggdrasilConverter tryConvert (Lnet/minecraft/server/dedicated/PropertyManager;)Z func_152714_a +MD net/minecraft/server/management/PreYggdrasilConverter convertSaveFiles (Lnet/minecraft/server/dedicated/DedicatedServer;Lnet/minecraft/server/dedicated/PropertyManager;)Z func_152723_a +MD net/minecraft/server/management/PreYggdrasilConverter convertUserBanlist (Lnet/minecraft/server/MinecraftServer;)Z func_152724_a +MD net/minecraft/server/management/PreYggdrasilConverter lookupNames (Lnet/minecraft/server/MinecraftServer;Ljava/util/Collection;Lcom/mojang/authlib/ProfileLookupCallback;)V func_152717_a +MD net/minecraft/server/management/PreYggdrasilConverter mkdir (Ljava/io/File;)V func_152711_b +MD net/minecraft/server/management/PreYggdrasilConverter parseDate (Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; func_152713_b +MD net/minecraft/server/management/PreYggdrasilConverter hasUnconvertableFiles (Lnet/minecraft/server/dedicated/PropertyManager;)Z func_152712_b +MD net/minecraft/server/management/PreYggdrasilConverter convertIpBanlist (Lnet/minecraft/server/MinecraftServer;)Z func_152722_b +MD net/minecraft/server/management/PreYggdrasilConverter backupConverted (Ljava/io/File;)V func_152727_c +MD net/minecraft/server/management/PreYggdrasilConverter hasUnconvertablePlayerFiles (Lnet/minecraft/server/dedicated/PropertyManager;)Z func_152715_c +MD net/minecraft/server/management/PreYggdrasilConverter convertOplist (Lnet/minecraft/server/MinecraftServer;)Z func_152718_c +MD net/minecraft/server/management/PreYggdrasilConverter getPlayersDirectory (Lnet/minecraft/server/dedicated/PropertyManager;)Ljava/io/File; func_152725_d +MD net/minecraft/server/management/PreYggdrasilConverter convertWhitelist (Lnet/minecraft/server/MinecraftServer;)Z func_152710_d +MD net/minecraft/server/management/PreYggdrasilConverter$1 apply (Ljava/lang/String;)Z apply +MD net/minecraft/server/management/PreYggdrasilConverter$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/server/management/PreYggdrasilConverter$2 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$2 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$3 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$3 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$4 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$4 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$5 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$5 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/PreYggdrasilConverter$6 func_152744_a (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; func_152744_a +MD net/minecraft/server/management/PreYggdrasilConverter$6 func_152743_a (Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)V func_152743_a +MD net/minecraft/server/management/PreYggdrasilConverter$6 onProfileLookupFailed (Lcom/mojang/authlib/GameProfile;Ljava/lang/Exception;)V onProfileLookupFailed +MD net/minecraft/server/management/PreYggdrasilConverter$6 onProfileLookupSucceeded (Lcom/mojang/authlib/GameProfile;)V onProfileLookupSucceeded +MD net/minecraft/server/management/ServerConfigurationManager loadWhiteList ()V func_72362_j +MD net/minecraft/server/management/ServerConfigurationManager sendToAllNear (DDDDILnet/minecraft/network/Packet;)V func_148541_a +MD net/minecraft/server/management/ServerConfigurationManager setViewDistance (I)V func_152611_a +MD net/minecraft/server/management/ServerConfigurationManager setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_152604_a +MD net/minecraft/server/management/ServerConfigurationManager addOp (Lcom/mojang/authlib/GameProfile;)V func_152605_a +MD net/minecraft/server/management/ServerConfigurationManager initializeConnectionToPlayer (Lnet/minecraft/network/NetworkManager;Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72355_a +MD net/minecraft/server/management/ServerConfigurationManager sendChatMsg (Lnet/minecraft/util/IChatComponent;)V func_148539_a +MD net/minecraft/server/management/ServerConfigurationManager sendChatMsgImpl (Lnet/minecraft/util/IChatComponent;Z)V func_148544_a +MD net/minecraft/server/management/ServerConfigurationManager sendPacketToAllPlayers (Lnet/minecraft/network/Packet;)V func_148540_a +MD net/minecraft/server/management/ServerConfigurationManager sendPacketToAllPlayersInDimension (Lnet/minecraft/network/Packet;I)V func_148537_a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerByUsername (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayerMP; func_152612_a +MD net/minecraft/server/management/ServerConfigurationManager allowUserToConnect (Ljava/net/SocketAddress;Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; func_148542_a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerByUUID (Ljava/util/UUID;)Lnet/minecraft/entity/player/EntityPlayerMP; func_177451_a +MD net/minecraft/server/management/ServerConfigurationManager sendScoreboard (Lnet/minecraft/scoreboard/ServerScoreboard;Lnet/minecraft/entity/player/EntityPlayerMP;)V func_96456_a +MD net/minecraft/server/management/ServerConfigurationManager readPlayerDataFromFile (Lnet/minecraft/entity/player/EntityPlayerMP;)Lnet/minecraft/nbt/NBTTagCompound; func_72380_a +MD net/minecraft/server/management/ServerConfigurationManager transferPlayerToDimension (Lnet/minecraft/entity/player/EntityPlayerMP;I)V func_72356_a +MD net/minecraft/server/management/ServerConfigurationManager recreatePlayerEntity (Lnet/minecraft/entity/player/EntityPlayerMP;IZ)Lnet/minecraft/entity/player/EntityPlayerMP; func_72368_a +MD net/minecraft/server/management/ServerConfigurationManager preparePlayer (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/WorldServer;)V func_72375_a +MD net/minecraft/server/management/ServerConfigurationManager setPlayerGameTypeBasedOnOther (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/World;)V func_72381_a +MD net/minecraft/server/management/ServerConfigurationManager transferEntityToWorld (Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;)V func_82448_a +MD net/minecraft/server/management/ServerConfigurationManager getPlayerStatsFile (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/stats/StatisticsFile; func_152602_a +MD net/minecraft/server/management/ServerConfigurationManager sendToAllNearExcept (Lnet/minecraft/entity/player/EntityPlayer;DDDDILnet/minecraft/network/Packet;)V func_148543_a +MD net/minecraft/server/management/ServerConfigurationManager sendMessageToAllTeamMembers (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/IChatComponent;)V func_177453_a +MD net/minecraft/server/management/ServerConfigurationManager setWhiteListEnabled (Z)V func_72371_a +MD net/minecraft/server/management/ServerConfigurationManager setPlayerManager ([Lnet/minecraft/world/WorldServer;)V func_72364_a +MD net/minecraft/server/management/ServerConfigurationManager removeOp (Lcom/mojang/authlib/GameProfile;)V func_152610_b +MD net/minecraft/server/management/ServerConfigurationManager getPlayersMatchingAddress (Ljava/lang/String;)Ljava/util/List; func_72382_j +MD net/minecraft/server/management/ServerConfigurationManager writePlayerData (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72391_b +MD net/minecraft/server/management/ServerConfigurationManager updateTimeAndWeatherForPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;Lnet/minecraft/world/WorldServer;)V func_72354_b +MD net/minecraft/server/management/ServerConfigurationManager sendMessageToTeamOrEvryPlayer (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/IChatComponent;)V func_177452_b +MD net/minecraft/server/management/ServerConfigurationManager func_181058_b (Z)Ljava/lang/String; func_181058_b +MD net/minecraft/server/management/ServerConfigurationManager getServerInstance ()Lnet/minecraft/server/MinecraftServer; func_72365_p +MD net/minecraft/server/management/ServerConfigurationManager removePlayerFromWhitelist (Lcom/mojang/authlib/GameProfile;)V func_152597_c +MD net/minecraft/server/management/ServerConfigurationManager playerLoggedIn (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72377_c +MD net/minecraft/server/management/ServerConfigurationManager setCommandsAllowedForAll (Z)V func_72387_b +MD net/minecraft/server/management/ServerConfigurationManager getEntityViewDistance ()I func_72372_a +MD net/minecraft/server/management/ServerConfigurationManager addWhitelistedPlayer (Lcom/mojang/authlib/GameProfile;)V func_152601_d +MD net/minecraft/server/management/ServerConfigurationManager serverUpdateMountedMovingPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72358_d +MD net/minecraft/server/management/ServerConfigurationManager onTick ()V func_72374_b +MD net/minecraft/server/management/ServerConfigurationManager canJoin (Lcom/mojang/authlib/GameProfile;)Z func_152607_e +MD net/minecraft/server/management/ServerConfigurationManager playerLoggedOut (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72367_e +MD net/minecraft/server/management/ServerConfigurationManager getAllUsernames ()[Ljava/lang/String; func_72369_d +MD net/minecraft/server/management/ServerConfigurationManager bypassesPlayerLimit (Lcom/mojang/authlib/GameProfile;)Z func_183023_f +MD net/minecraft/server/management/ServerConfigurationManager syncPlayerInventory (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_72385_f +MD net/minecraft/server/management/ServerConfigurationManager getAllProfiles ()[Lcom/mojang/authlib/GameProfile; func_152600_g +MD net/minecraft/server/management/ServerConfigurationManager createPlayerForUser (Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/entity/player/EntityPlayerMP; func_148545_a +MD net/minecraft/server/management/ServerConfigurationManager getBannedPlayers ()Lnet/minecraft/server/management/UserListBans; func_152608_h +MD net/minecraft/server/management/ServerConfigurationManager canSendCommands (Lcom/mojang/authlib/GameProfile;)Z func_152596_g +MD net/minecraft/server/management/ServerConfigurationManager getBannedIPs ()Lnet/minecraft/server/management/BanList; func_72363_f +MD net/minecraft/server/management/ServerConfigurationManager saveAllPlayerData ()V func_72389_g +MD net/minecraft/server/management/ServerConfigurationManager getWhitelistedPlayers ()Lnet/minecraft/server/management/UserListWhitelist; func_152599_k +MD net/minecraft/server/management/ServerConfigurationManager getWhitelistedPlayerNames ()[Ljava/lang/String; func_152598_l +MD net/minecraft/server/management/ServerConfigurationManager getOppedPlayers ()Lnet/minecraft/server/management/UserListOps; func_152603_m +MD net/minecraft/server/management/ServerConfigurationManager getOppedPlayerNames ()[Ljava/lang/String; func_152606_n +MD net/minecraft/server/management/ServerConfigurationManager getCurrentPlayerCount ()I func_72394_k +MD net/minecraft/server/management/ServerConfigurationManager getMaxPlayers ()I func_72352_l +MD net/minecraft/server/management/ServerConfigurationManager getAvailablePlayerDat ()[Ljava/lang/String; func_72373_m +MD net/minecraft/server/management/ServerConfigurationManager isWhiteListEnabled ()Z func_72383_n +MD net/minecraft/server/management/ServerConfigurationManager getViewDistance ()I func_72395_o +MD net/minecraft/server/management/ServerConfigurationManager getHostPlayerData ()Lnet/minecraft/nbt/NBTTagCompound; func_72378_q +MD net/minecraft/server/management/ServerConfigurationManager removeAllPlayers ()V func_72392_r +MD net/minecraft/server/management/ServerConfigurationManager getPlayerList ()Ljava/util/List; func_181057_v +MD net/minecraft/server/management/UserListOps getGameProfileFromName (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; func_152700_a +MD net/minecraft/server/management/UserListOps bypassesPlayerLimit (Lcom/mojang/authlib/GameProfile;)Z func_183026_b +MD net/minecraft/server/management/UserListOps getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; func_152681_a +MD net/minecraft/server/management/UserListOpsEntry getPermissionLevel ()I func_152644_a +MD net/minecraft/server/management/UserListOpsEntry bypassesPlayerLimit ()Z func_183024_b +MD net/minecraft/server/management/UserListOpsEntry constructProfile (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; func_152643_b +MD net/minecraft/server/management/UserListEntry onSerialization (Lcom/google/gson/JsonObject;)V func_152641_a +MD net/minecraft/server/management/UserListEntry hasBanExpired ()Z func_73682_e +MD net/minecraft/server/management/UserListEntry getValue ()Ljava/lang/Object; func_152640_f +MD net/minecraft/server/management/UserList getKeys ()[Ljava/lang/String; func_152685_a +MD net/minecraft/server/management/UserList createEntry (Lcom/google/gson/JsonObject;)Lnet/minecraft/server/management/UserListEntry; func_152682_a +MD net/minecraft/server/management/UserList getObjectKey (Ljava/lang/Object;)Ljava/lang/String; func_152681_a +MD net/minecraft/server/management/UserList addEntry (Lnet/minecraft/server/management/UserListEntry;)V func_152687_a +MD net/minecraft/server/management/UserList setLanServer (Z)V func_152686_a +MD net/minecraft/server/management/UserList isLanServer ()Z func_152689_b +MD net/minecraft/server/management/UserList getEntry (Ljava/lang/Object;)Lnet/minecraft/server/management/UserListEntry; func_152683_b +MD net/minecraft/server/management/UserList getSaveFile ()Ljava/io/File; func_152691_c +MD net/minecraft/server/management/UserList removeEntry (Ljava/lang/Object;)V func_152684_c +MD net/minecraft/server/management/UserList isEmpty ()Z func_152690_d +MD net/minecraft/server/management/UserList hasEntry (Ljava/lang/Object;)Z func_152692_d +MD net/minecraft/server/management/UserList getValues ()Ljava/util/Map; func_152688_e +MD net/minecraft/server/management/UserList writeChanges ()V func_152678_f +MD net/minecraft/server/management/UserList readSavedFile ()V func_152679_g +MD net/minecraft/server/management/UserList removeExpired ()V func_152680_h +MD net/minecraft/server/management/UserList$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/server/management/UserList$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/server/management/UserList$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/server/management/UserList$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/server/management/UserListEntry; deserialize +MD net/minecraft/server/management/UserList$Serializer serialize (Lnet/minecraft/server/management/UserListEntry;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/UserList$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/server/management/UserList$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/server/management/UserListBans isBanned (Lcom/mojang/authlib/GameProfile;)Z func_152702_a +MD net/minecraft/server/management/UserListBans isUsernameBanned (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; func_152703_a +MD net/minecraft/server/management/UserListBans getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; func_152681_a +MD net/minecraft/server/management/UserListBansEntry toGameProfile (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; func_152648_b +MD net/minecraft/server/management/UserListWhitelist isWhitelisted (Lcom/mojang/authlib/GameProfile;)Z func_152705_a +MD net/minecraft/server/management/UserListWhitelist getBannedProfile (Ljava/lang/String;)Lcom/mojang/authlib/GameProfile; func_152706_a +MD net/minecraft/server/management/UserListWhitelist getObjectKey (Lcom/mojang/authlib/GameProfile;)Ljava/lang/String; func_152681_a +MD net/minecraft/server/management/UserListWhitelistEntry gameProfileFromJsonObject (Lcom/google/gson/JsonObject;)Lcom/mojang/authlib/GameProfile; func_152646_b +MD net/minecraft/network/rcon/RConOutputStream toByteArray ()[B func_72672_a +MD net/minecraft/network/rcon/RConOutputStream writeInt (I)V func_72667_a +MD net/minecraft/network/rcon/RConOutputStream writeString (Ljava/lang/String;)V func_72671_a +MD net/minecraft/network/rcon/RConOutputStream writeShort (S)V func_72668_a +MD net/minecraft/network/rcon/RConOutputStream writeByteArray ([B)V func_72670_a +MD net/minecraft/network/rcon/RConOutputStream reset ()V func_72669_b +MD net/minecraft/network/rcon/RConUtils getByteAsHexString (B)Ljava/lang/String; func_72663_a +MD net/minecraft/network/rcon/RConUtils getBytesAsString ([BII)Ljava/lang/String; func_72661_a +MD net/minecraft/network/rcon/RConUtils getRemainingBytesAsLEInt ([BI)I func_72662_b +MD net/minecraft/network/rcon/RConUtils getBytesAsLEInt ([BII)I func_72665_b +MD net/minecraft/network/rcon/RConUtils getBytesAsBEint ([BII)I func_72664_c +MD net/minecraft/network/rcon/RConConsoleSource getInstance ()Lnet/minecraft/network/rcon/RConConsoleSource; func_175570_h +MD net/minecraft/network/rcon/RConConsoleSource resetLog ()V func_70007_b +MD net/minecraft/network/rcon/RConConsoleSource getLogContents ()Ljava/lang/String; func_70008_c +MD net/minecraft/network/rcon/RConThreadBase startThread ()V func_72602_a +MD net/minecraft/network/rcon/RConThreadBase logDebug (Ljava/lang/String;)V func_72607_a +MD net/minecraft/network/rcon/RConThreadBase registerSocket (Ljava/net/DatagramSocket;)V func_72601_a +MD net/minecraft/network/rcon/RConThreadBase closeSocket (Ljava/net/DatagramSocket;Z)Z func_72604_a +MD net/minecraft/network/rcon/RConThreadBase closeServerSocket_do (Ljava/net/ServerSocket;Z)Z func_72605_a +MD net/minecraft/network/rcon/RConThreadBase closeAllSockets_do (Z)V func_72612_a +MD net/minecraft/network/rcon/RConThreadBase logInfo (Ljava/lang/String;)V func_72609_b +MD net/minecraft/network/rcon/RConThreadBase closeServerSocket (Ljava/net/ServerSocket;)Z func_72608_b +MD net/minecraft/network/rcon/RConThreadBase isRunning ()Z func_72613_c +MD net/minecraft/network/rcon/RConThreadBase logWarning (Ljava/lang/String;)V func_72606_c +MD net/minecraft/network/rcon/RConThreadBase getNumberOfPlayers ()I func_72603_d +MD net/minecraft/network/rcon/RConThreadBase logSevere (Ljava/lang/String;)V func_72610_d +MD net/minecraft/network/rcon/RConThreadBase closeAllSockets ()V func_72611_e +MD net/minecraft/network/rcon/RConThreadQuery stopWithException (Ljava/lang/Exception;)V func_72623_a +MD net/minecraft/network/rcon/RConThreadQuery parseIncomingPacket (Ljava/net/DatagramPacket;)Z func_72621_a +MD net/minecraft/network/rcon/RConThreadQuery getRequestID (Ljava/net/SocketAddress;)[B func_72625_a +MD net/minecraft/network/rcon/RConThreadQuery sendResponsePacket ([BLjava/net/DatagramPacket;)V func_72620_a +MD net/minecraft/network/rcon/RConThreadQuery createQueryResponse (Ljava/net/DatagramPacket;)[B func_72624_b +MD net/minecraft/network/rcon/RConThreadQuery verifyClientAuth (Ljava/net/DatagramPacket;)Ljava/lang/Boolean; func_72627_c +MD net/minecraft/network/rcon/RConThreadQuery sendAuthChallenge (Ljava/net/DatagramPacket;)V func_72622_d +MD net/minecraft/network/rcon/RConThreadQuery cleanQueryClientsMap ()V func_72628_f +MD net/minecraft/network/rcon/RConThreadQuery initQuerySystem ()Z func_72626_g +MD net/minecraft/network/rcon/RConThreadQuery run ()V run +MD net/minecraft/network/rcon/RConThreadQuery$Auth getRandomChallenge ()I func_72592_a +MD net/minecraft/network/rcon/RConThreadQuery$Auth hasExpired (J)Ljava/lang/Boolean; func_72593_a +MD net/minecraft/network/rcon/RConThreadQuery$Auth getChallengeValue ()[B func_72594_b +MD net/minecraft/network/rcon/RConThreadQuery$Auth getRequestId ()[B func_72591_c +MD net/minecraft/network/rcon/RConThreadClient sendResponse (IILjava/lang/String;)V func_72654_a +MD net/minecraft/network/rcon/RConThreadClient sendMultipacketResponse (ILjava/lang/String;)V func_72655_a +MD net/minecraft/network/rcon/RConThreadClient sendLoginFailedResponse ()V func_72656_f +MD net/minecraft/network/rcon/RConThreadClient closeSocket ()V func_72653_g +MD net/minecraft/network/rcon/RConThreadClient run ()V run +MD net/minecraft/network/rcon/RConThreadMain initClientThreadList ()V func_72646_f +MD net/minecraft/network/rcon/RConThreadMain cleanClientThreadsMap ()V func_72645_g +MD net/minecraft/network/rcon/RConThreadMain run ()V run +MD net/minecraft/stats/Achievement initIndependentStat ()Lnet/minecraft/stats/Achievement; func_75966_h +MD net/minecraft/stats/Achievement func_150953_b (Ljava/lang/Class;)Lnet/minecraft/stats/Achievement; func_150953_b +MD net/minecraft/stats/Achievement setStatStringFormatter (Lnet/minecraft/stats/IStatStringFormat;)Lnet/minecraft/stats/Achievement; func_75988_a +MD net/minecraft/stats/Achievement setSpecial ()Lnet/minecraft/stats/Achievement; func_75987_b +MD net/minecraft/stats/Achievement registerStat ()Lnet/minecraft/stats/Achievement; func_75971_g +MD net/minecraft/stats/Achievement getDescription ()Ljava/lang/String; func_75989_e +MD net/minecraft/stats/Achievement getSpecial ()Z func_75984_f +MD net/minecraft/stats/AchievementList init ()V func_75997_a +MD net/minecraft/stats/IStatStringFormat formatString (Ljava/lang/String;)Ljava/lang/String; func_74535_a +MD net/minecraft/stats/StatCrafting func_150959_a ()Lnet/minecraft/item/Item; func_150959_a +MD net/minecraft/stats/StatisticsFile readStatFile ()V func_150882_a +MD net/minecraft/stats/StatisticsFile parseJson (Ljava/lang/String;)Ljava/util/Map; func_150881_a +MD net/minecraft/stats/StatisticsFile dumpJson (Ljava/util/Map;)Ljava/lang/String; func_150880_a +MD net/minecraft/stats/StatisticsFile func_150876_a (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_150876_a +MD net/minecraft/stats/StatisticsFile saveStatFile ()V func_150883_b +MD net/minecraft/stats/StatisticsFile sendAchievements (Lnet/minecraft/entity/player/EntityPlayerMP;)V func_150884_b +MD net/minecraft/stats/StatisticsFile func_150878_c ()Ljava/util/Set; func_150878_c +MD net/minecraft/stats/StatisticsFile func_150877_d ()V func_150877_d +MD net/minecraft/stats/StatisticsFile func_150879_e ()Z func_150879_e +MD net/minecraft/stats/StatBase format (I)Ljava/lang/String; func_75968_a +MD net/minecraft/stats/StatBase func_150953_b (Ljava/lang/Class;)Lnet/minecraft/stats/StatBase; func_150953_b +MD net/minecraft/stats/StatBase isAchievement ()Z func_75967_d +MD net/minecraft/stats/StatBase getStatName ()Lnet/minecraft/util/IChatComponent; func_150951_e +MD net/minecraft/stats/StatBase registerStat ()Lnet/minecraft/stats/StatBase; func_75971_g +MD net/minecraft/stats/StatBase initIndependentStat ()Lnet/minecraft/stats/StatBase; func_75966_h +MD net/minecraft/stats/StatBase createChatComponent ()Lnet/minecraft/util/IChatComponent; func_150955_j +MD net/minecraft/stats/StatBase getCriteria ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria; func_150952_k +MD net/minecraft/stats/StatBase func_150954_l ()Ljava/lang/Class; func_150954_l +MD net/minecraft/stats/StatBase access$000 ()Ljava/text/NumberFormat; access$000 +MD net/minecraft/stats/StatBase access$100 ()Ljava/text/DecimalFormat; access$100 +MD net/minecraft/stats/StatBase equals (Ljava/lang/Object;)Z equals +MD net/minecraft/stats/StatBase hashCode ()I hashCode +MD net/minecraft/stats/StatBase toString ()Ljava/lang/String; toString +MD net/minecraft/stats/IStatType format (I)Ljava/lang/String; func_75843_a +MD net/minecraft/util/TupleIntJsonSerializable getIntegerValue ()I func_151189_a +MD net/minecraft/util/TupleIntJsonSerializable setIntegerValue (I)V func_151188_a +MD net/minecraft/util/TupleIntJsonSerializable setJsonSerializableValue (Lnet/minecraft/util/IJsonSerializable;)V func_151190_a +MD net/minecraft/util/TupleIntJsonSerializable getJsonSerializableValue ()Lnet/minecraft/util/IJsonSerializable; func_151187_b +MD net/minecraft/util/IJsonSerializable getSerializableElement ()Lcom/google/gson/JsonElement; func_151003_a +MD net/minecraft/util/IJsonSerializable fromJson (Lcom/google/gson/JsonElement;)V func_152753_a +MD net/minecraft/stats/StatList init ()V func_151178_a +MD net/minecraft/stats/StatList getOneShotStat (Ljava/lang/String;)Lnet/minecraft/stats/StatBase; func_151177_a +MD net/minecraft/stats/StatList getStatKillEntity (Lnet/minecraft/entity/EntityList$EntityEggInfo;)Lnet/minecraft/stats/StatBase; func_151182_a +MD net/minecraft/stats/StatList func_180204_a (Lnet/minecraft/item/Item;)Ljava/lang/String; func_180204_a +MD net/minecraft/stats/StatList replaceAllSimilarBlocks ([Lnet/minecraft/stats/StatBase;)V func_75924_a +MD net/minecraft/stats/StatList mergeStatBases ([Lnet/minecraft/stats/StatBase;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)V func_151180_a +MD net/minecraft/stats/StatList initCraftableStats ()V func_75918_d +MD net/minecraft/stats/StatList getStatEntityKilledBy (Lnet/minecraft/entity/EntityList$EntityEggInfo;)Lnet/minecraft/stats/StatBase; func_151176_b +MD net/minecraft/stats/StatList initMiningStats ()V func_151181_c +MD net/minecraft/stats/StatList initStats ()V func_75925_c +MD net/minecraft/stats/StatList initItemDepleteStats ()V func_151179_e +MD net/minecraft/stats/StatFileWriter hasAchievementUnlocked (Lnet/minecraft/stats/Achievement;)Z func_77443_a +MD net/minecraft/stats/StatFileWriter readStat (Lnet/minecraft/stats/StatBase;)I func_77444_a +MD net/minecraft/stats/StatFileWriter func_150872_a (Lnet/minecraft/stats/StatBase;Lnet/minecraft/util/IJsonSerializable;)Lnet/minecraft/util/IJsonSerializable; func_150872_a +MD net/minecraft/stats/StatFileWriter unlockAchievement (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/stats/StatBase;I)V func_150873_a +MD net/minecraft/stats/StatFileWriter canUnlockAchievement (Lnet/minecraft/stats/Achievement;)Z func_77442_b +MD net/minecraft/stats/StatFileWriter func_150870_b (Lnet/minecraft/stats/StatBase;)Lnet/minecraft/util/IJsonSerializable; func_150870_b +MD net/minecraft/stats/StatFileWriter increaseStat (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/stats/StatBase;I)V func_150871_b +MD net/minecraft/stats/StatFileWriter func_150874_c (Lnet/minecraft/stats/Achievement;)I func_150874_c +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/lang/Object; delegate +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/util/Collection; delegate +MD net/minecraft/util/JsonSerializableSet delegate ()Ljava/util/Set; delegate +MD net/minecraft/util/ClassInheritanceMultiMap createLookup (Ljava/lang/Class;)V func_180213_a +MD net/minecraft/util/ClassInheritanceMultiMap addForClass (Ljava/lang/Object;Ljava/lang/Class;)V func_181743_a +MD net/minecraft/util/ClassInheritanceMultiMap access$000 (Lnet/minecraft/util/ClassInheritanceMultiMap;)Ljava/util/Map; access$000 +MD net/minecraft/util/ClassInheritanceMultiMap initializeClassLookup (Ljava/lang/Class;)Ljava/lang/Class; func_181157_b +MD net/minecraft/util/ClassInheritanceMultiMap getByClass (Ljava/lang/Class;)Ljava/lang/Iterable; func_180215_b +MD net/minecraft/util/ClassInheritanceMultiMap add (Ljava/lang/Object;)Z add +MD net/minecraft/util/ClassInheritanceMultiMap contains (Ljava/lang/Object;)Z contains +MD net/minecraft/util/ClassInheritanceMultiMap iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/ClassInheritanceMultiMap remove (Ljava/lang/Object;)Z remove +MD net/minecraft/util/ClassInheritanceMultiMap size ()I size +MD net/minecraft/util/ClassInheritanceMultiMap$1 iterator ()Ljava/util/Iterator; iterator +MD net/minecraft/util/CryptManager createNewSharedKey ()Ljavax/crypto/SecretKey; func_75890_a +MD net/minecraft/util/CryptManager createTheCipherInstance (ILjava/lang/String;Ljava/security/Key;)Ljavax/crypto/Cipher; func_75886_a +MD net/minecraft/util/CryptManager createNetCipherInstance (ILjava/security/Key;)Ljavax/crypto/Cipher; func_151229_a +MD net/minecraft/util/CryptManager cipherOperation (ILjava/security/Key;[B)[B func_75885_a +MD net/minecraft/util/CryptManager getServerIdHash (Ljava/lang/String;Ljava/security/PublicKey;Ljavax/crypto/SecretKey;)[B func_75895_a +MD net/minecraft/util/CryptManager digestOperation (Ljava/lang/String;[[B)[B func_75893_a +MD net/minecraft/util/CryptManager encryptData (Ljava/security/Key;[B)[B func_75894_a +MD net/minecraft/util/CryptManager decryptSharedKey (Ljava/security/PrivateKey;[B)Ljavax/crypto/SecretKey; func_75887_a +MD net/minecraft/util/CryptManager decodePublicKey ([B)Ljava/security/PublicKey; func_75896_a +MD net/minecraft/util/CryptManager generateKeyPair ()Ljava/security/KeyPair; func_75891_b +MD net/minecraft/util/CryptManager decryptData (Ljava/security/Key;[B)[B func_75889_b +MD net/minecraft/util/FrameTimer getLastIndex ()I func_181749_a +MD net/minecraft/util/FrameTimer addFrame (J)V func_181747_a +MD net/minecraft/util/FrameTimer getLagometerValue (JI)I func_181748_a +MD net/minecraft/util/FrameTimer getIndex ()I func_181750_b +MD net/minecraft/util/FrameTimer parseIndex (I)I func_181751_b +MD net/minecraft/util/FrameTimer getFrames ()[J func_181746_c +MD net/minecraft/util/JsonUtils isString (Lcom/google/gson/JsonElement;)Z func_151211_a +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonElement;Ljava/lang/String;)Ljava/lang/String; func_151206_a +MD net/minecraft/util/JsonUtils isString (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_151205_a +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonObject;Ljava/lang/String;F)F func_151221_a +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonObject;Ljava/lang/String;I)I func_151208_a +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; func_151213_a +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonObject;Ljava/lang/String;Lcom/google/gson/JsonObject;)Lcom/google/gson/JsonObject; func_151218_a +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; func_151219_a +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z func_151209_a +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonElement;Ljava/lang/String;)Z func_151216_b +MD net/minecraft/util/JsonUtils isBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_180199_c +MD net/minecraft/util/JsonUtils toString (Lcom/google/gson/JsonElement;)Ljava/lang/String; func_151222_d +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonElement;Ljava/lang/String;)F func_151220_d +MD net/minecraft/util/JsonUtils isJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_151202_d +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonElement;Ljava/lang/String;)I func_151215_f +MD net/minecraft/util/JsonUtils isJsonPrimitive (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_151201_f +MD net/minecraft/util/JsonUtils hasField (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_151204_g +MD net/minecraft/util/JsonUtils getString (Lcom/google/gson/JsonObject;Ljava/lang/String;)Ljava/lang/String; func_151200_h +MD net/minecraft/util/JsonUtils getBoolean (Lcom/google/gson/JsonObject;Ljava/lang/String;)Z func_151212_i +MD net/minecraft/util/JsonUtils getFloat (Lcom/google/gson/JsonObject;Ljava/lang/String;)F func_151217_k +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonObject; func_151210_l +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonElement;Ljava/lang/String;)Lcom/google/gson/JsonArray; func_151207_m +MD net/minecraft/util/JsonUtils getInt (Lcom/google/gson/JsonObject;Ljava/lang/String;)I func_151203_m +MD net/minecraft/util/JsonUtils getJsonObject (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; func_152754_s +MD net/minecraft/util/JsonUtils getJsonArray (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonArray; func_151214_t +MD net/minecraft/util/HttpUtil getSuitableLanPort ()I func_76181_a +MD net/minecraft/util/HttpUtil downloadResourcePack (Ljava/io/File;Ljava/lang/String;Ljava/util/Map;ILnet/minecraft/util/IProgressUpdate;Ljava/net/Proxy;)Lcom/google/common/util/concurrent/ListenableFuture; func_180192_a +MD net/minecraft/util/HttpUtil get (Ljava/net/URL;)Ljava/lang/String; func_152755_a +MD net/minecraft/util/HttpUtil post (Ljava/net/URL;Ljava/lang/String;Z)Ljava/lang/String; func_151225_a +MD net/minecraft/util/HttpUtil postMap (Ljava/net/URL;Ljava/util/Map;Z)Ljava/lang/String; func_151226_a +MD net/minecraft/util/HttpUtil buildPostString (Ljava/util/Map;)Ljava/lang/String; func_76179_a +MD net/minecraft/util/HttpUtil access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/util/HttpUtil$1 run ()V run +MD net/minecraft/server/management/LowerStringMap put (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; put +MD net/minecraft/server/management/LowerStringMap clear ()V clear +MD net/minecraft/server/management/LowerStringMap containsKey (Ljava/lang/Object;)Z containsKey +MD net/minecraft/server/management/LowerStringMap containsValue (Ljava/lang/Object;)Z containsValue +MD net/minecraft/server/management/LowerStringMap entrySet ()Ljava/util/Set; entrySet +MD net/minecraft/server/management/LowerStringMap get (Ljava/lang/Object;)Ljava/lang/Object; get +MD net/minecraft/server/management/LowerStringMap isEmpty ()Z isEmpty +MD net/minecraft/server/management/LowerStringMap keySet ()Ljava/util/Set; keySet +MD net/minecraft/server/management/LowerStringMap put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; put +MD net/minecraft/server/management/LowerStringMap putAll (Ljava/util/Map;)V putAll +MD net/minecraft/server/management/LowerStringMap remove (Ljava/lang/Object;)Ljava/lang/Object; remove +MD net/minecraft/server/management/LowerStringMap size ()I size +MD net/minecraft/server/management/LowerStringMap values ()Ljava/util/Collection; values +MD net/minecraft/util/IntegerCache getInteger (I)Ljava/lang/Integer; func_181756_a +MD net/minecraft/util/IntHashMap lookup (I)Ljava/lang/Object; func_76041_a +MD net/minecraft/util/IntHashMap getSlotIndex (II)I func_76043_a +MD net/minecraft/util/IntHashMap insert (IILjava/lang/Object;I)V func_76040_a +MD net/minecraft/util/IntHashMap addKey (ILjava/lang/Object;)V func_76038_a +MD net/minecraft/util/IntHashMap copyTo ([Lnet/minecraft/util/IntHashMap$Entry;)V func_76048_a +MD net/minecraft/util/IntHashMap containsItem (I)Z func_76037_b +MD net/minecraft/util/IntHashMap clearMap ()V func_76046_c +MD net/minecraft/util/IntHashMap lookupEntry (I)Lnet/minecraft/util/IntHashMap$Entry; func_76045_c +MD net/minecraft/util/IntHashMap removeObject (I)Ljava/lang/Object; func_76049_d +MD net/minecraft/util/IntHashMap removeEntry (I)Lnet/minecraft/util/IntHashMap$Entry; func_76036_e +MD net/minecraft/util/IntHashMap access$000 (I)I access$000 +MD net/minecraft/util/IntHashMap computeHash (I)I func_76044_g +MD net/minecraft/util/IntHashMap grow (I)V func_76047_h +MD net/minecraft/util/IntHashMap$Entry getHash ()I func_76031_a +MD net/minecraft/util/IntHashMap$Entry getValue ()Ljava/lang/Object; func_76030_b +MD net/minecraft/util/IntHashMap$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/IntHashMap$Entry hashCode ()I hashCode +MD net/minecraft/util/IntHashMap$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/util/LazyLoadBase load ()Ljava/lang/Object; func_179280_b +MD net/minecraft/util/LazyLoadBase getValue ()Ljava/lang/Object; func_179281_c +MD net/minecraft/util/ThreadSafeBoundList func_152757_a (Ljava/lang/Object;)Ljava/lang/Object; func_152757_a +MD net/minecraft/util/ThreadSafeBoundList func_152758_b ()I func_152758_b +MD net/minecraft/util/ThreadSafeBoundList func_152756_c ()[Ljava/lang/Object; func_152756_c +MD net/minecraft/util/LongHashMap getNumHashElements ()I func_76162_a +MD net/minecraft/util/LongHashMap hash (I)I func_76157_a +MD net/minecraft/util/LongHashMap getHashIndex (II)I func_76158_a +MD net/minecraft/util/LongHashMap createKey (IJLjava/lang/Object;I)V func_76156_a +MD net/minecraft/util/LongHashMap getValueByKey (J)Ljava/lang/Object; func_76164_a +MD net/minecraft/util/LongHashMap add (JLjava/lang/Object;)V func_76163_a +MD net/minecraft/util/LongHashMap copyHashTableTo ([Lnet/minecraft/util/LongHashMap$Entry;)V func_76154_a +MD net/minecraft/util/LongHashMap resizeTable (I)V func_76153_b +MD net/minecraft/util/LongHashMap containsItem (J)Z func_76161_b +MD net/minecraft/util/LongHashMap getEntry (J)Lnet/minecraft/util/LongHashMap$Entry; func_76160_c +MD net/minecraft/util/LongHashMap remove (J)Ljava/lang/Object; func_76159_d +MD net/minecraft/util/LongHashMap removeKey (J)Lnet/minecraft/util/LongHashMap$Entry; func_76152_e +MD net/minecraft/util/LongHashMap access$000 (J)I access$000 +MD net/minecraft/util/LongHashMap getHashedKey (J)I func_76155_g +MD net/minecraft/util/LongHashMap$Entry getKey ()J func_76146_a +MD net/minecraft/util/LongHashMap$Entry getValue ()Ljava/lang/Object; func_76145_b +MD net/minecraft/util/LongHashMap$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/LongHashMap$Entry hashCode ()I hashCode +MD net/minecraft/util/LongHashMap$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumTypeAdapterFactory func_151232_a (Ljava/lang/Object;)Ljava/lang/String; func_151232_a +MD net/minecraft/util/EnumTypeAdapterFactory access$000 (Lnet/minecraft/util/EnumTypeAdapterFactory;Ljava/lang/Object;)Ljava/lang/String; access$000 +MD net/minecraft/util/EnumTypeAdapterFactory create (Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter; create +MD net/minecraft/util/EnumTypeAdapterFactory$1 read (Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object; read +MD net/minecraft/util/EnumTypeAdapterFactory$1 write (Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V write +MD net/minecraft/util/MathHelper sqrt_double (D)F func_76133_a +MD net/minecraft/util/MathHelper abs_max (DD)D func_76132_a +MD net/minecraft/util/MathHelper clamp_double (DDD)D func_151237_a +MD net/minecraft/util/MathHelper sin (F)F func_76126_a +MD net/minecraft/util/MathHelper epsilonEquals (FF)Z func_180185_a +MD net/minecraft/util/MathHelper clamp_float (FFF)F func_76131_a +MD net/minecraft/util/MathHelper abs_int (I)I func_76130_a +MD net/minecraft/util/MathHelper bucketInt (II)I func_76137_a +MD net/minecraft/util/MathHelper clamp_int (III)I func_76125_a +MD net/minecraft/util/MathHelper getPositionRandom (Lnet/minecraft/util/Vec3i;)J func_180186_a +MD net/minecraft/util/MathHelper parseDoubleWithDefault (Ljava/lang/String;D)D func_82712_a +MD net/minecraft/util/MathHelper parseDoubleWithDefaultAndMax (Ljava/lang/String;DD)D func_82713_a +MD net/minecraft/util/MathHelper parseIntWithDefault (Ljava/lang/String;I)I func_82715_a +MD net/minecraft/util/MathHelper parseIntWithDefaultAndMax (Ljava/lang/String;II)I func_82714_a +MD net/minecraft/util/MathHelper getRandomUuid (Ljava/util/Random;)Ljava/util/UUID; func_180182_a +MD net/minecraft/util/MathHelper getRandomDoubleInRange (Ljava/util/Random;DD)D func_82716_a +MD net/minecraft/util/MathHelper randomFloatClamp (Ljava/util/Random;FF)F func_151240_a +MD net/minecraft/util/MathHelper getRandomIntegerInRange (Ljava/util/Random;II)I func_76136_a +MD net/minecraft/util/MathHelper average ([J)D func_76127_a +MD net/minecraft/util/MathHelper truncateDoubleToInt (D)I func_76140_b +MD net/minecraft/util/MathHelper atan2 (DD)D func_181159_b +MD net/minecraft/util/MathHelper denormalizeClamp (DDD)D func_151238_b +MD net/minecraft/util/MathHelper cos (F)F func_76134_b +MD net/minecraft/util/MathHelper func_180183_b (FFF)I func_180183_b +MD net/minecraft/util/MathHelper roundUpToPowerOfTwo (I)I func_151236_b +MD net/minecraft/util/MathHelper normalizeAngle (II)I func_180184_b +MD net/minecraft/util/MathHelper func_180181_b (III)I func_180181_b +MD net/minecraft/util/MathHelper floor_double (D)I func_76128_c +MD net/minecraft/util/MathHelper func_181160_c (DDD)D func_181160_c +MD net/minecraft/util/MathHelper sqrt_float (F)F func_76129_c +MD net/minecraft/util/MathHelper hsvToRGB (FFF)I func_181758_c +MD net/minecraft/util/MathHelper calculateLogBaseTwo (I)I func_151239_c +MD net/minecraft/util/MathHelper roundUp (II)I func_154354_b +MD net/minecraft/util/MathHelper getCoordinateRandom (III)J func_180187_c +MD net/minecraft/util/MathHelper floor_double_long (D)J func_76124_d +MD net/minecraft/util/MathHelper floor_float (F)I func_76141_d +MD net/minecraft/util/MathHelper isPowerOfTwo (I)Z func_151235_d +MD net/minecraft/util/MathHelper func_180188_d (II)I func_180188_d +MD net/minecraft/util/MathHelper func_154353_e (D)I func_154353_e +MD net/minecraft/util/MathHelper abs (F)F func_76135_e +MD net/minecraft/util/MathHelper calculateLogBaseTwoDeBruijn (I)I func_151241_e +MD net/minecraft/util/MathHelper ceiling_double_int (D)I func_76143_f +MD net/minecraft/util/MathHelper ceiling_float_int (F)I func_76123_f +MD net/minecraft/util/MathHelper wrapAngleTo180_double (D)D func_76138_g +MD net/minecraft/util/MathHelper wrapAngleTo180_float (F)F func_76142_g +MD net/minecraft/util/MathHelper func_181162_h (D)D func_181162_h +MD net/minecraft/util/MathHelper func_181161_i (D)D func_181161_i +MD net/minecraft/profiler/Profiler clearProfiling ()V func_76317_a +MD net/minecraft/profiler/Profiler startSection (Ljava/lang/String;)V func_76320_a +MD net/minecraft/profiler/Profiler endSection ()V func_76319_b +MD net/minecraft/profiler/Profiler getProfilingData (Ljava/lang/String;)Ljava/util/List; func_76321_b +MD net/minecraft/profiler/Profiler getNameOfLastSection ()Ljava/lang/String; func_76322_c +MD net/minecraft/profiler/Profiler endStartSection (Ljava/lang/String;)V func_76318_c +MD net/minecraft/profiler/Profiler$Result getColor ()I func_76329_a +MD net/minecraft/profiler/Profiler$Result compareTo (Lnet/minecraft/profiler/Profiler$Result;)I compareTo +MD net/minecraft/profiler/Profiler$Result compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/util/IProgressUpdate setDoneWorking ()V func_146586_a +MD net/minecraft/util/IProgressUpdate setLoadingProgress (I)V func_73718_a +MD net/minecraft/util/IProgressUpdate displaySavingString (Ljava/lang/String;)V func_73720_a +MD net/minecraft/util/IProgressUpdate resetProgressAndMessage (Ljava/lang/String;)V func_73721_b +MD net/minecraft/util/IProgressUpdate displayLoadingString (Ljava/lang/String;)V func_73719_c +MD net/minecraft/util/MouseFilter reset ()V func_180179_a +MD net/minecraft/util/MouseFilter smooth (FF)F func_76333_a +MD net/minecraft/util/IStringSerializable getName ()Ljava/lang/String; func_176610_l +MD net/minecraft/util/StringUtils ticksToElapsedTime (I)Ljava/lang/String; func_76337_a +MD net/minecraft/util/StringUtils stripControlCodes (Ljava/lang/String;)Ljava/lang/String; func_76338_a +MD net/minecraft/util/StringUtils isNullOrEmpty (Ljava/lang/String;)Z func_151246_b +MD net/minecraft/util/Tuple getFirst ()Ljava/lang/Object; func_76341_a +MD net/minecraft/util/Tuple getSecond ()Ljava/lang/Object; func_76340_b +MD net/minecraft/util/WeightedRandom getTotalWeight (Ljava/util/Collection;)I func_76272_a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Collection;I)Lnet/minecraft/util/WeightedRandom$Item; func_180166_a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Random;Ljava/util/Collection;)Lnet/minecraft/util/WeightedRandom$Item; func_76271_a +MD net/minecraft/util/WeightedRandom getRandomItem (Ljava/util/Random;Ljava/util/Collection;I)Lnet/minecraft/util/WeightedRandom$Item; func_76273_a +MD net/minecraft/util/WeightedRandomChestContent func_177629_a (Ljava/util/List;[Lnet/minecraft/util/WeightedRandomChestContent;)Ljava/util/List; func_177629_a +MD net/minecraft/util/WeightedRandomChestContent generateDispenserContents (Ljava/util/Random;Ljava/util/List;Lnet/minecraft/tileentity/TileEntityDispenser;I)V func_177631_a +MD net/minecraft/util/WeightedRandomChestContent generateChestContents (Ljava/util/Random;Ljava/util/List;Lnet/minecraft/inventory/IInventory;I)V func_177630_a +MD net/minecraft/util/IThreadListener addScheduledTask (Ljava/lang/Runnable;)Lcom/google/common/util/concurrent/ListenableFuture; func_152344_a +MD net/minecraft/util/IThreadListener isCallingFromMinecraftThread ()Z func_152345_ab +MD net/minecraft/inventory/InventoryLargeChest isPartOfLargeChest (Lnet/minecraft/inventory/IInventory;)Z func_90010_a +MD net/minecraft/inventory/IInventory getStackInSlot (I)Lnet/minecraft/item/ItemStack; func_70301_a +MD net/minecraft/inventory/IInventory decrStackSize (II)Lnet/minecraft/item/ItemStack; func_70298_a +MD net/minecraft/inventory/IInventory setInventorySlotContents (ILnet/minecraft/item/ItemStack;)V func_70299_a +MD net/minecraft/inventory/IInventory isUseableByPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z func_70300_a +MD net/minecraft/inventory/IInventory getField (I)I func_174887_a_ +MD net/minecraft/inventory/IInventory removeStackFromSlot (I)Lnet/minecraft/item/ItemStack; func_70304_b +MD net/minecraft/inventory/IInventory setField (II)V func_174885_b +MD net/minecraft/inventory/IInventory isItemValidForSlot (ILnet/minecraft/item/ItemStack;)Z func_94041_b +MD net/minecraft/inventory/IInventory openInventory (Lnet/minecraft/entity/player/EntityPlayer;)V func_174889_b +MD net/minecraft/inventory/IInventory closeInventory (Lnet/minecraft/entity/player/EntityPlayer;)V func_174886_c +MD net/minecraft/inventory/IInventory getFieldCount ()I func_174890_g +MD net/minecraft/inventory/IInventory clear ()V func_174888_l +MD net/minecraft/inventory/IInventory getSizeInventory ()I func_70302_i_ +MD net/minecraft/inventory/IInventory markDirty ()V func_70296_d +MD net/minecraft/inventory/IInventory getInventoryStackLimit ()I func_70297_j_ +MD net/minecraft/inventory/IInvBasic onInventoryChanged (Lnet/minecraft/inventory/InventoryBasic;)V func_76316_a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;DDDLnet/minecraft/inventory/IInventory;)V func_180174_a +MD net/minecraft/inventory/InventoryHelper spawnItemStack (Lnet/minecraft/world/World;DDDLnet/minecraft/item/ItemStack;)V func_180173_a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/inventory/IInventory;)V func_180175_a +MD net/minecraft/inventory/InventoryHelper dropInventoryItems (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;Lnet/minecraft/inventory/IInventory;)V func_180176_a +MD net/minecraft/world/EnumDifficulty getDifficultyId ()I func_151525_a +MD net/minecraft/world/EnumDifficulty getDifficultyEnum (I)Lnet/minecraft/world/EnumDifficulty; func_151523_a +MD net/minecraft/world/EnumDifficulty getDifficultyResourceKey ()Ljava/lang/String; func_151526_b +MD net/minecraft/world/EnumDifficulty valueOf (Ljava/lang/String;)Lnet/minecraft/world/EnumDifficulty; valueOf +MD net/minecraft/world/EnumDifficulty values ()[Lnet/minecraft/world/EnumDifficulty; values +MD net/minecraft/world/DifficultyInstance calculateAdditionalDifficulty (Lnet/minecraft/world/EnumDifficulty;JJF)F func_180169_a +MD net/minecraft/world/DifficultyInstance getAdditionalDifficulty ()F func_180168_b +MD net/minecraft/world/DifficultyInstance getClampedAdditionalDifficulty ()F func_180170_c +MD net/minecraft/world/IInteractionObject createContainer (Lnet/minecraft/entity/player/InventoryPlayer;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/inventory/Container; func_174876_a +MD net/minecraft/world/IInteractionObject getGuiID ()Ljava/lang/String; func_174875_k +MD net/minecraft/world/LockCode isEmpty ()Z func_180160_a +MD net/minecraft/world/LockCode toNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_180157_a +MD net/minecraft/world/LockCode getLock ()Ljava/lang/String; func_180159_b +MD net/minecraft/world/LockCode fromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/LockCode; func_180158_b +MD net/minecraft/world/ILockableContainer setLockCode (Lnet/minecraft/world/LockCode;)V func_174892_a +MD net/minecraft/world/ILockableContainer getLockCode ()Lnet/minecraft/world/LockCode; func_174891_i +MD net/minecraft/world/ILockableContainer isLocked ()Z func_174893_q_ +MD net/minecraft/world/IWorldNameable getName ()Ljava/lang/String; func_70005_c_ +MD net/minecraft/world/IWorldNameable getDisplayName ()Lnet/minecraft/util/IChatComponent; func_145748_c_ +MD net/minecraft/world/IWorldNameable hasCustomName ()Z func_145818_k_ +MD net/minecraft/inventory/InventoryBasic setCustomName (Ljava/lang/String;)V func_110133_a +MD net/minecraft/inventory/InventoryBasic addInventoryChangeListener (Lnet/minecraft/inventory/IInvBasic;)V func_110134_a +MD net/minecraft/inventory/InventoryBasic func_174894_a (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; func_174894_a +MD net/minecraft/inventory/InventoryBasic removeInventoryChangeListener (Lnet/minecraft/inventory/IInvBasic;)V func_110132_b +MD net/minecraft/profiler/PlayerUsageSnooper startSnooper ()V func_76463_a +MD net/minecraft/profiler/PlayerUsageSnooper addClientStat (Ljava/lang/String;Ljava/lang/Object;)V func_152768_a +MD net/minecraft/profiler/PlayerUsageSnooper access$000 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Lnet/minecraft/profiler/IPlayerUsage; access$000 +MD net/minecraft/profiler/PlayerUsageSnooper addMemoryStatsToSnooper ()V func_76471_b +MD net/minecraft/profiler/PlayerUsageSnooper addStatToSnooper (Ljava/lang/String;Ljava/lang/Object;)V func_152767_b +MD net/minecraft/profiler/PlayerUsageSnooper access$100 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/lang/Object; access$100 +MD net/minecraft/profiler/PlayerUsageSnooper getCurrentStats ()Ljava/util/Map; func_76465_c +MD net/minecraft/profiler/PlayerUsageSnooper access$200 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/util/Map; access$200 +MD net/minecraft/profiler/PlayerUsageSnooper isSnooperRunning ()Z func_76468_d +MD net/minecraft/profiler/PlayerUsageSnooper access$300 (Lnet/minecraft/profiler/PlayerUsageSnooper;)I access$300 +MD net/minecraft/profiler/PlayerUsageSnooper stopSnooper ()V func_76470_e +MD net/minecraft/profiler/PlayerUsageSnooper access$400 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/util/Map; access$400 +MD net/minecraft/profiler/PlayerUsageSnooper getUniqueID ()Ljava/lang/String; func_80006_f +MD net/minecraft/profiler/PlayerUsageSnooper access$308 (Lnet/minecraft/profiler/PlayerUsageSnooper;)I access$308 +MD net/minecraft/profiler/PlayerUsageSnooper getMinecraftStartTimeMillis ()J func_130105_g +MD net/minecraft/profiler/PlayerUsageSnooper access$500 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/lang/String; access$500 +MD net/minecraft/profiler/PlayerUsageSnooper addOSData ()V func_152766_h +MD net/minecraft/profiler/PlayerUsageSnooper access$600 (Lnet/minecraft/profiler/PlayerUsageSnooper;)Ljava/net/URL; access$600 +MD net/minecraft/profiler/PlayerUsageSnooper addJvmArgsToSnooper ()V func_76467_g +MD net/minecraft/profiler/PlayerUsageSnooper$1 run ()V run +MD net/minecraft/profiler/IPlayerUsage addServerStatsToSnooper (Lnet/minecraft/profiler/PlayerUsageSnooper;)V func_70000_a +MD net/minecraft/profiler/IPlayerUsage isSnooperEnabled ()Z func_70002_Q +MD net/minecraft/profiler/IPlayerUsage addServerTypeToSnooper (Lnet/minecraft/profiler/PlayerUsageSnooper;)V func_70001_b +MD net/minecraft/inventory/ISidedInventory canInsertItem (ILnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Z func_180462_a +MD net/minecraft/inventory/ISidedInventory getSlotsForFace (Lnet/minecraft/util/EnumFacing;)[I func_180463_a +MD net/minecraft/inventory/ISidedInventory canExtractItem (ILnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Z func_180461_b +MD net/minecraft/util/CombatEntry getDamageSrc ()Lnet/minecraft/util/DamageSource; func_94560_a +MD net/minecraft/util/CombatEntry func_94563_c ()F func_94563_c +MD net/minecraft/util/CombatEntry isLivingDamageSrc ()Z func_94559_f +MD net/minecraft/util/CombatEntry func_94562_g ()Ljava/lang/String; func_94562_g +MD net/minecraft/util/CombatEntry getDamageSrcDisplayName ()Lnet/minecraft/util/IChatComponent; func_151522_h +MD net/minecraft/util/CombatEntry getDamageAmount ()F func_94561_i +MD net/minecraft/util/CombatTracker func_94545_a ()V func_94545_a +MD net/minecraft/util/CombatTracker func_94548_b (Lnet/minecraft/util/CombatEntry;)Ljava/lang/String; func_94548_b +MD net/minecraft/util/CombatTracker trackDamage (Lnet/minecraft/util/DamageSource;FF)V func_94547_a +MD net/minecraft/util/CombatTracker getDeathMessage ()Lnet/minecraft/util/IChatComponent; func_151521_b +MD net/minecraft/util/CombatTracker func_94550_c ()Lnet/minecraft/entity/EntityLivingBase; func_94550_c +MD net/minecraft/util/CombatTracker func_180134_f ()I func_180134_f +MD net/minecraft/util/CombatTracker reset ()V func_94549_h +MD net/minecraft/util/CombatTracker getFighter ()Lnet/minecraft/entity/EntityLivingBase; func_180135_h +MD net/minecraft/util/CombatTracker func_94544_f ()Lnet/minecraft/util/CombatEntry; func_94544_f +MD net/minecraft/util/CombatTracker func_94542_g ()V func_94542_g +MD net/minecraft/util/DamageSource isProjectile ()Z func_76352_a +MD net/minecraft/util/DamageSource setExplosionSource (Lnet/minecraft/world/Explosion;)Lnet/minecraft/util/DamageSource; func_94539_a +MD net/minecraft/util/DamageSource causeThornsDamage (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; func_92087_a +MD net/minecraft/util/DamageSource causeThrownDamage (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; func_76356_a +MD net/minecraft/util/DamageSource causeMobDamage (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/DamageSource; func_76358_a +MD net/minecraft/util/DamageSource causePlayerDamage (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/util/DamageSource; func_76365_a +MD net/minecraft/util/DamageSource causeArrowDamage (Lnet/minecraft/entity/projectile/EntityArrow;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; func_76353_a +MD net/minecraft/util/DamageSource causeFireballDamage (Lnet/minecraft/entity/projectile/EntityFireball;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; func_76362_a +MD net/minecraft/util/DamageSource setProjectile ()Lnet/minecraft/util/DamageSource; func_76349_b +MD net/minecraft/util/DamageSource causeIndirectMagicDamage (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/DamageSource; func_76354_b +MD net/minecraft/util/DamageSource getDeathMessage (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/IChatComponent; func_151519_b +MD net/minecraft/util/DamageSource isExplosion ()Z func_94541_c +MD net/minecraft/util/DamageSource setExplosion ()Lnet/minecraft/util/DamageSource; func_94540_d +MD net/minecraft/util/DamageSource isUnblockable ()Z func_76363_c +MD net/minecraft/util/DamageSource getHungerDamage ()F func_76345_d +MD net/minecraft/util/DamageSource canHarmInCreative ()Z func_76357_e +MD net/minecraft/util/DamageSource isDamageAbsolute ()Z func_151517_h +MD net/minecraft/util/DamageSource getSourceOfDamage ()Lnet/minecraft/entity/Entity; func_76364_f +MD net/minecraft/util/DamageSource getEntity ()Lnet/minecraft/entity/Entity; func_76346_g +MD net/minecraft/util/DamageSource setDamageBypassesArmor ()Lnet/minecraft/util/DamageSource; func_76348_h +MD net/minecraft/util/DamageSource setDamageAllowedInCreativeMode ()Lnet/minecraft/util/DamageSource; func_76359_i +MD net/minecraft/util/DamageSource setDamageIsAbsolute ()Lnet/minecraft/util/DamageSource; func_151518_m +MD net/minecraft/util/DamageSource setFireDamage ()Lnet/minecraft/util/DamageSource; func_76361_j +MD net/minecraft/util/DamageSource isFireDamage ()Z func_76347_k +MD net/minecraft/util/DamageSource getDamageType ()Ljava/lang/String; func_76355_l +MD net/minecraft/util/DamageSource setDifficultyScaled ()Lnet/minecraft/util/DamageSource; func_76351_m +MD net/minecraft/util/DamageSource isDifficultyScaled ()Z func_76350_n +MD net/minecraft/util/DamageSource isMagicDamage ()Z func_82725_o +MD net/minecraft/util/DamageSource setMagicDamage ()Lnet/minecraft/util/DamageSource; func_82726_p +MD net/minecraft/util/DamageSource isCreativePlayer ()Z func_180136_u +MD net/minecraft/util/EntityDamageSource setIsThornsDamage ()Lnet/minecraft/util/EntityDamageSource; func_180138_v +MD net/minecraft/util/EntityDamageSource getIsThornsDamage ()Z func_180139_w +MD net/minecraft/potion/Potion getName ()Ljava/lang/String; func_76393_a +MD net/minecraft/potion/Potion setEffectiveness (D)Lnet/minecraft/potion/Potion; func_76404_a +MD net/minecraft/potion/Potion isReady (II)Z func_76397_a +MD net/minecraft/potion/Potion getAttributeModifierAmount (ILnet/minecraft/entity/ai/attributes/AttributeModifier;)D func_111183_a +MD net/minecraft/potion/Potion getDurationString (Lnet/minecraft/potion/PotionEffect;)Ljava/lang/String; func_76389_a +MD net/minecraft/potion/Potion affectEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/EntityLivingBase;ID)V func_180793_a +MD net/minecraft/potion/Potion performEffect (Lnet/minecraft/entity/EntityLivingBase;I)V func_76394_a +MD net/minecraft/potion/Potion removeAttributesModifiersFromEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;I)V func_111187_a +MD net/minecraft/potion/Potion registerPotionAttributeModifier (Lnet/minecraft/entity/ai/attributes/IAttribute;Ljava/lang/String;DI)Lnet/minecraft/potion/Potion; func_111184_a +MD net/minecraft/potion/Potion isInstant ()Z func_76403_b +MD net/minecraft/potion/Potion setIconIndex (II)Lnet/minecraft/potion/Potion; func_76399_b +MD net/minecraft/potion/Potion getPotionFromResourceLocation (Ljava/lang/String;)Lnet/minecraft/potion/Potion; func_180142_b +MD net/minecraft/potion/Potion applyAttributesModifiersToEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;I)V func_111185_a +MD net/minecraft/potion/Potion getPotionLocations ()Ljava/util/Set; func_181168_c +MD net/minecraft/potion/Potion setPotionName (Ljava/lang/String;)Lnet/minecraft/potion/Potion; func_76390_b +MD net/minecraft/potion/Potion getId ()I func_76396_c +MD net/minecraft/potion/Potion hasStatusIcon ()Z func_76400_d +MD net/minecraft/potion/Potion getStatusIconIndex ()I func_76392_e +MD net/minecraft/potion/Potion isBadEffect ()Z func_76398_f +MD net/minecraft/potion/Potion getEffectiveness ()D func_76388_g +MD net/minecraft/potion/Potion isUsable ()Z func_76395_i +MD net/minecraft/potion/Potion getLiquidColor ()I func_76401_j +MD net/minecraft/potion/Potion getAttributeModifierMap ()Ljava/util/Map; func_111186_k +MD net/minecraft/potion/PotionEffect getPotionID ()I func_76456_a +MD net/minecraft/potion/PotionEffect writeCustomPotionEffectToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; func_82719_a +MD net/minecraft/potion/PotionEffect combine (Lnet/minecraft/potion/PotionEffect;)V func_76452_a +MD net/minecraft/potion/PotionEffect onUpdate (Lnet/minecraft/entity/EntityLivingBase;)Z func_76455_a +MD net/minecraft/potion/PotionEffect setSplashPotion (Z)V func_82721_a +MD net/minecraft/potion/PotionEffect getDuration ()I func_76459_b +MD net/minecraft/potion/PotionEffect readCustomPotionEffectFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/potion/PotionEffect; func_82722_b +MD net/minecraft/potion/PotionEffect performEffect (Lnet/minecraft/entity/EntityLivingBase;)V func_76457_b +MD net/minecraft/potion/PotionEffect setPotionDurationMax (Z)V func_100012_b +MD net/minecraft/potion/PotionEffect getAmplifier ()I func_76458_c +MD net/minecraft/potion/PotionEffect getIsAmbient ()Z func_82720_e +MD net/minecraft/potion/PotionEffect getIsShowParticles ()Z func_180154_f +MD net/minecraft/potion/PotionEffect getEffectName ()Ljava/lang/String; func_76453_d +MD net/minecraft/potion/PotionEffect getIsPotionDurationMax ()Z func_100011_g +MD net/minecraft/potion/PotionEffect deincrementDuration ()I func_76454_e +MD net/minecraft/potion/PotionEffect equals (Ljava/lang/Object;)Z equals +MD net/minecraft/potion/PotionEffect hashCode ()I hashCode +MD net/minecraft/potion/PotionEffect toString ()Ljava/lang/String; toString +MD net/minecraft/entity/EntityAgeable setScale (F)V func_98055_j +MD net/minecraft/entity/EntityAgeable addGrowth (I)V func_110195_a +MD net/minecraft/entity/EntityAgeable func_175501_a (IZ)V func_175501_a +MD net/minecraft/entity/EntityAgeable createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/EntityAgeable; func_90011_a +MD net/minecraft/entity/EntityAgeable setScaleForAge (Z)V func_98054_a +MD net/minecraft/entity/EntityAgeable setGrowingAge (I)V func_70873_a +MD net/minecraft/entity/EntityAgeable getGrowingAge ()I func_70874_b +MD net/minecraft/entity/EntityAgeable onGrowingAdult ()V func_175500_n +MD net/minecraft/entity/Entity getEntityId ()I func_145782_y +MD net/minecraft/entity/Entity onKillCommand ()V func_174812_G +MD net/minecraft/entity/Entity getDataWatcher ()Lnet/minecraft/entity/DataWatcher; func_70096_w +MD net/minecraft/entity/Entity preparePlayerToSpawn ()V func_70065_x +MD net/minecraft/entity/Entity setDead ()V func_70106_y +MD net/minecraft/entity/Entity onEntityUpdate ()V func_70030_z +MD net/minecraft/entity/Entity getMaxInPortalTime ()I func_82145_z +MD net/minecraft/entity/Entity setOnFireFromLava ()V func_70044_A +MD net/minecraft/entity/Entity extinguish ()V func_70066_B +MD net/minecraft/entity/Entity kill ()V func_70076_C +MD net/minecraft/entity/Entity getSwimSound ()Ljava/lang/String; func_145776_H +MD net/minecraft/entity/Entity doBlockCollisions ()V func_145775_I +MD net/minecraft/entity/Entity isSilent ()Z func_174814_R +MD net/minecraft/entity/Entity getCollisionBoundingBox ()Lnet/minecraft/util/AxisAlignedBB; func_70046_E +MD net/minecraft/entity/Entity isImmuneToFire ()Z func_70045_F +MD net/minecraft/entity/Entity isWet ()Z func_70026_G +MD net/minecraft/entity/Entity isInWater ()Z func_70090_H +MD net/minecraft/entity/Entity handleWaterMovement ()Z func_70072_I +MD net/minecraft/entity/Entity resetHeight ()V func_71061_d_ +MD net/minecraft/entity/Entity spawnRunningParticles ()V func_174830_Y +MD net/minecraft/entity/Entity createRunningParticles ()V func_174808_Z +MD net/minecraft/entity/Entity handleStatusUpdate (B)V func_70103_a +MD net/minecraft/entity/Entity isInRangeToRenderDist (D)Z func_70112_a +MD net/minecraft/entity/Entity setPositionAndUpdate (DDD)V func_70634_a +MD net/minecraft/entity/Entity setPositionAndRotation (DDDFF)V func_70080_a +MD net/minecraft/entity/Entity setPositionAndRotation2 (DDDFFIZ)V func_180426_a +MD net/minecraft/entity/Entity rayTrace (DF)Lnet/minecraft/util/MovingObjectPosition; func_174822_a +MD net/minecraft/entity/Entity updateFallState (DZLnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;)V func_180433_a +MD net/minecraft/entity/Entity setSize (FF)V func_70105_a +MD net/minecraft/entity/Entity moveFlying (FFF)V func_70060_a +MD net/minecraft/entity/Entity getExplosionResistance (Lnet/minecraft/world/Explosion;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)F func_180428_a +MD net/minecraft/entity/Entity verifyExplosion (Lnet/minecraft/world/Explosion;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;F)Z func_174816_a +MD net/minecraft/entity/Entity setWorld (Lnet/minecraft/world/World;)V func_70029_a +MD net/minecraft/entity/Entity isInsideOfMaterial (Lnet/minecraft/block/material/Material;)Z func_70055_a +MD net/minecraft/entity/Entity setEntityBoundingBox (Lnet/minecraft/util/AxisAlignedBB;)V func_174826_a +MD net/minecraft/entity/Entity addEntityCrashInfo (Lnet/minecraft/crash/CrashReportCategory;)V func_85029_a +MD net/minecraft/entity/Entity moveToBlockPosAndAngles (Lnet/minecraft/util/BlockPos;FF)V func_174828_a +MD net/minecraft/entity/Entity playStepSound (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_180429_a +MD net/minecraft/entity/Entity readEntityFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_70037_a +MD net/minecraft/entity/Entity setCustomNameTag (Ljava/lang/String;)V func_96094_a +MD net/minecraft/entity/Entity playSound (Ljava/lang/String;FF)V func_85030_a +MD net/minecraft/entity/Entity isSpectatedByPlayer (Lnet/minecraft/entity/player/EntityPlayerMP;)Z func_174827_a +MD net/minecraft/entity/Entity attackEntityFrom (Lnet/minecraft/util/DamageSource;F)Z func_70097_a +MD net/minecraft/entity/Entity mountEntity (Lnet/minecraft/entity/Entity;)V func_70078_a +MD net/minecraft/entity/Entity onKillEntity (Lnet/minecraft/entity/EntityLivingBase;)V func_70074_a +MD net/minecraft/entity/Entity applyEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V func_174815_a +MD net/minecraft/entity/Entity onStruckByLightning (Lnet/minecraft/entity/effect/EntityLightningBolt;)V func_70077_a +MD net/minecraft/entity/Entity interactAt (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/Vec3;)Z func_174825_a +MD net/minecraft/entity/Entity dropItem (Lnet/minecraft/item/Item;I)Lnet/minecraft/entity/item/EntityItem; func_145779_a +MD net/minecraft/entity/Entity dropItemWithOffset (Lnet/minecraft/item/Item;IF)Lnet/minecraft/entity/item/EntityItem; func_145778_a +MD net/minecraft/entity/Entity entityDropItem (Lnet/minecraft/item/ItemStack;F)Lnet/minecraft/entity/item/EntityItem; func_70099_a +MD net/minecraft/entity/Entity newDoubleNBTList ([D)Lnet/minecraft/nbt/NBTTagList; func_70087_a +MD net/minecraft/entity/Entity newFloatNBTList ([F)Lnet/minecraft/nbt/NBTTagList; func_70049_a +MD net/minecraft/entity/Entity setInWeb ()V func_70110_aj +MD net/minecraft/entity/Entity getParts ()[Lnet/minecraft/entity/Entity; func_70021_al +MD net/minecraft/entity/Entity getRotationYawHead ()F func_70079_am +MD net/minecraft/entity/Entity canAttackWithItem ()Z func_70075_an +MD net/minecraft/entity/Entity getMaxFallHeight ()I func_82143_as +MD net/minecraft/entity/Entity func_181014_aG ()Lnet/minecraft/util/Vec3; func_181014_aG +MD net/minecraft/entity/Entity getTeleportDirection ()Lnet/minecraft/util/EnumFacing; func_181012_aH +MD net/minecraft/entity/Entity doesEntityNotTriggerPressurePlate ()Z func_145773_az +MD net/minecraft/entity/Entity canRenderOnFire ()Z func_90999_ad +MD net/minecraft/entity/Entity getUniqueID ()Ljava/util/UUID; func_110124_au +MD net/minecraft/entity/Entity isPushedByWater ()Z func_96092_aw +MD net/minecraft/entity/Entity getCustomNameTag ()Ljava/lang/String; func_95999_t +MD net/minecraft/entity/Entity getAlwaysRenderNameTag ()Z func_174833_aM +MD net/minecraft/entity/Entity getAlwaysRenderNameTagForRender ()Z func_94059_bO +MD net/minecraft/entity/Entity getHorizontalFacing ()Lnet/minecraft/util/EnumFacing; func_174811_aO +MD net/minecraft/entity/Entity getHoverEvent ()Lnet/minecraft/event/HoverEvent; func_174823_aP +MD net/minecraft/entity/Entity getEntityBoundingBox ()Lnet/minecraft/util/AxisAlignedBB; func_174813_aQ +MD net/minecraft/entity/Entity getEyeHeight ()F func_70047_e +MD net/minecraft/entity/Entity isOutsideBorder ()Z func_174832_aS +MD net/minecraft/entity/Entity getCommandStats ()Lnet/minecraft/command/CommandResultStats; func_174807_aT +MD net/minecraft/entity/Entity getNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_174819_aU +MD net/minecraft/entity/Entity isImmuneToExplosions ()Z func_180427_aV +MD net/minecraft/entity/Entity getSplashSound ()Ljava/lang/String; func_145777_O +MD net/minecraft/entity/Entity isInLava ()Z func_180799_ab +MD net/minecraft/entity/Entity setBeenAttacked ()V func_70018_K +MD net/minecraft/entity/Entity canBeCollidedWith ()Z func_70067_L +MD net/minecraft/entity/Entity canBePushed ()Z func_70104_M +MD net/minecraft/entity/Entity shouldSetPosAfterLoading ()Z func_142008_O +MD net/minecraft/entity/Entity getEntityString ()Ljava/lang/String; func_70022_Q +MD net/minecraft/entity/Entity onChunkLoad ()V func_110123_P +MD net/minecraft/entity/Entity isEntityAlive ()Z func_70089_S +MD net/minecraft/entity/Entity isEntityInsideOpaqueBlock ()Z func_70094_T +MD net/minecraft/entity/Entity updateRidden ()V func_70098_U +MD net/minecraft/entity/Entity updateRiderPosition ()V func_70043_V +MD net/minecraft/entity/Entity getYOffset ()D func_70033_W +MD net/minecraft/entity/Entity getMountedYOffset ()D func_70042_X +MD net/minecraft/entity/Entity getCollisionBorderSize ()F func_70111_Y +MD net/minecraft/entity/Entity getLookVec ()Lnet/minecraft/util/Vec3; func_70040_Z +MD net/minecraft/entity/Entity getPortalCooldown ()I func_82147_ab +MD net/minecraft/entity/Entity performHurtAnimation ()V func_70057_ab +MD net/minecraft/entity/Entity getInventory ()[Lnet/minecraft/item/ItemStack; func_70035_c +MD net/minecraft/entity/Entity isBurning ()Z func_70027_ad +MD net/minecraft/entity/Entity isRiding ()Z func_70115_ae +MD net/minecraft/entity/Entity isSneaking ()Z func_70093_af +MD net/minecraft/entity/Entity isSprinting ()Z func_70051_ag +MD net/minecraft/entity/Entity isInvisible ()Z func_82150_aj +MD net/minecraft/entity/Entity isEating ()Z func_70113_ah +MD net/minecraft/entity/Entity getAir ()I func_70086_ai +MD net/minecraft/entity/Entity setPosition (DDD)V func_70107_b +MD net/minecraft/entity/Entity setLocationAndAngles (DDDFF)V func_70012_b +MD net/minecraft/entity/Entity getBrightnessForRender (F)I func_70070_b +MD net/minecraft/entity/Entity setRotation (FF)V func_70101_b +MD net/minecraft/entity/Entity setFlag (IZ)V func_70052_a +MD net/minecraft/entity/Entity isLiquidPresentInAABB (Lnet/minecraft/util/AxisAlignedBB;)Z func_174809_b +MD net/minecraft/entity/Entity getDistanceSq (Lnet/minecraft/util/BlockPos;)D func_174818_b +MD net/minecraft/entity/Entity writeEntityToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_70014_b +MD net/minecraft/entity/Entity isEntityInvulnerable (Lnet/minecraft/util/DamageSource;)Z func_180431_b +MD net/minecraft/entity/Entity addToPlayerScore (Lnet/minecraft/entity/Entity;I)V func_70084_c +MD net/minecraft/entity/Entity setSilent (Z)V func_174810_b +MD net/minecraft/entity/Entity isOffsetPositionInLiquid (DDD)Z func_70038_c +MD net/minecraft/entity/Entity getBrightness (F)F func_70013_c +MD net/minecraft/entity/Entity setAngles (FF)V func_70082_c +MD net/minecraft/entity/Entity travelToDimension (I)V func_71027_c +MD net/minecraft/entity/Entity setCurrentItemOrArmor (ILnet/minecraft/item/ItemStack;)V func_70062_b +MD net/minecraft/entity/Entity getDistanceSqToCenter (Lnet/minecraft/util/BlockPos;)D func_174831_c +MD net/minecraft/entity/Entity writeMountToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Z func_98035_c +MD net/minecraft/entity/Entity setSneaking (Z)V func_70095_a +MD net/minecraft/entity/Entity moveEntity (DDD)V func_70091_d +MD net/minecraft/entity/Entity getLook (F)Lnet/minecraft/util/Vec3; func_70676_i +MD net/minecraft/entity/Entity setEntityId (I)V func_145769_d +MD net/minecraft/entity/Entity replaceItemInInventory (ILnet/minecraft/item/ItemStack;)Z func_174820_d +MD net/minecraft/entity/Entity setPortal (Lnet/minecraft/util/BlockPos;)V func_181015_d +MD net/minecraft/entity/Entity writeToNBTOptional (Lnet/minecraft/nbt/NBTTagCompound;)Z func_70039_c +MD net/minecraft/entity/Entity onCollideWithPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V func_70100_b_ +MD net/minecraft/entity/Entity setSprinting (Z)V func_70031_b +MD net/minecraft/entity/Entity getDistanceSq (DDD)D func_70092_e +MD net/minecraft/entity/Entity getPositionEyes (F)Lnet/minecraft/util/Vec3; func_174824_e +MD net/minecraft/entity/Entity fall (FF)V func_180430_e +MD net/minecraft/entity/Entity setFire (I)V func_70015_d +MD net/minecraft/entity/Entity writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_70109_d +MD net/minecraft/entity/Entity interactFirst (Lnet/minecraft/entity/player/EntityPlayer;)Z func_130002_c +MD net/minecraft/entity/Entity setInvisible (Z)V func_82142_c +MD net/minecraft/entity/Entity getDistance (DDD)D func_70011_f +MD net/minecraft/entity/Entity setRotationYawHead (F)V func_70034_d +MD net/minecraft/entity/Entity getVectorForRotation (FF)Lnet/minecraft/util/Vec3; func_174806_f +MD net/minecraft/entity/Entity dealFireDamage (I)V func_70081_e +MD net/minecraft/entity/Entity readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_70020_e +MD net/minecraft/entity/Entity isInvisibleToPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z func_98034_c +MD net/minecraft/entity/Entity setEating (Z)V func_70019_c +MD net/minecraft/entity/Entity addVelocity (DDD)V func_70024_g +MD net/minecraft/entity/Entity setRenderYawOffset (F)V func_181013_g +MD net/minecraft/entity/Entity getFlag (I)Z func_70083_f +MD net/minecraft/entity/Entity clientUpdateEntityNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_174834_g +MD net/minecraft/entity/Entity getDistanceToEntity (Lnet/minecraft/entity/Entity;)F func_70032_d +MD net/minecraft/entity/Entity setAlwaysRenderNameTag (Z)V func_174805_g +MD net/minecraft/entity/Entity entityInit ()V func_70088_a +MD net/minecraft/entity/Entity isInRangeToRender3d (DDD)Z func_145770_h +MD net/minecraft/entity/Entity setAir (I)V func_70050_g +MD net/minecraft/entity/Entity getDistanceSqToEntity (Lnet/minecraft/entity/Entity;)D func_70068_e +MD net/minecraft/entity/Entity setOutsideBorder (Z)V func_174821_h +MD net/minecraft/entity/Entity setVelocity (DDD)V func_70016_h +MD net/minecraft/entity/Entity onDataWatcherUpdate (I)V func_145781_i +MD net/minecraft/entity/Entity applyEntityCollision (Lnet/minecraft/entity/Entity;)V func_70108_f +MD net/minecraft/entity/Entity pushOutOfBlocks (DDD)Z func_145771_j +MD net/minecraft/entity/Entity getCollisionBox (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/AxisAlignedBB; func_70114_g +MD net/minecraft/entity/Entity isEntityEqual (Lnet/minecraft/entity/Entity;)Z func_70028_i +MD net/minecraft/entity/Entity hitByEntity (Lnet/minecraft/entity/Entity;)Z func_85031_j +MD net/minecraft/entity/Entity hasCustomName ()Z func_145818_k_ +MD net/minecraft/entity/Entity resetPositionToBB ()V func_174829_m +MD net/minecraft/entity/Entity copyLocationAndAnglesFrom (Lnet/minecraft/entity/Entity;)V func_82149_j +MD net/minecraft/entity/Entity copyDataFromOld (Lnet/minecraft/entity/Entity;)V func_180432_n +MD net/minecraft/entity/Entity setCommandStats (Lnet/minecraft/entity/Entity;)V func_174817_o +MD net/minecraft/entity/Entity canTriggerWalking ()Z func_70041_e_ +MD net/minecraft/entity/Entity onUpdate ()V func_70071_h_ +MD net/minecraft/entity/Entity equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/Entity hashCode ()I hashCode +MD net/minecraft/entity/Entity toString ()Ljava/lang/String; toString +MD net/minecraft/entity/Entity$1 call ()Ljava/lang/String; call +MD net/minecraft/entity/Entity$1 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$2 call ()Ljava/lang/String; call +MD net/minecraft/entity/Entity$2 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$3 call ()Ljava/lang/String; call +MD net/minecraft/entity/Entity$3 call ()Ljava/lang/Object; call +MD net/minecraft/entity/Entity$4 call ()Ljava/lang/String; call +MD net/minecraft/entity/Entity$4 call ()Ljava/lang/Object; call +MD net/minecraft/entity/EntityList func_151514_a ()V func_151514_a +MD net/minecraft/entity/EntityList getClassFromID (I)Ljava/lang/Class; func_90035_a +MD net/minecraft/entity/EntityList createEntityByID (ILnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_75616_a +MD net/minecraft/entity/EntityList createEntityFromNBT (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_75615_a +MD net/minecraft/entity/EntityList addMapping (Ljava/lang/Class;Ljava/lang/String;I)V func_75618_a +MD net/minecraft/entity/EntityList addMapping (Ljava/lang/Class;Ljava/lang/String;III)V func_75614_a +MD net/minecraft/entity/EntityList getIDFromString (Ljava/lang/String;)I func_180122_a +MD net/minecraft/entity/EntityList createEntityByName (Ljava/lang/String;Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_75620_a +MD net/minecraft/entity/EntityList getEntityID (Lnet/minecraft/entity/Entity;)I func_75619_a +MD net/minecraft/entity/EntityList isStringEntityName (Lnet/minecraft/entity/Entity;Ljava/lang/String;)Z func_180123_a +MD net/minecraft/entity/EntityList getEntityNameList ()Ljava/util/List; func_180124_b +MD net/minecraft/entity/EntityList getStringFromID (I)Ljava/lang/String; func_75617_a +MD net/minecraft/entity/EntityList isStringValidEntityName (Ljava/lang/String;)Z func_180125_b +MD net/minecraft/entity/EntityList getEntityString (Lnet/minecraft/entity/Entity;)Ljava/lang/String; func_75621_b +MD net/minecraft/util/EntitySelectors$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/util/EntitySelectors$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$2 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/util/EntitySelectors$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$3 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/util/EntitySelectors$3 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$4 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/util/EntitySelectors$4 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/util/EntitySelectors$ArmoredMob apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/util/EntitySelectors$ArmoredMob apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/item/EntityXPOrb getXPSplit (I)I func_70527_a +MD net/minecraft/entity/item/EntityXPOrb getXpValue ()I func_70526_d +MD net/minecraft/entity/item/EntityXPOrb getTextureByXP ()I func_70528_g +MD net/minecraft/entity/EntityLivingBase updatePotionMetadata ()V func_175135_B +MD net/minecraft/entity/EntityLivingBase isOnTeam (Lnet/minecraft/scoreboard/Team;)Z func_142012_a +MD net/minecraft/entity/EntityLivingBase onDeath (Lnet/minecraft/util/DamageSource;)V func_70645_a +MD net/minecraft/entity/EntityLivingBase isPotionActive (Lnet/minecraft/potion/Potion;)Z func_70644_a +MD net/minecraft/entity/EntityLivingBase onNewPotionEffect (Lnet/minecraft/potion/PotionEffect;)V func_70670_a +MD net/minecraft/entity/EntityLivingBase onChangedPotionEffect (Lnet/minecraft/potion/PotionEffect;Z)V func_70695_b +MD net/minecraft/entity/EntityLivingBase knockBack (Lnet/minecraft/entity/Entity;FDD)V func_70653_a +MD net/minecraft/entity/EntityLivingBase onItemPickup (Lnet/minecraft/entity/Entity;I)V func_71001_a +MD net/minecraft/entity/EntityLivingBase getEntityAttribute (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; func_110148_a +MD net/minecraft/entity/EntityLivingBase dropEquipment (ZI)V func_82160_b +MD net/minecraft/entity/EntityLivingBase applyEntityAttributes ()V func_110147_ax +MD net/minecraft/entity/EntityLivingBase canBreatheUnderwater ()Z func_70648_aU +MD net/minecraft/entity/EntityLivingBase onDeathUpdate ()V func_70609_aI +MD net/minecraft/entity/EntityLivingBase applyArmorCalculations (Lnet/minecraft/util/DamageSource;F)F func_70655_b +MD net/minecraft/entity/EntityLivingBase getActivePotionEffect (Lnet/minecraft/potion/Potion;)Lnet/minecraft/potion/PotionEffect; func_70660_b +MD net/minecraft/entity/EntityLivingBase onFinishedPotionEffect (Lnet/minecraft/potion/PotionEffect;)V func_70688_c +MD net/minecraft/entity/EntityLivingBase setRevengeTarget (Lnet/minecraft/entity/EntityLivingBase;)V func_70604_c +MD net/minecraft/entity/EntityLivingBase getExperiencePoints (Lnet/minecraft/entity/player/EntityPlayer;)I func_70693_a +MD net/minecraft/entity/EntityLivingBase renderBrokenItemStack (Lnet/minecraft/item/ItemStack;)V func_70669_a +MD net/minecraft/entity/EntityLivingBase dropFewItems (ZI)V func_70628_a +MD net/minecraft/entity/EntityLivingBase getHeldItem ()Lnet/minecraft/item/ItemStack; func_70694_bm +MD net/minecraft/entity/EntityLivingBase getSoundVolume ()F func_70599_aP +MD net/minecraft/entity/EntityLivingBase getSoundPitch ()F func_70647_i +MD net/minecraft/entity/EntityLivingBase isMovementBlocked ()Z func_70610_aX +MD net/minecraft/entity/EntityLivingBase getJumpUpwardsMotion ()F func_175134_bD +MD net/minecraft/entity/EntityLivingBase jump ()V func_70664_aZ +MD net/minecraft/entity/EntityLivingBase updateAITick ()V func_70629_bd +MD net/minecraft/entity/EntityLivingBase handleJumpLava ()V func_180466_bG +MD net/minecraft/entity/EntityLivingBase getAIMoveSpeed ()F func_70689_ay +MD net/minecraft/entity/EntityLivingBase isPlayerSleeping ()Z func_70608_bn +MD net/minecraft/entity/EntityLivingBase updateEntityActionState ()V func_70626_be +MD net/minecraft/entity/EntityLivingBase collideWithNearbyEntities ()V func_85033_bc +MD net/minecraft/entity/EntityLivingBase isServerWorld ()Z func_70613_aW +MD net/minecraft/entity/EntityLivingBase getAbsorptionAmount ()F func_110139_bj +MD net/minecraft/entity/EntityLivingBase getTeam ()Lnet/minecraft/scoreboard/Team; func_96124_cp +MD net/minecraft/entity/EntityLivingBase markPotionsDirty ()V func_175136_bO +MD net/minecraft/entity/EntityLivingBase canDropLoot ()Z func_146066_aG +MD net/minecraft/entity/EntityLivingBase isPlayer ()Z func_70684_aJ +MD net/minecraft/entity/EntityLivingBase getRNG ()Ljava/util/Random; func_70681_au +MD net/minecraft/entity/EntityLivingBase getAITarget ()Lnet/minecraft/entity/EntityLivingBase; func_70643_av +MD net/minecraft/entity/EntityLivingBase getRevengeTimer ()I func_142015_aE +MD net/minecraft/entity/EntityLivingBase getLastAttacker ()Lnet/minecraft/entity/EntityLivingBase; func_110144_aD +MD net/minecraft/entity/EntityLivingBase getLastAttackerTime ()I func_142013_aG +MD net/minecraft/entity/EntityLivingBase getAge ()I func_70654_ax +MD net/minecraft/entity/EntityLivingBase updatePotionEffects ()V func_70679_bo +MD net/minecraft/entity/EntityLivingBase resetPotionEffectMetadata ()V func_175133_bi +MD net/minecraft/entity/EntityLivingBase clearActivePotions ()V func_70674_bp +MD net/minecraft/entity/EntityLivingBase getActivePotionEffects ()Ljava/util/Collection; func_70651_bq +MD net/minecraft/entity/EntityLivingBase isEntityUndead ()Z func_70662_br +MD net/minecraft/entity/EntityLivingBase getHealth ()F func_110143_aJ +MD net/minecraft/entity/EntityLivingBase getHurtSound ()Ljava/lang/String; func_70621_aR +MD net/minecraft/entity/EntityLivingBase getDeathSound ()Ljava/lang/String; func_70673_aS +MD net/minecraft/entity/EntityLivingBase addRandomDrop ()V func_82164_bB +MD net/minecraft/entity/EntityLivingBase getTotalArmorValue ()I func_70658_aO +MD net/minecraft/entity/EntityLivingBase getCombatTracker ()Lnet/minecraft/util/CombatTracker; func_110142_aN +MD net/minecraft/entity/EntityLivingBase getAttackingEntity ()Lnet/minecraft/entity/EntityLivingBase; func_94060_bK +MD net/minecraft/entity/EntityLivingBase getMaxHealth ()F func_110138_aP +MD net/minecraft/entity/EntityLivingBase getArrowCountInEntity ()I func_85035_bI +MD net/minecraft/entity/EntityLivingBase swingItem ()V func_71038_i +MD net/minecraft/entity/EntityLivingBase updateArmSwingProgress ()V func_82168_bl +MD net/minecraft/entity/EntityLivingBase getAttributeMap ()Lnet/minecraft/entity/ai/attributes/BaseAttributeMap; func_110140_aT +MD net/minecraft/entity/EntityLivingBase getCreatureAttribute ()Lnet/minecraft/entity/EnumCreatureAttribute; func_70668_bt +MD net/minecraft/entity/EntityLivingBase applyPotionDamageCalculations (Lnet/minecraft/util/DamageSource;F)F func_70672_c +MD net/minecraft/entity/EntityLivingBase addPotionEffect (Lnet/minecraft/potion/PotionEffect;)V func_70690_d +MD net/minecraft/entity/EntityLivingBase isOnSameTeam (Lnet/minecraft/entity/EntityLivingBase;)Z func_142014_c +MD net/minecraft/entity/EntityLivingBase damageEntity (Lnet/minecraft/util/DamageSource;F)V func_70665_d +MD net/minecraft/entity/EntityLivingBase isPotionApplicable (Lnet/minecraft/potion/PotionEffect;)Z func_70687_e +MD net/minecraft/entity/EntityLivingBase moveEntityWithHeading (FF)V func_70612_e +MD net/minecraft/entity/EntityLivingBase heal (F)V func_70691_i +MD net/minecraft/entity/EntityLivingBase updateDistance (FF)F func_110146_f +MD net/minecraft/entity/EntityLivingBase sendEnterCombat ()V func_152111_bt +MD net/minecraft/entity/EntityLivingBase setHealth (F)V func_70606_j +MD net/minecraft/entity/EntityLivingBase setJumping (Z)V func_70637_d +MD net/minecraft/entity/EntityLivingBase sendEndCombat ()V func_152112_bu +MD net/minecraft/entity/EntityLivingBase damageArmor (F)V func_70675_k +MD net/minecraft/entity/EntityLivingBase decreaseAirSupply (I)I func_70682_h +MD net/minecraft/entity/EntityLivingBase isChild ()Z func_70631_g_ +MD net/minecraft/entity/EntityLivingBase setAIMoveSpeed (F)V func_70659_e +MD net/minecraft/entity/EntityLivingBase isPotionActive (I)Z func_82165_m +MD net/minecraft/entity/EntityLivingBase isOnLadder ()Z func_70617_f_ +MD net/minecraft/entity/EntityLivingBase getSwingProgress (F)F func_70678_g +MD net/minecraft/entity/EntityLivingBase removePotionEffectClient (I)V func_70618_n +MD net/minecraft/entity/EntityLivingBase onLivingUpdate ()V func_70636_d +MD net/minecraft/entity/EntityLivingBase setAbsorptionAmount (F)V func_110149_m +MD net/minecraft/entity/EntityLivingBase removePotionEffect (I)V func_82170_o +MD net/minecraft/entity/EntityLivingBase getArmSwingAnimationEnd ()I func_82166_i +MD net/minecraft/entity/EntityLivingBase getFallSoundString (I)Ljava/lang/String; func_146067_o +MD net/minecraft/entity/EntityLivingBase setArrowCountInEntity (I)V func_85034_r +MD net/minecraft/entity/EntityLivingBase getEquipmentInSlot (I)Lnet/minecraft/item/ItemStack; func_71124_b +MD net/minecraft/entity/EntityLivingBase setLastAttacker (Lnet/minecraft/entity/Entity;)V func_130011_c +MD net/minecraft/entity/EntityLivingBase getCurrentArmor (I)Lnet/minecraft/item/ItemStack; func_82169_q +MD net/minecraft/entity/EntityLivingBase dismountEntity (Lnet/minecraft/entity/Entity;)V func_110145_l +MD net/minecraft/entity/EntityLivingBase attackEntityAsMob (Lnet/minecraft/entity/Entity;)Z func_70652_k +MD net/minecraft/entity/EntityLivingBase collideWithEntity (Lnet/minecraft/entity/Entity;)V func_82167_n +MD net/minecraft/entity/EntityLivingBase canEntityBeSeen (Lnet/minecraft/entity/Entity;)Z func_70685_l +MD net/minecraft/entity/EntityLivingBase$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/EntityLivingBase$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/EntityLiving getDropItem ()Lnet/minecraft/item/Item; func_146068_u +MD net/minecraft/entity/EntityLiving canDespawn ()Z func_70692_ba +MD net/minecraft/entity/EntityLiving despawnEntity ()V func_70623_bb +MD net/minecraft/entity/EntityLiving updateAITasks ()V func_70619_bc +MD net/minecraft/entity/EntityLiving setEquipmentDropChance (IF)V func_96120_a +MD net/minecraft/entity/EntityLiving getArmorItemForSlot (II)Lnet/minecraft/item/Item; func_82161_a +MD net/minecraft/entity/EntityLiving canAttackClass (Ljava/lang/Class;)Z func_70686_a +MD net/minecraft/entity/EntityLiving setEquipmentBasedOnDifficulty (Lnet/minecraft/world/DifficultyInstance;)V func_180481_a +MD net/minecraft/entity/EntityLiving onInitialSpawn (Lnet/minecraft/world/DifficultyInstance;Lnet/minecraft/entity/IEntityLivingData;)Lnet/minecraft/entity/IEntityLivingData; func_180482_a +MD net/minecraft/entity/EntityLiving faceEntity (Lnet/minecraft/entity/Entity;FF)V func_70625_a +MD net/minecraft/entity/EntityLiving setLeashedToEntity (Lnet/minecraft/entity/Entity;Z)V func_110162_b +MD net/minecraft/entity/EntityLiving updateEquipmentIfNeeded (Lnet/minecraft/entity/item/EntityItem;)V func_175445_a +MD net/minecraft/entity/EntityLiving interact (Lnet/minecraft/entity/player/EntityPlayer;)Z func_70085_c +MD net/minecraft/entity/EntityLiving func_175448_a (Lnet/minecraft/item/ItemStack;)Z func_175448_a +MD net/minecraft/entity/EntityLiving clearLeashed (ZZ)V func_110160_i +MD net/minecraft/entity/EntityLiving updateRotation (FFF)F func_70663_b +MD net/minecraft/entity/EntityLiving getNewNavigator (Lnet/minecraft/world/World;)Lnet/minecraft/pathfinding/PathNavigate; func_175447_b +MD net/minecraft/entity/EntityLiving setEnchantmentBasedOnDifficulty (Lnet/minecraft/world/DifficultyInstance;)V func_180483_b +MD net/minecraft/entity/EntityLiving getVerticalFaceSpeed ()I func_70646_bf +MD net/minecraft/entity/EntityLiving getCanSpawnHere ()Z func_70601_bi +MD net/minecraft/entity/EntityLiving isNotColliding ()Z func_70058_J +MD net/minecraft/entity/EntityLiving getRenderSizeModifier ()F func_70603_bj +MD net/minecraft/entity/EntityLiving getMaxSpawnedInChunk ()I func_70641_bl +MD net/minecraft/entity/EntityLiving canBeSteered ()Z func_82171_bF +MD net/minecraft/entity/EntityLiving enablePersistence ()V func_110163_bv +MD net/minecraft/entity/EntityLiving canPickUpLoot ()Z func_98052_bS +MD net/minecraft/entity/EntityLiving isNoDespawnRequired ()Z func_104002_bU +MD net/minecraft/entity/EntityLiving getArmorPosition (Lnet/minecraft/item/ItemStack;)I func_82159_b +MD net/minecraft/entity/EntityLiving updateLeashedState ()V func_110159_bB +MD net/minecraft/entity/EntityLiving allowLeashing ()Z func_110164_bC +MD net/minecraft/entity/EntityLiving getLeashed ()Z func_110167_bD +MD net/minecraft/entity/EntityLiving getLeashedToEntity ()Lnet/minecraft/entity/Entity; func_110166_bE +MD net/minecraft/entity/EntityLiving isAIDisabled ()Z func_175446_cd +MD net/minecraft/entity/EntityLiving setAttackTarget (Lnet/minecraft/entity/EntityLivingBase;)V func_70624_b +MD net/minecraft/entity/EntityLiving setCanPickUpLoot (Z)V func_98053_h +MD net/minecraft/entity/EntityLiving setNoAI (Z)V func_94061_f +MD net/minecraft/entity/EntityLiving recreateLeash ()V func_110165_bF +MD net/minecraft/entity/EntityLiving setMoveForward (F)V func_70657_f +MD net/minecraft/entity/EntityLiving getLookHelper ()Lnet/minecraft/entity/ai/EntityLookHelper; func_70671_ap +MD net/minecraft/entity/EntityLiving getMoveHelper ()Lnet/minecraft/entity/ai/EntityMoveHelper; func_70605_aq +MD net/minecraft/entity/EntityLiving getJumpHelper ()Lnet/minecraft/entity/ai/EntityJumpHelper; func_70683_ar +MD net/minecraft/entity/EntityLiving getNavigator ()Lnet/minecraft/pathfinding/PathNavigate; func_70661_as +MD net/minecraft/entity/EntityLiving getEntitySenses ()Lnet/minecraft/entity/ai/EntitySenses; func_70635_at +MD net/minecraft/entity/EntityLiving getAttackTarget ()Lnet/minecraft/entity/EntityLivingBase; func_70638_az +MD net/minecraft/entity/EntityLiving eatGrassBonus ()V func_70615_aA +MD net/minecraft/entity/EntityLiving getTalkInterval ()I func_70627_aG +MD net/minecraft/entity/EntityLiving playLivingSound ()V func_70642_aH +MD net/minecraft/entity/EntityLiving spawnExplosionParticle ()V func_70656_aK +MD net/minecraft/entity/EntityLiving getLivingSound ()Ljava/lang/String; func_70639_aQ +MD net/minecraft/entity/EntityLiving$SpawnPlacementType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; valueOf +MD net/minecraft/entity/EntityLiving$SpawnPlacementType values ()[Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; values +MD net/minecraft/entity/EnumCreatureType getCreatureClass ()Ljava/lang/Class; func_75598_a +MD net/minecraft/entity/EnumCreatureType getMaxNumberOfCreature ()I func_75601_b +MD net/minecraft/entity/EnumCreatureType getPeacefulCreature ()Z func_75599_d +MD net/minecraft/entity/EnumCreatureType getAnimal ()Z func_82705_e +MD net/minecraft/entity/EnumCreatureType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EnumCreatureType; valueOf +MD net/minecraft/entity/EnumCreatureType values ()[Lnet/minecraft/entity/EnumCreatureType; values +MD net/minecraft/entity/EntitySpawnPlacementRegistry getPlacementForEntity (Ljava/lang/Class;)Lnet/minecraft/entity/EntityLiving$SpawnPlacementType; func_180109_a +MD net/minecraft/entity/EnumCreatureAttribute valueOf (Ljava/lang/String;)Lnet/minecraft/entity/EnumCreatureAttribute; valueOf +MD net/minecraft/entity/EnumCreatureAttribute values ()[Lnet/minecraft/entity/EnumCreatureAttribute; values +MD net/minecraft/entity/IEntityOwnable getOwnerId ()Ljava/lang/String; func_152113_b +MD net/minecraft/entity/IEntityOwnable getOwner ()Lnet/minecraft/entity/Entity; func_70902_q +MD net/minecraft/entity/EntityCreature getBlockPathWeight (Lnet/minecraft/util/BlockPos;)F func_180484_a +MD net/minecraft/entity/EntityCreature setHomePosAndDistance (Lnet/minecraft/util/BlockPos;I)V func_175449_a +MD net/minecraft/entity/EntityCreature hasPath ()Z func_70781_l +MD net/minecraft/entity/EntityCreature isWithinHomeDistanceCurrentPosition ()Z func_110173_bK +MD net/minecraft/entity/EntityCreature getHomePosition ()Lnet/minecraft/util/BlockPos; func_180486_cf +MD net/minecraft/entity/EntityCreature getMaximumHomeDistance ()F func_110174_bM +MD net/minecraft/entity/EntityCreature detachHome ()V func_110177_bN +MD net/minecraft/entity/EntityCreature hasHome ()Z func_110175_bO +MD net/minecraft/entity/EntityCreature isWithinHomeDistanceFromPosition (Lnet/minecraft/util/BlockPos;)Z func_180485_d +MD net/minecraft/entity/EntityCreature func_142017_o (F)V func_142017_o +MD net/minecraft/entity/DataWatcher hasObjectChanged ()Z func_75684_a +MD net/minecraft/entity/DataWatcher getWatchableObjectByte (I)B func_75683_a +MD net/minecraft/entity/DataWatcher addObjectByDataType (II)V func_82709_a +MD net/minecraft/entity/DataWatcher addObject (ILjava/lang/Object;)V func_75682_a +MD net/minecraft/entity/DataWatcher writeTo (Lnet/minecraft/network/PacketBuffer;)V func_151509_a +MD net/minecraft/entity/DataWatcher writeWatchableObjectToPacketBuffer (Lnet/minecraft/network/PacketBuffer;Lnet/minecraft/entity/DataWatcher$WatchableObject;)V func_151510_a +MD net/minecraft/entity/DataWatcher updateWatchedObjectsFromList (Ljava/util/List;)V func_75687_a +MD net/minecraft/entity/DataWatcher writeWatchedListToPacketBuffer (Ljava/util/List;Lnet/minecraft/network/PacketBuffer;)V func_151507_a +MD net/minecraft/entity/DataWatcher getChanged ()Ljava/util/List; func_75688_b +MD net/minecraft/entity/DataWatcher getWatchableObjectShort (I)S func_75693_b +MD net/minecraft/entity/DataWatcher updateObject (ILjava/lang/Object;)V func_75692_b +MD net/minecraft/entity/DataWatcher readWatchedListFromPacketBuffer (Lnet/minecraft/network/PacketBuffer;)Ljava/util/List; func_151508_b +MD net/minecraft/entity/DataWatcher getAllWatched ()Ljava/util/List; func_75685_c +MD net/minecraft/entity/DataWatcher getWatchableObjectInt (I)I func_75679_c +MD net/minecraft/entity/DataWatcher getIsBlank ()Z func_92085_d +MD net/minecraft/entity/DataWatcher getWatchableObjectFloat (I)F func_111145_d +MD net/minecraft/entity/DataWatcher func_111144_e ()V func_111144_e +MD net/minecraft/entity/DataWatcher getWatchableObjectString (I)Ljava/lang/String; func_75681_e +MD net/minecraft/entity/DataWatcher getWatchableObjectItemStack (I)Lnet/minecraft/item/ItemStack; func_82710_f +MD net/minecraft/entity/DataWatcher getWatchableObjectRotations (I)Lnet/minecraft/util/Rotations; func_180115_h +MD net/minecraft/entity/DataWatcher setObjectWatched (I)V func_82708_h +MD net/minecraft/entity/DataWatcher getWatchedObject (I)Lnet/minecraft/entity/DataWatcher$WatchableObject; func_75691_i +MD net/minecraft/entity/DataWatcher$WatchableObject getDataValueId ()I func_75672_a +MD net/minecraft/entity/DataWatcher$WatchableObject setObject (Ljava/lang/Object;)V func_75673_a +MD net/minecraft/entity/DataWatcher$WatchableObject access$002 (Lnet/minecraft/entity/DataWatcher$WatchableObject;Z)Z access$002 +MD net/minecraft/entity/DataWatcher$WatchableObject setWatched (Z)V func_75671_a +MD net/minecraft/entity/DataWatcher$WatchableObject getObject ()Ljava/lang/Object; func_75669_b +MD net/minecraft/entity/DataWatcher$WatchableObject getObjectType ()I func_75674_c +MD net/minecraft/entity/DataWatcher$WatchableObject isWatched ()Z func_75670_d +MD net/minecraft/entity/passive/EntityTameable shouldAttackEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/EntityLivingBase;)Z func_142018_a +MD net/minecraft/entity/passive/EntityTameable setOwnerId (Ljava/lang/String;)V func_152115_b +MD net/minecraft/entity/passive/EntityTameable isTamed ()Z func_70909_n +MD net/minecraft/entity/passive/EntityTameable setupTamedAI ()V func_175544_ck +MD net/minecraft/entity/passive/EntityTameable isSitting ()Z func_70906_o +MD net/minecraft/entity/passive/EntityTameable getOwner ()Lnet/minecraft/entity/EntityLivingBase; func_70902_q +MD net/minecraft/entity/passive/EntityTameable getAISit ()Lnet/minecraft/entity/ai/EntityAISit; func_70907_r +MD net/minecraft/entity/passive/EntityTameable isOwner (Lnet/minecraft/entity/EntityLivingBase;)Z func_152114_e +MD net/minecraft/entity/passive/EntityTameable playTameEffect (Z)V func_70908_e +MD net/minecraft/entity/passive/EntityTameable setTamed (Z)V func_70903_f +MD net/minecraft/entity/passive/EntityTameable setSitting (Z)V func_70904_g +MD net/minecraft/entity/ai/attributes/IAttribute getAttributeUnlocalizedName ()Ljava/lang/String; func_111108_a +MD net/minecraft/entity/ai/attributes/IAttribute clampValue (D)D func_111109_a +MD net/minecraft/entity/ai/attributes/IAttribute getDefaultValue ()D func_111110_b +MD net/minecraft/entity/ai/attributes/IAttribute getShouldWatch ()Z func_111111_c +MD net/minecraft/entity/ai/attributes/IAttribute func_180372_d ()Lnet/minecraft/entity/ai/attributes/IAttribute; func_180372_d +MD net/minecraft/entity/ai/attributes/IAttributeInstance getAttribute ()Lnet/minecraft/entity/ai/attributes/IAttribute; func_111123_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance setBaseValue (D)V func_111128_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getModifiersByOperation (I)Ljava/util/Collection; func_111130_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getModifier (Ljava/util/UUID;)Lnet/minecraft/entity/ai/attributes/AttributeModifier; func_111127_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance hasModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)Z func_180374_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance getBaseValue ()D func_111125_b +MD net/minecraft/entity/ai/attributes/IAttributeInstance applyModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)V func_111121_a +MD net/minecraft/entity/ai/attributes/IAttributeInstance func_111122_c ()Ljava/util/Collection; func_111122_c +MD net/minecraft/entity/ai/attributes/IAttributeInstance removeModifier (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)V func_111124_b +MD net/minecraft/entity/ai/attributes/IAttributeInstance removeAllModifiers ()V func_142049_d +MD net/minecraft/entity/ai/attributes/IAttributeInstance getAttributeValue ()D func_111126_e +MD net/minecraft/entity/ai/attributes/AttributeModifier getID ()Ljava/util/UUID; func_111167_a +MD net/minecraft/entity/ai/attributes/AttributeModifier setSaved (Z)Lnet/minecraft/entity/ai/attributes/AttributeModifier; func_111168_a +MD net/minecraft/entity/ai/attributes/AttributeModifier getName ()Ljava/lang/String; func_111166_b +MD net/minecraft/entity/ai/attributes/AttributeModifier getOperation ()I func_111169_c +MD net/minecraft/entity/ai/attributes/AttributeModifier getAmount ()D func_111164_d +MD net/minecraft/entity/ai/attributes/AttributeModifier isSaved ()Z func_111165_e +MD net/minecraft/entity/ai/attributes/AttributeModifier equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/ai/attributes/AttributeModifier hashCode ()I hashCode +MD net/minecraft/entity/ai/attributes/AttributeModifier toString ()Ljava/lang/String; toString +MD net/minecraft/entity/ai/attributes/BaseAttribute setShouldWatch (Z)Lnet/minecraft/entity/ai/attributes/BaseAttribute; func_111112_a +MD net/minecraft/entity/ai/attributes/BaseAttribute equals (Ljava/lang/Object;)Z equals +MD net/minecraft/entity/ai/attributes/BaseAttribute hashCode ()I hashCode +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAllAttributes ()Ljava/util/Collection; func_111146_a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap removeAttributeModifiers (Lcom/google/common/collect/Multimap;)V func_111148_a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAttributeInstanceByName (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; func_111152_a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap getAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; func_111151_a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap func_180794_a (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;)V func_180794_a +MD net/minecraft/entity/ai/attributes/BaseAttributeMap applyAttributeModifiers (Lcom/google/common/collect/Multimap;)V func_111147_b +MD net/minecraft/entity/ai/attributes/BaseAttributeMap registerAttribute (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; func_111150_b +MD net/minecraft/entity/ai/attributes/BaseAttributeMap func_180376_c (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/IAttributeInstance; func_180376_c +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance func_180375_b (I)Ljava/util/Collection; func_180375_b +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance flagForUpdate ()V func_111131_f +MD net/minecraft/entity/ai/attributes/ModifiableAttributeInstance computeValue ()D func_111129_g +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstanceSet ()Ljava/util/Set; func_111161_b +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstanceByName (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/ModifiableAttributeInstance; func_111152_a +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getWatchedAttributes ()Ljava/util/Collection; func_111160_c +MD net/minecraft/entity/ai/attributes/ServersideAttributeMap getAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttribute;)Lnet/minecraft/entity/ai/attributes/ModifiableAttributeInstance; func_111151_a +MD net/minecraft/entity/ai/attributes/RangedAttribute setDescription (Ljava/lang/String;)Lnet/minecraft/entity/ai/attributes/RangedAttribute; func_111117_a +MD net/minecraft/entity/ai/attributes/RangedAttribute getDescription ()Ljava/lang/String; func_111116_f +MD net/minecraft/entity/EntityBodyHelper updateRenderAngles ()V func_75664_a +MD net/minecraft/entity/EntityBodyHelper computeAngleWithBound (FFF)F func_75665_a +MD net/minecraft/entity/ai/EntityJumpHelper setJumping ()V func_75660_a +MD net/minecraft/entity/ai/EntityJumpHelper doJump ()V func_75661_b +MD net/minecraft/entity/ai/EntityLookHelper onUpdateLook ()V func_75649_a +MD net/minecraft/entity/ai/EntityLookHelper setLookPosition (DDDFF)V func_75650_a +MD net/minecraft/entity/ai/EntityLookHelper updateRotation (FFF)F func_75652_a +MD net/minecraft/entity/ai/EntityLookHelper setLookPositionWithEntity (Lnet/minecraft/entity/Entity;FF)V func_75651_a +MD net/minecraft/entity/ai/EntityLookHelper getIsLooking ()Z func_180424_b +MD net/minecraft/entity/ai/EntityLookHelper getLookPosX ()D func_180423_e +MD net/minecraft/entity/ai/EntityLookHelper getLookPosY ()D func_180422_f +MD net/minecraft/entity/ai/EntityLookHelper getLookPosZ ()D func_180421_g +MD net/minecraft/entity/ai/EntityMoveHelper isUpdating ()Z func_75640_a +MD net/minecraft/entity/ai/EntityMoveHelper setMoveTo (DDDD)V func_75642_a +MD net/minecraft/entity/ai/EntityMoveHelper limitAngle (FFF)F func_75639_a +MD net/minecraft/entity/ai/EntityMoveHelper getSpeed ()D func_75638_b +MD net/minecraft/entity/ai/EntityMoveHelper onUpdateMoveHelper ()V func_75641_c +MD net/minecraft/entity/ai/EntityMoveHelper getX ()D func_179917_d +MD net/minecraft/entity/ai/EntityMoveHelper getY ()D func_179919_e +MD net/minecraft/entity/ai/EntityMoveHelper getZ ()D func_179918_f +MD net/minecraft/entity/ai/EntityAIAvoidEntity$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/ai/EntityAIAvoidEntity$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAIBeg hasPlayerGotBoneInHand (Lnet/minecraft/entity/player/EntityPlayer;)Z func_75382_a +MD net/minecraft/entity/ai/EntityAIMate getNearbyMate ()Lnet/minecraft/entity/passive/EntityAnimal; func_75389_f +MD net/minecraft/entity/ai/EntityAIMate spawnBaby ()V func_75388_i +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isStairOrSlab (Lnet/minecraft/block/Block;)Z func_151498_a +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isSpeedBoosted ()Z func_82634_f +MD net/minecraft/entity/ai/EntityAIControlledByPlayer boostSpeed ()V func_82632_g +MD net/minecraft/entity/ai/EntityAIControlledByPlayer isControlledByPlayer ()Z func_82633_h +MD net/minecraft/entity/ai/EntityAIDoorInteract getBlockDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockDoor; func_179506_a +MD net/minecraft/entity/ai/EntityAIEatGrass getEatingGrassTimer ()I func_151499_f +MD net/minecraft/entity/ai/EntityAIFleeSun findPossibleShelter ()Lnet/minecraft/util/Vec3; func_75366_f +MD net/minecraft/entity/ai/EntityAIFollowOwner func_181065_a (Lnet/minecraft/util/BlockPos;)Z func_181065_a +MD net/minecraft/entity/ai/EntityAIBase shouldExecute ()Z func_75250_a +MD net/minecraft/entity/ai/EntityAIBase setMutexBits (I)V func_75248_a +MD net/minecraft/entity/ai/EntityAIBase continueExecuting ()Z func_75253_b +MD net/minecraft/entity/ai/EntityAIBase startExecuting ()V func_75249_e +MD net/minecraft/entity/ai/EntityAIBase resetTask ()V func_75251_c +MD net/minecraft/entity/ai/EntityAIBase updateTask ()V func_75246_d +MD net/minecraft/entity/ai/EntityAIBase isInterruptible ()Z func_75252_g +MD net/minecraft/entity/ai/EntityAIBase getMutexBits ()I func_75247_h +MD net/minecraft/entity/ai/EntityAITasks onUpdateTasks ()V func_75774_a +MD net/minecraft/entity/ai/EntityAITasks addTask (ILnet/minecraft/entity/ai/EntityAIBase;)V func_75776_a +MD net/minecraft/entity/ai/EntityAITasks removeTask (Lnet/minecraft/entity/ai/EntityAIBase;)V func_85156_a +MD net/minecraft/entity/ai/EntityAITasks canContinue (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z func_75773_a +MD net/minecraft/entity/ai/EntityAITasks areTasksCompatible (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z func_75777_a +MD net/minecraft/entity/ai/EntityAITasks canUse (Lnet/minecraft/entity/ai/EntityAITasks$EntityAITaskEntry;)Z func_75775_b +MD net/minecraft/entity/ai/EntityAIVillagerMate checkSufficientDoorsPresentForNewVillager ()Z func_75446_f +MD net/minecraft/entity/ai/EntityAIVillagerMate giveBirth ()V func_75447_i +MD net/minecraft/entity/ai/EntityAIAttackOnCollide func_179512_a (Lnet/minecraft/entity/EntityLivingBase;)D func_179512_a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage doesDoorListContain (Lnet/minecraft/village/VillageDoorInfo;)Z func_75413_a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage findNearestDoor (Lnet/minecraft/village/Village;)Lnet/minecraft/village/VillageDoorInfo; func_75412_a +MD net/minecraft/entity/ai/EntityAIMoveThroughVillage resizeDoorList ()V func_75414_f +MD net/minecraft/entity/ai/EntityAIMoveToBlock shouldMoveTo (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_179488_a +MD net/minecraft/entity/ai/EntityAIMoveToBlock getIsAboveDestination ()Z func_179487_f +MD net/minecraft/entity/ai/EntityAIMoveToBlock searchForDestination ()Z func_179489_g +MD net/minecraft/entity/ai/EntityAIWander setExecutionChance (I)V func_179479_b +MD net/minecraft/entity/ai/EntityAIWander makeUpdate ()V func_179480_f +MD net/minecraft/entity/ai/EntityAISit setSitting (Z)V func_75270_a +MD net/minecraft/entity/ai/EntityAITempt isRunning ()Z func_75277_f +MD net/minecraft/entity/ai/EntityAIHurtByTarget setEntityAttackTarget (Lnet/minecraft/entity/EntityCreature;Lnet/minecraft/entity/EntityLivingBase;)V func_179446_a +MD net/minecraft/entity/ai/EntityAIFindEntityNearest access$000 (Lnet/minecraft/entity/ai/EntityAIFindEntityNearest;)Lnet/minecraft/entity/EntityLiving; access$000 +MD net/minecraft/entity/ai/EntityAIFindEntityNearest getFollowRange ()D func_179438_f +MD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z apply +MD net/minecraft/entity/ai/EntityAIFindEntityNearest$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer access$000 (Lnet/minecraft/entity/ai/EntityAIFindEntityNearestPlayer;)Lnet/minecraft/entity/EntityLiving; access$000 +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer maxTargetRange ()D func_179431_f +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/ai/EntityAIFindEntityNearestPlayer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z apply +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter compare (Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;)I compare +MD net/minecraft/entity/ai/EntityAINearestAttackableTarget$Sorter compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/entity/ai/EntityAITarget canEasilyReach (Lnet/minecraft/entity/EntityLivingBase;)Z func_75295_a +MD net/minecraft/entity/ai/EntityAITarget isSuitableTarget (Lnet/minecraft/entity/EntityLivingBase;Z)Z func_75296_a +MD net/minecraft/entity/ai/EntityAITarget isSuitableTarget (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/entity/EntityLivingBase;ZZ)Z func_179445_a +MD net/minecraft/entity/ai/EntityAITarget getTargetDistance ()D func_111175_f +MD net/minecraft/pathfinding/PathNavigateGround isSafeToStandAt (IIIIIILnet/minecraft/util/Vec3;DD)Z func_179683_a +MD net/minecraft/pathfinding/PathNavigateGround setAvoidsWater (Z)V func_179690_a +MD net/minecraft/pathfinding/PathNavigateGround isPositionClear (IIIIIILnet/minecraft/util/Vec3;DD)Z func_179692_b +MD net/minecraft/pathfinding/PathNavigateGround setBreakDoors (Z)V func_179688_b +MD net/minecraft/pathfinding/PathNavigateGround setEnterDoors (Z)V func_179691_c +MD net/minecraft/pathfinding/PathNavigateGround setCanSwim (Z)V func_179693_d +MD net/minecraft/pathfinding/PathNavigateGround getAvoidsWater ()Z func_179689_e +MD net/minecraft/pathfinding/PathNavigateGround setAvoidSun (Z)V func_179685_e +MD net/minecraft/pathfinding/PathNavigateGround getEnterDoors ()Z func_179686_g +MD net/minecraft/pathfinding/PathNavigateGround getCanSwim ()Z func_179684_h +MD net/minecraft/pathfinding/PathNavigateGround getPathablePosY ()I func_179687_p +MD net/minecraft/pathfinding/PathNavigate getPathFinder ()Lnet/minecraft/pathfinding/PathFinder; func_179679_a +MD net/minecraft/pathfinding/PathNavigate setSpeed (D)V func_75489_a +MD net/minecraft/pathfinding/PathNavigate getPathToXYZ (DDD)Lnet/minecraft/pathfinding/PathEntity; func_75488_a +MD net/minecraft/pathfinding/PathNavigate tryMoveToXYZ (DDDD)Z func_75492_a +MD net/minecraft/pathfinding/PathNavigate setHeightRequirement (F)V func_179678_a +MD net/minecraft/pathfinding/PathNavigate setPath (Lnet/minecraft/pathfinding/PathEntity;D)Z func_75484_a +MD net/minecraft/pathfinding/PathNavigate checkForStuck (Lnet/minecraft/util/Vec3;)V func_179677_a +MD net/minecraft/pathfinding/PathNavigate isDirectPathBetweenPoints (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;III)Z func_75493_a +MD net/minecraft/pathfinding/PathNavigate getPathToPos (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/pathfinding/PathEntity; func_179680_a +MD net/minecraft/pathfinding/PathNavigate getPathToEntityLiving (Lnet/minecraft/entity/Entity;)Lnet/minecraft/pathfinding/PathEntity; func_75494_a +MD net/minecraft/pathfinding/PathNavigate tryMoveToEntityLiving (Lnet/minecraft/entity/Entity;D)Z func_75497_a +MD net/minecraft/pathfinding/PathNavigate canNavigate ()Z func_75485_k +MD net/minecraft/pathfinding/PathNavigate getEntityPosition ()Lnet/minecraft/util/Vec3; func_75502_i +MD net/minecraft/pathfinding/PathNavigate removeSunnyPath ()V func_75487_m +MD net/minecraft/pathfinding/PathNavigate getPathSearchRange ()F func_111269_d +MD net/minecraft/pathfinding/PathNavigate getPath ()Lnet/minecraft/pathfinding/PathEntity; func_75505_d +MD net/minecraft/pathfinding/PathNavigate onUpdateNavigation ()V func_75501_e +MD net/minecraft/pathfinding/PathNavigate pathFollow ()V func_75508_h +MD net/minecraft/pathfinding/PathNavigate noPath ()Z func_75500_f +MD net/minecraft/pathfinding/PathNavigate clearPathEntity ()V func_75499_g +MD net/minecraft/pathfinding/PathNavigate isInLiquid ()Z func_75506_l +MD net/minecraft/entity/ai/EntitySenses clearSensingCache ()V func_75523_a +MD net/minecraft/entity/ai/EntitySenses canSee (Lnet/minecraft/entity/Entity;)Z func_75522_a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTarget (Lnet/minecraft/entity/EntityCreature;II)Lnet/minecraft/util/Vec3; func_75463_a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlockTowards (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_75464_a +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlockAwayFrom (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_75461_b +MD net/minecraft/entity/ai/RandomPositionGenerator findRandomTargetBlock (Lnet/minecraft/entity/EntityCreature;IILnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_75462_c +MD net/minecraft/village/VillageDoorInfo resetDoorOpeningRestrictionCounter ()V func_75466_d +MD net/minecraft/village/VillageDoorInfo func_179849_a (I)V func_179849_a +MD net/minecraft/village/VillageDoorInfo getFaceDirection (II)Lnet/minecraft/util/EnumFacing; func_179854_a +MD net/minecraft/village/VillageDoorInfo getDistanceToDoorBlockSq (Lnet/minecraft/util/BlockPos;)I func_179848_a +MD net/minecraft/village/VillageDoorInfo setIsDetachedFromVillageFlag (Z)V func_179853_a +MD net/minecraft/village/VillageDoorInfo incrementDoorOpeningRestrictionCounter ()V func_75470_e +MD net/minecraft/village/VillageDoorInfo getDistanceSquared (III)I func_75474_b +MD net/minecraft/village/VillageDoorInfo getDistanceToInsideBlockSq (Lnet/minecraft/util/BlockPos;)I func_179846_b +MD net/minecraft/village/VillageDoorInfo getDoorOpeningRestrictionCounter ()I func_75468_f +MD net/minecraft/village/VillageDoorInfo func_179850_c (Lnet/minecraft/util/BlockPos;)Z func_179850_c +MD net/minecraft/village/VillageDoorInfo getDoorBlockPos ()Lnet/minecraft/util/BlockPos; func_179852_d +MD net/minecraft/village/VillageDoorInfo getInsideBlockPos ()Lnet/minecraft/util/BlockPos; func_179856_e +MD net/minecraft/village/VillageDoorInfo getInsideOffsetX ()I func_179847_f +MD net/minecraft/village/VillageDoorInfo getInsideOffsetZ ()I func_179855_g +MD net/minecraft/village/VillageDoorInfo getInsidePosY ()I func_75473_b +MD net/minecraft/village/VillageDoorInfo getIsDetachedFromVillageFlag ()Z func_179851_i +MD net/minecraft/village/Village getCenter ()Lnet/minecraft/util/BlockPos; func_180608_a +MD net/minecraft/village/Village tick (I)V func_75560_a +MD net/minecraft/village/Village setWorld (Lnet/minecraft/world/World;)V func_82691_a +MD net/minecraft/village/Village func_179866_a (Lnet/minecraft/util/BlockPos;)Z func_179866_a +MD net/minecraft/village/Village func_179862_a (Lnet/minecraft/util/BlockPos;III)Lnet/minecraft/util/Vec3; func_179862_a +MD net/minecraft/village/Village func_179861_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Z func_179861_a +MD net/minecraft/village/Village readVillageDataFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_82690_a +MD net/minecraft/village/Village getReputationForPlayer (Ljava/lang/String;)I func_82684_a +MD net/minecraft/village/Village setReputationForPlayer (Ljava/lang/String;I)I func_82688_a +MD net/minecraft/village/Village addOrRenewAgressor (Lnet/minecraft/entity/EntityLivingBase;)V func_75575_a +MD net/minecraft/village/Village addVillageDoorInfo (Lnet/minecraft/village/VillageDoorInfo;)V func_75576_a +MD net/minecraft/village/Village getVillageRadius ()I func_75568_b +MD net/minecraft/village/Village setDefaultPlayerReputation (I)V func_82683_b +MD net/minecraft/village/Village getNearestDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; func_179865_b +MD net/minecraft/village/Village writeVillageDataToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_82689_b +MD net/minecraft/village/Village findNearestVillageAggressor (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/entity/EntityLivingBase; func_75571_b +MD net/minecraft/village/Village getNumVillageDoors ()I func_75567_c +MD net/minecraft/village/Village getDoorInfo (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; func_179863_c +MD net/minecraft/village/Village getNearestTargetPlayer (Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/entity/player/EntityPlayer; func_82685_c +MD net/minecraft/village/Village getTicksSinceLastDoorAdding ()I func_75561_d +MD net/minecraft/village/Village isPlayerReputationTooLow (Ljava/lang/String;)Z func_82687_d +MD net/minecraft/village/Village getNumVillagers ()I func_75562_e +MD net/minecraft/village/Village getExistedDoor (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; func_179864_e +MD net/minecraft/village/Village getVillageDoorInfoList ()Ljava/util/List; func_75558_f +MD net/minecraft/village/Village isWoodDoor (Lnet/minecraft/util/BlockPos;)Z func_179860_f +MD net/minecraft/village/Village isAnnihilated ()Z func_75566_g +MD net/minecraft/village/Village endMatingSeason ()V func_82692_h +MD net/minecraft/village/Village isMatingSeason ()Z func_82686_i +MD net/minecraft/village/Village updateNumIronGolems ()V func_75579_h +MD net/minecraft/village/Village updateNumVillagers ()V func_75572_i +MD net/minecraft/village/Village removeDeadAndOldAgressors ()V func_75565_j +MD net/minecraft/village/Village removeDeadAndOutOfRangeDoors ()V func_75557_k +MD net/minecraft/village/Village updateVillageRadiusAndCenter ()V func_75573_l +MD net/minecraft/village/VillageSiege tick ()V func_75528_a +MD net/minecraft/village/VillageSiege func_179867_a (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/Vec3; func_179867_a +MD net/minecraft/village/VillageSiege func_75529_b ()Z func_75529_b +MD net/minecraft/village/VillageSiege spawnZombie ()Z func_75530_c +MD net/minecraft/village/VillageCollection tick ()V func_75544_a +MD net/minecraft/village/VillageCollection setWorldsForAll (Lnet/minecraft/world/World;)V func_82566_a +MD net/minecraft/village/VillageCollection fileNameForProvider (Lnet/minecraft/world/WorldProvider;)Ljava/lang/String; func_176062_a +MD net/minecraft/village/VillageCollection addToVillagerPositionList (Lnet/minecraft/util/BlockPos;)V func_176060_a +MD net/minecraft/village/VillageCollection getNearestVillage (Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/village/Village; func_176056_a +MD net/minecraft/village/VillageCollection countBlocksCanSeeSky (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;I)I func_176061_a +MD net/minecraft/village/VillageCollection getVillageList ()Ljava/util/List; func_75540_b +MD net/minecraft/village/VillageCollection addDoorsAround (Lnet/minecraft/util/BlockPos;)V func_180609_b +MD net/minecraft/village/VillageCollection checkDoorExistence (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/village/VillageDoorInfo; func_176055_c +MD net/minecraft/village/VillageCollection addToNewDoorsList (Lnet/minecraft/util/BlockPos;)V func_176059_d +MD net/minecraft/village/VillageCollection removeAnnihilatedVillages ()V func_75549_c +MD net/minecraft/village/VillageCollection positionInList (Lnet/minecraft/util/BlockPos;)Z func_176057_e +MD net/minecraft/village/VillageCollection dropOldestVillagerPosition ()V func_75543_d +MD net/minecraft/village/VillageCollection isWoodDoor (Lnet/minecraft/util/BlockPos;)Z func_176058_f +MD net/minecraft/village/VillageCollection addNewDoorsToVillageOrCreateVillage ()V func_75545_e +MD net/minecraft/entity/passive/EntityBat isDateAroundHalloween (Ljava/util/Calendar;)Z func_175569_a +MD net/minecraft/entity/passive/EntityBat setIsBatHanging (Z)V func_82236_f +MD net/minecraft/entity/passive/EntityBat getIsBatHanging ()Z func_82235_h +MD net/minecraft/entity/passive/EntityAnimal canMateWith (Lnet/minecraft/entity/passive/EntityAnimal;)Z func_70878_b +MD net/minecraft/entity/passive/EntityAnimal consumeItemFromStack (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V func_175505_a +MD net/minecraft/entity/passive/EntityAnimal setInLove (Lnet/minecraft/entity/player/EntityPlayer;)V func_146082_f +MD net/minecraft/entity/passive/EntityAnimal getPlayerInLove ()Lnet/minecraft/entity/player/EntityPlayer; func_146083_cb +MD net/minecraft/entity/passive/EntityAnimal isInLove ()Z func_70880_s +MD net/minecraft/entity/passive/EntityAnimal resetInLove ()V func_70875_t +MD net/minecraft/entity/passive/EntityAnimal isBreedingItem (Lnet/minecraft/item/ItemStack;)Z func_70877_b +MD net/minecraft/entity/passive/EntityChicken createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityChicken; func_90011_a +MD net/minecraft/entity/passive/EntityChicken isChickenJockey ()Z func_152116_bZ +MD net/minecraft/entity/passive/EntityChicken setChickenJockey (Z)V func_152117_i +MD net/minecraft/entity/passive/EntityCow createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityCow; func_90011_a +MD net/minecraft/entity/passive/EntityHorse getClosestHorse (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/entity/passive/EntityHorse; func_110250_a +MD net/minecraft/entity/passive/EntityHorse dropItemsInChest (Lnet/minecraft/entity/Entity;Lnet/minecraft/inventory/AnimalChest;)V func_110240_a +MD net/minecraft/entity/passive/EntityHorse isArmorItem (Lnet/minecraft/item/Item;)Z func_146085_a +MD net/minecraft/entity/passive/EntityHorse setOwnerId (Ljava/lang/String;)V func_152120_b +MD net/minecraft/entity/passive/EntityHorse setHorseWatchableBoolean (IZ)V func_110208_b +MD net/minecraft/entity/passive/EntityHorse isBreeding ()Z func_110205_ce +MD net/minecraft/entity/passive/EntityHorse getHasReproduced ()Z func_110243_cf +MD net/minecraft/entity/passive/EntityHorse getTemper ()I func_110252_cg +MD net/minecraft/entity/passive/EntityHorse prepareChunkForSpawn ()Z func_110262_ch +MD net/minecraft/entity/passive/EntityHorse dropChests ()V func_110224_ci +MD net/minecraft/entity/passive/EntityHorse getHorseJumpStrength ()D func_110215_cj +MD net/minecraft/entity/passive/EntityHorse isHorseSaddled ()Z func_110257_ck +MD net/minecraft/entity/passive/EntityHorse getAngrySoundName ()Ljava/lang/String; func_110217_cl +MD net/minecraft/entity/passive/EntityHorse getMaxTemper ()I func_110218_cm +MD net/minecraft/entity/passive/EntityHorse func_110239_cn ()Z func_110239_cn +MD net/minecraft/entity/passive/EntityHorse func_175507_cI ()Z func_175507_cI +MD net/minecraft/entity/passive/EntityHorse getHorseTexture ()Ljava/lang/String; func_110264_co +MD net/minecraft/entity/passive/EntityHorse getVariantTexturePaths ()[Ljava/lang/String; func_110212_cp +MD net/minecraft/entity/passive/EntityHorse canWearArmor ()Z func_110259_cr +MD net/minecraft/entity/passive/EntityHorse canCarryChest ()Z func_110229_cs +MD net/minecraft/entity/passive/EntityHorse isUndead ()Z func_110256_cu +MD net/minecraft/entity/passive/EntityHorse isSterile ()Z func_110222_cv +MD net/minecraft/entity/passive/EntityHorse makeHorseRearWithSound ()V func_110231_cz +MD net/minecraft/entity/passive/EntityHorse dropChestItems ()V func_110244_cA +MD net/minecraft/entity/passive/EntityHorse func_110266_cB ()V func_110266_cB +MD net/minecraft/entity/passive/EntityHorse getChestSize ()I func_110225_cC +MD net/minecraft/entity/passive/EntityHorse getHorseType ()I func_110265_bP +MD net/minecraft/entity/passive/EntityHorse getHorseVariant ()I func_110202_bQ +MD net/minecraft/entity/passive/EntityHorse isAdultHorse ()Z func_110228_bR +MD net/minecraft/entity/passive/EntityHorse isTame ()Z func_110248_bS +MD net/minecraft/entity/passive/EntityHorse func_110253_bW ()Z func_110253_bW +MD net/minecraft/entity/passive/EntityHorse getOwnerId ()Ljava/lang/String; func_152119_ch +MD net/minecraft/entity/passive/EntityHorse getHorseSize ()F func_110254_bY +MD net/minecraft/entity/passive/EntityHorse isHorseJumping ()Z func_110246_bZ +MD net/minecraft/entity/passive/EntityHorse isChested ()Z func_110261_ca +MD net/minecraft/entity/passive/EntityHorse getHorseArmorIndexSynced ()I func_110241_cb +MD net/minecraft/entity/passive/EntityHorse isEatingHaystack ()Z func_110204_cc +MD net/minecraft/entity/passive/EntityHorse isRearing ()Z func_110209_cd +MD net/minecraft/entity/passive/EntityHorse initHorseChest ()V func_110226_cD +MD net/minecraft/entity/passive/EntityHorse updateHorseSlots ()V func_110232_cE +MD net/minecraft/entity/passive/EntityHorse resetTexturePrefix ()V func_110230_cF +MD net/minecraft/entity/passive/EntityHorse setHorseTexturePaths ()V func_110247_cG +MD net/minecraft/entity/passive/EntityHorse func_110210_cH ()V func_110210_cH +MD net/minecraft/entity/passive/EntityHorse openHorseMouth ()V func_110249_cI +MD net/minecraft/entity/passive/EntityHorse canMate ()Z func_110200_cJ +MD net/minecraft/entity/passive/EntityHorse makeHorseRear ()V func_110220_cK +MD net/minecraft/entity/passive/EntityHorse getModifiedMaxHealth ()F func_110267_cL +MD net/minecraft/entity/passive/EntityHorse getModifiedJumpStrength ()D func_110245_cM +MD net/minecraft/entity/passive/EntityHorse getModifiedMovementSpeed ()D func_110203_cN +MD net/minecraft/entity/passive/EntityHorse setHorseArmorStack (Lnet/minecraft/item/ItemStack;)V func_146086_d +MD net/minecraft/entity/passive/EntityHorse getHorseArmorIndex (Lnet/minecraft/item/ItemStack;)I func_110260_d +MD net/minecraft/entity/passive/EntityHorse openGUI (Lnet/minecraft/entity/player/EntityPlayer;)V func_110199_f +MD net/minecraft/entity/passive/EntityHorse setTamedBy (Lnet/minecraft/entity/player/EntityPlayer;)Z func_110263_g +MD net/minecraft/entity/passive/EntityHorse mountTo (Lnet/minecraft/entity/player/EntityPlayer;)V func_110237_h +MD net/minecraft/entity/passive/EntityHorse setHorseTamed (Z)V func_110234_j +MD net/minecraft/entity/passive/EntityHorse setHorseJumping (Z)V func_110255_k +MD net/minecraft/entity/passive/EntityHorse setBreeding (Z)V func_110242_l +MD net/minecraft/entity/passive/EntityHorse setChested (Z)V func_110207_m +MD net/minecraft/entity/passive/EntityHorse getGrassEatingAmount (F)F func_110258_o +MD net/minecraft/entity/passive/EntityHorse setHasReproduced (Z)V func_110221_n +MD net/minecraft/entity/passive/EntityHorse getRearingAmount (F)F func_110223_p +MD net/minecraft/entity/passive/EntityHorse setHorseSaddled (Z)V func_110251_o +MD net/minecraft/entity/passive/EntityHorse getMouthOpennessAngle (F)F func_110201_q +MD net/minecraft/entity/passive/EntityHorse setHorseType (I)V func_110214_p +MD net/minecraft/entity/passive/EntityHorse setEatingHaystack (Z)V func_110227_p +MD net/minecraft/entity/passive/EntityHorse setHorseVariant (I)V func_110235_q +MD net/minecraft/entity/passive/EntityHorse setRearing (Z)V func_110219_q +MD net/minecraft/entity/passive/EntityHorse setTemper (I)V func_110238_s +MD net/minecraft/entity/passive/EntityHorse spawnHorseParticles (Z)V func_110216_r +MD net/minecraft/entity/passive/EntityHorse increaseTemper (I)I func_110198_t +MD net/minecraft/entity/passive/EntityHorse setJumpPower (I)V func_110206_u +MD net/minecraft/entity/passive/EntityHorse getHorseWatchableBoolean (I)Z func_110233_w +MD net/minecraft/entity/passive/EntityHorse$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/passive/EntityHorse$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/passive/EntityMooshroom createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityMooshroom; func_90011_a +MD net/minecraft/entity/passive/EntityOcelot createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityOcelot; func_90011_a +MD net/minecraft/entity/passive/EntityOcelot getTameSkin ()I func_70913_u +MD net/minecraft/entity/passive/EntityOcelot setTameSkin (I)V func_70912_b +MD net/minecraft/entity/passive/EntityPig createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityPig; func_90011_a +MD net/minecraft/entity/passive/EntityPig getSaddled ()Z func_70901_n +MD net/minecraft/entity/passive/EntityPig getAIControlledByPlayer ()Lnet/minecraft/entity/ai/EntityAIControlledByPlayer; func_82183_n +MD net/minecraft/entity/passive/EntityPig setSaddled (Z)V func_70900_e +MD net/minecraft/entity/passive/EntityRabbit calculateRotationYaw (DD)V func_175533_a +MD net/minecraft/entity/passive/EntityRabbit setMoveType (Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V func_175522_a +MD net/minecraft/entity/passive/EntityRabbit access$000 (Lnet/minecraft/entity/passive/EntityRabbit;)Z access$000 +MD net/minecraft/entity/passive/EntityRabbit isRabbitBreedingItem (Lnet/minecraft/item/Item;)Z func_175525_a +MD net/minecraft/entity/passive/EntityRabbit setJumping (ZLnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V func_175519_a +MD net/minecraft/entity/passive/EntityRabbit setMovementSpeed (D)V func_175515_b +MD net/minecraft/entity/passive/EntityRabbit createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityRabbit; func_90011_a +MD net/minecraft/entity/passive/EntityRabbit doMovementAction (Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType;)V func_175524_b +MD net/minecraft/entity/passive/EntityRabbit func_175523_cj ()Z func_175523_cj +MD net/minecraft/entity/passive/EntityRabbit getJumpingSound ()Ljava/lang/String; func_175516_ck +MD net/minecraft/entity/passive/EntityRabbit getRabbitType ()I func_175531_cl +MD net/minecraft/entity/passive/EntityRabbit getMoveTypeDuration ()I func_175532_cm +MD net/minecraft/entity/passive/EntityRabbit createEatingParticles ()V func_175528_cn +MD net/minecraft/entity/passive/EntityRabbit func_175518_cr ()V func_175518_cr +MD net/minecraft/entity/passive/EntityRabbit func_175520_cs ()V func_175520_cs +MD net/minecraft/entity/passive/EntityRabbit updateMoveTypeDuration ()V func_175530_ct +MD net/minecraft/entity/passive/EntityRabbit func_175517_cu ()V func_175517_cu +MD net/minecraft/entity/passive/EntityRabbit isCarrotEaten ()Z func_175534_cv +MD net/minecraft/entity/passive/EntityRabbit func_175521_o (F)F func_175521_o +MD net/minecraft/entity/passive/EntityRabbit setRabbitType (I)V func_175529_r +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType getSpeed ()F func_180072_a +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType func_180074_b ()F func_180074_b +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType getDuration ()I func_180075_c +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType func_180073_d ()I func_180073_d +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType; valueOf +MD net/minecraft/entity/passive/EntityRabbit$EnumMoveType values ()[Lnet/minecraft/entity/passive/EntityRabbit$EnumMoveType; values +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper func_180066_a (Z)V func_180066_a +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper getIsJumping ()Z func_180067_c +MD net/minecraft/entity/passive/EntityRabbit$RabbitJumpHelper func_180065_d ()Z func_180065_d +MD net/minecraft/entity/passive/EntitySheep getRandomSheepColor (Ljava/util/Random;)Lnet/minecraft/item/EnumDyeColor; func_175510_a +MD net/minecraft/entity/passive/EntitySheep getDyeColorMixFromParents (Lnet/minecraft/entity/passive/EntityAnimal;Lnet/minecraft/entity/passive/EntityAnimal;)Lnet/minecraft/item/EnumDyeColor; func_175511_a +MD net/minecraft/entity/passive/EntitySheep getDyeRgb (Lnet/minecraft/item/EnumDyeColor;)[F func_175513_a +MD net/minecraft/entity/passive/EntitySheep createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntitySheep; func_90011_a +MD net/minecraft/entity/passive/EntitySheep setFleeceColor (Lnet/minecraft/item/EnumDyeColor;)V func_175512_b +MD net/minecraft/entity/passive/EntitySheep getFleeceColor ()Lnet/minecraft/item/EnumDyeColor; func_175509_cj +MD net/minecraft/entity/passive/EntitySheep getSheared ()Z func_70892_o +MD net/minecraft/entity/passive/EntitySheep setSheared (Z)V func_70893_e +MD net/minecraft/entity/passive/EntitySheep getHeadRotationPointY (F)F func_70894_j +MD net/minecraft/entity/passive/EntitySheep getHeadRotationAngleX (F)F func_70890_k +MD net/minecraft/entity/passive/EntitySquid access$000 (Lnet/minecraft/entity/passive/EntitySquid;)Z access$000 +MD net/minecraft/entity/passive/EntitySquid func_175568_b (FFF)V func_175568_b +MD net/minecraft/entity/passive/EntitySquid func_175567_n ()Z func_175567_n +MD net/minecraft/entity/monster/EntityIronGolem setHoldingRose (Z)V func_70851_e +MD net/minecraft/entity/monster/EntityIronGolem getAttackTimer ()I func_70854_o +MD net/minecraft/entity/monster/EntityIronGolem getHoldRoseTick ()I func_70853_p +MD net/minecraft/entity/monster/EntityIronGolem isPlayerCreated ()Z func_70850_q +MD net/minecraft/entity/monster/EntityIronGolem setPlayerCreated (Z)V func_70849_f +MD net/minecraft/entity/monster/EntityIronGolem getVillage ()Lnet/minecraft/village/Village; func_70852_n +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper access$000 (Lnet/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper;)D access$000 +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper access$100 (Lnet/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper;Lnet/minecraft/entity/EntityLivingBase;Z)Z access$100 +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 apply (Lnet/minecraft/entity/EntityLivingBase;)Z apply +MD net/minecraft/entity/monster/EntityIronGolem$AINearestAttackableTargetNonCreeper$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/passive/EntityWolf setCollarColor (Lnet/minecraft/item/EnumDyeColor;)V func_175547_a +MD net/minecraft/entity/passive/EntityWolf createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityWolf; func_90011_a +MD net/minecraft/entity/passive/EntityWolf isWolfWet ()Z func_70921_u +MD net/minecraft/entity/passive/EntityWolf getTailRotation ()F func_70920_v +MD net/minecraft/entity/passive/EntityWolf isAngry ()Z func_70919_bu +MD net/minecraft/entity/passive/EntityWolf getCollarColor ()Lnet/minecraft/item/EnumDyeColor; func_175546_cu +MD net/minecraft/entity/passive/EntityWolf isBegging ()Z func_70922_bv +MD net/minecraft/entity/passive/EntityWolf getShakeAngle (FF)F func_70923_f +MD net/minecraft/entity/passive/EntityWolf setAngry (Z)V func_70916_h +MD net/minecraft/entity/passive/EntityWolf getShadingWhileWet (F)F func_70915_j +MD net/minecraft/entity/passive/EntityWolf setBegging (Z)V func_70918_i +MD net/minecraft/entity/passive/EntityWolf getInterestedAngle (F)F func_70917_k +MD net/minecraft/entity/passive/EntityWolf$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/passive/EntityWolf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/boss/IBossDisplayData getHealth ()F func_110143_aJ +MD net/minecraft/entity/boss/IBossDisplayData getMaxHealth ()F func_110138_aP +MD net/minecraft/entity/boss/IBossDisplayData getDisplayName ()Lnet/minecraft/util/IChatComponent; func_145748_c_ +MD net/minecraft/entity/IEntityMultiPart getWorld ()Lnet/minecraft/world/World; func_82194_d +MD net/minecraft/entity/IEntityMultiPart attackEntityFromPart (Lnet/minecraft/entity/boss/EntityDragonPart;Lnet/minecraft/util/DamageSource;F)Z func_70965_a +MD net/minecraft/entity/boss/EntityDragon generatePortal (Lnet/minecraft/util/BlockPos;)V func_175499_a +MD net/minecraft/entity/boss/EntityDragon collideWithEntities (Ljava/util/List;)V func_70970_a +MD net/minecraft/entity/boss/EntityDragon simplifyAngle (D)F func_70973_b +MD net/minecraft/entity/boss/EntityDragon getMovementOffsets (IF)[D func_70974_a +MD net/minecraft/entity/boss/EntityDragon destroyBlocksInAABB (Lnet/minecraft/util/AxisAlignedBB;)Z func_70972_a +MD net/minecraft/entity/boss/EntityDragon attackEntitiesInList (Ljava/util/List;)V func_70971_b +MD net/minecraft/entity/boss/EntityDragon setNewTarget ()V func_70967_k +MD net/minecraft/entity/boss/EntityDragon attackDragonFrom (Lnet/minecraft/util/DamageSource;F)Z func_82195_e +MD net/minecraft/entity/boss/EntityDragon updateDragonEnderCrystal ()V func_70969_j +MD net/minecraft/entity/boss/EntityWither func_82207_a (I)F func_82207_a +MD net/minecraft/entity/boss/EntityWither launchWitherSkullToCoords (IDDDZ)V func_82209_a +MD net/minecraft/entity/boss/EntityWither launchWitherSkullToEntity (ILnet/minecraft/entity/EntityLivingBase;)V func_82216_a +MD net/minecraft/entity/boss/EntityWither canDestroyBlock (Lnet/minecraft/block/Block;)Z func_181033_a +MD net/minecraft/entity/boss/EntityWither func_82204_b (FFF)F func_82204_b +MD net/minecraft/entity/boss/EntityWither func_82210_r (I)F func_82210_r +MD net/minecraft/entity/boss/EntityWither updateWatchedTargetId (II)V func_82211_c +MD net/minecraft/entity/boss/EntityWither getInvulTime ()I func_82212_n +MD net/minecraft/entity/boss/EntityWither isArmored ()Z func_82205_o +MD net/minecraft/entity/boss/EntityWither func_82206_m ()V func_82206_m +MD net/minecraft/entity/boss/EntityWither setInvulTime (I)V func_82215_s +MD net/minecraft/entity/boss/EntityWither getWatchedTargetId (I)I func_82203_t +MD net/minecraft/entity/boss/EntityWither func_82214_u (I)D func_82214_u +MD net/minecraft/entity/boss/EntityWither func_82208_v (I)D func_82208_v +MD net/minecraft/entity/boss/EntityWither func_82213_w (I)D func_82213_w +MD net/minecraft/entity/boss/EntityWither$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/boss/EntityWither$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/item/EntityArmorStand playParticles ()V func_175412_z +MD net/minecraft/entity/item/EntityArmorStand dropBlock ()V func_175421_A +MD net/minecraft/entity/item/EntityArmorStand dropContents ()V func_175409_C +MD net/minecraft/entity/item/EntityArmorStand damageArmorStand (F)V func_175406_a +MD net/minecraft/entity/item/EntityArmorStand setHeadRotation (Lnet/minecraft/util/Rotations;)V func_175415_a +MD net/minecraft/entity/item/EntityArmorStand func_175422_a (Lnet/minecraft/entity/player/EntityPlayer;I)V func_175422_a +MD net/minecraft/entity/item/EntityArmorStand func_181550_a (Z)V func_181550_a +MD net/minecraft/entity/item/EntityArmorStand setBodyRotation (Lnet/minecraft/util/Rotations;)V func_175424_b +MD net/minecraft/entity/item/EntityArmorStand setLeftArmRotation (Lnet/minecraft/util/Rotations;)V func_175405_c +MD net/minecraft/entity/item/EntityArmorStand setRightArmRotation (Lnet/minecraft/util/Rotations;)V func_175428_d +MD net/minecraft/entity/item/EntityArmorStand setLeftLegRotation (Lnet/minecraft/util/Rotations;)V func_175417_e +MD net/minecraft/entity/item/EntityArmorStand setRightLegRotation (Lnet/minecraft/util/Rotations;)V func_175427_f +MD net/minecraft/entity/item/EntityArmorStand writePoseToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_175416_h +MD net/minecraft/entity/item/EntityArmorStand setSmall (Z)V func_175420_a +MD net/minecraft/entity/item/EntityArmorStand setNoGravity (Z)V func_175425_j +MD net/minecraft/entity/item/EntityArmorStand setShowArms (Z)V func_175413_k +MD net/minecraft/entity/item/EntityArmorStand setNoBasePlate (Z)V func_175426_l +MD net/minecraft/entity/item/EntityArmorStand isSmall ()Z func_175410_n +MD net/minecraft/entity/item/EntityArmorStand setMarker (Z)V func_181027_m +MD net/minecraft/entity/item/EntityArmorStand hasNoGravity ()Z func_175423_p +MD net/minecraft/entity/item/EntityArmorStand getShowArms ()Z func_175402_q +MD net/minecraft/entity/item/EntityArmorStand hasNoBasePlate ()Z func_175414_r +MD net/minecraft/entity/item/EntityArmorStand hasMarker ()Z func_181026_s +MD net/minecraft/entity/item/EntityArmorStand getHeadRotation ()Lnet/minecraft/util/Rotations; func_175418_s +MD net/minecraft/entity/item/EntityArmorStand getBodyRotation ()Lnet/minecraft/util/Rotations; func_175408_t +MD net/minecraft/entity/item/EntityArmorStand getLeftArmRotation ()Lnet/minecraft/util/Rotations; func_175404_u +MD net/minecraft/entity/item/EntityArmorStand getRightArmRotation ()Lnet/minecraft/util/Rotations; func_175411_v +MD net/minecraft/entity/item/EntityArmorStand getLeftLegRotation ()Lnet/minecraft/util/Rotations; func_175403_w +MD net/minecraft/entity/item/EntityArmorStand getRightLegRotation ()Lnet/minecraft/util/Rotations; func_175407_x +MD net/minecraft/entity/item/EntityArmorStand readPoseFromNBT ()Lnet/minecraft/nbt/NBTTagCompound; func_175419_y +MD net/minecraft/entity/EntityHanging func_174858_a (I)D func_174858_a +MD net/minecraft/entity/EntityHanging updateFacingWithBoundingBox (Lnet/minecraft/util/EnumFacing;)V func_174859_a +MD net/minecraft/entity/EntityHanging onBroken (Lnet/minecraft/entity/Entity;)V func_110128_b +MD net/minecraft/entity/EntityHanging onValidSurface ()Z func_70518_d +MD net/minecraft/entity/EntityHanging getWidthPixels ()I func_82329_d +MD net/minecraft/entity/EntityHanging getHeightPixels ()I func_82330_g +MD net/minecraft/entity/EntityHanging getHangingPosition ()Lnet/minecraft/util/BlockPos; func_174857_n +MD net/minecraft/entity/EntityHanging updateBoundingBox ()V func_174856_o +MD net/minecraft/entity/item/EntityItemFrame setItemRotation (I)V func_82336_g +MD net/minecraft/entity/item/EntityItemFrame func_174865_a (IZ)V func_174865_a +MD net/minecraft/entity/item/EntityItemFrame dropItemOrSelf (Lnet/minecraft/entity/Entity;Z)V func_146065_b +MD net/minecraft/entity/item/EntityItemFrame setDisplayedItem (Lnet/minecraft/item/ItemStack;)V func_82334_a +MD net/minecraft/entity/item/EntityItemFrame setDisplayedItemWithUpdate (Lnet/minecraft/item/ItemStack;Z)V func_174864_a +MD net/minecraft/entity/item/EntityItemFrame removeFrameFromMap (Lnet/minecraft/item/ItemStack;)V func_110131_b +MD net/minecraft/entity/item/EntityItemFrame getDisplayedItem ()Lnet/minecraft/item/ItemStack; func_82335_i +MD net/minecraft/entity/item/EntityItemFrame getRotation ()I func_82333_j +MD net/minecraft/entity/item/EntityItemFrame func_174866_q ()I func_174866_q +MD net/minecraft/entity/EntityLeashKnot createKnot (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/EntityLeashKnot; func_174862_a +MD net/minecraft/entity/EntityLeashKnot getKnotForPosition (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/EntityLeashKnot; func_174863_b +MD net/minecraft/entity/item/EntityPainting$EnumArt valueOf (Ljava/lang/String;)Lnet/minecraft/entity/item/EntityPainting$EnumArt; valueOf +MD net/minecraft/entity/item/EntityPainting$EnumArt values ()[Lnet/minecraft/entity/item/EntityPainting$EnumArt; values +MD net/minecraft/entity/projectile/EntityFishHook handleHookCasting (DDDFF)V func_146035_c +MD net/minecraft/entity/projectile/EntityFishHook func_174855_j ()Ljava/util/List; func_174855_j +MD net/minecraft/entity/projectile/EntityFishHook handleHookRetraction ()I func_146034_e +MD net/minecraft/entity/projectile/EntityFishHook getFishingResult ()Lnet/minecraft/item/ItemStack; func_146033_f +MD net/minecraft/util/WeightedRandomFishable setEnchantable ()Lnet/minecraft/util/WeightedRandomFishable; func_150707_a +MD net/minecraft/util/WeightedRandomFishable setMaxDamagePercent (F)Lnet/minecraft/util/WeightedRandomFishable; func_150709_a +MD net/minecraft/util/WeightedRandomFishable getItemStack (Ljava/util/Random;)Lnet/minecraft/item/ItemStack; func_150708_a +MD net/minecraft/entity/item/EntityBoat setDamageTaken (F)V func_70266_a +MD net/minecraft/entity/item/EntityBoat setTimeSinceHit (I)V func_70265_b +MD net/minecraft/entity/item/EntityBoat setIsBoatEmpty (Z)V func_70270_d +MD net/minecraft/entity/item/EntityBoat setForwardDirection (I)V func_70269_c +MD net/minecraft/entity/item/EntityBoat getDamageTaken ()F func_70271_g +MD net/minecraft/entity/item/EntityBoat getTimeSinceHit ()I func_70268_h +MD net/minecraft/entity/item/EntityBoat getForwardDirection ()I func_70267_i +MD net/minecraft/entity/item/EntityFallingBlock setHurtEntities (Z)V func_145806_a +MD net/minecraft/entity/item/EntityFallingBlock getWorldObj ()Lnet/minecraft/world/World; func_145807_e +MD net/minecraft/entity/item/EntityFallingBlock getBlock ()Lnet/minecraft/block/state/IBlockState; func_175131_l +MD net/minecraft/entity/item/EntityItem setPickupDelay (I)V func_174867_a +MD net/minecraft/entity/item/EntityItem combineItems (Lnet/minecraft/entity/item/EntityItem;)Z func_70289_a +MD net/minecraft/entity/item/EntityItem setEntityItemStack (Lnet/minecraft/item/ItemStack;)V func_92058_a +MD net/minecraft/entity/item/EntityItem setOwner (Ljava/lang/String;)V func_145797_a +MD net/minecraft/entity/item/EntityItem setThrower (Ljava/lang/String;)V func_145799_b +MD net/minecraft/entity/item/EntityItem setAgeToCreativeDespawnTime ()V func_70288_d +MD net/minecraft/entity/item/EntityItem getEntityItem ()Lnet/minecraft/item/ItemStack; func_92059_d +MD net/minecraft/entity/item/EntityItem getOwner ()Ljava/lang/String; func_145798_i +MD net/minecraft/entity/item/EntityItem getThrower ()Ljava/lang/String; func_145800_j +MD net/minecraft/entity/item/EntityItem getAge ()I func_174872_o +MD net/minecraft/entity/item/EntityItem setDefaultPickupDelay ()V func_174869_p +MD net/minecraft/entity/item/EntityItem setNoPickupDelay ()V func_174868_q +MD net/minecraft/entity/item/EntityItem setInfinitePickupDelay ()V func_174871_r +MD net/minecraft/entity/item/EntityItem cannotPickup ()Z func_174874_s +MD net/minecraft/entity/item/EntityItem setNoDespawn ()V func_174873_u +MD net/minecraft/entity/item/EntityItem func_174870_v ()V func_174870_v +MD net/minecraft/entity/item/EntityItem searchForOtherItemsNearby ()V func_85054_d +MD net/minecraft/entity/item/EntityMinecart func_70495_a (DDDD)Lnet/minecraft/util/Vec3; func_70495_a +MD net/minecraft/entity/item/EntityMinecart setDamage (F)V func_70492_c +MD net/minecraft/entity/item/EntityMinecart onActivatorRailPass (IIIZ)V func_96095_a +MD net/minecraft/entity/item/EntityMinecart getMinecart (Lnet/minecraft/world/World;DDDLnet/minecraft/entity/item/EntityMinecart$EnumMinecartType;)Lnet/minecraft/entity/item/EntityMinecart; func_180458_a +MD net/minecraft/entity/item/EntityMinecart func_174899_a (Lnet/minecraft/block/state/IBlockState;)V func_174899_a +MD net/minecraft/entity/item/EntityMinecart func_180460_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180460_a +MD net/minecraft/entity/item/EntityMinecart killMinecart (Lnet/minecraft/util/DamageSource;)V func_94095_a +MD net/minecraft/entity/item/EntityMinecart setHasDisplayTile (Z)V func_94096_e +MD net/minecraft/entity/item/EntityMinecart setRollingAmplitude (I)V func_70497_h +MD net/minecraft/entity/item/EntityMinecart func_70489_a (DDD)Lnet/minecraft/util/Vec3; func_70489_a +MD net/minecraft/entity/item/EntityMinecart setRollingDirection (I)V func_70494_i +MD net/minecraft/entity/item/EntityMinecart setDisplayTileOffset (I)V func_94086_l +MD net/minecraft/entity/item/EntityMinecart getMaximumSpeed ()D func_174898_m +MD net/minecraft/entity/item/EntityMinecart moveDerailedMinecart ()V func_180459_n +MD net/minecraft/entity/item/EntityMinecart applyDrag ()V func_94101_h +MD net/minecraft/entity/item/EntityMinecart getDamage ()F func_70491_i +MD net/minecraft/entity/item/EntityMinecart getRollingAmplitude ()I func_70496_j +MD net/minecraft/entity/item/EntityMinecart getRollingDirection ()I func_70493_k +MD net/minecraft/entity/item/EntityMinecart getMinecartType ()Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; func_180456_s +MD net/minecraft/entity/item/EntityMinecart getDisplayTile ()Lnet/minecraft/block/state/IBlockState; func_174897_t +MD net/minecraft/entity/item/EntityMinecart getDefaultDisplayTile ()Lnet/minecraft/block/state/IBlockState; func_180457_u +MD net/minecraft/entity/item/EntityMinecart getDisplayTileOffset ()I func_94099_q +MD net/minecraft/entity/item/EntityMinecart getDefaultDisplayTileOffset ()I func_94085_r +MD net/minecraft/entity/item/EntityMinecart hasDisplayTile ()Z func_94100_s +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType getNetworkID ()I func_180039_a +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType byNetworkID (I)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; func_180038_a +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType getName ()Ljava/lang/String; func_180040_b +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType valueOf (Ljava/lang/String;)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; valueOf +MD net/minecraft/entity/item/EntityMinecart$EnumMinecartType values ()[Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; values +MD net/minecraft/entity/EntityMinecartCommandBlock getCommandBlockLogic ()Lnet/minecraft/command/server/CommandBlockLogic; func_145822_e +MD net/minecraft/entity/item/EntityMinecartFurnace setMinecartPowered (Z)V func_94107_f +MD net/minecraft/entity/item/EntityMinecartFurnace isMinecartPowered ()Z func_94108_c +MD net/minecraft/entity/item/EntityMinecartHopper func_96112_aD ()Z func_96112_aD +MD net/minecraft/entity/item/EntityMinecartHopper canTransfer ()Z func_98043_aE +MD net/minecraft/entity/item/EntityMinecartHopper setBlocked (Z)V func_96110_f +MD net/minecraft/entity/item/EntityMinecartHopper setTransferTicker (I)V func_98042_n +MD net/minecraft/entity/item/EntityMinecartHopper getBlocked ()Z func_96111_ay +MD net/minecraft/entity/ai/EntityMinecartMobSpawner func_98039_d ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic; func_98039_d +MD net/minecraft/entity/item/EntityMinecartTNT explodeCart (D)V func_94103_c +MD net/minecraft/entity/item/EntityMinecartTNT ignite ()V func_94105_c +MD net/minecraft/entity/item/EntityMinecartTNT getFuseTicks ()I func_94104_d +MD net/minecraft/entity/item/EntityMinecartTNT isIgnited ()Z func_96096_ay +MD net/minecraft/entity/item/EntityTNTPrimed getTntPlacedBy ()Lnet/minecraft/entity/EntityLivingBase; func_94083_c +MD net/minecraft/entity/item/EntityTNTPrimed explode ()V func_70515_d +MD net/minecraft/entity/monster/EntityBlaze setOnFire (Z)V func_70844_e +MD net/minecraft/entity/monster/EntityBlaze func_70845_n ()Z func_70845_n +MD net/minecraft/entity/monster/EntityCreeper getCreeperFlashIntensity (F)F func_70831_j +MD net/minecraft/entity/monster/EntityCreeper setCreeperState (I)V func_70829_a +MD net/minecraft/entity/monster/EntityCreeper getCreeperState ()I func_70832_p +MD net/minecraft/entity/monster/EntityCreeper hasIgnited ()Z func_146078_ca +MD net/minecraft/entity/monster/EntityCreeper ignite ()V func_146079_cb +MD net/minecraft/entity/monster/EntityCreeper isAIEnabled ()Z func_70650_aV +MD net/minecraft/entity/monster/EntityCreeper func_175493_co ()V func_175493_co +MD net/minecraft/entity/monster/EntityCreeper explode ()V func_146077_cc +MD net/minecraft/entity/monster/EntityCreeper getPowered ()Z func_70830_n +MD net/minecraft/entity/monster/EntityEnderman setHeldBlockState (Lnet/minecraft/block/state/IBlockState;)V func_175490_a +MD net/minecraft/entity/monster/EntityEnderman access$100 (Lnet/minecraft/entity/monster/EntityEnderman;Lnet/minecraft/entity/player/EntityPlayer;)Z access$100 +MD net/minecraft/entity/monster/EntityEnderman access$202 (Lnet/minecraft/entity/monster/EntityEnderman;Z)Z access$202 +MD net/minecraft/entity/monster/EntityEnderman setScreaming (Z)V func_70819_e +MD net/minecraft/entity/monster/EntityEnderman teleportToEntity (Lnet/minecraft/entity/Entity;)Z func_70816_c +MD net/minecraft/entity/monster/EntityEnderman shouldAttackPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z func_70821_d +MD net/minecraft/entity/monster/EntityEnderman getHeldBlockState ()Lnet/minecraft/block/state/IBlockState; func_175489_ck +MD net/minecraft/entity/monster/EntityEnderman isScreaming ()Z func_70823_r +MD net/minecraft/entity/monster/EntityEnderman access$000 ()Lnet/minecraft/entity/ai/attributes/AttributeModifier; access$000 +MD net/minecraft/entity/monster/EntityEnderman access$300 ()Ljava/util/Set; access$300 +MD net/minecraft/entity/monster/EntityEnderman teleportTo (DDD)Z func_70825_j +MD net/minecraft/entity/monster/EntityEnderman teleportRandomly ()Z func_70820_n +MD net/minecraft/entity/monster/EntityEnderman$1 apply (Lnet/minecraft/entity/monster/EntityEndermite;)Z apply +MD net/minecraft/entity/monster/EntityEnderman$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityEnderman$AIPlaceBlock func_179474_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)Z func_179474_a +MD net/minecraft/entity/monster/EntityEndermite setSpawnedByPlayer (Z)V func_175496_a +MD net/minecraft/entity/monster/EntityEndermite isSpawnedByPlayer ()Z func_175495_n +MD net/minecraft/entity/monster/IMob$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/monster/IMob$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/IMob$2 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/entity/monster/IMob$2 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityGhast setAttacking (Z)V func_175454_a +MD net/minecraft/entity/monster/EntityGhast getFireballStrength ()I func_175453_cd +MD net/minecraft/entity/monster/EntityGhast isAttacking ()Z func_110182_bF +MD net/minecraft/entity/monster/EntityGhast$GhastMoveHelper isNotColliding (DDDD)Z func_179926_b +MD net/minecraft/entity/monster/EntityGuardian func_175471_a (F)F func_175471_a +MD net/minecraft/entity/monster/EntityGuardian isSyncedFlagSet (I)Z func_175468_a +MD net/minecraft/entity/monster/EntityGuardian setSyncedFlag (IZ)V func_175473_a +MD net/minecraft/entity/monster/EntityGuardian access$100 (Lnet/minecraft/entity/monster/EntityGuardian;)Lnet/minecraft/entity/ai/EntityAIWander; access$100 +MD net/minecraft/entity/monster/EntityGuardian access$000 (Lnet/minecraft/entity/monster/EntityGuardian;I)V access$000 +MD net/minecraft/entity/monster/EntityGuardian access$200 (Lnet/minecraft/entity/monster/EntityGuardian;Z)V access$200 +MD net/minecraft/entity/monster/EntityGuardian setElder (Z)V func_175467_a +MD net/minecraft/entity/monster/EntityGuardian setTargetedEntity (I)V func_175463_b +MD net/minecraft/entity/monster/EntityGuardian func_175464_ck ()I func_175464_ck +MD net/minecraft/entity/monster/EntityGuardian isElder ()Z func_175461_cl +MD net/minecraft/entity/monster/EntityGuardian setElder ()V func_175465_cm +MD net/minecraft/entity/monster/EntityGuardian hasTargetedEntity ()Z func_175474_cn +MD net/minecraft/entity/monster/EntityGuardian getTargetedEntity ()Lnet/minecraft/entity/EntityLivingBase; func_175466_co +MD net/minecraft/entity/monster/EntityGuardian func_175476_l (Z)V func_175476_l +MD net/minecraft/entity/monster/EntityGuardian func_175472_n ()Z func_175472_n +MD net/minecraft/entity/monster/EntityGuardian func_175469_o (F)F func_175469_o +MD net/minecraft/entity/monster/EntityGuardian func_175477_p (F)F func_175477_p +MD net/minecraft/entity/monster/EntityGuardian$1 apply (Lnet/minecraft/entity/player/EntityPlayerMP;)Z apply +MD net/minecraft/entity/monster/EntityGuardian$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector apply (Lnet/minecraft/entity/EntityLivingBase;)Z apply +MD net/minecraft/entity/monster/EntityGuardian$GuardianTargetSelector apply (Ljava/lang/Object;)Z apply +MD net/minecraft/entity/monster/EntityMob isValidLightLevel ()Z func_70814_o +MD net/minecraft/entity/monster/EntityPigZombie access$000 (Lnet/minecraft/entity/monster/EntityPigZombie;Lnet/minecraft/entity/Entity;)V access$000 +MD net/minecraft/entity/monster/EntityPigZombie becomeAngryAt (Lnet/minecraft/entity/Entity;)V func_70835_c +MD net/minecraft/entity/monster/EntityPigZombie isAngry ()Z func_175457_ck +MD net/minecraft/entity/IRangedAttackMob attackEntityWithRangedAttack (Lnet/minecraft/entity/EntityLivingBase;F)V func_82196_d +MD net/minecraft/entity/SharedMonsterAttributes readAttributeModifierFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/entity/ai/attributes/AttributeModifier; func_111259_a +MD net/minecraft/entity/SharedMonsterAttributes writeAttributeInstanceToNBT (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;)Lnet/minecraft/nbt/NBTTagCompound; func_111261_a +MD net/minecraft/entity/SharedMonsterAttributes applyModifiersToAttributeInstance (Lnet/minecraft/entity/ai/attributes/IAttributeInstance;Lnet/minecraft/nbt/NBTTagCompound;)V func_111258_a +MD net/minecraft/entity/SharedMonsterAttributes writeAttributeModifierToNBT (Lnet/minecraft/entity/ai/attributes/AttributeModifier;)Lnet/minecraft/nbt/NBTTagCompound; func_111262_a +MD net/minecraft/entity/SharedMonsterAttributes writeBaseAttributeMapToNBT (Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;)Lnet/minecraft/nbt/NBTTagList; func_111257_a +MD net/minecraft/entity/SharedMonsterAttributes setAttributeModifiers (Lnet/minecraft/entity/ai/attributes/BaseAttributeMap;Lnet/minecraft/nbt/NBTTagList;)V func_151475_a +MD net/minecraft/entity/monster/EntitySilverfish$AISummonSilverfish func_179462_f ()V func_179462_f +MD net/minecraft/entity/monster/EntitySkeleton setSkeletonType (I)V func_82201_a +MD net/minecraft/entity/monster/EntitySkeleton getSkeletonType ()I func_82202_m +MD net/minecraft/entity/monster/EntitySkeleton setCombatTask ()V func_85036_m +MD net/minecraft/entity/monster/EntitySlime setSlimeSize (I)V func_70799_a +MD net/minecraft/entity/monster/EntitySlime createInstance ()Lnet/minecraft/entity/monster/EntitySlime; func_70802_j +MD net/minecraft/entity/monster/EntitySlime getJumpDelay ()I func_70806_k +MD net/minecraft/entity/monster/EntitySlime alterSquishAmount ()V func_70808_l +MD net/minecraft/entity/monster/EntitySlime canDamagePlayer ()Z func_70800_m +MD net/minecraft/entity/monster/EntitySlime getAttackStrength ()I func_70805_n +MD net/minecraft/entity/monster/EntitySlime getJumpSound ()Ljava/lang/String; func_70803_o +MD net/minecraft/entity/monster/EntitySlime makesSoundOnLand ()Z func_70804_p +MD net/minecraft/entity/monster/EntitySlime getSlimeSize ()I func_70809_q +MD net/minecraft/entity/monster/EntitySlime makesSoundOnJump ()Z func_70807_r +MD net/minecraft/entity/monster/EntitySlime func_175451_e (Lnet/minecraft/entity/EntityLivingBase;)V func_175451_e +MD net/minecraft/entity/monster/EntitySlime getParticleType ()Lnet/minecraft/util/EnumParticleTypes; func_180487_n +MD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper setSpeed (D)V func_179921_a +MD net/minecraft/entity/monster/EntitySlime$SlimeMoveHelper func_179920_a (FZ)V func_179920_a +MD net/minecraft/entity/monster/EntitySpider setBesideClimbableBlock (Z)V func_70839_e +MD net/minecraft/entity/monster/EntitySpider isBesideClimbableBlock ()Z func_70841_p +MD net/minecraft/entity/monster/EntitySpider$GroupData func_111104_a (Ljava/util/Random;)V func_111104_a +MD net/minecraft/entity/monster/EntityWitch setAggressive (Z)V func_82197_f +MD net/minecraft/entity/monster/EntityWitch getAggressive ()Z func_82198_m +MD net/minecraft/entity/monster/EntityZombie multiplySize (F)V func_146069_a +MD net/minecraft/entity/monster/EntityZombie startConversion (I)V func_82228_a +MD net/minecraft/entity/monster/EntityZombie setBreakDoorsAItask (Z)V func_146070_a +MD net/minecraft/entity/monster/EntityZombie isBreakDoorsTaskSet ()Z func_146072_bX +MD net/minecraft/entity/monster/EntityZombie isVillager ()Z func_82231_m +MD net/minecraft/entity/monster/EntityZombie isConverting ()Z func_82230_o +MD net/minecraft/entity/monster/EntityZombie convertToVillager ()V func_82232_p +MD net/minecraft/entity/monster/EntityZombie getConversionTimeBoost ()I func_82233_q +MD net/minecraft/entity/monster/EntityZombie setChild (Z)V func_82227_f +MD net/minecraft/entity/monster/EntityZombie setVillager (Z)V func_82229_g +MD net/minecraft/entity/monster/EntityZombie applyEntityAI ()V func_175456_n +MD net/minecraft/entity/monster/EntityZombie setChildSize (Z)V func_146071_k +MD net/minecraft/entity/passive/EntityVillager spawnParticles (Lnet/minecraft/util/EnumParticleTypes;)V func_180489_a +MD net/minecraft/entity/passive/EntityVillager canVillagerPickupItem (Lnet/minecraft/item/Item;)Z func_175558_a +MD net/minecraft/entity/passive/EntityVillager createChild (Lnet/minecraft/entity/EntityAgeable;)Lnet/minecraft/entity/passive/EntityVillager; func_90011_a +MD net/minecraft/entity/passive/EntityVillager getProfession ()I func_70946_n +MD net/minecraft/entity/passive/EntityVillager isMating ()Z func_70941_o +MD net/minecraft/entity/passive/EntityVillager isPlaying ()Z func_70945_p +MD net/minecraft/entity/passive/EntityVillager isTrading ()Z func_70940_q +MD net/minecraft/entity/passive/EntityVillager setLookingForHome ()V func_82187_q +MD net/minecraft/entity/passive/EntityVillager getVillagerInventory ()Lnet/minecraft/inventory/InventoryBasic; func_175551_co +MD net/minecraft/entity/passive/EntityVillager func_175553_cp ()Z func_175553_cp +MD net/minecraft/entity/passive/EntityVillager canAbondonItems ()Z func_175555_cq +MD net/minecraft/entity/passive/EntityVillager func_175557_cr ()Z func_175557_cr +MD net/minecraft/entity/passive/EntityVillager isFarmItemInInventory ()Z func_175556_cs +MD net/minecraft/entity/passive/EntityVillager setAdditionalAItasks ()V func_175552_ct +MD net/minecraft/entity/passive/EntityVillager populateBuyingList ()V func_175554_cu +MD net/minecraft/entity/passive/EntityVillager setMating (Z)V func_70947_e +MD net/minecraft/entity/passive/EntityVillager setPlaying (Z)V func_70939_f +MD net/minecraft/entity/passive/EntityVillager getIsWillingToMate (Z)Z func_175550_n +MD net/minecraft/entity/passive/EntityVillager setIsWillingToMate (Z)V func_175549_o +MD net/minecraft/entity/passive/EntityVillager setProfession (I)V func_70938_b +MD net/minecraft/entity/passive/EntityVillager hasEnoughItems (I)Z func_175559_s +MD net/minecraft/entity/passive/EntityVillager$ITradeList modifyMerchantRecipeList (Lnet/minecraft/village/MerchantRecipeList;Ljava/util/Random;)V func_179401_a +MD net/minecraft/entity/passive/EntityVillager$PriceInfo getPrice (Ljava/util/Random;)I func_179412_a +MD net/minecraft/entity/player/PlayerCapabilities getFlySpeed ()F func_75093_a +MD net/minecraft/entity/player/PlayerCapabilities setFlySpeed (F)V func_75092_a +MD net/minecraft/entity/player/PlayerCapabilities writeCapabilitiesToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_75091_a +MD net/minecraft/entity/player/PlayerCapabilities getWalkSpeed ()F func_75094_b +MD net/minecraft/entity/player/PlayerCapabilities setPlayerWalkSpeed (F)V func_82877_b +MD net/minecraft/entity/player/PlayerCapabilities readCapabilitiesFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_75095_b +MD net/minecraft/entity/player/InventoryPlayer damageArmor (F)V func_70449_g +MD net/minecraft/entity/player/InventoryPlayer getStrVsBlock (Lnet/minecraft/block/Block;)F func_146023_a +MD net/minecraft/entity/player/InventoryPlayer writeToNBT (Lnet/minecraft/nbt/NBTTagList;)Lnet/minecraft/nbt/NBTTagList; func_70442_a +MD net/minecraft/entity/player/InventoryPlayer consumeInventoryItem (Lnet/minecraft/item/Item;)Z func_146026_a +MD net/minecraft/entity/player/InventoryPlayer getInventorySlotContainItemAndDamage (Lnet/minecraft/item/Item;I)I func_146024_c +MD net/minecraft/entity/player/InventoryPlayer clearMatchingItems (Lnet/minecraft/item/Item;IILnet/minecraft/nbt/NBTTagCompound;)I func_174925_a +MD net/minecraft/entity/player/InventoryPlayer setCurrentItem (Lnet/minecraft/item/Item;IZZ)V func_146030_a +MD net/minecraft/entity/player/InventoryPlayer addItemStackToInventory (Lnet/minecraft/item/ItemStack;)Z func_70441_a +MD net/minecraft/entity/player/InventoryPlayer canHeldItemHarvest (Lnet/minecraft/block/Block;)Z func_146025_b +MD net/minecraft/entity/player/InventoryPlayer readFromNBT (Lnet/minecraft/nbt/NBTTagList;)V func_70443_b +MD net/minecraft/entity/player/InventoryPlayer copyInventory (Lnet/minecraft/entity/player/InventoryPlayer;)V func_70455_b +MD net/minecraft/entity/player/InventoryPlayer hasItem (Lnet/minecraft/item/Item;)Z func_146028_b +MD net/minecraft/entity/player/InventoryPlayer setItemStack (Lnet/minecraft/item/ItemStack;)V func_70437_b +MD net/minecraft/entity/player/InventoryPlayer getInventorySlotContainItem (Lnet/minecraft/item/Item;)I func_146029_c +MD net/minecraft/entity/player/InventoryPlayer hasItemStack (Lnet/minecraft/item/ItemStack;)Z func_70431_c +MD net/minecraft/entity/player/InventoryPlayer changeCurrentItem (I)V func_70453_c +MD net/minecraft/entity/player/InventoryPlayer storeItemStack (Lnet/minecraft/item/ItemStack;)I func_70432_d +MD net/minecraft/entity/player/InventoryPlayer armorItemInSlot (I)Lnet/minecraft/item/ItemStack; func_70440_f +MD net/minecraft/entity/player/InventoryPlayer storePartialItemStack (Lnet/minecraft/item/ItemStack;)I func_70452_e +MD net/minecraft/entity/player/InventoryPlayer getCurrentItem ()Lnet/minecraft/item/ItemStack; func_70448_g +MD net/minecraft/entity/player/InventoryPlayer getHotbarSize ()I func_70451_h +MD net/minecraft/entity/player/InventoryPlayer getFirstEmptyStack ()I func_70447_i +MD net/minecraft/entity/player/InventoryPlayer decrementAnimations ()V func_70429_k +MD net/minecraft/entity/player/InventoryPlayer getTotalArmorValue ()I func_70430_l +MD net/minecraft/entity/player/InventoryPlayer dropAllItems ()V func_70436_m +MD net/minecraft/entity/player/InventoryPlayer getItemStack ()Lnet/minecraft/item/ItemStack; func_70445_o +MD net/minecraft/entity/player/InventoryPlayer$1 call ()Ljava/lang/String; call +MD net/minecraft/entity/player/InventoryPlayer$1 call ()Ljava/lang/Object; call +MD net/minecraft/entity/player/EntityPlayer addExhaustion (F)V func_71020_j +MD net/minecraft/entity/player/EntityPlayer addExperienceLevel (I)V func_82242_a +MD net/minecraft/entity/player/EntityPlayer displayVillagerTradeGui (Lnet/minecraft/entity/IMerchant;)V func_180472_a +MD net/minecraft/entity/player/EntityPlayer openEditCommandBlock (Lnet/minecraft/command/server/CommandBlockLogic;)V func_146095_a +MD net/minecraft/entity/player/EntityPlayer getBedSpawnLocation (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)Lnet/minecraft/util/BlockPos; func_180467_a +MD net/minecraft/entity/player/EntityPlayer setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_71033_a +MD net/minecraft/entity/player/EntityPlayer getToolDigEfficiency (Lnet/minecraft/block/Block;)F func_180471_a +MD net/minecraft/entity/player/EntityPlayer openEditSign (Lnet/minecraft/tileentity/TileEntitySign;)V func_175141_a +MD net/minecraft/entity/player/EntityPlayer trySleep (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; func_180469_a +MD net/minecraft/entity/player/EntityPlayer canPlayerEdit (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/item/ItemStack;)Z func_175151_a +MD net/minecraft/entity/player/EntityPlayer setSpawnPoint (Lnet/minecraft/util/BlockPos;Z)V func_180473_a +MD net/minecraft/entity/player/EntityPlayer getUUID (Lcom/mojang/authlib/GameProfile;)Ljava/util/UUID; func_146094_a +MD net/minecraft/entity/player/EntityPlayer func_175139_a (Lnet/minecraft/util/EnumFacing;)V func_175139_a +MD net/minecraft/entity/player/EntityPlayer func_175145_a (Lnet/minecraft/stats/StatBase;)V func_175145_a +MD net/minecraft/entity/player/EntityPlayer addStat (Lnet/minecraft/stats/StatBase;I)V func_71064_a +MD net/minecraft/entity/player/EntityPlayer displayGUIChest (Lnet/minecraft/inventory/IInventory;)V func_71007_a +MD net/minecraft/entity/player/EntityPlayer displayGui (Lnet/minecraft/world/IInteractionObject;)V func_180468_a +MD net/minecraft/entity/player/EntityPlayer canOpen (Lnet/minecraft/world/LockCode;)Z func_175146_a +MD net/minecraft/entity/player/EntityPlayer displayGUIHorse (Lnet/minecraft/entity/passive/EntityHorse;Lnet/minecraft/inventory/IInventory;)V func_110298_a +MD net/minecraft/entity/player/EntityPlayer joinEntityItemWithWorld (Lnet/minecraft/entity/item/EntityItem;)V func_71012_a +MD net/minecraft/entity/player/EntityPlayer canAttackPlayer (Lnet/minecraft/entity/player/EntityPlayer;)Z func_96122_a +MD net/minecraft/entity/player/EntityPlayer clonePlayer (Lnet/minecraft/entity/player/EntityPlayer;Z)V func_71049_a +MD net/minecraft/entity/player/EntityPlayer isWearing (Lnet/minecraft/entity/player/EnumPlayerModelParts;)Z func_175148_a +MD net/minecraft/entity/player/EntityPlayer displayGUIBook (Lnet/minecraft/item/ItemStack;)V func_71048_c +MD net/minecraft/entity/player/EntityPlayer setItemInUse (Lnet/minecraft/item/ItemStack;I)V func_71008_a +MD net/minecraft/entity/player/EntityPlayer dropPlayerItemWithRandomChoice (Lnet/minecraft/item/ItemStack;Z)Lnet/minecraft/entity/item/EntityItem; func_71019_a +MD net/minecraft/entity/player/EntityPlayer dropItem (Lnet/minecraft/item/ItemStack;ZZ)Lnet/minecraft/entity/item/EntityItem; func_146097_a +MD net/minecraft/entity/player/EntityPlayer dropOneItem (Z)Lnet/minecraft/entity/item/EntityItem; func_71040_bB +MD net/minecraft/entity/player/EntityPlayer wakeUpPlayer (ZZZ)V func_70999_a +MD net/minecraft/entity/player/EntityPlayer removeExperienceLevel (I)V func_71013_b +MD net/minecraft/entity/player/EntityPlayer canHarvestBlock (Lnet/minecraft/block/Block;)Z func_146099_a +MD net/minecraft/entity/player/EntityPlayer addChatComponentMessage (Lnet/minecraft/util/IChatComponent;)V func_146105_b +MD net/minecraft/entity/player/EntityPlayer getOfflineUUID (Ljava/lang/String;)Ljava/util/UUID; func_175147_b +MD net/minecraft/entity/player/EntityPlayer triggerAchievement (Lnet/minecraft/stats/StatBase;)V func_71029_a +MD net/minecraft/entity/player/EntityPlayer onCriticalHit (Lnet/minecraft/entity/Entity;)V func_71009_b +MD net/minecraft/entity/player/EntityPlayer updateItemUse (Lnet/minecraft/item/ItemStack;I)V func_71010_c +MD net/minecraft/entity/player/EntityPlayer getItemInUse ()Lnet/minecraft/item/ItemStack; func_71011_bu +MD net/minecraft/entity/player/EntityPlayer getItemInUseCount ()I func_71052_bv +MD net/minecraft/entity/player/EntityPlayer isUsingItem ()Z func_71039_bw +MD net/minecraft/entity/player/EntityPlayer getItemInUseDuration ()I func_71057_bx +MD net/minecraft/entity/player/EntityPlayer stopUsingItem ()V func_71034_by +MD net/minecraft/entity/player/EntityPlayer clearItemInUse ()V func_71041_bz +MD net/minecraft/entity/player/EntityPlayer isBlocking ()Z func_70632_aY +MD net/minecraft/entity/player/EntityPlayer getScore ()I func_71037_bA +MD net/minecraft/entity/player/EntityPlayer getArmorVisibility ()F func_82243_bO +MD net/minecraft/entity/player/EntityPlayer getCurrentEquippedItem ()Lnet/minecraft/item/ItemStack; func_71045_bC +MD net/minecraft/entity/player/EntityPlayer onEnchantmentCritical (Lnet/minecraft/entity/Entity;)V func_71047_c +MD net/minecraft/entity/player/EntityPlayer destroyCurrentEquippedItem ()V func_71028_bD +MD net/minecraft/entity/player/EntityPlayer respawnPlayer ()V func_71004_bE +MD net/minecraft/entity/player/EntityPlayer isUser ()Z func_175144_cb +MD net/minecraft/entity/player/EntityPlayer getGameProfile ()Lcom/mojang/authlib/GameProfile; func_146103_bH +MD net/minecraft/entity/player/EntityPlayer getBedOrientationInDegrees ()F func_71051_bG +MD net/minecraft/entity/player/EntityPlayer isPlayerFullyAsleep ()Z func_71026_bH +MD net/minecraft/entity/player/EntityPlayer getSleepTimer ()I func_71060_bI +MD net/minecraft/entity/player/EntityPlayer getBedLocation ()Lnet/minecraft/util/BlockPos; func_180470_cg +MD net/minecraft/entity/player/EntityPlayer isSpawnForced ()Z func_82245_bX +MD net/minecraft/entity/player/EntityPlayer getXPSeed ()I func_175138_ci +MD net/minecraft/entity/player/EntityPlayer xpBarCap ()I func_71050_bK +MD net/minecraft/entity/player/EntityPlayer getFoodStats ()Lnet/minecraft/util/FoodStats; func_71024_bL +MD net/minecraft/entity/player/EntityPlayer shouldHeal ()Z func_70996_bM +MD net/minecraft/entity/player/EntityPlayer isAllowEdit ()Z func_175142_cm +MD net/minecraft/entity/player/EntityPlayer getInventoryEnderChest ()Lnet/minecraft/inventory/InventoryEnderChest; func_71005_bN +MD net/minecraft/entity/player/EntityPlayer getWorldScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; func_96123_co +MD net/minecraft/entity/player/EntityPlayer hasReducedDebug ()Z func_175140_cp +MD net/minecraft/entity/player/EntityPlayer collideWithPlayer (Lnet/minecraft/entity/Entity;)V func_71044_o +MD net/minecraft/entity/player/EntityPlayer func_175137_e (Lnet/minecraft/entity/Entity;)Ljava/util/Collection; func_175137_e +MD net/minecraft/entity/player/EntityPlayer attackTargetEntityWithCurrentItem (Lnet/minecraft/entity/Entity;)V func_71059_n +MD net/minecraft/entity/player/EntityPlayer canEat (Z)Z func_71043_e +MD net/minecraft/entity/player/EntityPlayer addMovementStat (DDD)V func_71000_j +MD net/minecraft/entity/player/EntityPlayer setReducedDebug (Z)V func_175150_k +MD net/minecraft/entity/player/EntityPlayer addMountedMovementStat (DDD)V func_71015_k +MD net/minecraft/entity/player/EntityPlayer closeScreen ()V func_71053_j +MD net/minecraft/entity/player/EntityPlayer isInBed ()Z func_175143_p +MD net/minecraft/entity/player/EntityPlayer setScore (I)V func_85040_s +MD net/minecraft/entity/player/EntityPlayer onItemUseFinish ()V func_71036_o +MD net/minecraft/entity/player/EntityPlayer addScore (I)V func_85039_t +MD net/minecraft/entity/player/EntityPlayer sendPlayerAbilities ()V func_71016_p +MD net/minecraft/entity/player/EntityPlayer addExperience (I)V func_71023_q +MD net/minecraft/entity/player/EntityPlayer interactWith (Lnet/minecraft/entity/Entity;)Z func_70998_m +MD net/minecraft/entity/player/EntityPlayer isSpectator ()Z func_175149_v +MD net/minecraft/entity/player/EntityPlayer$EnumStatus valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; valueOf +MD net/minecraft/entity/player/EntityPlayer$EnumStatus values ()[Lnet/minecraft/entity/player/EntityPlayer$EnumStatus; values +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getChatVisibility ()I func_151428_a +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getEnumChatVisibility (I)Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; func_151426_a +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility getResourceKey ()Ljava/lang/String; func_151429_b +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; valueOf +MD net/minecraft/entity/player/EntityPlayer$EnumChatVisibility values ()[Lnet/minecraft/entity/player/EntityPlayer$EnumChatVisibility; values +MD net/minecraft/entity/player/EnumPlayerModelParts getPartMask ()I func_179327_a +MD net/minecraft/entity/player/EnumPlayerModelParts getPartId ()I func_179328_b +MD net/minecraft/entity/player/EnumPlayerModelParts getPartName ()Ljava/lang/String; func_179329_c +MD net/minecraft/entity/player/EnumPlayerModelParts func_179326_d ()Lnet/minecraft/util/IChatComponent; func_179326_d +MD net/minecraft/entity/player/EnumPlayerModelParts valueOf (Ljava/lang/String;)Lnet/minecraft/entity/player/EnumPlayerModelParts; valueOf +MD net/minecraft/entity/player/EnumPlayerModelParts values ()[Lnet/minecraft/entity/player/EnumPlayerModelParts; values +MD net/minecraft/entity/projectile/EntityArrow setKnockbackStrength (I)V func_70240_a +MD net/minecraft/entity/projectile/EntityArrow setIsCritical (Z)V func_70243_d +MD net/minecraft/entity/projectile/EntityArrow setDamage (D)V func_70239_b +MD net/minecraft/entity/projectile/EntityArrow getDamage ()D func_70242_d +MD net/minecraft/entity/projectile/EntityArrow getIsCritical ()Z func_70241_g +MD net/minecraft/entity/item/EntityEnderEye moveTowards (Lnet/minecraft/util/BlockPos;)V func_180465_a +MD net/minecraft/entity/projectile/EntityFireball onImpact (Lnet/minecraft/util/MovingObjectPosition;)V func_70227_a +MD net/minecraft/entity/projectile/EntityFireball getMotionFactor ()F func_82341_c +MD net/minecraft/entity/IProjectile setThrowableHeading (DDDFF)V func_70186_c +MD net/minecraft/entity/projectile/EntityThrowable onImpact (Lnet/minecraft/util/MovingObjectPosition;)V func_70184_a +MD net/minecraft/entity/projectile/EntityThrowable getVelocity ()F func_70182_d +MD net/minecraft/entity/projectile/EntityThrowable getInaccuracy ()F func_70183_g +MD net/minecraft/entity/projectile/EntityThrowable getGravityVelocity ()F func_70185_h +MD net/minecraft/entity/projectile/EntityThrowable getThrower ()Lnet/minecraft/entity/EntityLivingBase; func_85052_h +MD net/minecraft/entity/projectile/EntityPotion setPotionDamage (I)V func_82340_a +MD net/minecraft/entity/projectile/EntityPotion getPotionDamage ()I func_70196_i +MD net/minecraft/entity/projectile/EntityWitherSkull setInvulnerable (Z)V func_82343_e +MD net/minecraft/entity/projectile/EntityWitherSkull isInvulnerable ()Z func_82342_d +MD net/minecraft/util/FoodStats getFoodLevel ()I func_75116_a +MD net/minecraft/util/FoodStats addExhaustion (F)V func_75113_a +MD net/minecraft/util/FoodStats setFoodLevel (I)V func_75114_a +MD net/minecraft/util/FoodStats addStats (IF)V func_75122_a +MD net/minecraft/util/FoodStats readNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_75112_a +MD net/minecraft/util/FoodStats onUpdate (Lnet/minecraft/entity/player/EntityPlayer;)V func_75118_a +MD net/minecraft/util/FoodStats addStats (Lnet/minecraft/item/ItemFood;Lnet/minecraft/item/ItemStack;)V func_151686_a +MD net/minecraft/util/FoodStats getPrevFoodLevel ()I func_75120_b +MD net/minecraft/util/FoodStats setFoodSaturationLevel (F)V func_75119_b +MD net/minecraft/util/FoodStats writeNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_75117_b +MD net/minecraft/util/FoodStats needFood ()Z func_75121_c +MD net/minecraft/util/FoodStats getSaturationLevel ()F func_75115_e +MD net/minecraft/inventory/Container getInventory ()Ljava/util/List; func_75138_a +MD net/minecraft/inventory/Container getSlot (I)Lnet/minecraft/inventory/Slot; func_75139_a +MD net/minecraft/inventory/Container slotClick (IIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_75144_a +MD net/minecraft/inventory/Container retrySlotClick (IIZLnet/minecraft/entity/player/EntityPlayer;)V func_75133_b +MD net/minecraft/inventory/Container isValidDragMode (ILnet/minecraft/entity/player/EntityPlayer;)Z func_180610_a +MD net/minecraft/inventory/Container putStackInSlot (ILnet/minecraft/item/ItemStack;)V func_75141_a +MD net/minecraft/inventory/Container calcRedstone (Lnet/minecraft/tileentity/TileEntity;)I func_178144_a +MD net/minecraft/inventory/Container computeStackSize (Ljava/util/Set;ILnet/minecraft/item/ItemStack;I)V func_94525_a +MD net/minecraft/inventory/Container onCraftMatrixChanged (Lnet/minecraft/inventory/IInventory;)V func_75130_a +MD net/minecraft/inventory/Container getSlotFromInventory (Lnet/minecraft/inventory/IInventory;I)Lnet/minecraft/inventory/Slot; func_75147_a +MD net/minecraft/inventory/Container getNextTransactionID (Lnet/minecraft/entity/player/InventoryPlayer;)S func_75136_a +MD net/minecraft/inventory/Container canInteractWith (Lnet/minecraft/entity/player/EntityPlayer;)Z func_75145_c +MD net/minecraft/inventory/Container enchantItem (Lnet/minecraft/entity/player/EntityPlayer;I)Z func_75140_a +MD net/minecraft/inventory/Container setCanCraft (Lnet/minecraft/entity/player/EntityPlayer;Z)V func_75128_a +MD net/minecraft/inventory/Container onCraftGuiOpened (Lnet/minecraft/inventory/ICrafting;)V func_75132_a +MD net/minecraft/inventory/Container addSlotToContainer (Lnet/minecraft/inventory/Slot;)Lnet/minecraft/inventory/Slot; func_75146_a +MD net/minecraft/inventory/Container canAddItemToSlot (Lnet/minecraft/inventory/Slot;Lnet/minecraft/item/ItemStack;Z)Z func_94527_a +MD net/minecraft/inventory/Container mergeItemStack (Lnet/minecraft/item/ItemStack;IIZ)Z func_75135_a +MD net/minecraft/inventory/Container canMergeSlot (Lnet/minecraft/item/ItemStack;Lnet/minecraft/inventory/Slot;)Z func_94530_a +MD net/minecraft/inventory/Container putStacksInSlots ([Lnet/minecraft/item/ItemStack;)V func_75131_a +MD net/minecraft/inventory/Container detectAndSendChanges ()V func_75142_b +MD net/minecraft/inventory/Container extractDragMode (I)I func_94529_b +MD net/minecraft/inventory/Container updateProgressBar (II)V func_75137_b +MD net/minecraft/inventory/Container calcRedstoneFromInventory (Lnet/minecraft/inventory/IInventory;)I func_94526_b +MD net/minecraft/inventory/Container onContainerClosed (Lnet/minecraft/entity/player/EntityPlayer;)V func_75134_a +MD net/minecraft/inventory/Container transferStackInSlot (Lnet/minecraft/entity/player/EntityPlayer;I)Lnet/minecraft/item/ItemStack; func_82846_b +MD net/minecraft/inventory/Container removeCraftingFromCrafters (Lnet/minecraft/inventory/ICrafting;)V func_82847_b +MD net/minecraft/inventory/Container canDragIntoSlot (Lnet/minecraft/inventory/Slot;)Z func_94531_b +MD net/minecraft/inventory/Container getDragEvent (I)I func_94532_c +MD net/minecraft/inventory/Container getCanCraft (Lnet/minecraft/entity/player/EntityPlayer;)Z func_75129_b +MD net/minecraft/inventory/Container resetDrag ()V func_94533_d +MD net/minecraft/inventory/Container func_94534_d (II)I func_94534_d +MD net/minecraft/inventory/ContainerRepair updateItemName (Ljava/lang/String;)V func_82850_a +MD net/minecraft/inventory/ContainerRepair access$000 (Lnet/minecraft/inventory/ContainerRepair;)Lnet/minecraft/inventory/IInventory; access$000 +MD net/minecraft/inventory/ContainerRepair access$100 (Lnet/minecraft/inventory/ContainerRepair;)I access$100 +MD net/minecraft/inventory/ContainerRepair updateRepairOutput ()V func_82848_d +MD net/minecraft/inventory/ContainerBeacon func_180611_e ()Lnet/minecraft/inventory/IInventory; func_180611_e +MD net/minecraft/inventory/ContainerBrewingStand$Potion canHoldPotion (Lnet/minecraft/item/ItemStack;)Z func_75243_a_ +MD net/minecraft/inventory/ICrafting sendProgressBarUpdate (Lnet/minecraft/inventory/Container;II)V func_71112_a +MD net/minecraft/inventory/ICrafting sendSlotContents (Lnet/minecraft/inventory/Container;ILnet/minecraft/item/ItemStack;)V func_71111_a +MD net/minecraft/inventory/ICrafting updateCraftingInventory (Lnet/minecraft/inventory/Container;Ljava/util/List;)V func_71110_a +MD net/minecraft/inventory/ICrafting sendAllWindowProperties (Lnet/minecraft/inventory/Container;Lnet/minecraft/inventory/IInventory;)V func_175173_a +MD net/minecraft/inventory/ContainerChest getLowerChestInventory ()Lnet/minecraft/inventory/IInventory; func_85151_d +MD net/minecraft/inventory/InventoryCrafting getStackInRowAndColumn (II)Lnet/minecraft/item/ItemStack; func_70463_b +MD net/minecraft/inventory/InventoryCrafting getHeight ()I func_174923_h +MD net/minecraft/inventory/InventoryCrafting getWidth ()I func_174922_i +MD net/minecraft/inventory/ContainerEnchantment func_178148_a (Lnet/minecraft/item/ItemStack;II)Ljava/util/List; func_178148_a +MD net/minecraft/inventory/ContainerEnchantment getLapisAmount ()I func_178147_e +MD net/minecraft/inventory/SlotFurnaceFuel isBucket (Lnet/minecraft/item/ItemStack;)Z func_178173_c_ +MD net/minecraft/inventory/InventoryMerchant setCurrentRecipeIndex (I)V func_70471_c +MD net/minecraft/inventory/InventoryMerchant inventoryResetNeededOnSlotChange (I)Z func_70469_d +MD net/minecraft/inventory/InventoryMerchant resetRecipeAndSlots ()V func_70470_g +MD net/minecraft/inventory/InventoryMerchant getCurrentRecipe ()Lnet/minecraft/village/MerchantRecipe; func_70468_h +MD net/minecraft/inventory/ContainerMerchant setCurrentRecipeIndex (I)V func_75175_c +MD net/minecraft/inventory/ContainerMerchant getMerchantInventory ()Lnet/minecraft/inventory/InventoryMerchant; func_75174_d +MD net/minecraft/inventory/SlotMerchantResult doTrade (Lnet/minecraft/village/MerchantRecipe;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_75230_a +MD net/minecraft/inventory/InventoryEnderChest setChestTileEntity (Lnet/minecraft/tileentity/TileEntityEnderChest;)V func_146031_a +MD net/minecraft/inventory/InventoryEnderChest loadInventoryFromNBT (Lnet/minecraft/nbt/NBTTagList;)V func_70486_a +MD net/minecraft/inventory/InventoryEnderChest saveInventoryToNBT ()Lnet/minecraft/nbt/NBTTagList; func_70487_g +MD net/minecraft/inventory/Slot getSlotStackLimit ()I func_75219_a +MD net/minecraft/inventory/Slot decrStackSize (I)Lnet/minecraft/item/ItemStack; func_75209_a +MD net/minecraft/inventory/Slot isHere (Lnet/minecraft/inventory/IInventory;I)Z func_75217_a +MD net/minecraft/inventory/Slot canTakeStack (Lnet/minecraft/entity/player/EntityPlayer;)Z func_82869_a +MD net/minecraft/inventory/Slot onPickupFromSlot (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V func_82870_a +MD net/minecraft/inventory/Slot isItemValid (Lnet/minecraft/item/ItemStack;)Z func_75214_a +MD net/minecraft/inventory/Slot onCrafting (Lnet/minecraft/item/ItemStack;I)V func_75210_a +MD net/minecraft/inventory/Slot onSlotChange (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)V func_75220_a +MD net/minecraft/inventory/Slot canBeHovered ()Z func_111238_b +MD net/minecraft/inventory/Slot getItemStackLimit (Lnet/minecraft/item/ItemStack;)I func_178170_b +MD net/minecraft/inventory/Slot getSlotTexture ()Ljava/lang/String; func_178171_c +MD net/minecraft/inventory/Slot onCrafting (Lnet/minecraft/item/ItemStack;)V func_75208_c +MD net/minecraft/inventory/Slot getStack ()Lnet/minecraft/item/ItemStack; func_75211_c +MD net/minecraft/inventory/Slot putStack (Lnet/minecraft/item/ItemStack;)V func_75215_d +MD net/minecraft/inventory/Slot getHasStack ()Z func_75216_d +MD net/minecraft/inventory/Slot onSlotChanged ()V func_75218_e +MD net/minecraft/item/ItemArmor getColor (Lnet/minecraft/item/ItemStack;)I func_82814_b +MD net/minecraft/item/ItemArmor setColor (Lnet/minecraft/item/ItemStack;I)V func_82813_b +MD net/minecraft/item/ItemArmor removeColor (Lnet/minecraft/item/ItemStack;)V func_82815_c +MD net/minecraft/item/ItemArmor access$000 ()[I access$000 +MD net/minecraft/item/ItemArmor hasColor (Lnet/minecraft/item/ItemStack;)Z func_82816_b_ +MD net/minecraft/item/ItemArmor getArmorMaterial ()Lnet/minecraft/item/ItemArmor$ArmorMaterial; func_82812_d +MD net/minecraft/item/ItemArmor$ArmorMaterial getEnchantability ()I func_78045_a +MD net/minecraft/item/ItemArmor$ArmorMaterial getDurability (I)I func_78046_a +MD net/minecraft/item/ItemArmor$ArmorMaterial getRepairItem ()Lnet/minecraft/item/Item; func_151685_b +MD net/minecraft/item/ItemArmor$ArmorMaterial getDamageReductionAmount (I)I func_78044_b +MD net/minecraft/item/ItemArmor$ArmorMaterial getName ()Ljava/lang/String; func_179242_c +MD net/minecraft/item/ItemArmor$ArmorMaterial valueOf (Ljava/lang/String;)Lnet/minecraft/item/ItemArmor$ArmorMaterial; valueOf +MD net/minecraft/item/ItemArmor$ArmorMaterial values ()[Lnet/minecraft/item/ItemArmor$ArmorMaterial; values +MD net/minecraft/item/ItemArmorStand applyRandomRotations (Lnet/minecraft/entity/item/EntityArmorStand;Ljava/util/Random;)V func_179221_a +MD net/minecraft/item/ItemBanner getBaseColor (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumDyeColor; func_179225_h +MD net/minecraft/item/ItemBlock canPlaceBlockOnSide (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)Z func_179222_a +MD net/minecraft/item/ItemBlock setTileEntityNBT (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)Z func_179224_a +MD net/minecraft/item/ItemBlock setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/item/ItemBlock; func_77655_b +MD net/minecraft/item/ItemBlock getBlock ()Lnet/minecraft/block/Block; func_179223_d +MD net/minecraft/item/ItemBucket tryPlaceContainedLiquid (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_180616_a +MD net/minecraft/item/ItemBucket fillBucket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/Item;)Lnet/minecraft/item/ItemStack; func_150910_a +MD net/minecraft/item/ItemMapBase createMapDataPacket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/network/Packet; func_150911_c +MD net/minecraft/creativetab/CreativeTabs getTabIndex ()I func_78021_a +MD net/minecraft/creativetab/CreativeTabs hasRelevantEnchantmentType (Lnet/minecraft/enchantment/EnumEnchantmentType;)Z func_111226_a +MD net/minecraft/creativetab/CreativeTabs setBackgroundImageName (Ljava/lang/String;)Lnet/minecraft/creativetab/CreativeTabs; func_78025_a +MD net/minecraft/creativetab/CreativeTabs displayAllReleventItems (Ljava/util/List;)V func_78018_a +MD net/minecraft/creativetab/CreativeTabs addEnchantmentBooksToList (Ljava/util/List;[Lnet/minecraft/enchantment/EnumEnchantmentType;)V func_92116_a +MD net/minecraft/creativetab/CreativeTabs setRelevantEnchantmentTypes ([Lnet/minecraft/enchantment/EnumEnchantmentType;)Lnet/minecraft/creativetab/CreativeTabs; func_111229_a +MD net/minecraft/creativetab/CreativeTabs getTabLabel ()Ljava/lang/String; func_78013_b +MD net/minecraft/creativetab/CreativeTabs getTranslatedTabLabel ()Ljava/lang/String; func_78024_c +MD net/minecraft/creativetab/CreativeTabs getIconItemStack ()Lnet/minecraft/item/ItemStack; func_151244_d +MD net/minecraft/creativetab/CreativeTabs getTabIconItem ()Lnet/minecraft/item/Item; func_78016_d +MD net/minecraft/creativetab/CreativeTabs getIconItemDamage ()I func_151243_f +MD net/minecraft/creativetab/CreativeTabs getBackgroundImageName ()Ljava/lang/String; func_78015_f +MD net/minecraft/creativetab/CreativeTabs drawInForegroundOfTab ()Z func_78019_g +MD net/minecraft/creativetab/CreativeTabs setNoTitle ()Lnet/minecraft/creativetab/CreativeTabs; func_78014_h +MD net/minecraft/creativetab/CreativeTabs shouldHidePlayerInventory ()Z func_78017_i +MD net/minecraft/creativetab/CreativeTabs setNoScrollbar ()Lnet/minecraft/creativetab/CreativeTabs; func_78022_j +MD net/minecraft/creativetab/CreativeTabs getTabColumn ()I func_78020_k +MD net/minecraft/creativetab/CreativeTabs isTabInFirstRow ()Z func_78023_l +MD net/minecraft/creativetab/CreativeTabs getRelevantEnchantmentTypes ()[Lnet/minecraft/enchantment/EnumEnchantmentType; func_111225_m +MD net/minecraft/item/ItemTool getToolMaterial ()Lnet/minecraft/item/Item$ToolMaterial; func_150913_i +MD net/minecraft/item/ItemTool getToolMaterialName ()Ljava/lang/String; func_77861_e +MD net/minecraft/item/ItemDoor placeDoor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/block/Block;)V func_179235_a +MD net/minecraft/item/EnumDyeColor getMetadata ()I func_176765_a +MD net/minecraft/item/EnumDyeColor byDyeDamage (I)Lnet/minecraft/item/EnumDyeColor; func_176766_a +MD net/minecraft/item/EnumDyeColor getDyeDamage ()I func_176767_b +MD net/minecraft/item/EnumDyeColor byMetadata (I)Lnet/minecraft/item/EnumDyeColor; func_176764_b +MD net/minecraft/item/EnumDyeColor getUnlocalizedName ()Ljava/lang/String; func_176762_d +MD net/minecraft/item/EnumDyeColor getMapColor ()Lnet/minecraft/block/material/MapColor; func_176768_e +MD net/minecraft/item/EnumDyeColor toString ()Ljava/lang/String; toString +MD net/minecraft/item/EnumDyeColor valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumDyeColor; valueOf +MD net/minecraft/item/EnumDyeColor values ()[Lnet/minecraft/item/EnumDyeColor; values +MD net/minecraft/item/ItemDye spawnBonemealParticles (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V func_180617_a +MD net/minecraft/item/ItemDye applyBonemeal (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_179234_a +MD net/minecraft/item/ItemEnchantedBook getAll (Lnet/minecraft/enchantment/Enchantment;Ljava/util/List;)V func_92113_a +MD net/minecraft/item/ItemEnchantedBook getEnchantedItemStack (Lnet/minecraft/enchantment/EnchantmentData;)Lnet/minecraft/item/ItemStack; func_92111_a +MD net/minecraft/item/ItemEnchantedBook getRandom (Ljava/util/Random;III)Lnet/minecraft/util/WeightedRandomChestContent; func_92112_a +MD net/minecraft/item/ItemEnchantedBook addEnchantment (Lnet/minecraft/item/ItemStack;Lnet/minecraft/enchantment/EnchantmentData;)V func_92115_a +MD net/minecraft/item/ItemEnchantedBook getRandom (Ljava/util/Random;)Lnet/minecraft/util/WeightedRandomChestContent; func_92114_b +MD net/minecraft/item/ItemEnchantedBook getEnchantments (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/nbt/NBTTagList; func_92110_g +MD net/minecraft/item/ItemFireworkCharge addExplosionInfo (Lnet/minecraft/nbt/NBTTagCompound;Ljava/util/List;)V func_150902_a +MD net/minecraft/item/ItemFireworkCharge getExplosionTag (Lnet/minecraft/item/ItemStack;Ljava/lang/String;)Lnet/minecraft/nbt/NBTBase; func_150903_a +MD net/minecraft/item/ItemFishFood$FishType getMetadata ()I func_150976_a +MD net/minecraft/item/ItemFishFood$FishType byMetadata (I)Lnet/minecraft/item/ItemFishFood$FishType; func_150974_a +MD net/minecraft/item/ItemFishFood$FishType byItemStack (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemFishFood$FishType; func_150978_a +MD net/minecraft/item/ItemFishFood$FishType getUnlocalizedName ()Ljava/lang/String; func_150972_b +MD net/minecraft/item/ItemFishFood$FishType getUncookedHealAmount ()I func_150975_c +MD net/minecraft/item/ItemFishFood$FishType getUncookedSaturationModifier ()F func_150967_d +MD net/minecraft/item/ItemFishFood$FishType getCookedHealAmount ()I func_150970_e +MD net/minecraft/item/ItemFishFood$FishType getCookedSaturationModifier ()F func_150977_f +MD net/minecraft/item/ItemFishFood$FishType canCook ()Z func_150973_i +MD net/minecraft/item/ItemFishFood$FishType valueOf (Ljava/lang/String;)Lnet/minecraft/item/ItemFishFood$FishType; valueOf +MD net/minecraft/item/ItemFishFood$FishType values ()[Lnet/minecraft/item/ItemFishFood$FishType; values +MD net/minecraft/item/ItemFood setPotionEffect (IIIF)Lnet/minecraft/item/ItemFood; func_77844_a +MD net/minecraft/item/ItemFood onFoodEaten (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)V func_77849_c +MD net/minecraft/item/ItemFood isWolfsFavoriteMeat ()Z func_77845_h +MD net/minecraft/item/ItemFood setAlwaysEdible ()Lnet/minecraft/item/ItemFood; func_77848_i +MD net/minecraft/item/ItemFood getHealAmount (Lnet/minecraft/item/ItemStack;)I func_150905_g +MD net/minecraft/item/ItemFood getSaturationModifier (Lnet/minecraft/item/ItemStack;)F func_150906_h +MD net/minecraft/item/ItemHangingEntity createEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/entity/EntityHanging; func_179233_a +MD net/minecraft/item/ItemHoe useHoe (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_179232_a +MD net/minecraft/item/ItemHoe getMaterialName ()Ljava/lang/String; func_77842_f +MD net/minecraft/item/Item getUnlocalizedName ()Ljava/lang/String; func_77658_a +MD net/minecraft/item/Item getMetadata (I)I func_77647_b +MD net/minecraft/item/Item registerItem (ILjava/lang/String;Lnet/minecraft/item/Item;)V func_179217_a +MD net/minecraft/item/Item registerItem (ILnet/minecraft/util/ResourceLocation;Lnet/minecraft/item/Item;)V func_179219_a +MD net/minecraft/item/Item getMovingObjectPositionFromPlayer (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Z)Lnet/minecraft/util/MovingObjectPosition; func_77621_a +MD net/minecraft/item/Item getItemFromBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/item/Item; func_150898_a +MD net/minecraft/item/Item registerItemBlock (Lnet/minecraft/block/Block;Lnet/minecraft/item/Item;)V func_179214_a +MD net/minecraft/item/Item updateItemStackNBT (Lnet/minecraft/nbt/NBTTagCompound;)Z func_179215_a +MD net/minecraft/item/Item setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/item/Item; func_77637_a +MD net/minecraft/item/Item getSubItems (Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V func_150895_a +MD net/minecraft/item/Item getItemStackDisplayName (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; func_77653_i +MD net/minecraft/item/Item getColorFromItemStack (Lnet/minecraft/item/ItemStack;I)I func_82790_a +MD net/minecraft/item/Item onBlockDestroyed (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/EntityLivingBase;)Z func_179218_a +MD net/minecraft/item/Item onUpdate (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;IZ)V func_77663_a +MD net/minecraft/item/Item onItemRightClick (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_77659_a +MD net/minecraft/item/Item onPlayerStoppedUsing (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V func_77615_a +MD net/minecraft/item/Item getStrVsBlock (Lnet/minecraft/item/ItemStack;Lnet/minecraft/block/Block;)F func_150893_a +MD net/minecraft/item/Item hitEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/EntityLivingBase;)Z func_77644_a +MD net/minecraft/item/Item onItemUse (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z func_180614_a +MD net/minecraft/item/Item addInformation (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Ljava/util/List;Z)V func_77624_a +MD net/minecraft/item/Item itemInteractionForEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/EntityLivingBase;)Z func_111207_a +MD net/minecraft/item/Item getIsRepairable (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_82789_a +MD net/minecraft/item/Item setHasSubtypes (Z)Lnet/minecraft/item/Item; func_77627_a +MD net/minecraft/item/Item getItemEnchantability ()I func_77619_b +MD net/minecraft/item/Item getItemById (I)Lnet/minecraft/item/Item; func_150899_d +MD net/minecraft/item/Item canHarvestBlock (Lnet/minecraft/block/Block;)Z func_150897_b +MD net/minecraft/item/Item getIdFromItem (Lnet/minecraft/item/Item;)I func_150891_b +MD net/minecraft/item/Item onItemUseFinish (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_77654_b +MD net/minecraft/item/Item getCreativeTab ()Lnet/minecraft/creativetab/CreativeTabs; func_77640_w +MD net/minecraft/item/Item setMaxStackSize (I)Lnet/minecraft/item/Item; func_77625_d +MD net/minecraft/item/Item registerItemBlock (Lnet/minecraft/block/Block;)V func_179216_c +MD net/minecraft/item/Item setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/item/Item; func_77655_b +MD net/minecraft/item/Item setContainerItem (Lnet/minecraft/item/Item;)Lnet/minecraft/item/Item; func_77642_a +MD net/minecraft/item/Item setMaxDamage (I)Lnet/minecraft/item/Item; func_77656_e +MD net/minecraft/item/Item getByNameOrId (Ljava/lang/String;)Lnet/minecraft/item/Item; func_111206_d +MD net/minecraft/item/Item getMaxItemUseDuration (Lnet/minecraft/item/ItemStack;)I func_77626_a +MD net/minecraft/item/Item onCreated (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)V func_77622_d +MD net/minecraft/item/Item shouldRotateAroundWhenRendering ()Z func_77629_n_ +MD net/minecraft/item/Item setPotionEffect (Ljava/lang/String;)Lnet/minecraft/item/Item; func_77631_c +MD net/minecraft/item/Item getItemUseAction (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumAction; func_77661_b +MD net/minecraft/item/Item getUnlocalizedName (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; func_77667_c +MD net/minecraft/item/Item isMap ()Z func_77643_m_ +MD net/minecraft/item/Item hasEffect (Lnet/minecraft/item/ItemStack;)Z func_77636_d +MD net/minecraft/item/Item isItemTool (Lnet/minecraft/item/ItemStack;)Z func_77616_k +MD net/minecraft/item/Item getRarity (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/EnumRarity; func_77613_e +MD net/minecraft/item/Item getItemAttributeModifiers ()Lcom/google/common/collect/Multimap; func_111205_h +MD net/minecraft/item/Item getItemStackLimit ()I func_77639_j +MD net/minecraft/item/Item getPotionEffect (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; func_150896_i +MD net/minecraft/item/Item getHasSubtypes ()Z func_77614_k +MD net/minecraft/item/Item getUnlocalizedNameInefficiently (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; func_77657_g +MD net/minecraft/item/Item getMaxDamage ()I func_77612_l +MD net/minecraft/item/Item isPotionIngredient (Lnet/minecraft/item/ItemStack;)Z func_150892_m +MD net/minecraft/item/Item isDamageable ()Z func_77645_m +MD net/minecraft/item/Item setFull3D ()Lnet/minecraft/item/Item; func_77664_n +MD net/minecraft/item/Item getShareTag ()Z func_77651_p +MD net/minecraft/item/Item getContainerItem ()Lnet/minecraft/item/Item; func_77668_q +MD net/minecraft/item/Item hasContainerItem ()Z func_77634_r +MD net/minecraft/item/Item canItemEditBlocks ()Z func_82788_x +MD net/minecraft/item/Item registerItems ()V func_150900_l +MD net/minecraft/item/Item isFull3D ()Z func_77662_d +MD net/minecraft/item/Item$1 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$2 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$2 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$3 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$3 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$4 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$4 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$5 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$5 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$6 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$6 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$7 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$7 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$8 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$8 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$9 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$9 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$ToolMaterial getMaxUses ()I func_77997_a +MD net/minecraft/item/Item$ToolMaterial getEfficiencyOnProperMaterial ()F func_77998_b +MD net/minecraft/item/Item$ToolMaterial getDamageVsEntity ()F func_78000_c +MD net/minecraft/item/Item$ToolMaterial getHarvestLevel ()I func_77996_d +MD net/minecraft/item/Item$ToolMaterial getEnchantability ()I func_77995_e +MD net/minecraft/item/Item$ToolMaterial getRepairItem ()Lnet/minecraft/item/Item; func_150995_f +MD net/minecraft/item/Item$ToolMaterial valueOf (Ljava/lang/String;)Lnet/minecraft/item/Item$ToolMaterial; valueOf +MD net/minecraft/item/Item$ToolMaterial values ()[Lnet/minecraft/item/Item$ToolMaterial; values +MD net/minecraft/item/Item$10 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$10 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$11 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$11 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$12 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$12 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$13 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$13 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$14 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$14 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$15 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$15 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$16 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$16 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/Item$17 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/Item$17 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/ItemStack getRepairCost ()I func_82838_A +MD net/minecraft/item/ItemStack getAttributeModifiers ()Lcom/google/common/collect/Multimap; func_111283_C +MD net/minecraft/item/ItemStack getChatComponent ()Lnet/minecraft/util/IChatComponent; func_151000_E +MD net/minecraft/item/ItemStack getUnlocalizedName ()Ljava/lang/String; func_77977_a +MD net/minecraft/item/ItemStack splitStack (I)Lnet/minecraft/item/ItemStack; func_77979_a +MD net/minecraft/item/ItemStack attemptDamageItem (ILjava/util/Random;)Z func_96631_a +MD net/minecraft/item/ItemStack damageItem (ILnet/minecraft/entity/EntityLivingBase;)V func_77972_a +MD net/minecraft/item/ItemStack addEnchantment (Lnet/minecraft/enchantment/Enchantment;I)V func_77966_a +MD net/minecraft/item/ItemStack onBlockDestroyed (Lnet/minecraft/world/World;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)V func_179548_a +MD net/minecraft/item/ItemStack updateAnimation (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;IZ)V func_77945_a +MD net/minecraft/item/ItemStack useItemRightClick (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_77957_a +MD net/minecraft/item/ItemStack onCrafting (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V func_77980_a +MD net/minecraft/item/ItemStack getStrVsBlock (Lnet/minecraft/block/Block;)F func_150997_a +MD net/minecraft/item/ItemStack loadItemStackFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/item/ItemStack; func_77949_a +MD net/minecraft/item/ItemStack setTagInfo (Ljava/lang/String;Lnet/minecraft/nbt/NBTBase;)V func_77983_a +MD net/minecraft/item/ItemStack getSubCompound (Ljava/lang/String;Z)Lnet/minecraft/nbt/NBTTagCompound; func_179543_a +MD net/minecraft/item/ItemStack hitEntity (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/player/EntityPlayer;)V func_77961_a +MD net/minecraft/item/ItemStack setItemFrame (Lnet/minecraft/entity/item/EntityItemFrame;)V func_82842_a +MD net/minecraft/item/ItemStack onItemUse (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFF)Z func_179546_a +MD net/minecraft/item/ItemStack interactWithEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/EntityLivingBase;)Z func_111282_a +MD net/minecraft/item/ItemStack getTooltip (Lnet/minecraft/entity/player/EntityPlayer;Z)Ljava/util/List; func_82840_a +MD net/minecraft/item/ItemStack setItem (Lnet/minecraft/item/Item;)V func_150996_a +MD net/minecraft/item/ItemStack isItemEqual (Lnet/minecraft/item/ItemStack;)Z func_77969_a +MD net/minecraft/item/ItemStack areItemStackTagsEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_77970_a +MD net/minecraft/item/ItemStack getItem ()Lnet/minecraft/item/Item; func_77973_b +MD net/minecraft/item/ItemStack setItemDamage (I)V func_77964_b +MD net/minecraft/item/ItemStack onItemUseFinish (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_77950_b +MD net/minecraft/item/ItemStack onPlayerStoppedUsing (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;I)V func_77974_b +MD net/minecraft/item/ItemStack canHarvestBlock (Lnet/minecraft/block/Block;)Z func_150998_b +MD net/minecraft/item/ItemStack writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; func_77955_b +MD net/minecraft/item/ItemStack copyItemStack (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; func_77944_b +MD net/minecraft/item/ItemStack areItemStacksEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_77989_b +MD net/minecraft/item/ItemStack getMaxStackSize ()I func_77976_d +MD net/minecraft/item/ItemStack setRepairCost (I)V func_82841_c +MD net/minecraft/item/ItemStack canDestroy (Lnet/minecraft/block/Block;)Z func_179544_c +MD net/minecraft/item/ItemStack readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_77963_c +MD net/minecraft/item/ItemStack setStackDisplayName (Ljava/lang/String;)Lnet/minecraft/item/ItemStack; func_151001_c +MD net/minecraft/item/ItemStack getIsItemStackEqual (Lnet/minecraft/item/ItemStack;)Z func_179549_c +MD net/minecraft/item/ItemStack areItemsEqual (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_179545_c +MD net/minecraft/item/ItemStack isStackable ()Z func_77985_e +MD net/minecraft/item/ItemStack canPlaceOn (Lnet/minecraft/block/Block;)Z func_179547_d +MD net/minecraft/item/ItemStack setTagCompound (Lnet/minecraft/nbt/NBTTagCompound;)V func_77982_d +MD net/minecraft/item/ItemStack isItemStackEqual (Lnet/minecraft/item/ItemStack;)Z func_77959_d +MD net/minecraft/item/ItemStack isItemStackDamageable ()Z func_77984_f +MD net/minecraft/item/ItemStack getHasSubtypes ()Z func_77981_g +MD net/minecraft/item/ItemStack isItemDamaged ()Z func_77951_h +MD net/minecraft/item/ItemStack getItemDamage ()I func_77952_i +MD net/minecraft/item/ItemStack getMetadata ()I func_77960_j +MD net/minecraft/item/ItemStack getMaxDamage ()I func_77958_k +MD net/minecraft/item/ItemStack copy ()Lnet/minecraft/item/ItemStack; func_77946_l +MD net/minecraft/item/ItemStack getMaxItemUseDuration ()I func_77988_m +MD net/minecraft/item/ItemStack getItemUseAction ()Lnet/minecraft/item/EnumAction; func_77975_n +MD net/minecraft/item/ItemStack hasTagCompound ()Z func_77942_o +MD net/minecraft/item/ItemStack getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_77978_p +MD net/minecraft/item/ItemStack getEnchantmentTagList ()Lnet/minecraft/nbt/NBTTagList; func_77986_q +MD net/minecraft/item/ItemStack getDisplayName ()Ljava/lang/String; func_82833_r +MD net/minecraft/item/ItemStack clearCustomName ()V func_135074_t +MD net/minecraft/item/ItemStack hasDisplayName ()Z func_82837_s +MD net/minecraft/item/ItemStack hasEffect ()Z func_77962_s +MD net/minecraft/item/ItemStack getRarity ()Lnet/minecraft/item/EnumRarity; func_77953_t +MD net/minecraft/item/ItemStack isItemEnchantable ()Z func_77956_u +MD net/minecraft/item/ItemStack isItemEnchanted ()Z func_77948_v +MD net/minecraft/item/ItemStack canEditBlocks ()Z func_82835_x +MD net/minecraft/item/ItemStack isOnItemFrame ()Z func_82839_y +MD net/minecraft/item/ItemStack getItemFrame ()Lnet/minecraft/entity/item/EntityItemFrame; func_82836_z +MD net/minecraft/item/ItemStack toString ()Ljava/lang/String; toString +MD net/minecraft/init/Items getRegisteredItem (Ljava/lang/String;)Lnet/minecraft/item/Item; func_179554_a +MD net/minecraft/item/ItemLead attachToFence (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_180618_a +MD net/minecraft/item/ItemMap loadMapData (ILnet/minecraft/world/World;)Lnet/minecraft/world/storage/MapData; func_150912_a +MD net/minecraft/item/ItemMap updateMapData (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;Lnet/minecraft/world/storage/MapData;)V func_77872_a +MD net/minecraft/item/ItemMap getMapData (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;)Lnet/minecraft/world/storage/MapData; func_77873_a +MD net/minecraft/item/ItemMinecart access$000 (Lnet/minecraft/item/ItemMinecart;)Lnet/minecraft/entity/item/EntityMinecart$EnumMinecartType; access$000 +MD net/minecraft/item/ItemMultiTexture$1 apply (Lnet/minecraft/item/ItemStack;)Ljava/lang/String; apply +MD net/minecraft/item/ItemMultiTexture$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/item/ItemPotion getEffects (I)Ljava/util/List; func_77834_f +MD net/minecraft/item/ItemPotion isSplash (I)Z func_77831_g +MD net/minecraft/item/ItemPotion getColorFromDamage (I)I func_77620_a +MD net/minecraft/item/ItemPotion isEffectInstant (I)Z func_77833_h +MD net/minecraft/item/ItemPotion getEffects (Lnet/minecraft/item/ItemStack;)Ljava/util/List; func_77832_l +MD net/minecraft/item/EnumRarity valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumRarity; valueOf +MD net/minecraft/item/EnumRarity values ()[Lnet/minecraft/item/EnumRarity; values +MD net/minecraft/item/ItemRecord getRecord (Ljava/lang/String;)Lnet/minecraft/item/ItemRecord; func_150926_b +MD net/minecraft/item/ItemRecord getRecordNameLocal ()Ljava/lang/String; func_150927_i +MD net/minecraft/item/ItemSlab tryPlace (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Ljava/lang/Object;)Z func_180615_a +MD net/minecraft/item/ItemMonsterPlacer spawnCreature (Lnet/minecraft/world/World;IDDD)Lnet/minecraft/entity/Entity; func_77840_a +MD net/minecraft/item/ItemSword getDamageVsEntity ()F func_150931_i +MD net/minecraft/item/ItemSword getToolMaterialName ()Ljava/lang/String; func_150932_j +MD net/minecraft/item/ItemColored setSubtypeNames ([Ljava/lang/String;)Lnet/minecraft/item/ItemColored; func_150943_a +MD net/minecraft/item/EnumAction valueOf (Ljava/lang/String;)Lnet/minecraft/item/EnumAction; valueOf +MD net/minecraft/item/EnumAction values ()[Lnet/minecraft/item/EnumAction; values +MD net/minecraft/item/ItemWritableBook isNBTValid (Lnet/minecraft/nbt/NBTTagCompound;)Z func_150930_a +MD net/minecraft/item/ItemEditableBook resolveContents (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/player/EntityPlayer;)V func_179229_a +MD net/minecraft/item/ItemEditableBook validBookTagContents (Lnet/minecraft/nbt/NBTTagCompound;)Z func_77828_a +MD net/minecraft/item/ItemEditableBook getGeneration (Lnet/minecraft/item/ItemStack;)I func_179230_h +MD net/minecraft/potion/PotionHelper getPotionPrefixIndex (I)I func_77909_a +MD net/minecraft/potion/PotionHelper checkFlag (II)Z func_77914_a +MD net/minecraft/potion/PotionHelper getPotionPrefixIndexFlags (IIIIII)I func_77908_a +MD net/minecraft/potion/PotionHelper brewBitOperations (IIZZZ)I func_77906_a +MD net/minecraft/potion/PotionHelper applyIngredient (ILjava/lang/String;)I func_77913_a +MD net/minecraft/potion/PotionHelper getLiquidColor (IZ)I func_77915_a +MD net/minecraft/potion/PotionHelper parsePotionEffects (Ljava/lang/String;III)I func_77912_a +MD net/minecraft/potion/PotionHelper calcPotionLiquidColor (Ljava/util/Collection;)I func_77911_a +MD net/minecraft/potion/PotionHelper getPotionEffect (ZZZIIII)I func_77904_a +MD net/minecraft/potion/PotionHelper getPotionEffects (IZ)Ljava/util/List; func_77917_b +MD net/minecraft/potion/PotionHelper getAreAmbient (Ljava/util/Collection;)Z func_82817_b +MD net/minecraft/potion/PotionHelper getPotionPrefix (I)Ljava/lang/String; func_77905_c +MD net/minecraft/potion/PotionHelper isFlagSet (II)I func_77910_c +MD net/minecraft/potion/PotionHelper isFlagUnset (II)I func_77916_d +MD net/minecraft/potion/PotionHelper countSetFlags (I)I func_77907_h +MD net/minecraft/item/crafting/RecipesArmor addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77609_a +MD net/minecraft/item/crafting/RecipesBanners addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_179534_a +MD net/minecraft/item/crafting/RecipesBanners$RecipeAddPattern func_179533_c (Lnet/minecraft/inventory/InventoryCrafting;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; func_179533_c +MD net/minecraft/item/crafting/RecipesDyes addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77607_a +MD net/minecraft/item/crafting/RecipesFood addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77608_a +MD net/minecraft/item/crafting/FurnaceRecipes instance ()Lnet/minecraft/item/crafting/FurnaceRecipes; func_77602_a +MD net/minecraft/item/crafting/FurnaceRecipes addSmeltingRecipeForBlock (Lnet/minecraft/block/Block;Lnet/minecraft/item/ItemStack;F)V func_151393_a +MD net/minecraft/item/crafting/FurnaceRecipes addSmelting (Lnet/minecraft/item/Item;Lnet/minecraft/item/ItemStack;F)V func_151396_a +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingResult (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/item/ItemStack; func_151395_a +MD net/minecraft/item/crafting/FurnaceRecipes compareItemStacks (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_151397_a +MD net/minecraft/item/crafting/FurnaceRecipes addSmeltingRecipe (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;F)V func_151394_a +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingList ()Ljava/util/Map; func_77599_b +MD net/minecraft/item/crafting/FurnaceRecipes getSmeltingExperience (Lnet/minecraft/item/ItemStack;)F func_151398_b +MD net/minecraft/item/crafting/RecipesIngots addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77590_a +MD net/minecraft/item/crafting/IRecipe getRecipeSize ()I func_77570_a +MD net/minecraft/item/crafting/IRecipe getCraftingResult (Lnet/minecraft/inventory/InventoryCrafting;)Lnet/minecraft/item/ItemStack; func_77572_b +MD net/minecraft/item/crafting/IRecipe matches (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)Z func_77569_a +MD net/minecraft/item/crafting/IRecipe getRecipeOutput ()Lnet/minecraft/item/ItemStack; func_77571_b +MD net/minecraft/item/crafting/IRecipe getRemainingItems (Lnet/minecraft/inventory/InventoryCrafting;)[Lnet/minecraft/item/ItemStack; func_179532_b +MD net/minecraft/item/crafting/CraftingManager getInstance ()Lnet/minecraft/item/crafting/CraftingManager; func_77594_a +MD net/minecraft/item/crafting/CraftingManager addRecipe (Lnet/minecraft/item/crafting/IRecipe;)V func_180302_a +MD net/minecraft/item/crafting/CraftingManager findMatchingRecipe (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)Lnet/minecraft/item/ItemStack; func_82787_a +MD net/minecraft/item/crafting/CraftingManager addRecipe (Lnet/minecraft/item/ItemStack;[Ljava/lang/Object;)Lnet/minecraft/item/crafting/ShapedRecipes; func_92103_a +MD net/minecraft/item/crafting/CraftingManager getRecipeList ()Ljava/util/List; func_77592_b +MD net/minecraft/item/crafting/CraftingManager func_180303_b (Lnet/minecraft/inventory/InventoryCrafting;Lnet/minecraft/world/World;)[Lnet/minecraft/item/ItemStack; func_180303_b +MD net/minecraft/item/crafting/CraftingManager addShapelessRecipe (Lnet/minecraft/item/ItemStack;[Ljava/lang/Object;)V func_77596_b +MD net/minecraft/item/crafting/CraftingManager$1 compare (Lnet/minecraft/item/crafting/IRecipe;Lnet/minecraft/item/crafting/IRecipe;)I compare +MD net/minecraft/item/crafting/CraftingManager$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/item/crafting/ShapedRecipes checkMatch (Lnet/minecraft/inventory/InventoryCrafting;IIZ)Z func_77573_a +MD net/minecraft/item/crafting/RecipesCrafting addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77589_a +MD net/minecraft/item/crafting/RecipesTools addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77586_a +MD net/minecraft/item/crafting/RecipesWeapons addRecipes (Lnet/minecraft/item/crafting/CraftingManager;)V func_77583_a +MD net/minecraft/enchantment/EnchantmentDurability negateDamage (Lnet/minecraft/item/ItemStack;ILjava/util/Random;)Z func_92097_a +MD net/minecraft/enchantment/Enchantment getName ()Ljava/lang/String; func_77320_a +MD net/minecraft/enchantment/Enchantment getMinEnchantability (I)I func_77321_a +MD net/minecraft/enchantment/Enchantment calcModifierDamage (ILnet/minecraft/util/DamageSource;)I func_77318_a +MD net/minecraft/enchantment/Enchantment calcDamageByCreature (ILnet/minecraft/entity/EnumCreatureAttribute;)F func_152376_a +MD net/minecraft/enchantment/Enchantment canApplyTogether (Lnet/minecraft/enchantment/Enchantment;)Z func_77326_a +MD net/minecraft/enchantment/Enchantment onEntityDamaged (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;I)V func_151368_a +MD net/minecraft/enchantment/Enchantment canApply (Lnet/minecraft/item/ItemStack;)Z func_92089_a +MD net/minecraft/enchantment/Enchantment getMaxLevel ()I func_77325_b +MD net/minecraft/enchantment/Enchantment getMaxEnchantability (I)I func_77317_b +MD net/minecraft/enchantment/Enchantment getEnchantmentByLocation (Ljava/lang/String;)Lnet/minecraft/enchantment/Enchantment; func_180305_b +MD net/minecraft/enchantment/Enchantment onUserHurt (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;I)V func_151367_b +MD net/minecraft/enchantment/Enchantment func_181077_c ()Ljava/util/Set; func_181077_c +MD net/minecraft/enchantment/Enchantment getEnchantmentById (I)Lnet/minecraft/enchantment/Enchantment; func_180306_c +MD net/minecraft/enchantment/Enchantment setName (Ljava/lang/String;)Lnet/minecraft/enchantment/Enchantment; func_77322_b +MD net/minecraft/enchantment/Enchantment getWeight ()I func_77324_c +MD net/minecraft/enchantment/Enchantment getTranslatedName (I)Ljava/lang/String; func_77316_c +MD net/minecraft/enchantment/Enchantment getMinLevel ()I func_77319_d +MD net/minecraft/enchantment/EnumEnchantmentType canEnchantItem (Lnet/minecraft/item/Item;)Z func_77557_a +MD net/minecraft/enchantment/EnumEnchantmentType valueOf (Ljava/lang/String;)Lnet/minecraft/enchantment/EnumEnchantmentType; valueOf +MD net/minecraft/enchantment/EnumEnchantmentType values ()[Lnet/minecraft/enchantment/EnumEnchantmentType; values +MD net/minecraft/enchantment/EnchantmentHelper getEnchantmentLevel (ILnet/minecraft/item/ItemStack;)I func_77506_a +MD net/minecraft/enchantment/EnchantmentHelper getMaxEnchantmentLevel (I[Lnet/minecraft/item/ItemStack;)I func_77511_a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantedItem (Lnet/minecraft/enchantment/Enchantment;Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/item/ItemStack; func_92099_a +MD net/minecraft/enchantment/EnchantmentHelper applyEnchantmentModifier (Lnet/minecraft/enchantment/EnchantmentHelper$IModifier;Lnet/minecraft/item/ItemStack;)V func_77518_a +MD net/minecraft/enchantment/EnchantmentHelper applyEnchantmentModifierArray (Lnet/minecraft/enchantment/EnchantmentHelper$IModifier;[Lnet/minecraft/item/ItemStack;)V func_77516_a +MD net/minecraft/enchantment/EnchantmentHelper setEnchantments (Ljava/util/Map;Lnet/minecraft/item/ItemStack;)V func_82782_a +MD net/minecraft/enchantment/EnchantmentHelper calcItemStackEnchantability (Ljava/util/Random;IILnet/minecraft/item/ItemStack;)I func_77514_a +MD net/minecraft/enchantment/EnchantmentHelper addRandomEnchantment (Ljava/util/Random;Lnet/minecraft/item/ItemStack;I)Lnet/minecraft/item/ItemStack; func_77504_a +MD net/minecraft/enchantment/EnchantmentHelper getRespiration (Lnet/minecraft/entity/Entity;)I func_180319_a +MD net/minecraft/enchantment/EnchantmentHelper getKnockbackModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_77501_a +MD net/minecraft/enchantment/EnchantmentHelper applyThornEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V func_151384_a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantments (Lnet/minecraft/item/ItemStack;)Ljava/util/Map; func_82781_a +MD net/minecraft/enchantment/EnchantmentHelper getModifierForCreature (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EnumCreatureAttribute;)F func_152377_a +MD net/minecraft/enchantment/EnchantmentHelper getEnchantmentModifierDamage ([Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/DamageSource;)I func_77508_a +MD net/minecraft/enchantment/EnchantmentHelper mapEnchantmentData (ILnet/minecraft/item/ItemStack;)Ljava/util/Map; func_77505_b +MD net/minecraft/enchantment/EnchantmentHelper buildEnchantmentList (Ljava/util/Random;Lnet/minecraft/item/ItemStack;I)Ljava/util/List; func_77513_b +MD net/minecraft/enchantment/EnchantmentHelper getDepthStriderModifier (Lnet/minecraft/entity/Entity;)I func_180318_b +MD net/minecraft/enchantment/EnchantmentHelper getFireAspectModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_90036_a +MD net/minecraft/enchantment/EnchantmentHelper applyArthropodEnchantments (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/entity/Entity;)V func_151385_b +MD net/minecraft/enchantment/EnchantmentHelper getEfficiencyModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_77509_b +MD net/minecraft/enchantment/EnchantmentHelper getSilkTouchModifier (Lnet/minecraft/entity/EntityLivingBase;)Z func_77502_d +MD net/minecraft/enchantment/EnchantmentHelper getFortuneModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_77517_e +MD net/minecraft/enchantment/EnchantmentHelper getLuckOfSeaModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_151386_g +MD net/minecraft/enchantment/EnchantmentHelper getLureModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_151387_h +MD net/minecraft/enchantment/EnchantmentHelper getLootingModifier (Lnet/minecraft/entity/EntityLivingBase;)I func_77519_f +MD net/minecraft/enchantment/EnchantmentHelper getAquaAffinityModifier (Lnet/minecraft/entity/EntityLivingBase;)Z func_77510_g +MD net/minecraft/enchantment/EnchantmentHelper$IModifier calculateModifier (Lnet/minecraft/enchantment/Enchantment;I)V func_77493_a +MD net/minecraft/enchantment/EnchantmentProtection func_92092_a (Lnet/minecraft/entity/Entity;D)D func_92092_a +MD net/minecraft/enchantment/EnchantmentProtection getFireTimeForEntity (Lnet/minecraft/entity/Entity;I)I func_92093_a +MD net/minecraft/enchantment/EnchantmentThorns func_92094_a (ILjava/util/Random;)Z func_92094_a +MD net/minecraft/enchantment/EnchantmentThorns func_92095_b (ILjava/util/Random;)I func_92095_b +MD net/minecraft/entity/IMerchant useRecipe (Lnet/minecraft/village/MerchantRecipe;)V func_70933_a +MD net/minecraft/entity/IMerchant setRecipes (Lnet/minecraft/village/MerchantRecipeList;)V func_70930_a +MD net/minecraft/entity/IMerchant setCustomer (Lnet/minecraft/entity/player/EntityPlayer;)V func_70932_a_ +MD net/minecraft/entity/IMerchant verifySellingItem (Lnet/minecraft/item/ItemStack;)V func_110297_a_ +MD net/minecraft/entity/IMerchant getRecipes (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/village/MerchantRecipeList; func_70934_b +MD net/minecraft/entity/IMerchant getDisplayName ()Lnet/minecraft/util/IChatComponent; func_145748_c_ +MD net/minecraft/entity/IMerchant getCustomer ()Lnet/minecraft/entity/player/EntityPlayer; func_70931_l_ +MD net/minecraft/village/MerchantRecipe getItemToBuy ()Lnet/minecraft/item/ItemStack; func_77394_a +MD net/minecraft/village/MerchantRecipe increaseMaxTradeUses (I)V func_82783_a +MD net/minecraft/village/MerchantRecipe readFromTags (Lnet/minecraft/nbt/NBTTagCompound;)V func_77390_a +MD net/minecraft/village/MerchantRecipe getSecondItemToBuy ()Lnet/minecraft/item/ItemStack; func_77396_b +MD net/minecraft/village/MerchantRecipe hasSecondItemToBuy ()Z func_77398_c +MD net/minecraft/village/MerchantRecipe getItemToSell ()Lnet/minecraft/item/ItemStack; func_77397_d +MD net/minecraft/village/MerchantRecipe getToolUses ()I func_180321_e +MD net/minecraft/village/MerchantRecipe getMaxTradeUses ()I func_180320_f +MD net/minecraft/village/MerchantRecipe incrementToolUses ()V func_77399_f +MD net/minecraft/village/MerchantRecipe isRecipeDisabled ()Z func_82784_g +MD net/minecraft/village/MerchantRecipe compensateToolUses ()V func_82785_h +MD net/minecraft/village/MerchantRecipe getRewardsExp ()Z func_180322_j +MD net/minecraft/village/MerchantRecipe writeToTags ()Lnet/minecraft/nbt/NBTTagCompound; func_77395_g +MD net/minecraft/village/MerchantRecipeList getRecipiesAsTags ()Lnet/minecraft/nbt/NBTTagCompound; func_77202_a +MD net/minecraft/village/MerchantRecipeList readRecipiesFromTags (Lnet/minecraft/nbt/NBTTagCompound;)V func_77201_a +MD net/minecraft/village/MerchantRecipeList writeToBuf (Lnet/minecraft/network/PacketBuffer;)V func_151391_a +MD net/minecraft/village/MerchantRecipeList func_181078_a (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_181078_a +MD net/minecraft/village/MerchantRecipeList canRecipeBeUsed (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;I)Lnet/minecraft/village/MerchantRecipe; func_77203_a +MD net/minecraft/village/MerchantRecipeList readFromBuf (Lnet/minecraft/network/PacketBuffer;)Lnet/minecraft/village/MerchantRecipeList; func_151390_b +MD net/minecraft/command/server/CommandBlockLogic trigger (Lnet/minecraft/world/World;)V func_145755_a +MD net/minecraft/command/server/CommandBlockLogic writeDataToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_145758_a +MD net/minecraft/command/server/CommandBlockLogic func_145757_a (Lio/netty/buffer/ByteBuf;)V func_145757_a +MD net/minecraft/command/server/CommandBlockLogic setCommand (Ljava/lang/String;)V func_145752_a +MD net/minecraft/command/server/CommandBlockLogic tryOpenEditCommandBlock (Lnet/minecraft/entity/player/EntityPlayer;)Z func_175574_a +MD net/minecraft/command/server/CommandBlockLogic setTrackOutput (Z)V func_175573_a +MD net/minecraft/command/server/CommandBlockLogic readDataFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_145759_b +MD net/minecraft/command/server/CommandBlockLogic setLastOutput (Lnet/minecraft/util/IChatComponent;)V func_145750_b +MD net/minecraft/command/server/CommandBlockLogic setName (Ljava/lang/String;)V func_145754_b +MD net/minecraft/command/server/CommandBlockLogic updateCommand ()V func_145756_e +MD net/minecraft/command/server/CommandBlockLogic func_145751_f ()I func_145751_f +MD net/minecraft/command/server/CommandBlockLogic getSuccessCount ()I func_145760_g +MD net/minecraft/command/server/CommandBlockLogic getLastOutput ()Lnet/minecraft/util/IChatComponent; func_145749_h +MD net/minecraft/command/server/CommandBlockLogic getCommand ()Ljava/lang/String; func_145753_i +MD net/minecraft/command/server/CommandBlockLogic shouldTrackOutput ()Z func_175571_m +MD net/minecraft/command/server/CommandBlockLogic getCommandResultStats ()Lnet/minecraft/command/CommandResultStats; func_175572_n +MD net/minecraft/command/server/CommandBlockLogic$1 call ()Ljava/lang/String; call +MD net/minecraft/command/server/CommandBlockLogic$1 call ()Ljava/lang/Object; call +MD net/minecraft/command/server/CommandBlockLogic$2 call ()Ljava/lang/String; call +MD net/minecraft/command/server/CommandBlockLogic$2 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/MobSpawnerBaseLogic getSpawnerWorld ()Lnet/minecraft/world/World; func_98271_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic func_98267_a (I)V func_98267_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic setRandomEntity (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)V func_98277_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic func_180612_a (Lnet/minecraft/world/World;)Lnet/minecraft/entity/Entity; func_180612_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_98270_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic setEntityName (Ljava/lang/String;)V func_98272_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic spawnNewEntity (Lnet/minecraft/entity/Entity;Z)Lnet/minecraft/entity/Entity; func_180613_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic getSpawnerPosition ()Lnet/minecraft/util/BlockPos; func_177221_b +MD net/minecraft/tileentity/MobSpawnerBaseLogic setDelayToMin (I)Z func_98268_b +MD net/minecraft/tileentity/MobSpawnerBaseLogic writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_98280_b +MD net/minecraft/tileentity/MobSpawnerBaseLogic updateSpawner ()V func_98278_g +MD net/minecraft/tileentity/MobSpawnerBaseLogic getMobRotation ()D func_177222_d +MD net/minecraft/tileentity/MobSpawnerBaseLogic getPrevMobRotation ()D func_177223_e +MD net/minecraft/tileentity/MobSpawnerBaseLogic getEntityNameToSpawn ()Ljava/lang/String; func_98276_e +MD net/minecraft/tileentity/MobSpawnerBaseLogic isActivated ()Z func_98279_f +MD net/minecraft/tileentity/MobSpawnerBaseLogic resetTimer ()V func_98273_j +MD net/minecraft/tileentity/MobSpawnerBaseLogic getRandomEntity ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart; func_98269_i +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart toNBT ()Lnet/minecraft/nbt/NBTTagCompound; func_98220_a +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart access$000 (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)Ljava/lang/String; access$000 +MD net/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart access$100 (Lnet/minecraft/tileentity/MobSpawnerBaseLogic$WeightedRandomMinecart;)Lnet/minecraft/nbt/NBTTagCompound; access$100 +MD net/minecraft/block/BlockEventData getPosition ()Lnet/minecraft/util/BlockPos; func_180328_a +MD net/minecraft/block/BlockEventData getEventID ()I func_151339_d +MD net/minecraft/block/BlockEventData getEventParameter ()I func_151338_e +MD net/minecraft/block/BlockEventData getBlock ()Lnet/minecraft/block/Block; func_151337_f +MD net/minecraft/block/BlockEventData equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/BlockEventData toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumWorldBlockLayer toString ()Ljava/lang/String; toString +MD net/minecraft/util/EnumWorldBlockLayer valueOf (Ljava/lang/String;)Lnet/minecraft/util/EnumWorldBlockLayer; valueOf +MD net/minecraft/util/EnumWorldBlockLayer values ()[Lnet/minecraft/util/EnumWorldBlockLayer; values +MD net/minecraft/world/ChunkCoordIntPair getCenterXPos ()I func_77273_a +MD net/minecraft/world/ChunkCoordIntPair getCenterBlock (I)Lnet/minecraft/util/BlockPos; func_180619_a +MD net/minecraft/world/ChunkCoordIntPair chunkXZ2Int (II)J func_77272_a +MD net/minecraft/world/ChunkCoordIntPair getBlock (III)Lnet/minecraft/util/BlockPos; func_180331_a +MD net/minecraft/world/ChunkCoordIntPair getCenterZPosition ()I func_77274_b +MD net/minecraft/world/ChunkCoordIntPair getXStart ()I func_180334_c +MD net/minecraft/world/ChunkCoordIntPair getZStart ()I func_180333_d +MD net/minecraft/world/ChunkCoordIntPair getXEnd ()I func_180332_e +MD net/minecraft/world/ChunkCoordIntPair getZEnd ()I func_180330_f +MD net/minecraft/world/ChunkCoordIntPair equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/ChunkCoordIntPair hashCode ()I hashCode +MD net/minecraft/world/ChunkCoordIntPair toString ()Ljava/lang/String; toString +MD net/minecraft/world/Explosion doExplosionA ()V func_77278_a +MD net/minecraft/world/Explosion doExplosionB (Z)V func_77279_a +MD net/minecraft/world/Explosion getPlayerKnockbackMap ()Ljava/util/Map; func_77277_b +MD net/minecraft/world/Explosion getExplosivePlacedBy ()Lnet/minecraft/entity/EntityLivingBase; func_94613_c +MD net/minecraft/world/Explosion clearAffectedBlockPositions ()V func_180342_d +MD net/minecraft/world/Explosion getAffectedBlockPositions ()Ljava/util/List; func_180343_e +MD net/minecraft/world/ColorizerFoliage getFoliageColorPine ()I func_77466_a +MD net/minecraft/world/ColorizerFoliage getFoliageColor (DD)I func_77470_a +MD net/minecraft/world/ColorizerFoliage setFoliageBiomeColorizer ([I)V func_77467_a +MD net/minecraft/world/ColorizerFoliage getFoliageColorBirch ()I func_77469_b +MD net/minecraft/world/ColorizerFoliage getFoliageColorBasic ()I func_77468_c +MD net/minecraft/world/GameRules writeToNBT ()Lnet/minecraft/nbt/NBTTagCompound; func_82770_a +MD net/minecraft/world/GameRules readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_82768_a +MD net/minecraft/world/GameRules getString (Ljava/lang/String;)Ljava/lang/String; func_82767_a +MD net/minecraft/world/GameRules areSameType (Ljava/lang/String;Lnet/minecraft/world/GameRules$ValueType;)Z func_180264_a +MD net/minecraft/world/GameRules setOrCreateGameRule (Ljava/lang/String;Ljava/lang/String;)V func_82764_b +MD net/minecraft/world/GameRules addGameRule (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/GameRules$ValueType;)V func_180262_a +MD net/minecraft/world/GameRules getRules ()[Ljava/lang/String; func_82763_b +MD net/minecraft/world/GameRules getBoolean (Ljava/lang/String;)Z func_82766_b +MD net/minecraft/world/GameRules getInt (Ljava/lang/String;)I func_180263_c +MD net/minecraft/world/GameRules hasRule (Ljava/lang/String;)Z func_82765_e +MD net/minecraft/world/GameRules$Value getString ()Ljava/lang/String; func_82756_a +MD net/minecraft/world/GameRules$Value setValue (Ljava/lang/String;)V func_82757_a +MD net/minecraft/world/GameRules$Value getBoolean ()Z func_82758_b +MD net/minecraft/world/GameRules$Value getInt ()I func_180255_c +MD net/minecraft/world/GameRules$Value getType ()Lnet/minecraft/world/GameRules$ValueType; func_180254_e +MD net/minecraft/world/GameRules$ValueType valueOf (Ljava/lang/String;)Lnet/minecraft/world/GameRules$ValueType; valueOf +MD net/minecraft/world/GameRules$ValueType values ()[Lnet/minecraft/world/GameRules$ValueType; values +MD net/minecraft/world/ColorizerGrass getGrassColor (DD)I func_77480_a +MD net/minecraft/world/ColorizerGrass setGrassBiomeColorizer ([I)V func_77479_a +MD net/minecraft/world/World getProviderName ()Ljava/lang/String; func_72827_u +MD net/minecraft/world/World isBlockIndirectlyGettingPowered (Lnet/minecraft/util/BlockPos;)I func_175687_A +MD net/minecraft/world/World calculateInitialSkylight ()V func_72966_v +MD net/minecraft/world/World setSpawnPoint (Lnet/minecraft/util/BlockPos;)V func_175652_B +MD net/minecraft/world/World calculateInitialWeather ()V func_72947_a +MD net/minecraft/world/World isRainingAt (Lnet/minecraft/util/BlockPos;)Z func_175727_C +MD net/minecraft/world/World setActivePlayerChunksAndCheckLight ()V func_72903_x +MD net/minecraft/world/World isBlockinHighHumidity (Lnet/minecraft/util/BlockPos;)Z func_180502_D +MD net/minecraft/world/World getLoadedEntityList ()Ljava/util/List; func_72910_y +MD net/minecraft/world/World getDifficultyForLocation (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/DifficultyInstance; func_175649_E +MD net/minecraft/world/World getSeaLevel ()I func_181545_F +MD net/minecraft/world/World isWater (Lnet/minecraft/util/BlockPos;)Z func_175696_F +MD net/minecraft/world/World sendQuittingDisconnectingPacket ()V func_72882_A +MD net/minecraft/world/World checkSessionLock ()V func_72906_B +MD net/minecraft/world/World getSeed ()J func_72905_C +MD net/minecraft/world/World getTotalWorldTime ()J func_82737_E +MD net/minecraft/world/World getWorldTime ()J func_72820_D +MD net/minecraft/world/World getSpawnPoint ()Lnet/minecraft/util/BlockPos; func_175694_M +MD net/minecraft/world/World getChunkProvider ()Lnet/minecraft/world/chunk/IChunkProvider; func_72863_F +MD net/minecraft/world/World getSaveHandler ()Lnet/minecraft/world/storage/ISaveHandler; func_72860_G +MD net/minecraft/world/World getWorldInfo ()Lnet/minecraft/world/storage/WorldInfo; func_72912_H +MD net/minecraft/world/World getGameRules ()Lnet/minecraft/world/GameRules; func_82736_K +MD net/minecraft/world/World isThundering ()Z func_72911_I +MD net/minecraft/world/World isRaining ()Z func_72896_J +MD net/minecraft/world/World getMapStorage ()Lnet/minecraft/world/storage/MapStorage; func_175693_T +MD net/minecraft/world/World getHeight ()I func_72800_K +MD net/minecraft/world/World getActualHeight ()I func_72940_L +MD net/minecraft/world/World getHorizon ()D func_72919_O +MD net/minecraft/world/World getCurrentDate ()Ljava/util/Calendar; func_83015_S +MD net/minecraft/world/World getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; func_96441_U +MD net/minecraft/world/World getClosestPlayer (DDDD)Lnet/minecraft/entity/player/EntityPlayer; func_72977_a +MD net/minecraft/world/World makeFireworks (DDDDDDLnet/minecraft/nbt/NBTTagCompound;)V func_92088_a +MD net/minecraft/world/World playSoundEffect (DDDLjava/lang/String;FF)V func_72908_a +MD net/minecraft/world/World playSound (DDDLjava/lang/String;FFZ)V func_72980_b +MD net/minecraft/world/World calculateSkylightSubtracted (F)I func_72967_a +MD net/minecraft/world/World getEntityByID (I)Lnet/minecraft/entity/Entity; func_73045_a +MD net/minecraft/world/World getChunkFromChunkCoords (II)Lnet/minecraft/world/chunk/Chunk; func_72964_e +MD net/minecraft/world/World setRandomSeed (III)Ljava/util/Random; func_72843_D +MD net/minecraft/world/World markBlocksDirtyVertical (IIII)V func_72975_g +MD net/minecraft/world/World isAreaLoaded (IIIIIIZ)Z func_175663_a +MD net/minecraft/world/World playMoodSoundAndCheckLight (IILnet/minecraft/world/chunk/Chunk;)V func_147467_a +MD net/minecraft/world/World isChunkLoaded (IIZ)Z func_175680_a +MD net/minecraft/world/World playBroadcastSound (ILnet/minecraft/util/BlockPos;I)V func_175669_a +MD net/minecraft/world/World spawnParticle (IZDDDDDD[I)V func_175720_a +MD net/minecraft/world/World setTotalWorldTime (J)V func_82738_a +MD net/minecraft/world/World addWorldAccess (Lnet/minecraft/world/IWorldAccess;)V func_72954_a +MD net/minecraft/world/World initialize (Lnet/minecraft/world/WorldSettings;)V func_72963_a +MD net/minecraft/world/World doesBlockHaveSolidTopSurface (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_175683_a +MD net/minecraft/world/World getLightFromNeighborsFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I func_175705_a +MD net/minecraft/world/World setLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;I)V func_175653_a +MD net/minecraft/world/World forceBlockUpdateTick (Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Ljava/util/Random;)V func_175637_a +MD net/minecraft/world/World canBlockBePlaced (Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;ZLnet/minecraft/util/EnumFacing;Lnet/minecraft/entity/Entity;Lnet/minecraft/item/ItemStack;)Z func_175716_a +MD net/minecraft/world/World addTileEntity (Lnet/minecraft/tileentity/TileEntity;)Z func_175700_a +MD net/minecraft/world/World isInsideBorder (Lnet/minecraft/world/border/WorldBorder;Lnet/minecraft/entity/Entity;)Z func_175673_a +MD net/minecraft/world/World getPendingBlockUpdates (Lnet/minecraft/world/chunk/Chunk;Z)Ljava/util/List; func_72920_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_175711_a +MD net/minecraft/world/World func_175712_a (Lnet/minecraft/world/gen/structure/StructureBoundingBox;Z)Ljava/util/List; func_175712_a +MD net/minecraft/world/World getCollisionBoxes (Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; func_147461_a +MD net/minecraft/world/World isMaterialInBB (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;)Z func_72875_a +MD net/minecraft/world/World handleMaterialAcceleration (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;Lnet/minecraft/entity/Entity;)Z func_72918_a +MD net/minecraft/world/World checkNoEntityCollision (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/entity/Entity;)Z func_72917_a +MD net/minecraft/world/World getBlockDensity (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/AxisAlignedBB;)F func_72842_a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; func_72933_a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;Z)Lnet/minecraft/util/MovingObjectPosition; func_72901_a +MD net/minecraft/world/World rayTraceBlocks (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;ZZZ)Lnet/minecraft/util/MovingObjectPosition; func_147447_a +MD net/minecraft/world/World addWorldInfoToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReportCategory; func_72914_a +MD net/minecraft/world/World isValid (Lnet/minecraft/util/BlockPos;)Z func_175701_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;I)Z func_175697_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;IZ)Z func_175648_a +MD net/minecraft/world/World getRawLight (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/EnumSkyBlock;)I func_175638_a +MD net/minecraft/world/World isBlockTickPending (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)Z func_175691_a +MD net/minecraft/world/World scheduleUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;I)V func_175684_a +MD net/minecraft/world/World updateBlockTick (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V func_175654_a +MD net/minecraft/world/World notifyNeighborsOfStateExcept (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;Lnet/minecraft/util/EnumFacing;)V func_175695_a +MD net/minecraft/world/World setTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V func_175690_a +MD net/minecraft/world/World setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_175656_a +MD net/minecraft/world/World setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)Z func_180501_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Z func_175707_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Z)Z func_175706_a +MD net/minecraft/world/World playRecord (Lnet/minecraft/util/BlockPos;Ljava/lang/String;)V func_175717_a +MD net/minecraft/world/World isBlockLoaded (Lnet/minecraft/util/BlockPos;Z)Z func_175668_a +MD net/minecraft/world/World spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDDDD[I)V func_175688_a +MD net/minecraft/world/World spawnParticle (Lnet/minecraft/util/EnumParticleTypes;ZDDDDDD[I)V func_175682_a +MD net/minecraft/world/World countEntities (Ljava/lang/Class;)I func_72907_a +MD net/minecraft/world/World getEntitiesWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; func_72872_a +MD net/minecraft/world/World getEntitiesWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Lcom/google/common/base/Predicate;)Ljava/util/List; func_175647_a +MD net/minecraft/world/World findNearestEntityWithinAABB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/entity/Entity;)Lnet/minecraft/entity/Entity; func_72857_a +MD net/minecraft/world/World getEntities (Ljava/lang/Class;Lcom/google/common/base/Predicate;)Ljava/util/List; func_175644_a +MD net/minecraft/world/World loadItemData (Ljava/lang/Class;Ljava/lang/String;)Lnet/minecraft/world/WorldSavedData; func_72943_a +MD net/minecraft/world/World getPlayerEntityByName (Ljava/lang/String;)Lnet/minecraft/entity/player/EntityPlayer; func_72924_a +MD net/minecraft/world/World setItemData (Ljava/lang/String;Lnet/minecraft/world/WorldSavedData;)V func_72823_a +MD net/minecraft/world/World getStrongholdPos (Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_180499_a +MD net/minecraft/world/World addTileEntities (Ljava/util/Collection;)V func_147448_a +MD net/minecraft/world/World onEntityAdded (Lnet/minecraft/entity/Entity;)V func_72923_a +MD net/minecraft/world/World setEntityState (Lnet/minecraft/entity/Entity;B)V func_72960_a +MD net/minecraft/world/World getClosestPlayerToEntity (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/entity/player/EntityPlayer; func_72890_a +MD net/minecraft/world/World createExplosion (Lnet/minecraft/entity/Entity;DDDFZ)Lnet/minecraft/world/Explosion; func_72876_a +MD net/minecraft/world/World newExplosion (Lnet/minecraft/entity/Entity;DDDFZZ)Lnet/minecraft/world/Explosion; func_72885_a +MD net/minecraft/world/World getSkyColor (Lnet/minecraft/entity/Entity;F)Lnet/minecraft/util/Vec3; func_72833_a +MD net/minecraft/world/World getCollidingBoundingBoxes (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; func_72945_a +MD net/minecraft/world/World getEntitiesInAABBexcluding (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;Lcom/google/common/base/Predicate;)Ljava/util/List; func_175674_a +MD net/minecraft/world/World playSoundAtEntity (Lnet/minecraft/entity/Entity;Ljava/lang/String;FF)V func_72956_a +MD net/minecraft/world/World updateEntityWithOptionalForce (Lnet/minecraft/entity/Entity;Z)V func_72866_a +MD net/minecraft/world/World playAuxSFXAtEntity (Lnet/minecraft/entity/player/EntityPlayer;ILnet/minecraft/util/BlockPos;I)V func_180498_a +MD net/minecraft/world/World isBlockModifiable (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;)Z func_175660_a +MD net/minecraft/world/World extinguishFire (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_175719_a +MD net/minecraft/world/World playSoundToNearExcept (Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;FF)V func_85173_a +MD net/minecraft/world/World tickUpdates (Z)Z func_72955_a +MD net/minecraft/world/World setAllowedSpawnTypes (ZZ)V func_72891_a +MD net/minecraft/world/World getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_175659_aa +MD net/minecraft/world/World getSkylightSubtracted ()I func_175657_ab +MD net/minecraft/world/World getLastLightningBolt ()I func_175658_ac +MD net/minecraft/world/World isFindingSpawnPoint ()Z func_175686_ad +MD net/minecraft/world/World getVillageCollection ()Lnet/minecraft/village/VillageCollection; func_175714_ae +MD net/minecraft/world/World getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; func_175723_af +MD net/minecraft/world/World init ()Lnet/minecraft/world/World; func_175643_b +MD net/minecraft/world/World isAnyPlayerWithinRangeAt (DDDD)Z func_175636_b +MD net/minecraft/world/World getSunBrightness (F)F func_72971_b +MD net/minecraft/world/World setSeaLevel (I)V func_181544_b +MD net/minecraft/world/World getChunksLowestHorizon (II)I func_82734_g +MD net/minecraft/world/World markBlockRangeForRenderUpdate (IIIIII)V func_147458_c +MD net/minecraft/world/World playAuxSFX (ILnet/minecraft/util/BlockPos;I)V func_175718_b +MD net/minecraft/world/World setWorldTime (J)V func_72877_b +MD net/minecraft/world/World removeWorldAccess (Lnet/minecraft/world/IWorldAccess;)V func_72848_b +MD net/minecraft/world/World getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I func_175642_b +MD net/minecraft/world/World markTileEntityForRemoval (Lnet/minecraft/tileentity/TileEntity;)V func_147457_a +MD net/minecraft/world/World isAreaLoaded (Lnet/minecraft/world/gen/structure/StructureBoundingBox;Z)Z func_175639_b +MD net/minecraft/world/World checkNoEntityCollision (Lnet/minecraft/util/AxisAlignedBB;)Z func_72855_b +MD net/minecraft/world/World isAABBInMaterial (Lnet/minecraft/util/AxisAlignedBB;Lnet/minecraft/block/material/Material;)Z func_72830_b +MD net/minecraft/world/World notifyNeighborsRespectDebug (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_175722_b +MD net/minecraft/world/World scheduleBlockUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V func_180497_b +MD net/minecraft/world/World markChunkDirty (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V func_175646_b +MD net/minecraft/world/World markBlockRangeForRenderUpdate (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)V func_175704_b +MD net/minecraft/world/World isSidePowered (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_175709_b +MD net/minecraft/world/World destroyBlock (Lnet/minecraft/util/BlockPos;Z)Z func_175655_b +MD net/minecraft/world/World getPlayers (Ljava/lang/Class;Lcom/google/common/base/Predicate;)Ljava/util/List; func_175661_b +MD net/minecraft/world/World getUniqueDataId (Ljava/lang/String;)I func_72841_b +MD net/minecraft/world/World loadEntities (Ljava/util/Collection;)V func_175650_b +MD net/minecraft/world/World getPlayerEntityByUUID (Ljava/util/UUID;)Lnet/minecraft/entity/player/EntityPlayer; func_152378_a +MD net/minecraft/world/World onEntityRemoved (Lnet/minecraft/entity/Entity;)V func_72847_b +MD net/minecraft/world/World getEntitiesWithinAABBExcludingEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;)Ljava/util/List; func_72839_b +MD net/minecraft/world/World tick ()V func_72835_b +MD net/minecraft/world/World getCelestialAngle (F)F func_72826_c +MD net/minecraft/world/World setSkylightSubtracted (I)V func_175692_b +MD net/minecraft/world/World isSpawnChunk (II)Z func_72916_c +MD net/minecraft/world/World sendBlockBreakProgress (ILnet/minecraft/util/BlockPos;I)V func_175715_c +MD net/minecraft/world/World checkLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)Z func_180500_c +MD net/minecraft/world/World checkBlockCollision (Lnet/minecraft/util/AxisAlignedBB;)Z func_72829_c +MD net/minecraft/world/World getGroundAboveSeaLevel (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/Block; func_175703_c +MD net/minecraft/world/World notifyNeighborsOfStateChange (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_175685_c +MD net/minecraft/world/World addBlockEvent (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;II)V func_175641_c +MD net/minecraft/world/World getRedstonePower (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I func_175651_c +MD net/minecraft/world/World getLight (Lnet/minecraft/util/BlockPos;Z)I func_175721_c +MD net/minecraft/world/World unloadEntities (Ljava/util/Collection;)V func_175681_c +MD net/minecraft/world/World addWeatherEffect (Lnet/minecraft/entity/Entity;)Z func_72942_c +MD net/minecraft/world/World updateAllPlayersSleepingFlag ()V func_72854_c +MD net/minecraft/world/World getCelestialAngleRadians (F)F func_72929_e +MD net/minecraft/world/World setLastLightningBolt (I)V func_175702_c +MD net/minecraft/world/World isAnyLiquid (Lnet/minecraft/util/AxisAlignedBB;)Z func_72953_d +MD net/minecraft/world/World notifyBlockOfStateChange (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_180496_d +MD net/minecraft/world/World isBlockNormalCube (Lnet/minecraft/util/BlockPos;Z)Z func_175677_d +MD net/minecraft/world/World spawnEntityInWorld (Lnet/minecraft/entity/Entity;)Z func_72838_d +MD net/minecraft/world/World getCloudColour (F)Lnet/minecraft/util/Vec3; func_72824_f +MD net/minecraft/world/World isFlammableWithin (Lnet/minecraft/util/AxisAlignedBB;)Z func_147470_e +MD net/minecraft/world/World isBlockLoaded (Lnet/minecraft/util/BlockPos;)Z func_175667_e +MD net/minecraft/world/World updateComparatorOutputLevel (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_175666_e +MD net/minecraft/world/World canBlockFreeze (Lnet/minecraft/util/BlockPos;Z)Z func_175670_e +MD net/minecraft/world/World removeEntity (Lnet/minecraft/entity/Entity;)V func_72900_e +MD net/minecraft/world/World getFogColor (F)Lnet/minecraft/util/Vec3; func_72948_g +MD net/minecraft/world/World getChunkFromBlockCoords (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/chunk/Chunk; func_175726_f +MD net/minecraft/world/World canSnowAt (Lnet/minecraft/util/BlockPos;Z)Z func_175708_f +MD net/minecraft/world/World removePlayerEntityDangerously (Lnet/minecraft/entity/Entity;)V func_72973_f +MD net/minecraft/world/World setInitialSpawnLocation ()V func_72974_f +MD net/minecraft/world/World getStarBrightness (F)F func_72880_h +MD net/minecraft/world/World setBlockToAir (Lnet/minecraft/util/BlockPos;)Z func_175698_g +MD net/minecraft/world/World updateEntity (Lnet/minecraft/entity/Entity;)V func_72870_g +MD net/minecraft/world/World updateBlocks ()V func_147456_g +MD net/minecraft/world/World getThunderStrength (F)F func_72819_i +MD net/minecraft/world/World markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V func_175689_h +MD net/minecraft/world/World joinEntityInSurroundings (Lnet/minecraft/entity/Entity;)V func_72897_h +MD net/minecraft/world/World updateEntities ()V func_72939_s +MD net/minecraft/world/World setThunderStrength (F)V func_147442_i +MD net/minecraft/world/World canSeeSky (Lnet/minecraft/util/BlockPos;)Z func_175678_i +MD net/minecraft/world/World getRainStrength (F)F func_72867_j +MD net/minecraft/world/World canBlockSeeSky (Lnet/minecraft/util/BlockPos;)Z func_175710_j +MD net/minecraft/world/World createChunkProvider ()Lnet/minecraft/world/chunk/IChunkProvider; func_72970_h +MD net/minecraft/world/World setRainStrength (F)V func_72894_k +MD net/minecraft/world/World getLight (Lnet/minecraft/util/BlockPos;)I func_175699_k +MD net/minecraft/world/World getLightFromNeighbors (Lnet/minecraft/util/BlockPos;)I func_175671_l +MD net/minecraft/world/World getHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_175645_m +MD net/minecraft/world/World notifyLightSet (Lnet/minecraft/util/BlockPos;)V func_175679_n +MD net/minecraft/world/World getLightBrightness (Lnet/minecraft/util/BlockPos;)F func_175724_o +MD net/minecraft/world/World updateWeather ()V func_72979_l +MD net/minecraft/world/World getRenderDistanceChunks ()I func_152379_p +MD net/minecraft/world/World getPrecipitationHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_175725_q +MD net/minecraft/world/World getTopSolidOrLiquidBlock (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_175672_r +MD net/minecraft/world/World removeTileEntity (Lnet/minecraft/util/BlockPos;)V func_175713_t +MD net/minecraft/world/World isBlockFullCube (Lnet/minecraft/util/BlockPos;)Z func_175665_u +MD net/minecraft/world/World getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; func_72959_q +MD net/minecraft/world/World canBlockFreezeWater (Lnet/minecraft/util/BlockPos;)Z func_175675_v +MD net/minecraft/world/World isDaytime ()Z func_72935_r +MD net/minecraft/world/World canBlockFreezeNoWater (Lnet/minecraft/util/BlockPos;)Z func_175662_w +MD net/minecraft/world/World getMoonPhase ()I func_72853_d +MD net/minecraft/world/World checkLight (Lnet/minecraft/util/BlockPos;)Z func_175664_x +MD net/minecraft/world/World getCurrentMoonPhaseFactor ()F func_130001_d +MD net/minecraft/world/World getStrongPower (Lnet/minecraft/util/BlockPos;)I func_175676_y +MD net/minecraft/world/World getDebugLoadedEntities ()Ljava/lang/String; func_72981_t +MD net/minecraft/world/World isBlockPowered (Lnet/minecraft/util/BlockPos;)Z func_175640_z +MD net/minecraft/world/World$1 call ()Ljava/lang/String; call +MD net/minecraft/world/World$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$2 call ()Ljava/lang/String; call +MD net/minecraft/world/World$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$3 call ()Ljava/lang/String; call +MD net/minecraft/world/World$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/World$4 call ()Ljava/lang/String; call +MD net/minecraft/world/World$4 call ()Ljava/lang/Object; call +MD net/minecraft/world/IWorldAccess markBlockRangeForRenderUpdate (IIIIII)V func_147585_a +MD net/minecraft/world/IWorldAccess broadcastSound (ILnet/minecraft/util/BlockPos;I)V func_180440_a +MD net/minecraft/world/IWorldAccess spawnParticle (IZDDDDDD[I)V func_180442_a +MD net/minecraft/world/IWorldAccess markBlockForUpdate (Lnet/minecraft/util/BlockPos;)V func_174960_a +MD net/minecraft/world/IWorldAccess playSound (Ljava/lang/String;DDDFF)V func_72704_a +MD net/minecraft/world/IWorldAccess playRecord (Ljava/lang/String;Lnet/minecraft/util/BlockPos;)V func_174961_a +MD net/minecraft/world/IWorldAccess onEntityAdded (Lnet/minecraft/entity/Entity;)V func_72703_a +MD net/minecraft/world/IWorldAccess playAuxSFX (Lnet/minecraft/entity/player/EntityPlayer;ILnet/minecraft/util/BlockPos;I)V func_180439_a +MD net/minecraft/world/IWorldAccess playSoundToNearExcept (Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/String;DDDFF)V func_85102_a +MD net/minecraft/world/IWorldAccess sendBlockBreakProgress (ILnet/minecraft/util/BlockPos;I)V func_180441_b +MD net/minecraft/world/IWorldAccess notifyLightSet (Lnet/minecraft/util/BlockPos;)V func_174959_b +MD net/minecraft/world/IWorldAccess onEntityRemoved (Lnet/minecraft/entity/Entity;)V func_72709_b +MD net/minecraft/world/WorldSettings enableBonusChest ()Lnet/minecraft/world/WorldSettings; func_77159_a +MD net/minecraft/world/WorldSettings getGameTypeById (I)Lnet/minecraft/world/WorldSettings$GameType; func_77161_a +MD net/minecraft/world/WorldSettings setWorldName (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings; func_82750_a +MD net/minecraft/world/WorldSettings enableCommands ()Lnet/minecraft/world/WorldSettings; func_77166_b +MD net/minecraft/world/WorldSettings isBonusChestEnabled ()Z func_77167_c +MD net/minecraft/world/WorldSettings getSeed ()J func_77160_d +MD net/minecraft/world/WorldSettings getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_77162_e +MD net/minecraft/world/WorldSettings getHardcoreEnabled ()Z func_77158_f +MD net/minecraft/world/WorldSettings isMapFeaturesEnabled ()Z func_77164_g +MD net/minecraft/world/WorldSettings getTerrainType ()Lnet/minecraft/world/WorldType; func_77165_h +MD net/minecraft/world/WorldSettings areCommandsAllowed ()Z func_77163_i +MD net/minecraft/world/WorldSettings getWorldName ()Ljava/lang/String; func_82749_j +MD net/minecraft/world/WorldSettings$GameType getID ()I func_77148_a +MD net/minecraft/world/WorldSettings$GameType getByID (I)Lnet/minecraft/world/WorldSettings$GameType; func_77146_a +MD net/minecraft/world/WorldSettings$GameType getByName (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; func_77142_a +MD net/minecraft/world/WorldSettings$GameType configurePlayerCapabilities (Lnet/minecraft/entity/player/PlayerCapabilities;)V func_77147_a +MD net/minecraft/world/WorldSettings$GameType getName ()Ljava/lang/String; func_77149_b +MD net/minecraft/world/WorldSettings$GameType isAdventure ()Z func_82752_c +MD net/minecraft/world/WorldSettings$GameType isCreative ()Z func_77145_d +MD net/minecraft/world/WorldSettings$GameType isSurvivalOrAdventure ()Z func_77144_e +MD net/minecraft/world/WorldSettings$GameType valueOf (Ljava/lang/String;)Lnet/minecraft/world/WorldSettings$GameType; valueOf +MD net/minecraft/world/WorldSettings$GameType values ()[Lnet/minecraft/world/WorldSettings$GameType; values +MD net/minecraft/world/IBlockAccess getWorldType ()Lnet/minecraft/world/WorldType; func_175624_G +MD net/minecraft/world/IBlockAccess extendedLevelsInChunkCache ()Z func_72806_N +MD net/minecraft/world/IBlockAccess getStrongPower (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I func_175627_a +MD net/minecraft/world/IBlockAccess getBiomeGenForCoords (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase; func_180494_b +MD net/minecraft/world/IBlockAccess getCombinedLight (Lnet/minecraft/util/BlockPos;I)I func_175626_b +MD net/minecraft/world/IBlockAccess isAirBlock (Lnet/minecraft/util/BlockPos;)Z func_175623_d +MD net/minecraft/world/IBlockAccess getBlockState (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; func_180495_p +MD net/minecraft/world/IBlockAccess getTileEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntity; func_175625_s +MD net/minecraft/world/WorldType getWorldTypeName ()Ljava/lang/String; func_77127_a +MD net/minecraft/world/WorldType getWorldTypeForGeneratorVersion (I)Lnet/minecraft/world/WorldType; func_77132_a +MD net/minecraft/world/WorldType parseWorldType (Ljava/lang/String;)Lnet/minecraft/world/WorldType; func_77130_a +MD net/minecraft/world/WorldType setCanBeCreated (Z)Lnet/minecraft/world/WorldType; func_77124_a +MD net/minecraft/world/WorldType getTranslateName ()Ljava/lang/String; func_77128_b +MD net/minecraft/world/WorldType getTranslatedInfo ()Ljava/lang/String; func_151359_c +MD net/minecraft/world/WorldType getGeneratorVersion ()I func_77131_c +MD net/minecraft/world/WorldType getCanBeCreated ()Z func_77126_d +MD net/minecraft/world/WorldType isVersioned ()Z func_77125_e +MD net/minecraft/world/WorldType getWorldTypeID ()I func_82747_f +MD net/minecraft/world/WorldType showWorldInfoNotice ()Z func_151357_h +MD net/minecraft/world/WorldType setVersioned ()Lnet/minecraft/world/WorldType; func_77129_f +MD net/minecraft/world/WorldType setNotificationData ()Lnet/minecraft/world/WorldType; func_151358_j +MD net/minecraft/world/EnumSkyBlock valueOf (Ljava/lang/String;)Lnet/minecraft/world/EnumSkyBlock; valueOf +MD net/minecraft/world/EnumSkyBlock values ()[Lnet/minecraft/world/EnumSkyBlock; values +MD net/minecraft/world/SpawnerAnimals getRandomChunkPosition (Lnet/minecraft/world/World;II)Lnet/minecraft/util/BlockPos; func_180621_a +MD net/minecraft/world/SpawnerAnimals performWorldGenSpawning (Lnet/minecraft/world/World;Lnet/minecraft/world/biome/BiomeGenBase;IIIILjava/util/Random;)V func_77191_a +MD net/minecraft/world/SpawnerAnimals findChunksForSpawning (Lnet/minecraft/world/WorldServer;ZZZ)I func_77192_a +MD net/minecraft/world/SpawnerAnimals canCreatureTypeSpawnAtLocation (Lnet/minecraft/entity/EntityLiving$SpawnPlacementType;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_180267_a +MD net/minecraft/world/Teleporter removeStalePortalLocations (J)V func_85189_a +MD net/minecraft/world/Teleporter makePortal (Lnet/minecraft/entity/Entity;)Z func_85188_a +MD net/minecraft/world/Teleporter placeInPortal (Lnet/minecraft/entity/Entity;F)V func_180266_a +MD net/minecraft/world/Teleporter placeInExistingPortal (Lnet/minecraft/entity/Entity;F)Z func_180620_b +MD net/minecraft/world/ChunkCache getLightForExt (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I func_175629_a +MD net/minecraft/world/ChunkCache getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I func_175628_b +MD net/minecraft/world/NextTickListEntry getBlock ()Lnet/minecraft/block/Block; func_151351_a +MD net/minecraft/world/NextTickListEntry setPriority (I)V func_82753_a +MD net/minecraft/world/NextTickListEntry setScheduledTime (J)Lnet/minecraft/world/NextTickListEntry; func_77176_a +MD net/minecraft/world/NextTickListEntry compareTo (Lnet/minecraft/world/NextTickListEntry;)I compareTo +MD net/minecraft/world/NextTickListEntry compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/world/NextTickListEntry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/NextTickListEntry hashCode ()I hashCode +MD net/minecraft/world/NextTickListEntry toString ()Ljava/lang/String; toString +MD net/minecraft/world/biome/BiomeGenBase createBiomeDecorator ()Lnet/minecraft/world/biome/BiomeDecorator; func_76729_a +MD net/minecraft/world/biome/BiomeGenBase getSkyColorByTemp (F)I func_76731_a +MD net/minecraft/world/biome/BiomeGenBase setTemperatureRainfall (FF)Lnet/minecraft/world/biome/BiomeGenBase; func_76732_a +MD net/minecraft/world/biome/BiomeGenBase setFillerBlockMetadata (I)Lnet/minecraft/world/biome/BiomeGenBase; func_76733_a +MD net/minecraft/world/biome/BiomeGenBase getBiomeFromBiomeList (ILnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; func_180276_a +MD net/minecraft/world/biome/BiomeGenBase func_150557_a (IZ)Lnet/minecraft/world/biome/BiomeGenBase; func_150557_a +MD net/minecraft/world/biome/BiomeGenBase genTerrainBlocks (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/chunk/ChunkPrimer;IID)V func_180622_a +MD net/minecraft/world/biome/BiomeGenBase decorate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)V func_180624_a +MD net/minecraft/world/biome/BiomeGenBase setHeight (Lnet/minecraft/world/biome/BiomeGenBase$Height;)Lnet/minecraft/world/biome/BiomeGenBase; func_150570_a +MD net/minecraft/world/biome/BiomeGenBase isEqualTo (Lnet/minecraft/world/biome/BiomeGenBase;)Z func_150569_a +MD net/minecraft/world/biome/BiomeGenBase getFloatTemperature (Lnet/minecraft/util/BlockPos;)F func_180626_a +MD net/minecraft/world/biome/BiomeGenBase setBiomeName (Ljava/lang/String;)Lnet/minecraft/world/biome/BiomeGenBase; func_76735_a +MD net/minecraft/world/biome/BiomeGenBase genBigTreeChance (Ljava/util/Random;)Lnet/minecraft/world/gen/feature/WorldGenAbstractTree; func_150567_a +MD net/minecraft/world/biome/BiomeGenBase pickRandomFlower (Ljava/util/Random;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockFlower$EnumFlowerType; func_180623_a +MD net/minecraft/world/biome/BiomeGenBase getSpawnableList (Lnet/minecraft/entity/EnumCreatureType;)Ljava/util/List; func_76747_a +MD net/minecraft/world/biome/BiomeGenBase setDisableRain ()Lnet/minecraft/world/biome/BiomeGenBase; func_76745_m +MD net/minecraft/world/biome/BiomeGenBase setColor (I)Lnet/minecraft/world/biome/BiomeGenBase; func_76739_b +MD net/minecraft/world/biome/BiomeGenBase generateBiomeTerrain (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/chunk/ChunkPrimer;IID)V func_180628_b +MD net/minecraft/world/biome/BiomeGenBase getGrassColorAtPos (Lnet/minecraft/util/BlockPos;)I func_180627_b +MD net/minecraft/world/biome/BiomeGenBase getRandomWorldGenForGrass (Ljava/util/Random;)Lnet/minecraft/world/gen/feature/WorldGenerator; func_76730_b +MD net/minecraft/world/biome/BiomeGenBase setEnableSnow ()Lnet/minecraft/world/biome/BiomeGenBase; func_76742_b +MD net/minecraft/world/biome/BiomeGenBase func_150563_c (I)Lnet/minecraft/world/biome/BiomeGenBase; func_150563_c +MD net/minecraft/world/biome/BiomeGenBase getFoliageColorAtPos (Lnet/minecraft/util/BlockPos;)I func_180625_c +MD net/minecraft/world/biome/BiomeGenBase getEnableSnow ()Z func_76746_c +MD net/minecraft/world/biome/BiomeGenBase createMutatedBiome (I)Lnet/minecraft/world/biome/BiomeGenBase; func_180277_d +MD net/minecraft/world/biome/BiomeGenBase canRain ()Z func_76738_d +MD net/minecraft/world/biome/BiomeGenBase getBiome (I)Lnet/minecraft/world/biome/BiomeGenBase; func_150568_d +MD net/minecraft/world/biome/BiomeGenBase isHighHumidity ()Z func_76736_e +MD net/minecraft/world/biome/BiomeGenBase getSpawningChance ()F func_76741_f +MD net/minecraft/world/biome/BiomeGenBase getIntRainfall ()I func_76744_g +MD net/minecraft/world/biome/BiomeGenBase getFloatRainfall ()F func_76727_i +MD net/minecraft/world/biome/BiomeGenBase isSnowyBiome ()Z func_150559_j +MD net/minecraft/world/biome/BiomeGenBase createMutation ()Lnet/minecraft/world/biome/BiomeGenBase; func_150566_k +MD net/minecraft/world/biome/BiomeGenBase getBiomeClass ()Ljava/lang/Class; func_150562_l +MD net/minecraft/world/biome/BiomeGenBase getTempCategory ()Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; func_150561_m +MD net/minecraft/world/biome/BiomeGenBase getBiomeGenArray ()[Lnet/minecraft/world/biome/BiomeGenBase; func_150565_n +MD net/minecraft/world/biome/BiomeGenBase$Height attenuate ()Lnet/minecraft/world/biome/BiomeGenBase$Height; func_150775_a +MD net/minecraft/world/biome/BiomeGenBase$TempCategory valueOf (Ljava/lang/String;)Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; valueOf +MD net/minecraft/world/biome/BiomeGenBase$TempCategory values ()[Lnet/minecraft/world/biome/BiomeGenBase$TempCategory; values +MD net/minecraft/world/biome/BiomeGenBase$SpawnListEntry toString ()Ljava/lang/String; toString +MD net/minecraft/world/biome/BiomeCache cleanupCache ()V func_76838_a +MD net/minecraft/world/biome/BiomeCache getBiomeCacheBlock (II)Lnet/minecraft/world/biome/BiomeCache$Block; func_76840_a +MD net/minecraft/world/biome/BiomeCache func_180284_a (IILnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; func_180284_a +MD net/minecraft/world/biome/BiomeCache access$000 (Lnet/minecraft/world/biome/BiomeCache;)Lnet/minecraft/world/biome/WorldChunkManager; access$000 +MD net/minecraft/world/biome/BiomeCache getCachedBiomes (II)[Lnet/minecraft/world/biome/BiomeGenBase; func_76839_e +MD net/minecraft/world/biome/BiomeCache$Block getBiomeGenAt (II)Lnet/minecraft/world/biome/BiomeGenBase; func_76885_a +MD net/minecraft/world/biome/BiomeColorHelper getGrassColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_180286_a +MD net/minecraft/world/biome/BiomeColorHelper getColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/BiomeColorHelper$ColorResolver;)I func_180285_a +MD net/minecraft/world/biome/BiomeColorHelper getFoliageColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_180287_b +MD net/minecraft/world/biome/BiomeColorHelper getWaterColorAtPos (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_180288_c +MD net/minecraft/world/biome/BiomeColorHelper$ColorResolver getColorAtPos (Lnet/minecraft/world/biome/BiomeGenBase;Lnet/minecraft/util/BlockPos;)I func_180283_a +MD net/minecraft/world/biome/BiomeDecorator generateOres ()V func_76797_b +MD net/minecraft/world/biome/BiomeDecorator genStandardOre1 (ILnet/minecraft/world/gen/feature/WorldGenerator;II)V func_76795_a +MD net/minecraft/world/biome/BiomeDecorator decorate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/biome/BiomeGenBase;Lnet/minecraft/util/BlockPos;)V func_180292_a +MD net/minecraft/world/biome/BiomeDecorator genDecorations (Lnet/minecraft/world/biome/BiomeGenBase;)V func_150513_a +MD net/minecraft/world/biome/BiomeDecorator genStandardOre2 (ILnet/minecraft/world/gen/feature/WorldGenerator;II)V func_76793_b +MD net/minecraft/world/biome/WorldChunkManager getBiomesToSpawnIn ()Ljava/util/List; func_76932_a +MD net/minecraft/world/biome/WorldChunkManager getTemperatureAtHeight (FI)F func_76939_a +MD net/minecraft/world/biome/WorldChunkManager areBiomesViable (IIILjava/util/List;)Z func_76940_a +MD net/minecraft/world/biome/WorldChunkManager findBiomePosition (IIILjava/util/List;Ljava/util/Random;)Lnet/minecraft/util/BlockPos; func_180630_a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenerator (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/biome/BiomeGenBase; func_180631_a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenerator (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenBase; func_180300_a +MD net/minecraft/world/biome/WorldChunkManager getRainfall ([FIIII)[F func_76936_a +MD net/minecraft/world/biome/WorldChunkManager getBiomesForGeneration ([Lnet/minecraft/world/biome/BiomeGenBase;IIII)[Lnet/minecraft/world/biome/BiomeGenBase; func_76937_a +MD net/minecraft/world/biome/WorldChunkManager getBiomeGenAt ([Lnet/minecraft/world/biome/BiomeGenBase;IIIIZ)[Lnet/minecraft/world/biome/BiomeGenBase; func_76931_a +MD net/minecraft/world/biome/WorldChunkManager cleanupCache ()V func_76938_b +MD net/minecraft/world/biome/WorldChunkManager loadBlockGeneratorData ([Lnet/minecraft/world/biome/BiomeGenBase;IIII)[Lnet/minecraft/world/biome/BiomeGenBase; func_76933_b +MD net/minecraft/world/biome/BiomeGenHills mutateHills (Lnet/minecraft/world/biome/BiomeGenBase;)Lnet/minecraft/world/biome/BiomeGenHills; func_150633_b +MD net/minecraft/world/biome/BiomeGenMesa func_180629_a (III)Lnet/minecraft/block/state/IBlockState; func_180629_a +MD net/minecraft/world/biome/BiomeGenMesa func_150619_a (J)V func_150619_a +MD net/minecraft/block/BlockContainer isInvalidNeighbor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_181086_a +MD net/minecraft/block/BlockContainer hasInvalidNeighbor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_181087_e +MD net/minecraft/block/BlockBasePressurePlate updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V func_180666_a +MD net/minecraft/block/BlockBasePressurePlate setRedstoneStrength (Lnet/minecraft/block/state/IBlockState;I)Lnet/minecraft/block/state/IBlockState; func_176575_a +MD net/minecraft/block/BlockBasePressurePlate getSensitiveAABB (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; func_180667_a +MD net/minecraft/block/BlockBasePressurePlate setBlockBoundsBasedOnState0 (Lnet/minecraft/block/state/IBlockState;)V func_180668_d +MD net/minecraft/block/BlockBasePressurePlate updateNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176578_d +MD net/minecraft/block/BlockBasePressurePlate getRedstoneStrength (Lnet/minecraft/block/state/IBlockState;)I func_176576_e +MD net/minecraft/block/BlockBasePressurePlate computeRedstoneStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I func_180669_e +MD net/minecraft/block/BlockBasePressurePlate canBePlacedOn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176577_m +MD net/minecraft/block/BlockRailBase func_176564_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Z)Lnet/minecraft/block/state/IBlockState; func_176564_a +MD net/minecraft/block/BlockRailBase onNeighborChangedInternal (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/Block;)V func_176561_b +MD net/minecraft/block/BlockRailBase isRailBlock (Lnet/minecraft/block/state/IBlockState;)Z func_176563_d +MD net/minecraft/block/BlockRailBase isRailBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176562_d +MD net/minecraft/block/BlockRailBase getShapeProperty ()Lnet/minecraft/block/properties/IProperty; func_176560_l +MD net/minecraft/block/BlockRailBase$Rail countAdjacentRails ()I func_150650_a +MD net/minecraft/block/BlockRailBase$Rail func_150653_a (Lnet/minecraft/block/BlockRailBase$Rail;)Z func_150653_a +MD net/minecraft/block/BlockRailBase$Rail func_180360_a (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)V func_180360_a +MD net/minecraft/block/BlockRailBase$Rail hasRailAt (Lnet/minecraft/util/BlockPos;)Z func_180359_a +MD net/minecraft/block/BlockRailBase$Rail func_180364_a (ZZ)Lnet/minecraft/block/BlockRailBase$Rail; func_180364_a +MD net/minecraft/block/BlockRailBase$Rail getBlockState ()Lnet/minecraft/block/state/IBlockState; func_180362_b +MD net/minecraft/block/BlockRailBase$Rail func_150649_b (Lnet/minecraft/block/BlockRailBase$Rail;)Z func_150649_b +MD net/minecraft/block/BlockRailBase$Rail findRailAt (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockRailBase$Rail; func_180697_b +MD net/minecraft/block/BlockRailBase$Rail func_150651_b ()V func_150651_b +MD net/minecraft/block/BlockRailBase$Rail func_150645_c (Lnet/minecraft/block/BlockRailBase$Rail;)V func_150645_c +MD net/minecraft/block/BlockRailBase$Rail func_180363_c (Lnet/minecraft/util/BlockPos;)Z func_180363_c +MD net/minecraft/block/BlockRailBase$Rail func_180361_d (Lnet/minecraft/util/BlockPos;)Z func_180361_d +MD net/minecraft/block/BlockRailBase$EnumRailDirection getMetadata ()I func_177015_a +MD net/minecraft/block/BlockRailBase$EnumRailDirection byMetadata (I)Lnet/minecraft/block/BlockRailBase$EnumRailDirection; func_177016_a +MD net/minecraft/block/BlockRailBase$EnumRailDirection isAscending ()Z func_177018_c +MD net/minecraft/block/BlockRailBase$EnumRailDirection toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRailBase$EnumRailDirection valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRailBase$EnumRailDirection; valueOf +MD net/minecraft/block/BlockRailBase$EnumRailDirection values ()[Lnet/minecraft/block/BlockRailBase$EnumRailDirection; values +MD net/minecraft/block/BlockBeacon updateColorAsync (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176450_d +MD net/minecraft/block/BlockBeacon$1 run ()V run +MD net/minecraft/block/BlockBeacon$1$1 run ()V run +MD net/minecraft/block/BlockBed getSafeExitLocation (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/util/BlockPos; func_176468_a +MD net/minecraft/block/BlockBed hasRoomForPlayer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176469_d +MD net/minecraft/block/BlockBed getPlayerInBed (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/player/EntityPlayer; func_176470_e +MD net/minecraft/block/BlockBed setBedBounds ()V func_149978_e +MD net/minecraft/block/BlockBed$EnumPartType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockBed$EnumPartType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockBed$EnumPartType; valueOf +MD net/minecraft/block/BlockBed$EnumPartType values ()[Lnet/minecraft/block/BlockBed$EnumPartType; values +MD net/minecraft/block/Block isCollidable ()Z func_149703_v +MD net/minecraft/block/Block getBlockBoundsMinX ()D func_149704_x +MD net/minecraft/block/Block getBlockBoundsMaxX ()D func_149753_y +MD net/minecraft/block/Block getBlockBoundsMinY ()D func_149665_z +MD net/minecraft/block/Block getBlockBoundsMaxY ()D func_149669_A +MD net/minecraft/block/Block getBlockBoundsMinZ ()D func_149706_B +MD net/minecraft/block/Block getBlockBoundsMaxZ ()D func_149693_C +MD net/minecraft/block/Block getBlockColor ()I func_149635_D +MD net/minecraft/block/Block canSilkHarvest ()Z func_149700_E +MD net/minecraft/block/Block getEnableStats ()Z func_149652_G +MD net/minecraft/block/Block disableStats ()Lnet/minecraft/block/Block; func_149649_H +MD net/minecraft/block/Block getCreativeTabToDisplayOn ()Lnet/minecraft/creativetab/CreativeTabs; func_149708_J +MD net/minecraft/block/Block isFlowerPot ()Z func_149648_K +MD net/minecraft/block/Block requiresUpdates ()Z func_149698_L +MD net/minecraft/block/Block hasComparatorInputOverride ()Z func_149740_M +MD net/minecraft/block/Block getBlockState ()Lnet/minecraft/block/state/BlockState; func_176194_O +MD net/minecraft/block/Block getDefaultState ()Lnet/minecraft/block/state/IBlockState; func_176223_P +MD net/minecraft/block/Block getOffsetType ()Lnet/minecraft/block/Block$EnumOffsetType; func_176218_Q +MD net/minecraft/block/Block registerBlocks ()V func_149671_p +MD net/minecraft/block/Block getUnlocalizedName ()Ljava/lang/String; func_149739_a +MD net/minecraft/block/Block setLightLevel (F)Lnet/minecraft/block/Block; func_149715_a +MD net/minecraft/block/Block setBlockBounds (FFFFFF)V func_149676_a +MD net/minecraft/block/Block getStateFromMeta (I)Lnet/minecraft/block/state/IBlockState; func_176203_a +MD net/minecraft/block/Block registerBlock (ILjava/lang/String;Lnet/minecraft/block/Block;)V func_176219_a +MD net/minecraft/block/Block quantityDroppedWithBonus (ILjava/util/Random;)I func_149679_a +MD net/minecraft/block/Block registerBlock (ILnet/minecraft/util/ResourceLocation;Lnet/minecraft/block/Block;)V func_176215_a +MD net/minecraft/block/Block canDropFromExplosion (Lnet/minecraft/world/Explosion;)Z func_149659_a +MD net/minecraft/block/Block tickRate (Lnet/minecraft/world/World;)I func_149738_a +MD net/minecraft/block/Block isReplaceable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176200_f +MD net/minecraft/block/Block onBlockDestroyedByExplosion (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/Explosion;)V func_180652_a +MD net/minecraft/block/Block getCollisionBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/util/AxisAlignedBB; func_180640_a +MD net/minecraft/block/Block dropBlockAsItemWithChance (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;FI)V func_180653_a +MD net/minecraft/block/Block onBlockEventReceived (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;II)Z func_180648_a +MD net/minecraft/block/Block onNeighborBlockChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/Block;)V func_176204_a +MD net/minecraft/block/Block addCollisionBoxesToList (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lnet/minecraft/entity/Entity;)V func_180638_a +MD net/minecraft/block/Block randomTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V func_180645_a +MD net/minecraft/block/Block onEntityCollidedWithBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/Entity;)V func_180634_a +MD net/minecraft/block/Block onBlockPlacedBy (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;)V func_180633_a +MD net/minecraft/block/Block onBlockHarvested (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V func_176208_a +MD net/minecraft/block/Block onBlockActivated (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/EnumFacing;FFF)Z func_180639_a +MD net/minecraft/block/Block collisionRayTrace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; func_180636_a +MD net/minecraft/block/Block onBlockPlaced (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;FFFILnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/block/state/IBlockState; func_180642_a +MD net/minecraft/block/Block canReplace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/item/ItemStack;)Z func_176193_a +MD net/minecraft/block/Block onEntityCollidedWithBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;)V func_176199_a +MD net/minecraft/block/Block onFallenUpon (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;F)V func_180658_a +MD net/minecraft/block/Block modifyAcceleration (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_176197_a +MD net/minecraft/block/Block onBlockClicked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)V func_180649_a +MD net/minecraft/block/Block spawnAsEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)V func_180635_a +MD net/minecraft/block/Block onLanded (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;)V func_176216_a +MD net/minecraft/block/Block harvestBlock (Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/tileentity/TileEntity;)V func_180657_a +MD net/minecraft/block/Block setBlockBoundsBasedOnState (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)V func_180654_a +MD net/minecraft/block/Block colorMultiplier (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;I)I func_180662_a +MD net/minecraft/block/Block getWeakPower (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)I func_180656_a +MD net/minecraft/block/Block shouldSideBeRendered (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176225_a +MD net/minecraft/block/Block setStepSound (Lnet/minecraft/block/Block$SoundType;)Lnet/minecraft/block/Block; func_149672_a +MD net/minecraft/block/Block getIdFromBlock (Lnet/minecraft/block/Block;)I func_149682_b +MD net/minecraft/block/Block isEqualTo (Lnet/minecraft/block/Block;Lnet/minecraft/block/Block;)Z func_149680_a +MD net/minecraft/block/Block damageDropped (Lnet/minecraft/block/state/IBlockState;)I func_180651_a +MD net/minecraft/block/Block getActualState (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; func_176221_a +MD net/minecraft/block/Block getItemDropped (Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;I)Lnet/minecraft/item/Item; func_180660_a +MD net/minecraft/block/Block canCollideCheck (Lnet/minecraft/block/state/IBlockState;Z)Z func_176209_a +MD net/minecraft/block/Block isVecInsideYZBounds (Lnet/minecraft/util/Vec3;)Z func_149654_a +MD net/minecraft/block/Block quantityDropped (Ljava/util/Random;)I func_149745_a +MD net/minecraft/block/Block getExplosionResistance (Lnet/minecraft/entity/Entity;)F func_149638_a +MD net/minecraft/block/Block getPlayerRelativeBlockHardness (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F func_180647_a +MD net/minecraft/block/Block setCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)Lnet/minecraft/block/Block; func_149647_a +MD net/minecraft/block/Block getBlockFromItem (Lnet/minecraft/item/Item;)Lnet/minecraft/block/Block; func_149634_a +MD net/minecraft/block/Block getSubBlocks (Lnet/minecraft/item/Item;Lnet/minecraft/creativetab/CreativeTabs;Ljava/util/List;)V func_149666_a +MD net/minecraft/block/Block setTickRandomly (Z)Lnet/minecraft/block/Block; func_149675_a +MD net/minecraft/block/Block getRenderType ()I func_149645_b +MD net/minecraft/block/Block setResistance (F)Lnet/minecraft/block/Block; func_149752_b +MD net/minecraft/block/Block getSelectedBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; func_180646_a +MD net/minecraft/block/Block dropXpOnBlockBreak (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V func_180637_b +MD net/minecraft/block/Block breakBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180663_b +MD net/minecraft/block/Block dropBlockAsItem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V func_176226_b +MD net/minecraft/block/Block updateTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V func_180650_b +MD net/minecraft/block/Block canPlaceBlockOnSide (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176198_a +MD net/minecraft/block/Block isPassable (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176205_b +MD net/minecraft/block/Block getStrongPower (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)I func_176211_b +MD net/minecraft/block/Block isBlockSolid (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176212_b +MD net/minecraft/block/Block isAssociatedBlock (Lnet/minecraft/block/Block;)Z func_149667_c +MD net/minecraft/block/Block getStateForEntityRender (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_176217_b +MD net/minecraft/block/Block isVecInsideXZBounds (Lnet/minecraft/util/Vec3;)Z func_149687_b +MD net/minecraft/block/Block getBlockFromName (Ljava/lang/String;)Lnet/minecraft/block/Block; func_149684_b +MD net/minecraft/block/Block isOpaqueCube ()Z func_149662_c +MD net/minecraft/block/Block setHardness (F)Lnet/minecraft/block/Block; func_149711_c +MD net/minecraft/block/Block getBlockById (I)Lnet/minecraft/block/Block; func_149729_e +MD net/minecraft/block/Block getItem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/item/Item; func_180665_b +MD net/minecraft/block/Block onBlockAdded (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176213_c +MD net/minecraft/block/Block randomDisplayTick (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V func_180655_c +MD net/minecraft/block/Block getMixedBrightnessForBlock (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176207_c +MD net/minecraft/block/Block getMetaFromState (Lnet/minecraft/block/state/IBlockState;)I func_176201_c +MD net/minecraft/block/Block isVecInsideXYBounds (Lnet/minecraft/util/Vec3;)Z func_149661_c +MD net/minecraft/block/Block setUnlocalizedName (Ljava/lang/String;)Lnet/minecraft/block/Block; func_149663_c +MD net/minecraft/block/Block isFullCube ()Z func_149686_d +MD net/minecraft/block/Block getStateById (I)Lnet/minecraft/block/state/IBlockState; func_176220_d +MD net/minecraft/block/Block canPlaceBlockAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176196_c +MD net/minecraft/block/Block onBlockDestroyedByPlayer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176206_d +MD net/minecraft/block/Block colorMultiplier (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176202_d +MD net/minecraft/block/Block createBlockState ()Lnet/minecraft/block/state/BlockState; func_180661_e +MD net/minecraft/block/Block setLightOpacity (I)Lnet/minecraft/block/Block; func_149713_g +MD net/minecraft/block/Block getLocalizedName ()Ljava/lang/String; func_149732_F +MD net/minecraft/block/Block getStateId (Lnet/minecraft/block/state/IBlockState;)I func_176210_f +MD net/minecraft/block/Block canSpawnInBlock ()Z func_181623_g +MD net/minecraft/block/Block getBlockHardness (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F func_176195_g +MD net/minecraft/block/Block getMapColor (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/material/MapColor; func_180659_g +MD net/minecraft/block/Block getAmbientOcclusionLightValue ()F func_149685_I +MD net/minecraft/block/Block getRenderColor (Lnet/minecraft/block/state/IBlockState;)I func_180644_h +MD net/minecraft/block/Block canProvidePower ()Z func_149744_f +MD net/minecraft/block/Block createStackedBlock (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/item/ItemStack; func_180643_i +MD net/minecraft/block/Block setBlockBoundsForItemRender ()V func_149683_g +MD net/minecraft/block/Block getDamageValue (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I func_176222_j +MD net/minecraft/block/Block setDefaultState (Lnet/minecraft/block/state/IBlockState;)V func_180632_j +MD net/minecraft/block/Block getMobilityFlag ()I func_149656_h +MD net/minecraft/block/Block fillWithRain (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176224_k +MD net/minecraft/block/Block getComparatorInputOverride (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I func_180641_l +MD net/minecraft/block/Block getBlockLayer ()Lnet/minecraft/util/EnumWorldBlockLayer; func_180664_k +MD net/minecraft/block/Block isFullBlock ()Z func_149730_j +MD net/minecraft/block/Block getLightOpacity ()I func_149717_k +MD net/minecraft/block/Block isTranslucent ()Z func_149751_l +MD net/minecraft/block/Block getLightValue ()I func_149750_m +MD net/minecraft/block/Block getUseNeighborBrightness ()Z func_149710_n +MD net/minecraft/block/Block getMaterial ()Lnet/minecraft/block/material/Material; func_149688_o +MD net/minecraft/block/Block isBlockNormalCube ()Z func_149637_q +MD net/minecraft/block/Block isNormalCube ()Z func_149721_r +MD net/minecraft/block/Block isVisuallyOpaque ()Z func_176214_u +MD net/minecraft/block/Block setBlockUnbreakable ()Lnet/minecraft/block/Block; func_149722_s +MD net/minecraft/block/Block getTickRandomly ()Z func_149653_t +MD net/minecraft/block/Block hasTileEntity ()Z func_149716_u +MD net/minecraft/block/Block toString ()Ljava/lang/String; toString +MD net/minecraft/block/Block$EnumOffsetType valueOf (Ljava/lang/String;)Lnet/minecraft/block/Block$EnumOffsetType; valueOf +MD net/minecraft/block/Block$EnumOffsetType values ()[Lnet/minecraft/block/Block$EnumOffsetType; values +MD net/minecraft/block/Block$SoundType getBreakSound ()Ljava/lang/String; func_150495_a +MD net/minecraft/block/Block$SoundType getPlaceSound ()Ljava/lang/String; func_150496_b +MD net/minecraft/block/Block$SoundType getStepSound ()Ljava/lang/String; func_150498_e +MD net/minecraft/block/Block$SoundType getVolume ()F func_150497_c +MD net/minecraft/block/Block$SoundType getFrequency ()F func_150494_d +MD net/minecraft/init/Blocks getRegisteredBlock (Ljava/lang/String;)Lnet/minecraft/block/Block; func_180383_a +MD net/minecraft/block/IGrowable canGrow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Z)Z func_176473_a +MD net/minecraft/block/IGrowable canUseBonemeal (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_180670_a +MD net/minecraft/block/IGrowable grow (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176474_b +MD net/minecraft/block/BlockBush canPlaceBlockOn (Lnet/minecraft/block/Block;)Z func_149854_a +MD net/minecraft/block/BlockBush checkAndDropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176475_e +MD net/minecraft/block/BlockBush canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_180671_f +MD net/minecraft/block/BlockButton func_181088_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_181088_a +MD net/minecraft/block/BlockButton notifyNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_176582_b +MD net/minecraft/block/BlockButton updateBlockBounds (Lnet/minecraft/block/state/IBlockState;)V func_180681_d +MD net/minecraft/block/BlockButton checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176583_e +MD net/minecraft/block/BlockButton checkForArrows (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180680_f +MD net/minecraft/block/BlockCactus canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176586_d +MD net/minecraft/block/BlockCake eatCake (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)V func_180682_b +MD net/minecraft/block/BlockCake canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176588_d +MD net/minecraft/block/BlockCauldron setWaterLevel (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V func_176590_a +MD net/minecraft/block/BlockChest checkForSurroundingChests (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_176455_e +MD net/minecraft/block/BlockChest getLockableContainer (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/ILockableContainer; func_180676_d +MD net/minecraft/block/BlockChest correctFacing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_176458_f +MD net/minecraft/block/BlockChest isDoubleChest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176454_e +MD net/minecraft/block/BlockChest isBlocked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176457_m +MD net/minecraft/block/BlockChest isBelowSolidBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176456_n +MD net/minecraft/block/BlockChest isOcelotSittingOnChest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176453_o +MD net/minecraft/block/BlockCocoa canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176499_e +MD net/minecraft/block/BlockCocoa dropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176500_f +MD net/minecraft/block/BlockRedstoneComparator findItemFrame (Lnet/minecraft/world/World;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/entity/item/EntityItemFrame; func_176461_a +MD net/minecraft/block/BlockRedstoneComparator calculateOutput (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I func_176460_j +MD net/minecraft/block/BlockRedstoneComparator onStateChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176462_k +MD net/minecraft/block/BlockRedstoneComparator$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/block/BlockRedstoneComparator$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockRedstoneComparator$Mode toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedstoneComparator$Mode valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedstoneComparator$Mode; valueOf +MD net/minecraft/block/BlockRedstoneComparator$Mode values ()[Lnet/minecraft/block/BlockRedstoneComparator$Mode; values +MD net/minecraft/block/BlockCrops getGrowthChance (Lnet/minecraft/block/Block;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)F func_180672_a +MD net/minecraft/block/BlockCrops grow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176487_g +MD net/minecraft/block/BlockCrops getSeed ()Lnet/minecraft/item/Item; func_149866_i +MD net/minecraft/block/BlockCrops getCrop ()Lnet/minecraft/item/Item; func_149865_P +MD net/minecraft/block/BlockDaylightDetector updatePower (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180677_d +MD net/minecraft/block/BlockRailDetector findMinecarts (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Ljava/lang/Class;[Lcom/google/common/base/Predicate;)Ljava/util/List; func_176571_a +MD net/minecraft/block/BlockRailDetector getDectectionBox (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/AxisAlignedBB; func_176572_a +MD net/minecraft/block/BlockRailDetector updatePoweredState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176570_e +MD net/minecraft/block/BlockRailDetector$1 apply (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z apply +MD net/minecraft/block/BlockRailDetector$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockRedstoneDiode getActiveSignal (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I func_176408_a +MD net/minecraft/block/BlockRedstoneDiode isLocked (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176405_b +MD net/minecraft/block/BlockRedstoneDiode getPowerOnSides (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I func_176407_c +MD net/minecraft/block/BlockRedstoneDiode getPowerOnSide (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I func_176401_c +MD net/minecraft/block/BlockRedstoneDiode canPowerSide (Lnet/minecraft/block/Block;)Z func_149908_a +MD net/minecraft/block/BlockRedstoneDiode isRedstoneRepeaterBlockID (Lnet/minecraft/block/Block;)Z func_149909_d +MD net/minecraft/block/BlockRedstoneDiode getDelay (Lnet/minecraft/block/state/IBlockState;)I func_176403_d +MD net/minecraft/block/BlockRedstoneDiode canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176409_d +MD net/minecraft/block/BlockRedstoneDiode shouldBePowered (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176404_e +MD net/minecraft/block/BlockRedstoneDiode isAssociated (Lnet/minecraft/block/Block;)Z func_149907_e +MD net/minecraft/block/BlockRedstoneDiode getPoweredState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_180674_e +MD net/minecraft/block/BlockRedstoneDiode calculateInputStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)I func_176397_f +MD net/minecraft/block/BlockRedstoneDiode updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176398_g +MD net/minecraft/block/BlockRedstoneDiode notifyNeighbors (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176400_h +MD net/minecraft/block/BlockRedstoneDiode isFacingTowardsRepeater (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176402_i +MD net/minecraft/block/BlockRedstoneDiode getUnpoweredState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_180675_k +MD net/minecraft/block/BlockRedstoneDiode isPowered (Lnet/minecraft/block/state/IBlockState;)Z func_176406_l +MD net/minecraft/block/BlockRedstoneDiode getTickDelay (Lnet/minecraft/block/state/IBlockState;)I func_176399_m +MD net/minecraft/block/BlockDirt$DirtType getMetadata ()I func_176925_a +MD net/minecraft/block/BlockDirt$DirtType byMetadata (I)Lnet/minecraft/block/BlockDirt$DirtType; func_176924_a +MD net/minecraft/block/BlockDirt$DirtType getUnlocalizedName ()Ljava/lang/String; func_176927_c +MD net/minecraft/block/BlockDirt$DirtType func_181066_d ()Lnet/minecraft/block/material/MapColor; func_181066_d +MD net/minecraft/block/BlockDirt$DirtType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDirt$DirtType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDirt$DirtType; valueOf +MD net/minecraft/block/BlockDirt$DirtType values ()[Lnet/minecraft/block/BlockDirt$DirtType; values +MD net/minecraft/block/BlockDispenser getDispensePosition (Lnet/minecraft/dispenser/IBlockSource;)Lnet/minecraft/dispenser/IPosition; func_149939_a +MD net/minecraft/block/BlockDispenser getBehavior (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/dispenser/IBehaviorDispenseItem; func_149940_a +MD net/minecraft/block/BlockDispenser getFacing (I)Lnet/minecraft/util/EnumFacing; func_149937_b +MD net/minecraft/block/BlockDispenser setDefaultDirection (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176438_e +MD net/minecraft/block/BlockDispenser dispense (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176439_d +MD net/minecraft/block/BlockDoor toggleDoor (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)V func_176512_a +MD net/minecraft/block/BlockDoor removeHalfBit (I)I func_176510_b +MD net/minecraft/block/BlockDoor combineMetadata (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176515_e +MD net/minecraft/block/BlockDoor getFacing (I)Lnet/minecraft/util/EnumFacing; func_176511_f +MD net/minecraft/block/BlockDoor isOpen (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176514_f +MD net/minecraft/block/BlockDoor isOpen (I)Z func_176516_g +MD net/minecraft/block/BlockDoor getFacing (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/EnumFacing; func_176517_h +MD net/minecraft/block/BlockDoor isTop (I)Z func_176518_i +MD net/minecraft/block/BlockDoor isHingeLeft (I)Z func_176513_j +MD net/minecraft/block/BlockDoor setBoundBasedOnMeta (I)V func_150011_b +MD net/minecraft/block/BlockDoor getItem ()Lnet/minecraft/item/Item; func_176509_j +MD net/minecraft/block/BlockDoor$EnumDoorHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoor$EnumDoorHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoor$EnumDoorHalf; valueOf +MD net/minecraft/block/BlockDoor$EnumDoorHalf values ()[Lnet/minecraft/block/BlockDoor$EnumDoorHalf; values +MD net/minecraft/block/BlockDoor$EnumHingePosition toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoor$EnumHingePosition valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoor$EnumHingePosition; valueOf +MD net/minecraft/block/BlockDoor$EnumHingePosition values ()[Lnet/minecraft/block/BlockDoor$EnumHingePosition; values +MD net/minecraft/block/BlockDoublePlant placeAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/BlockDoublePlant$EnumPlantType;I)V func_176491_a +MD net/minecraft/block/BlockDoublePlant onHarvest (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/player/EntityPlayer;)Z func_176489_b +MD net/minecraft/block/BlockDoublePlant getVariant (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; func_176490_e +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoublePlant$EnumBlockHalf; valueOf +MD net/minecraft/block/BlockDoublePlant$EnumBlockHalf values ()[Lnet/minecraft/block/BlockDoublePlant$EnumBlockHalf; values +MD net/minecraft/block/BlockDoublePlant$EnumPlantType getMeta ()I func_176936_a +MD net/minecraft/block/BlockDoublePlant$EnumPlantType byMetadata (I)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; func_176938_a +MD net/minecraft/block/BlockDoublePlant$EnumPlantType getUnlocalizedName ()Ljava/lang/String; func_176939_c +MD net/minecraft/block/BlockDoublePlant$EnumPlantType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockDoublePlant$EnumPlantType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; valueOf +MD net/minecraft/block/BlockDoublePlant$EnumPlantType values ()[Lnet/minecraft/block/BlockDoublePlant$EnumPlantType; values +MD net/minecraft/block/BlockDragonEgg checkFall (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180683_d +MD net/minecraft/block/BlockDragonEgg teleport (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180684_e +MD net/minecraft/block/BlockDynamicLiquid checkAdjacentBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)I func_176371_a +MD net/minecraft/block/BlockDynamicLiquid func_176374_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ILnet/minecraft/util/EnumFacing;)I func_176374_a +MD net/minecraft/block/BlockDynamicLiquid tryFlowInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V func_176375_a +MD net/minecraft/block/BlockDynamicLiquid getPossibleFlowDirections (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Ljava/util/Set; func_176376_e +MD net/minecraft/block/BlockDynamicLiquid placeStaticBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180690_f +MD net/minecraft/block/BlockDynamicLiquid isBlocked (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176372_g +MD net/minecraft/block/BlockDynamicLiquid canFlowInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176373_h +MD net/minecraft/block/ITileEntityProvider createNewTileEntity (Lnet/minecraft/world/World;I)Lnet/minecraft/tileentity/TileEntity; func_149915_a +MD net/minecraft/block/BlockFalling onStartFalling (Lnet/minecraft/entity/item/EntityFallingBlock;)V func_149829_a +MD net/minecraft/block/BlockFalling onEndFalling (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176502_a_ +MD net/minecraft/block/BlockFalling canFallInto (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_180685_d +MD net/minecraft/block/BlockFalling checkFallable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176503_e +MD net/minecraft/block/BlockFarmland hasCrops (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176529_d +MD net/minecraft/block/BlockFarmland hasWater (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176530_e +MD net/minecraft/block/BlockFence canConnectTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176524_e +MD net/minecraft/block/BlockFire catchOnFire (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ILjava/util/Random;I)V func_176536_a +MD net/minecraft/block/BlockFire setFireInfo (Lnet/minecraft/block/Block;II)V func_180686_a +MD net/minecraft/block/BlockFire getFlammability (Lnet/minecraft/block/Block;)I func_176532_c +MD net/minecraft/block/BlockFire getEncouragement (Lnet/minecraft/block/Block;)I func_176534_d +MD net/minecraft/block/BlockFire canDie (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176537_d +MD net/minecraft/block/BlockFire canCatchFire (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176535_e +MD net/minecraft/block/BlockFire canNeighborCatchFire (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176533_e +MD net/minecraft/block/BlockFire init ()V func_149843_e +MD net/minecraft/block/BlockFire getNeighborEncouragement (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)I func_176538_m +MD net/minecraft/block/BlockFlower getBlockType ()Lnet/minecraft/block/BlockFlower$EnumFlowerColor; func_176495_j +MD net/minecraft/block/BlockFlower getTypeProperty ()Lnet/minecraft/block/properties/IProperty; func_176494_l +MD net/minecraft/block/BlockFlower$1 apply (Lnet/minecraft/block/BlockFlower$EnumFlowerType;)Z apply +MD net/minecraft/block/BlockFlower$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockFlower$EnumFlowerType getBlockType ()Lnet/minecraft/block/BlockFlower$EnumFlowerColor; func_176964_a +MD net/minecraft/block/BlockFlower$EnumFlowerType getTypes (Lnet/minecraft/block/BlockFlower$EnumFlowerColor;)[Lnet/minecraft/block/BlockFlower$EnumFlowerType; func_176966_a +MD net/minecraft/block/BlockFlower$EnumFlowerType getType (Lnet/minecraft/block/BlockFlower$EnumFlowerColor;I)Lnet/minecraft/block/BlockFlower$EnumFlowerType; func_176967_a +MD net/minecraft/block/BlockFlower$EnumFlowerType getMeta ()I func_176968_b +MD net/minecraft/block/BlockFlower$EnumFlowerType getUnlocalizedName ()Ljava/lang/String; func_176963_d +MD net/minecraft/block/BlockFlower$EnumFlowerType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockFlower$EnumFlowerType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlower$EnumFlowerType; valueOf +MD net/minecraft/block/BlockFlower$EnumFlowerType values ()[Lnet/minecraft/block/BlockFlower$EnumFlowerType; values +MD net/minecraft/block/BlockFlower$EnumFlowerType$1 apply (Lnet/minecraft/block/BlockFlower$EnumFlowerType;)Z apply +MD net/minecraft/block/BlockFlower$EnumFlowerType$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockFlower$EnumFlowerColor getBlock ()Lnet/minecraft/block/BlockFlower; func_180346_a +MD net/minecraft/block/BlockFlower$EnumFlowerColor valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlower$EnumFlowerColor; valueOf +MD net/minecraft/block/BlockFlower$EnumFlowerColor values ()[Lnet/minecraft/block/BlockFlower$EnumFlowerColor; values +MD net/minecraft/block/BlockFlowerPot canNotContain (Lnet/minecraft/block/Block;I)Z func_149928_a +MD net/minecraft/block/BlockFlowerPot getTileEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntityFlowerPot; func_176442_d +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockFlowerPot$EnumFlowerType; valueOf +MD net/minecraft/block/BlockFlowerPot$EnumFlowerType values ()[Lnet/minecraft/block/BlockFlowerPot$EnumFlowerType; values +MD net/minecraft/block/BlockFurnace setState (ZLnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176446_a +MD net/minecraft/block/BlockFurnace setDefaultFacing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176445_e +MD net/minecraft/block/BlockSlab getVariant (Lnet/minecraft/item/ItemStack;)Ljava/lang/Object; func_176553_a +MD net/minecraft/block/BlockSlab getUnlocalizedName (I)Ljava/lang/String; func_150002_b +MD net/minecraft/block/BlockSlab isSlab (Lnet/minecraft/block/Block;)Z func_150003_a +MD net/minecraft/block/BlockSlab isDouble ()Z func_176552_j +MD net/minecraft/block/BlockSlab getVariantProperty ()Lnet/minecraft/block/properties/IProperty; func_176551_l +MD net/minecraft/block/BlockSlab$EnumBlockHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSlab$EnumBlockHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSlab$EnumBlockHalf; valueOf +MD net/minecraft/block/BlockSlab$EnumBlockHalf values ()[Lnet/minecraft/block/BlockSlab$EnumBlockHalf; values +MD net/minecraft/block/BlockHopper getFacing (I)Lnet/minecraft/util/EnumFacing; func_176428_b +MD net/minecraft/block/BlockHopper updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176427_e +MD net/minecraft/block/BlockHopper isEnabled (I)Z func_149917_c +MD net/minecraft/block/BlockHopper$1 apply (Lnet/minecraft/util/EnumFacing;)Z apply +MD net/minecraft/block/BlockHopper$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockHugeMushroom$EnumType getMetadata ()I func_176896_a +MD net/minecraft/block/BlockHugeMushroom$EnumType byMetadata (I)Lnet/minecraft/block/BlockHugeMushroom$EnumType; func_176895_a +MD net/minecraft/block/BlockHugeMushroom$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockHugeMushroom$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockHugeMushroom$EnumType; valueOf +MD net/minecraft/block/BlockHugeMushroom$EnumType values ()[Lnet/minecraft/block/BlockHugeMushroom$EnumType; values +MD net/minecraft/block/BlockJukebox insertRecord (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/item/ItemStack;)V func_176431_a +MD net/minecraft/block/BlockJukebox dropRecord (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180678_e +MD net/minecraft/block/BlockJukebox$TileEntityJukebox getRecord ()Lnet/minecraft/item/ItemStack; func_145856_a +MD net/minecraft/block/BlockJukebox$TileEntityJukebox setRecord (Lnet/minecraft/item/ItemStack;)V func_145857_a +MD net/minecraft/block/BlockLadder canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176381_b +MD net/minecraft/block/BlockLeaves dropApple (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;I)V func_176234_a +MD net/minecraft/block/BlockLeaves getWoodType (I)Lnet/minecraft/block/BlockPlanks$EnumType; func_176233_b +MD net/minecraft/block/BlockLeaves setGraphicsLevel (Z)V func_150122_b +MD net/minecraft/block/BlockLeaves getSaplingDropChance (Lnet/minecraft/block/state/IBlockState;)I func_176232_d +MD net/minecraft/block/BlockLeaves destroy (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176235_d +MD net/minecraft/block/BlockLever func_181090_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_181090_a +MD net/minecraft/block/BlockLever getMetadataForFacing (Lnet/minecraft/util/EnumFacing;)I func_176357_a +MD net/minecraft/block/BlockLever func_181091_e (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_181091_e +MD net/minecraft/block/BlockLever$EnumOrientation getMetadata ()I func_176855_a +MD net/minecraft/block/BlockLever$EnumOrientation byMetadata (I)Lnet/minecraft/block/BlockLever$EnumOrientation; func_176853_a +MD net/minecraft/block/BlockLever$EnumOrientation forFacings (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/BlockLever$EnumOrientation; func_176856_a +MD net/minecraft/block/BlockLever$EnumOrientation getFacing ()Lnet/minecraft/util/EnumFacing; func_176852_c +MD net/minecraft/block/BlockLever$EnumOrientation toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockLever$EnumOrientation valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockLever$EnumOrientation; valueOf +MD net/minecraft/block/BlockLever$EnumOrientation values ()[Lnet/minecraft/block/BlockLever$EnumOrientation; values +MD net/minecraft/block/BlockLiquid getFlowDirection (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/material/Material;)D func_180689_a +MD net/minecraft/block/BlockLiquid getFlowingBlock (Lnet/minecraft/block/material/Material;)Lnet/minecraft/block/BlockDynamicLiquid; func_176361_a +MD net/minecraft/block/BlockLiquid getLiquidHeightPercent (I)F func_149801_b +MD net/minecraft/block/BlockLiquid getStaticBlock (Lnet/minecraft/block/material/Material;)Lnet/minecraft/block/BlockStaticLiquid; func_176363_b +MD net/minecraft/block/BlockLiquid triggerMixEffects (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180688_d +MD net/minecraft/block/BlockLiquid checkForMixing (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176365_e +MD net/minecraft/block/BlockLiquid getLevel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176362_e +MD net/minecraft/block/BlockLiquid getEffectiveFlowDecay (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176366_f +MD net/minecraft/block/BlockLiquid shouldRenderSides (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176364_g +MD net/minecraft/block/BlockLiquid getFlowVector (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/Vec3; func_180687_h +MD net/minecraft/block/BlockLog$EnumAxis fromFacingAxis (Lnet/minecraft/util/EnumFacing$Axis;)Lnet/minecraft/block/BlockLog$EnumAxis; func_176870_a +MD net/minecraft/block/BlockLog$EnumAxis toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockLog$EnumAxis valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockLog$EnumAxis; valueOf +MD net/minecraft/block/BlockLog$EnumAxis values ()[Lnet/minecraft/block/BlockLog$EnumAxis; values +MD net/minecraft/block/BlockSilverfish canContainSilverfish (Lnet/minecraft/block/state/IBlockState;)Z func_176377_d +MD net/minecraft/block/BlockSilverfish$EnumType getMetadata ()I func_176881_a +MD net/minecraft/block/BlockSilverfish$EnumType byMetadata (I)Lnet/minecraft/block/BlockSilverfish$EnumType; func_176879_a +MD net/minecraft/block/BlockSilverfish$EnumType forModelBlock (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/BlockSilverfish$EnumType; func_176878_a +MD net/minecraft/block/BlockSilverfish$EnumType getUnlocalizedName ()Ljava/lang/String; func_176882_c +MD net/minecraft/block/BlockSilverfish$EnumType getModelBlock ()Lnet/minecraft/block/state/IBlockState; func_176883_d +MD net/minecraft/block/BlockSilverfish$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSilverfish$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSilverfish$EnumType; valueOf +MD net/minecraft/block/BlockSilverfish$EnumType values ()[Lnet/minecraft/block/BlockSilverfish$EnumType; values +MD net/minecraft/block/BlockMushroom generateBigMushroom (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)Z func_176485_d +MD net/minecraft/block/BlockNewLeaf$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z apply +MD net/minecraft/block/BlockNewLeaf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockNewLog$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z apply +MD net/minecraft/block/BlockNewLog$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockStoneSlabNew$EnumType getMetadata ()I func_176915_a +MD net/minecraft/block/BlockStoneSlabNew$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneSlabNew$EnumType; func_176916_a +MD net/minecraft/block/BlockStoneSlabNew$EnumType func_181068_c ()Lnet/minecraft/block/material/MapColor; func_181068_c +MD net/minecraft/block/BlockStoneSlabNew$EnumType getUnlocalizedName ()Ljava/lang/String; func_176918_c +MD net/minecraft/block/BlockStoneSlabNew$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneSlabNew$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneSlabNew$EnumType; valueOf +MD net/minecraft/block/BlockStoneSlabNew$EnumType values ()[Lnet/minecraft/block/BlockStoneSlabNew$EnumType; values +MD net/minecraft/block/BlockNote getInstrument (I)Ljava/lang/String; func_176433_b +MD net/minecraft/block/BlockOldLeaf$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z apply +MD net/minecraft/block/BlockOldLeaf$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockOldLog$1 apply (Lnet/minecraft/block/BlockPlanks$EnumType;)Z apply +MD net/minecraft/block/BlockOldLog$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockPlanks$EnumType getMetadata ()I func_176839_a +MD net/minecraft/block/BlockPlanks$EnumType byMetadata (I)Lnet/minecraft/block/BlockPlanks$EnumType; func_176837_a +MD net/minecraft/block/BlockPlanks$EnumType getMapColor ()Lnet/minecraft/block/material/MapColor; func_181070_c +MD net/minecraft/block/BlockPlanks$EnumType getUnlocalizedName ()Ljava/lang/String; func_176840_c +MD net/minecraft/block/BlockPlanks$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPlanks$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPlanks$EnumType; valueOf +MD net/minecraft/block/BlockPlanks$EnumType values ()[Lnet/minecraft/block/BlockPlanks$EnumType; values +MD net/minecraft/block/BlockPortal getMetaForAxis (Lnet/minecraft/util/EnumFacing$Axis;)I func_176549_a +MD net/minecraft/block/BlockPortal func_176548_d (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176548_d +MD net/minecraft/block/BlockPortal func_181089_f (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; func_181089_f +MD net/minecraft/block/BlockPortal$Size func_181100_a ()I func_181100_a +MD net/minecraft/block/BlockPortal$Size func_150857_a (Lnet/minecraft/block/Block;)Z func_150857_a +MD net/minecraft/block/BlockPortal$Size access$000 (Lnet/minecraft/block/BlockPortal$Size;)I access$000 +MD net/minecraft/block/BlockPortal$Size func_180120_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)I func_180120_a +MD net/minecraft/block/BlockPortal$Size func_181101_b ()I func_181101_b +MD net/minecraft/block/BlockPortal$Size access$100 (Lnet/minecraft/block/BlockPortal$Size;)I access$100 +MD net/minecraft/block/BlockPortal$Size func_150858_a ()I func_150858_a +MD net/minecraft/block/BlockPortal$Size access$200 (Lnet/minecraft/block/BlockPortal$Size;)I access$200 +MD net/minecraft/block/BlockPortal$Size func_150860_b ()Z func_150860_b +MD net/minecraft/block/BlockPortal$Size access$300 (Lnet/minecraft/block/BlockPortal$Size;)Lnet/minecraft/util/EnumFacing; access$300 +MD net/minecraft/block/BlockPortal$Size func_150859_c ()V func_150859_c +MD net/minecraft/block/BlockPortal$Size access$400 (Lnet/minecraft/block/BlockPortal$Size;)Lnet/minecraft/util/BlockPos; access$400 +MD net/minecraft/block/BlockRailPowered func_176566_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;ZI)Z func_176566_a +MD net/minecraft/block/BlockRailPowered func_176567_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ZILnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z func_176567_a +MD net/minecraft/block/BlockRailPowered$1 apply (Lnet/minecraft/block/BlockRailBase$EnumRailDirection;)Z apply +MD net/minecraft/block/BlockRailPowered$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockPressurePlate$Sensitivity valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPressurePlate$Sensitivity; valueOf +MD net/minecraft/block/BlockPressurePlate$Sensitivity values ()[Lnet/minecraft/block/BlockPressurePlate$Sensitivity; values +MD net/minecraft/block/BlockPrismarine$EnumType getMetadata ()I func_176807_a +MD net/minecraft/block/BlockPrismarine$EnumType byMetadata (I)Lnet/minecraft/block/BlockPrismarine$EnumType; func_176810_a +MD net/minecraft/block/BlockPrismarine$EnumType getUnlocalizedName ()Ljava/lang/String; func_176809_c +MD net/minecraft/block/BlockPrismarine$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPrismarine$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPrismarine$EnumType; valueOf +MD net/minecraft/block/BlockPrismarine$EnumType values ()[Lnet/minecraft/block/BlockPrismarine$EnumType; values +MD net/minecraft/block/BlockPumpkin getGolemBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176389_S +MD net/minecraft/block/BlockPumpkin getGolemPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176388_T +MD net/minecraft/block/BlockPumpkin canDispenserPlace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176390_d +MD net/minecraft/block/BlockPumpkin trySpawnGolem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180673_e +MD net/minecraft/block/BlockPumpkin getSnowmanBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176392_j +MD net/minecraft/block/BlockPumpkin getSnowmanPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176391_l +MD net/minecraft/block/BlockPumpkin$1 apply (Lnet/minecraft/block/state/IBlockState;)Z apply +MD net/minecraft/block/BlockPumpkin$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockQuartz$EnumType getMetadata ()I func_176796_a +MD net/minecraft/block/BlockQuartz$EnumType byMetadata (I)Lnet/minecraft/block/BlockQuartz$EnumType; func_176794_a +MD net/minecraft/block/BlockQuartz$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockQuartz$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockQuartz$EnumType; valueOf +MD net/minecraft/block/BlockQuartz$EnumType values ()[Lnet/minecraft/block/BlockQuartz$EnumType; values +MD net/minecraft/block/BlockRedSandstone$EnumType getMetadata ()I func_176827_a +MD net/minecraft/block/BlockRedSandstone$EnumType byMetadata (I)Lnet/minecraft/block/BlockRedSandstone$EnumType; func_176825_a +MD net/minecraft/block/BlockRedSandstone$EnumType getUnlocalizedName ()Ljava/lang/String; func_176828_c +MD net/minecraft/block/BlockRedSandstone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedSandstone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedSandstone$EnumType; valueOf +MD net/minecraft/block/BlockRedSandstone$EnumType values ()[Lnet/minecraft/block/BlockRedSandstone$EnumType; values +MD net/minecraft/block/BlockRedstoneOre activate (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176352_d +MD net/minecraft/block/BlockRedstoneOre spawnParticles (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_180691_e +MD net/minecraft/block/BlockRedstoneWire getMaxCurrentStrength (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)I func_176342_a +MD net/minecraft/block/BlockRedstoneWire calculateCurrentChanges (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_176345_a +MD net/minecraft/block/BlockRedstoneWire canConnectTo (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)Z func_176343_a +MD net/minecraft/block/BlockRedstoneWire colorMultiplier (I)I func_176337_b +MD net/minecraft/block/BlockRedstoneWire getAttachPosition (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; func_176341_c +MD net/minecraft/block/BlockRedstoneWire func_176339_d (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176339_d +MD net/minecraft/block/BlockRedstoneWire canConnectUpwardsTo (Lnet/minecraft/block/state/IBlockState;)Z func_176346_d +MD net/minecraft/block/BlockRedstoneWire notifyWireNeighborsOfStateChange (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176344_d +MD net/minecraft/block/BlockRedstoneWire updateSurroundingRedstone (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_176338_e +MD net/minecraft/block/BlockRedstoneWire canConnectUpwardsTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176340_e +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; valueOf +MD net/minecraft/block/BlockRedstoneWire$EnumAttachPosition values ()[Lnet/minecraft/block/BlockRedstoneWire$EnumAttachPosition; values +MD net/minecraft/block/BlockRedstoneTorch isBurnedOut (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Z)Z func_176598_a +MD net/minecraft/block/BlockRedstoneTorch shouldBeOff (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176597_g +MD net/minecraft/block/BlockReed canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176354_d +MD net/minecraft/block/BlockReed checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176353_e +MD net/minecraft/block/BlockSand$EnumType getMetadata ()I func_176688_a +MD net/minecraft/block/BlockSand$EnumType byMetadata (I)Lnet/minecraft/block/BlockSand$EnumType; func_176686_a +MD net/minecraft/block/BlockSand$EnumType getMapColor ()Lnet/minecraft/block/material/MapColor; func_176687_c +MD net/minecraft/block/BlockSand$EnumType getUnlocalizedName ()Ljava/lang/String; func_176685_d +MD net/minecraft/block/BlockSand$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSand$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSand$EnumType; valueOf +MD net/minecraft/block/BlockSand$EnumType values ()[Lnet/minecraft/block/BlockSand$EnumType; values +MD net/minecraft/block/BlockSandStone$EnumType getMetadata ()I func_176675_a +MD net/minecraft/block/BlockSandStone$EnumType byMetadata (I)Lnet/minecraft/block/BlockSandStone$EnumType; func_176673_a +MD net/minecraft/block/BlockSandStone$EnumType getUnlocalizedName ()Ljava/lang/String; func_176676_c +MD net/minecraft/block/BlockSandStone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockSandStone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockSandStone$EnumType; valueOf +MD net/minecraft/block/BlockSandStone$EnumType values ()[Lnet/minecraft/block/BlockSandStone$EnumType; values +MD net/minecraft/block/BlockSapling func_181624_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;IILnet/minecraft/block/BlockPlanks$EnumType;)Z func_181624_a +MD net/minecraft/block/BlockSapling isTypeAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/BlockPlanks$EnumType;)Z func_176477_a +MD net/minecraft/block/BlockSapling grow (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V func_176478_d +MD net/minecraft/block/BlockSapling generateTree (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Ljava/util/Random;)V func_176476_e +MD net/minecraft/block/BlockSkull checkWitherSpawn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntitySkull;)V func_180679_a +MD net/minecraft/block/BlockSkull canDispenserPlace (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/item/ItemStack;)Z func_176415_b +MD net/minecraft/block/BlockSkull getWitherBasePattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176414_j +MD net/minecraft/block/BlockSkull getWitherPattern ()Lnet/minecraft/block/state/pattern/BlockPattern; func_176416_l +MD net/minecraft/block/BlockSkull$1 apply (Lnet/minecraft/block/state/BlockWorldState;)Z apply +MD net/minecraft/block/BlockSkull$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockSnow getBoundsForLayers (I)V func_150154_b +MD net/minecraft/block/BlockSnow checkAndDropBlock (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176314_e +MD net/minecraft/block/BlockSponge absorb (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176312_d +MD net/minecraft/block/BlockSponge tryAbsorb (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176311_e +MD net/minecraft/block/BlockStairs isSameStair (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176302_a +MD net/minecraft/block/BlockStairs isBlockStairs (Lnet/minecraft/block/Block;)Z func_150148_a +MD net/minecraft/block/BlockStairs setBaseCollisionBounds (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)V func_176303_e +MD net/minecraft/block/BlockStairs func_176307_f (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176307_f +MD net/minecraft/block/BlockStairs func_176305_g (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)I func_176305_g +MD net/minecraft/block/BlockStairs func_176306_h (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176306_h +MD net/minecraft/block/BlockStairs func_176304_i (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176304_i +MD net/minecraft/block/BlockStairs$EnumHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStairs$EnumHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStairs$EnumHalf; valueOf +MD net/minecraft/block/BlockStairs$EnumHalf values ()[Lnet/minecraft/block/BlockStairs$EnumHalf; values +MD net/minecraft/block/BlockStairs$EnumShape toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStairs$EnumShape valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStairs$EnumShape; valueOf +MD net/minecraft/block/BlockStairs$EnumShape values ()[Lnet/minecraft/block/BlockStairs$EnumShape; values +MD net/minecraft/block/BlockStaticLiquid isSurroundingBlockFlammable (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176369_e +MD net/minecraft/block/BlockStaticLiquid updateLiquid (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176370_f +MD net/minecraft/block/BlockStaticLiquid getCanBlockBurn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176368_m +MD net/minecraft/block/BlockStem growStem (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176482_g +MD net/minecraft/block/BlockStem getSeedItem ()Lnet/minecraft/item/Item; func_176481_j +MD net/minecraft/block/BlockStem$1 apply (Lnet/minecraft/util/EnumFacing;)Z apply +MD net/minecraft/block/BlockStem$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockStone$EnumType getMetadata ()I func_176642_a +MD net/minecraft/block/BlockStone$EnumType byMetadata (I)Lnet/minecraft/block/BlockStone$EnumType; func_176643_a +MD net/minecraft/block/BlockStone$EnumType func_181072_c ()Lnet/minecraft/block/material/MapColor; func_181072_c +MD net/minecraft/block/BlockStone$EnumType getUnlocalizedName ()Ljava/lang/String; func_176644_c +MD net/minecraft/block/BlockStone$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStone$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStone$EnumType; valueOf +MD net/minecraft/block/BlockStone$EnumType values ()[Lnet/minecraft/block/BlockStone$EnumType; values +MD net/minecraft/block/BlockStoneBrick$EnumType getMetadata ()I func_176612_a +MD net/minecraft/block/BlockStoneBrick$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneBrick$EnumType; func_176613_a +MD net/minecraft/block/BlockStoneBrick$EnumType getUnlocalizedName ()Ljava/lang/String; func_176614_c +MD net/minecraft/block/BlockStoneBrick$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneBrick$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneBrick$EnumType; valueOf +MD net/minecraft/block/BlockStoneBrick$EnumType values ()[Lnet/minecraft/block/BlockStoneBrick$EnumType; values +MD net/minecraft/block/BlockStoneSlab$EnumType getMetadata ()I func_176624_a +MD net/minecraft/block/BlockStoneSlab$EnumType byMetadata (I)Lnet/minecraft/block/BlockStoneSlab$EnumType; func_176625_a +MD net/minecraft/block/BlockStoneSlab$EnumType func_181074_c ()Lnet/minecraft/block/material/MapColor; func_181074_c +MD net/minecraft/block/BlockStoneSlab$EnumType getUnlocalizedName ()Ljava/lang/String; func_176627_c +MD net/minecraft/block/BlockStoneSlab$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockStoneSlab$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockStoneSlab$EnumType; valueOf +MD net/minecraft/block/BlockStoneSlab$EnumType values ()[Lnet/minecraft/block/BlockStoneSlab$EnumType; values +MD net/minecraft/block/BlockTallGrass$EnumType getMeta ()I func_177044_a +MD net/minecraft/block/BlockTallGrass$EnumType byMetadata (I)Lnet/minecraft/block/BlockTallGrass$EnumType; func_177045_a +MD net/minecraft/block/BlockTallGrass$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockTallGrass$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockTallGrass$EnumType; valueOf +MD net/minecraft/block/BlockTallGrass$EnumType values ()[Lnet/minecraft/block/BlockTallGrass$EnumType; values +MD net/minecraft/block/BlockPane canPaneConnectToBlock (Lnet/minecraft/block/Block;)Z func_150098_a +MD net/minecraft/block/BlockTNT explode (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/entity/EntityLivingBase;)V func_180692_a +MD net/minecraft/block/BlockTorch canPlaceAt (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176595_b +MD net/minecraft/block/BlockTorch canPlaceOn (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176594_d +MD net/minecraft/block/BlockTorch onNeighborChangeInternal (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176592_e +MD net/minecraft/block/BlockTorch checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176593_f +MD net/minecraft/block/BlockTorch$1 apply (Lnet/minecraft/util/EnumFacing;)Z apply +MD net/minecraft/block/BlockTorch$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/BlockTrapDoor getMetaForFacing (Lnet/minecraft/util/EnumFacing;)I func_176282_a +MD net/minecraft/block/BlockTrapDoor getFacing (I)Lnet/minecraft/util/EnumFacing; func_176281_b +MD net/minecraft/block/BlockTrapDoor isValidSupportBlock (Lnet/minecraft/block/Block;)Z func_150119_a +MD net/minecraft/block/BlockTrapDoor setBounds (Lnet/minecraft/block/state/IBlockState;)V func_180693_d +MD net/minecraft/block/BlockTrapDoor$DoorHalf toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockTrapDoor$DoorHalf valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockTrapDoor$DoorHalf; valueOf +MD net/minecraft/block/BlockTrapDoor$DoorHalf values ()[Lnet/minecraft/block/BlockTrapDoor$DoorHalf; values +MD net/minecraft/block/BlockTripWire isConnectedTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;)Z func_176287_c +MD net/minecraft/block/BlockTripWire updateState (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_176288_d +MD net/minecraft/block/BlockTripWire notifyHook (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176286_e +MD net/minecraft/block/BlockTripWireHook func_176260_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;ZZILnet/minecraft/block/state/IBlockState;)V func_176260_a +MD net/minecraft/block/BlockTripWireHook func_176262_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_176262_b +MD net/minecraft/block/BlockTripWireHook func_180694_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;ZZZZ)V func_180694_a +MD net/minecraft/block/BlockTripWireHook checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176261_e +MD net/minecraft/block/BlockVine getPropertyFor (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/block/properties/PropertyBool; func_176267_a +MD net/minecraft/block/BlockVine canPlaceOn (Lnet/minecraft/block/Block;)Z func_150093_a +MD net/minecraft/block/BlockVine getNumGrownFaces (Lnet/minecraft/block/state/IBlockState;)I func_176268_d +MD net/minecraft/block/BlockVine recheckGrownSides (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176269_e +MD net/minecraft/block/BlockWall canConnectTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Z func_176253_e +MD net/minecraft/block/BlockWall$EnumType getMetadata ()I func_176657_a +MD net/minecraft/block/BlockWall$EnumType byMetadata (I)Lnet/minecraft/block/BlockWall$EnumType; func_176660_a +MD net/minecraft/block/BlockWall$EnumType getUnlocalizedName ()Ljava/lang/String; func_176659_c +MD net/minecraft/block/BlockWall$EnumType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockWall$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockWall$EnumType; valueOf +MD net/minecraft/block/BlockWall$EnumType values ()[Lnet/minecraft/block/BlockWall$EnumType; values +MD net/minecraft/block/BlockCarpet setBlockBoundsFromMeta (I)V func_150089_b +MD net/minecraft/block/BlockCarpet canBlockStay (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_176329_d +MD net/minecraft/block/BlockCarpet checkForDrop (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_176328_e +MD net/minecraft/tileentity/TileEntityBanner setBaseColorAndPatterns (Lnet/minecraft/nbt/NBTTagCompound;ILnet/minecraft/nbt/NBTTagList;)V func_181020_a +MD net/minecraft/tileentity/TileEntityBanner setItemValues (Lnet/minecraft/item/ItemStack;)V func_175112_a +MD net/minecraft/tileentity/TileEntityBanner getBaseColor ()I func_175115_b +MD net/minecraft/tileentity/TileEntityBanner getBaseColor (Lnet/minecraft/item/ItemStack;)I func_175111_b +MD net/minecraft/tileentity/TileEntityBanner getPatternList ()Ljava/util/List; func_175114_c +MD net/minecraft/tileentity/TileEntityBanner getPatterns (Lnet/minecraft/item/ItemStack;)I func_175113_c +MD net/minecraft/tileentity/TileEntityBanner getPatterns ()Lnet/minecraft/nbt/NBTTagList; func_181021_d +MD net/minecraft/tileentity/TileEntityBanner getColorList ()Ljava/util/List; func_175110_d +MD net/minecraft/tileentity/TileEntityBanner removeBannerData (Lnet/minecraft/item/ItemStack;)V func_175117_e +MD net/minecraft/tileentity/TileEntityBanner getPatternResourceLocation ()Ljava/lang/String; func_175116_e +MD net/minecraft/tileentity/TileEntityBanner initializeBannerData ()V func_175109_g +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternName ()Ljava/lang/String; func_177271_a +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternByID (Ljava/lang/String;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; func_177268_a +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getPatternID ()Ljava/lang/String; func_177273_b +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getCraftingLayers ()[Ljava/lang/String; func_177267_c +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern hasValidCrafting ()Z func_177270_d +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern hasCraftingStack ()Z func_177269_e +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern getCraftingStack ()Lnet/minecraft/item/ItemStack; func_177272_f +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern valueOf (Ljava/lang/String;)Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; valueOf +MD net/minecraft/tileentity/TileEntityBanner$EnumBannerPattern values ()[Lnet/minecraft/tileentity/TileEntityBanner$EnumBannerPattern; values +MD net/minecraft/tileentity/TileEntityBeacon addEffectsToPlayers ()V func_146000_x +MD net/minecraft/tileentity/TileEntityBeacon updateSegmentColors ()V func_146003_y +MD net/minecraft/tileentity/TileEntityBeacon setName (Ljava/lang/String;)V func_145999_a +MD net/minecraft/tileentity/TileEntityBeacon func_183001_h (I)I func_183001_h +MD net/minecraft/tileentity/TileEntityBeacon updateBeacon ()V func_174908_m +MD net/minecraft/tileentity/TileEntityBeacon getBeamSegments ()Ljava/util/List; func_174907_n +MD net/minecraft/tileentity/TileEntityBeacon shouldBeamRender ()F func_146002_i +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment incrementHeight ()V func_177262_a +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment getColors ()[F func_177263_b +MD net/minecraft/tileentity/TileEntityBeacon$BeamSegment getHeight ()I func_177264_c +MD net/minecraft/tileentity/TileEntity validate ()V func_145829_t +MD net/minecraft/tileentity/TileEntity updateContainingBlockInfo ()V func_145836_u +MD net/minecraft/tileentity/TileEntity func_183000_F ()Z func_183000_F +MD net/minecraft/tileentity/TileEntity access$000 ()Ljava/util/Map; access$000 +MD net/minecraft/tileentity/TileEntity getDistanceSq (DDD)D func_145835_a +MD net/minecraft/tileentity/TileEntity setWorldObj (Lnet/minecraft/world/World;)V func_145834_a +MD net/minecraft/tileentity/TileEntity addInfoToCrashReport (Lnet/minecraft/crash/CrashReportCategory;)V func_145828_a +MD net/minecraft/tileentity/TileEntity setPos (Lnet/minecraft/util/BlockPos;)V func_174878_a +MD net/minecraft/tileentity/TileEntity readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_145839_a +MD net/minecraft/tileentity/TileEntity addMapping (Ljava/lang/Class;Ljava/lang/String;)V func_145826_a +MD net/minecraft/tileentity/TileEntity writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_145841_b +MD net/minecraft/tileentity/TileEntity receiveClientEvent (II)Z func_145842_c +MD net/minecraft/tileentity/TileEntity createAndLoadEntity (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/tileentity/TileEntity; func_145827_c +MD net/minecraft/tileentity/TileEntity markDirty ()V func_70296_d +MD net/minecraft/tileentity/TileEntity getMaxRenderDistanceSquared ()D func_145833_n +MD net/minecraft/tileentity/TileEntity hasWorldObj ()Z func_145830_o +MD net/minecraft/tileentity/TileEntity getBlockMetadata ()I func_145832_p +MD net/minecraft/tileentity/TileEntity getPos ()Lnet/minecraft/util/BlockPos; func_174877_v +MD net/minecraft/tileentity/TileEntity getBlockType ()Lnet/minecraft/block/Block; func_145838_q +MD net/minecraft/tileentity/TileEntity isInvalid ()Z func_145837_r +MD net/minecraft/tileentity/TileEntity invalidate ()V func_145843_s +MD net/minecraft/tileentity/TileEntity getDescriptionPacket ()Lnet/minecraft/network/Packet; func_145844_m +MD net/minecraft/tileentity/TileEntity getWorld ()Lnet/minecraft/world/World; func_145831_w +MD net/minecraft/tileentity/TileEntity$1 call ()Ljava/lang/String; call +MD net/minecraft/tileentity/TileEntity$1 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntity$2 call ()Ljava/lang/String; call +MD net/minecraft/tileentity/TileEntity$2 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntity$3 call ()Ljava/lang/String; call +MD net/minecraft/tileentity/TileEntity$3 call ()Ljava/lang/Object; call +MD net/minecraft/tileentity/TileEntityBrewingStand setName (Ljava/lang/String;)V func_145937_a +MD net/minecraft/tileentity/TileEntityBrewingStand getPotionResult (ILnet/minecraft/item/ItemStack;)I func_145936_c +MD net/minecraft/tileentity/TileEntityBrewingStand func_174902_m ()[Z func_174902_m +MD net/minecraft/tileentity/TileEntityBrewingStand canBrew ()Z func_145934_k +MD net/minecraft/tileentity/TileEntityBrewingStand brewPotions ()V func_145940_l +MD net/minecraft/tileentity/TileEntityChest func_174910_a (Lnet/minecraft/tileentity/TileEntityChest;Lnet/minecraft/util/EnumFacing;)V func_174910_a +MD net/minecraft/tileentity/TileEntityChest getAdjacentChest (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/tileentity/TileEntityChest; func_174911_a +MD net/minecraft/tileentity/TileEntityChest setCustomName (Ljava/lang/String;)V func_145976_a +MD net/minecraft/tileentity/TileEntityChest isChestAt (Lnet/minecraft/util/BlockPos;)Z func_174912_b +MD net/minecraft/tileentity/TileEntityChest checkForAdjacentChests ()V func_145979_i +MD net/minecraft/tileentity/TileEntityChest getChestType ()I func_145980_j +MD net/minecraft/tileentity/TileEntityCommandBlock getCommandBlockLogic ()Lnet/minecraft/command/server/CommandBlockLogic; func_145993_a +MD net/minecraft/tileentity/TileEntityCommandBlock getCommandResultStats ()Lnet/minecraft/command/CommandResultStats; func_175124_c +MD net/minecraft/tileentity/TileEntityComparator setOutputSignal (I)V func_145995_a +MD net/minecraft/tileentity/TileEntityComparator getOutputSignal ()I func_145996_a +MD net/minecraft/tileentity/TileEntityDispenser setCustomName (Ljava/lang/String;)V func_146018_a +MD net/minecraft/tileentity/TileEntityDispenser addItemStack (Lnet/minecraft/item/ItemStack;)I func_146019_a +MD net/minecraft/tileentity/TileEntityDispenser getDispenseSlot ()I func_146017_i +MD net/minecraft/tileentity/TileEntityEnchantmentTable setCustomName (Ljava/lang/String;)V func_145920_a +MD net/minecraft/tileentity/TileEntityEnderChest canBeUsed (Lnet/minecraft/entity/player/EntityPlayer;)Z func_145971_a +MD net/minecraft/tileentity/TileEntityEnderChest openChest ()V func_145969_a +MD net/minecraft/tileentity/TileEntityEnderChest closeChest ()V func_145970_b +MD net/minecraft/tileentity/TileEntityFlowerPot setFlowerPotData (Lnet/minecraft/item/Item;I)V func_145964_a +MD net/minecraft/tileentity/TileEntityFlowerPot getFlowerPotItem ()Lnet/minecraft/item/Item; func_145965_a +MD net/minecraft/tileentity/TileEntityFlowerPot getFlowerPotData ()I func_145966_b +MD net/minecraft/tileentity/TileEntityFurnace setCustomInventoryName (Ljava/lang/String;)V func_145951_a +MD net/minecraft/tileentity/TileEntityFurnace isBurning (Lnet/minecraft/inventory/IInventory;)Z func_174903_a +MD net/minecraft/tileentity/TileEntityFurnace getCookTime (Lnet/minecraft/item/ItemStack;)I func_174904_a +MD net/minecraft/tileentity/TileEntityFurnace getItemBurnTime (Lnet/minecraft/item/ItemStack;)I func_145952_a +MD net/minecraft/tileentity/TileEntityFurnace isItemFuel (Lnet/minecraft/item/ItemStack;)Z func_145954_b +MD net/minecraft/tileentity/TileEntityFurnace isBurning ()Z func_145950_i +MD net/minecraft/tileentity/TileEntityFurnace smeltItem ()V func_145949_j +MD net/minecraft/tileentity/TileEntityFurnace canSmelt ()Z func_145948_k +MD net/minecraft/tileentity/IHopper getXPos ()D func_96107_aA +MD net/minecraft/tileentity/IHopper getYPos ()D func_96109_aB +MD net/minecraft/tileentity/IHopper getZPos ()D func_96108_aC +MD net/minecraft/tileentity/IHopper getWorld ()Lnet/minecraft/world/World; func_145831_w +MD net/minecraft/tileentity/TileEntityHopper getInventoryForHopperTransfer ()Lnet/minecraft/inventory/IInventory; func_145895_l +MD net/minecraft/tileentity/TileEntityHopper func_181556_a (Lnet/minecraft/world/World;DDD)Ljava/util/List; func_181556_a +MD net/minecraft/tileentity/TileEntityHopper captureDroppedItems (Lnet/minecraft/tileentity/IHopper;)Z func_145891_a +MD net/minecraft/tileentity/TileEntityHopper pullItemFromSlot (Lnet/minecraft/tileentity/IHopper;Lnet/minecraft/inventory/IInventory;ILnet/minecraft/util/EnumFacing;)Z func_174915_a +MD net/minecraft/tileentity/TileEntityHopper setCustomName (Ljava/lang/String;)V func_145886_a +MD net/minecraft/tileentity/TileEntityHopper isInventoryFull (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/util/EnumFacing;)Z func_174919_a +MD net/minecraft/tileentity/TileEntityHopper putDropInInventoryAllSlots (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/entity/item/EntityItem;)Z func_145898_a +MD net/minecraft/tileentity/TileEntityHopper canInsertItemInSlot (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Z func_174920_a +MD net/minecraft/tileentity/TileEntityHopper putStackInInventoryAllSlots (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/item/ItemStack; func_174918_a +MD net/minecraft/tileentity/TileEntityHopper canCombine (Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemStack;)Z func_145894_a +MD net/minecraft/tileentity/TileEntityHopper getInventoryAtPosition (Lnet/minecraft/world/World;DDD)Lnet/minecraft/inventory/IInventory; func_145893_b +MD net/minecraft/tileentity/TileEntityHopper getHopperInventory (Lnet/minecraft/tileentity/IHopper;)Lnet/minecraft/inventory/IInventory; func_145884_b +MD net/minecraft/tileentity/TileEntityHopper isInventoryEmpty (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/util/EnumFacing;)Z func_174917_b +MD net/minecraft/tileentity/TileEntityHopper canExtractItemFromSlot (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Z func_174921_b +MD net/minecraft/tileentity/TileEntityHopper insertStack (Lnet/minecraft/inventory/IInventory;Lnet/minecraft/item/ItemStack;ILnet/minecraft/util/EnumFacing;)Lnet/minecraft/item/ItemStack; func_174916_c +MD net/minecraft/tileentity/TileEntityHopper setTransferCooldown (I)V func_145896_c +MD net/minecraft/tileentity/TileEntityHopper updateHopper ()Z func_145887_i +MD net/minecraft/tileentity/TileEntityHopper isOnTransferCooldown ()Z func_145888_j +MD net/minecraft/tileentity/TileEntityHopper mayTransfer ()Z func_174914_o +MD net/minecraft/tileentity/TileEntityHopper isEmpty ()Z func_152104_k +MD net/minecraft/tileentity/TileEntityHopper isFull ()Z func_152105_l +MD net/minecraft/tileentity/TileEntityHopper transferItemsOut ()Z func_145883_k +MD net/minecraft/tileentity/TileEntityMobSpawner getSpawnerBaseLogic ()Lnet/minecraft/tileentity/MobSpawnerBaseLogic; func_145881_a +MD net/minecraft/tileentity/TileEntityNote triggerNote (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_175108_a +MD net/minecraft/tileentity/TileEntityNote changePitch ()V func_145877_a +MD net/minecraft/tileentity/TileEntitySign access$000 (Lnet/minecraft/tileentity/TileEntitySign;)Lnet/minecraft/command/CommandResultStats; access$000 +MD net/minecraft/tileentity/TileEntitySign setPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V func_145912_a +MD net/minecraft/tileentity/TileEntitySign setEditable (Z)V func_145913_a +MD net/minecraft/tileentity/TileEntitySign getIsEditable ()Z func_145914_a +MD net/minecraft/tileentity/TileEntitySign executeCommand (Lnet/minecraft/entity/player/EntityPlayer;)Z func_174882_b +MD net/minecraft/tileentity/TileEntitySign getPlayer ()Lnet/minecraft/entity/player/EntityPlayer; func_145911_b +MD net/minecraft/tileentity/TileEntitySign getStats ()Lnet/minecraft/command/CommandResultStats; func_174880_d +MD net/minecraft/tileentity/TileEntitySkull setType (I)V func_152107_a +MD net/minecraft/tileentity/TileEntitySkull setPlayerProfile (Lcom/mojang/authlib/GameProfile;)V func_152106_a +MD net/minecraft/tileentity/TileEntitySkull getPlayerProfile ()Lcom/mojang/authlib/GameProfile; func_152108_a +MD net/minecraft/tileentity/TileEntitySkull setSkullRotation (I)V func_145903_a +MD net/minecraft/tileentity/TileEntitySkull updateGameprofile (Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile; func_174884_b +MD net/minecraft/tileentity/TileEntitySkull getSkullType ()I func_145904_a +MD net/minecraft/tileentity/TileEntitySkull getSkullRotation ()I func_145906_b +MD net/minecraft/tileentity/TileEntitySkull updatePlayerProfile ()V func_152109_d +MD net/minecraft/block/BlockPistonBase shouldBeExtended (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_176318_b +MD net/minecraft/block/BlockPistonBase doMove (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Z)Z func_176319_a +MD net/minecraft/block/BlockPistonBase getFacingFromEntity (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/EntityLivingBase;)Lnet/minecraft/util/EnumFacing; func_180695_a +MD net/minecraft/block/BlockPistonBase canPush (Lnet/minecraft/block/Block;Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Z)Z func_180696_a +MD net/minecraft/block/BlockPistonBase getFacing (I)Lnet/minecraft/util/EnumFacing; func_176317_b +MD net/minecraft/block/BlockPistonBase checkForMove (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_176316_e +MD net/minecraft/block/BlockPistonExtension getFacing (I)Lnet/minecraft/util/EnumFacing; func_176322_b +MD net/minecraft/block/BlockPistonExtension applyHeadBounds (Lnet/minecraft/block/state/IBlockState;)V func_176324_d +MD net/minecraft/block/BlockPistonExtension applyCoreBounds (Lnet/minecraft/block/state/IBlockState;)V func_176323_e +MD net/minecraft/block/BlockPistonExtension$EnumPistonType toString ()Ljava/lang/String; toString +MD net/minecraft/block/BlockPistonExtension$EnumPistonType valueOf (Ljava/lang/String;)Lnet/minecraft/block/BlockPistonExtension$EnumPistonType; valueOf +MD net/minecraft/block/BlockPistonExtension$EnumPistonType values ()[Lnet/minecraft/block/BlockPistonExtension$EnumPistonType; values +MD net/minecraft/tileentity/TileEntityPiston getProgress (F)F func_145860_a +MD net/minecraft/tileentity/TileEntityPiston launchWithSlimeBlock (FF)V func_145863_a +MD net/minecraft/tileentity/TileEntityPiston getPistonState ()Lnet/minecraft/block/state/IBlockState; func_174927_b +MD net/minecraft/tileentity/TileEntityPiston getOffsetX (F)F func_174929_b +MD net/minecraft/tileentity/TileEntityPiston getOffsetY (F)F func_174928_c +MD net/minecraft/tileentity/TileEntityPiston isExtending ()Z func_145868_b +MD net/minecraft/tileentity/TileEntityPiston getOffsetZ (F)F func_174926_d +MD net/minecraft/tileentity/TileEntityPiston getFacing ()Lnet/minecraft/util/EnumFacing; func_174930_e +MD net/minecraft/tileentity/TileEntityPiston shouldPistonHeadBeRendered ()Z func_145867_d +MD net/minecraft/tileentity/TileEntityPiston clearPistonTileEntity ()V func_145866_f +MD net/minecraft/block/BlockPistonMoving getBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;FLnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/AxisAlignedBB; func_176424_a +MD net/minecraft/block/BlockPistonMoving newTileEntity (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/EnumFacing;ZZ)Lnet/minecraft/tileentity/TileEntity; func_176423_a +MD net/minecraft/block/BlockPistonMoving getTileEntity (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntityPiston; func_176422_e +MD net/minecraft/block/state/BlockPistonStructureHelper canMove ()Z func_177253_a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177255_a (II)V func_177255_a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177251_a (Lnet/minecraft/util/BlockPos;)Z func_177251_a +MD net/minecraft/block/state/BlockPistonStructureHelper func_177250_b (Lnet/minecraft/util/BlockPos;)Z func_177250_b +MD net/minecraft/block/state/BlockPistonStructureHelper getBlocksToMove ()Ljava/util/List; func_177254_c +MD net/minecraft/block/state/BlockPistonStructureHelper getBlocksToDestroy ()Ljava/util/List; func_177252_d +MD net/minecraft/block/state/BlockStateBase cyclePropertyValue (Ljava/util/Collection;Ljava/lang/Object;)Ljava/lang/Object; func_177232_a +MD net/minecraft/block/state/BlockStateBase toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/BlockStateBase$1 apply (Ljava/util/Map$Entry;)Ljava/lang/String; apply +MD net/minecraft/block/state/BlockStateBase$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/block/state/IBlockState getPropertyNames ()Ljava/util/Collection; func_177227_a +MD net/minecraft/block/state/IBlockState cycleProperty (Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/block/state/IBlockState; func_177231_a +MD net/minecraft/block/state/IBlockState withProperty (Lnet/minecraft/block/properties/IProperty;Ljava/lang/Comparable;)Lnet/minecraft/block/state/IBlockState; func_177226_a +MD net/minecraft/block/state/IBlockState getProperties ()Lcom/google/common/collect/ImmutableMap; func_177228_b +MD net/minecraft/block/state/IBlockState getValue (Lnet/minecraft/block/properties/IProperty;)Ljava/lang/Comparable; func_177229_b +MD net/minecraft/block/state/IBlockState getBlock ()Lnet/minecraft/block/Block; func_177230_c +MD net/minecraft/block/state/BlockState getValidStates ()Lcom/google/common/collect/ImmutableList; func_177619_a +MD net/minecraft/block/state/BlockState getBaseState ()Lnet/minecraft/block/state/IBlockState; func_177621_b +MD net/minecraft/block/state/BlockState getBlock ()Lnet/minecraft/block/Block; func_177622_c +MD net/minecraft/block/state/BlockState getProperties ()Ljava/util/Collection; func_177623_d +MD net/minecraft/block/state/BlockState getAllowedValues ()Ljava/util/List; func_177620_e +MD net/minecraft/block/state/BlockState toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/BlockState$1 apply (Lnet/minecraft/block/properties/IProperty;)Ljava/lang/String; apply +MD net/minecraft/block/state/BlockState$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/block/state/BlockState$2 compare (Lnet/minecraft/block/properties/IProperty;Lnet/minecraft/block/properties/IProperty;)I compare +MD net/minecraft/block/state/BlockState$2 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/block/state/BlockState$StateImplementation buildPropertyValueTable (Ljava/util/Map;)V func_177235_a +MD net/minecraft/block/state/BlockState$StateImplementation getPropertiesWithValue (Lnet/minecraft/block/properties/IProperty;Ljava/lang/Comparable;)Ljava/util/Map; func_177236_b +MD net/minecraft/block/state/BlockState$StateImplementation equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/state/BlockState$StateImplementation hashCode ()I hashCode +MD net/minecraft/block/state/BlockWorldState getBlockState ()Lnet/minecraft/block/state/IBlockState; func_177509_a +MD net/minecraft/block/state/BlockWorldState hasState (Lcom/google/common/base/Predicate;)Lcom/google/common/base/Predicate; func_177510_a +MD net/minecraft/block/state/BlockWorldState getTileEntity ()Lnet/minecraft/tileentity/TileEntity; func_177507_b +MD net/minecraft/block/state/BlockWorldState getPos ()Lnet/minecraft/util/BlockPos; func_177508_d +MD net/minecraft/block/state/BlockWorldState$1 apply (Lnet/minecraft/block/state/BlockWorldState;)Z apply +MD net/minecraft/block/state/BlockWorldState$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/state/pattern/BlockPattern match (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; func_177681_a +MD net/minecraft/block/state/pattern/BlockPattern func_181627_a (Lnet/minecraft/world/World;Z)Lcom/google/common/cache/LoadingCache; func_181627_a +MD net/minecraft/block/state/pattern/BlockPattern translateOffset (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;III)Lnet/minecraft/util/BlockPos; func_177683_a +MD net/minecraft/block/state/pattern/BlockPattern checkPatternAt (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;Lcom/google/common/cache/LoadingCache;)Lnet/minecraft/block/state/pattern/BlockPattern$PatternHelper; func_177682_a +MD net/minecraft/block/state/pattern/BlockPattern getThumbLength ()I func_177685_b +MD net/minecraft/block/state/pattern/BlockPattern getPalmLength ()I func_177684_c +MD net/minecraft/block/state/pattern/BlockPattern$CacheLoader load (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/BlockWorldState; load +MD net/minecraft/block/state/pattern/BlockPattern$CacheLoader load (Ljava/lang/Object;)Ljava/lang/Object; load +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getPos ()Lnet/minecraft/util/BlockPos; func_181117_a +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper translateOffset (III)Lnet/minecraft/block/state/BlockWorldState; func_177670_a +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getFinger ()Lnet/minecraft/util/EnumFacing; func_177669_b +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper getThumb ()Lnet/minecraft/util/EnumFacing; func_177668_c +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper func_181118_d ()I func_181118_d +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper func_181119_e ()I func_181119_e +MD net/minecraft/block/state/pattern/BlockPattern$PatternHelper toString ()Ljava/lang/String; toString +MD net/minecraft/block/state/pattern/FactoryBlockPattern start ()Lnet/minecraft/block/state/pattern/FactoryBlockPattern; func_177660_a +MD net/minecraft/block/state/pattern/FactoryBlockPattern where (CLcom/google/common/base/Predicate;)Lnet/minecraft/block/state/pattern/FactoryBlockPattern; func_177662_a +MD net/minecraft/block/state/pattern/FactoryBlockPattern aisle ([Ljava/lang/String;)Lnet/minecraft/block/state/pattern/FactoryBlockPattern; func_177659_a +MD net/minecraft/block/state/pattern/FactoryBlockPattern build ()Lnet/minecraft/block/state/pattern/BlockPattern; func_177661_b +MD net/minecraft/block/state/pattern/FactoryBlockPattern makePredicateArray ()[[[Lcom/google/common/base/Predicate; func_177658_c +MD net/minecraft/block/state/pattern/FactoryBlockPattern checkMissingPredicates ()V func_177657_d +MD net/minecraft/block/state/pattern/BlockHelper forBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/block/state/pattern/BlockHelper; func_177642_a +MD net/minecraft/block/state/pattern/BlockHelper apply (Lnet/minecraft/block/state/IBlockState;)Z apply +MD net/minecraft/block/state/pattern/BlockHelper apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/state/pattern/BlockStateHelper forBlock (Lnet/minecraft/block/Block;)Lnet/minecraft/block/state/pattern/BlockStateHelper; func_177638_a +MD net/minecraft/block/state/pattern/BlockStateHelper apply (Lnet/minecraft/block/state/IBlockState;)Z apply +MD net/minecraft/block/state/pattern/BlockStateHelper where (Lnet/minecraft/block/properties/IProperty;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/state/pattern/BlockStateHelper; func_177637_a +MD net/minecraft/block/state/pattern/BlockStateHelper apply (Ljava/lang/Object;)Z apply +MD net/minecraft/block/properties/PropertyHelper equals (Ljava/lang/Object;)Z equals +MD net/minecraft/block/properties/PropertyHelper hashCode ()I hashCode +MD net/minecraft/block/properties/PropertyHelper toString ()Ljava/lang/String; toString +MD net/minecraft/block/properties/PropertyBool getName (Ljava/lang/Boolean;)Ljava/lang/String; func_177702_a +MD net/minecraft/block/properties/PropertyBool create (Ljava/lang/String;)Lnet/minecraft/block/properties/PropertyBool; func_177716_a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;)Lnet/minecraft/block/properties/PropertyDirection; func_177714_a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/properties/PropertyDirection; func_177712_a +MD net/minecraft/block/properties/PropertyDirection create (Ljava/lang/String;Ljava/util/Collection;)Lnet/minecraft/block/properties/PropertyDirection; func_177713_a +MD net/minecraft/block/properties/PropertyEnum getName (Ljava/lang/Enum;)Ljava/lang/String; func_177702_a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;)Lnet/minecraft/block/properties/PropertyEnum; func_177709_a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;Lcom/google/common/base/Predicate;)Lnet/minecraft/block/properties/PropertyEnum; func_177708_a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;Ljava/util/Collection;)Lnet/minecraft/block/properties/PropertyEnum; func_177707_a +MD net/minecraft/block/properties/PropertyEnum create (Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Enum;)Lnet/minecraft/block/properties/PropertyEnum; func_177706_a +MD net/minecraft/block/properties/PropertyInteger getName (Ljava/lang/Integer;)Ljava/lang/String; func_177702_a +MD net/minecraft/block/properties/PropertyInteger create (Ljava/lang/String;II)Lnet/minecraft/block/properties/PropertyInteger; func_177719_a +MD net/minecraft/block/properties/IProperty getName ()Ljava/lang/String; func_177701_a +MD net/minecraft/block/properties/IProperty getName (Ljava/lang/Comparable;)Ljava/lang/String; func_177702_a +MD net/minecraft/block/properties/IProperty getValueClass ()Ljava/lang/Class; func_177699_b +MD net/minecraft/block/properties/IProperty getAllowedValues ()Ljava/util/Collection; func_177700_c +MD net/minecraft/world/border/IBorderListener onSizeChanged (Lnet/minecraft/world/border/WorldBorder;D)V func_177694_a +MD net/minecraft/world/border/IBorderListener onCenterChanged (Lnet/minecraft/world/border/WorldBorder;DD)V func_177693_a +MD net/minecraft/world/border/IBorderListener onTransitionStarted (Lnet/minecraft/world/border/WorldBorder;DDJ)V func_177692_a +MD net/minecraft/world/border/IBorderListener onWarningTimeChanged (Lnet/minecraft/world/border/WorldBorder;I)V func_177691_a +MD net/minecraft/world/border/IBorderListener onDamageAmountChanged (Lnet/minecraft/world/border/WorldBorder;D)V func_177696_b +MD net/minecraft/world/border/IBorderListener onWarningDistanceChanged (Lnet/minecraft/world/border/WorldBorder;I)V func_177690_b +MD net/minecraft/world/border/IBorderListener onDamageBufferChanged (Lnet/minecraft/world/border/WorldBorder;D)V func_177695_c +MD net/minecraft/world/border/EnumBorderStatus getID ()I func_177766_a +MD net/minecraft/world/border/EnumBorderStatus valueOf (Ljava/lang/String;)Lnet/minecraft/world/border/EnumBorderStatus; valueOf +MD net/minecraft/world/border/EnumBorderStatus values ()[Lnet/minecraft/world/border/EnumBorderStatus; values +MD net/minecraft/world/border/WorldBorder getStatus ()Lnet/minecraft/world/border/EnumBorderStatus; func_177734_a +MD net/minecraft/world/border/WorldBorder setTransition (D)V func_177750_a +MD net/minecraft/world/border/WorldBorder setTransition (DDJ)V func_177738_a +MD net/minecraft/world/border/WorldBorder setSize (I)V func_177725_a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/world/ChunkCoordIntPair;)Z func_177730_a +MD net/minecraft/world/border/WorldBorder addListener (Lnet/minecraft/world/border/IBorderListener;)V func_177737_a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/util/AxisAlignedBB;)Z func_177743_a +MD net/minecraft/world/border/WorldBorder contains (Lnet/minecraft/util/BlockPos;)Z func_177746_a +MD net/minecraft/world/border/WorldBorder getClosestDistance (Lnet/minecraft/entity/Entity;)D func_177745_a +MD net/minecraft/world/border/WorldBorder minX ()D func_177726_b +MD net/minecraft/world/border/WorldBorder setDamageBuffer (D)V func_177724_b +MD net/minecraft/world/border/WorldBorder getClosestDistance (DD)D func_177729_b +MD net/minecraft/world/border/WorldBorder setWarningTime (I)V func_177723_b +MD net/minecraft/world/border/WorldBorder minZ ()D func_177736_c +MD net/minecraft/world/border/WorldBorder setDamageAmount (D)V func_177744_c +MD net/minecraft/world/border/WorldBorder setCenter (DD)V func_177739_c +MD net/minecraft/world/border/WorldBorder setWarningDistance (I)V func_177747_c +MD net/minecraft/world/border/WorldBorder maxX ()D func_177728_d +MD net/minecraft/world/border/WorldBorder maxZ ()D func_177733_e +MD net/minecraft/world/border/WorldBorder getCenterX ()D func_177731_f +MD net/minecraft/world/border/WorldBorder getCenterZ ()D func_177721_g +MD net/minecraft/world/border/WorldBorder getDiameter ()D func_177741_h +MD net/minecraft/world/border/WorldBorder getTimeUntilTarget ()J func_177732_i +MD net/minecraft/world/border/WorldBorder getTargetSize ()D func_177751_j +MD net/minecraft/world/border/WorldBorder getListeners ()Ljava/util/List; func_177735_k +MD net/minecraft/world/border/WorldBorder getSize ()I func_177722_l +MD net/minecraft/world/border/WorldBorder getDamageBuffer ()D func_177742_m +MD net/minecraft/world/border/WorldBorder getDamageAmount ()D func_177727_n +MD net/minecraft/world/border/WorldBorder getResizeSpeed ()D func_177749_o +MD net/minecraft/world/border/WorldBorder getWarningTime ()I func_177740_p +MD net/minecraft/world/border/WorldBorder getWarningDistance ()I func_177748_q +MD net/minecraft/world/chunk/IChunkProvider chunkExists (II)Z func_73149_a +MD net/minecraft/world/chunk/IChunkProvider getStrongholdGen (Lnet/minecraft/world/World;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_180513_a +MD net/minecraft/world/chunk/IChunkProvider populate (Lnet/minecraft/world/chunk/IChunkProvider;II)V func_73153_a +MD net/minecraft/world/chunk/IChunkProvider populateChunk (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/chunk/Chunk;II)Z func_177460_a +MD net/minecraft/world/chunk/IChunkProvider recreateStructures (Lnet/minecraft/world/chunk/Chunk;II)V func_180514_a +MD net/minecraft/world/chunk/IChunkProvider provideChunk (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/chunk/Chunk; func_177459_a +MD net/minecraft/world/chunk/IChunkProvider getPossibleCreatures (Lnet/minecraft/entity/EnumCreatureType;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_177458_a +MD net/minecraft/world/chunk/IChunkProvider saveChunks (ZLnet/minecraft/util/IProgressUpdate;)Z func_73151_a +MD net/minecraft/world/chunk/IChunkProvider saveExtraData ()V func_104112_b +MD net/minecraft/world/chunk/IChunkProvider unloadQueuedChunks ()Z func_73156_b +MD net/minecraft/world/chunk/IChunkProvider provideChunk (II)Lnet/minecraft/world/chunk/Chunk; func_73154_d +MD net/minecraft/world/chunk/IChunkProvider canSave ()Z func_73157_c +MD net/minecraft/world/chunk/IChunkProvider makeString ()Ljava/lang/String; func_73148_d +MD net/minecraft/world/chunk/IChunkProvider getLoadedChunkCount ()I func_73152_e +MD net/minecraft/world/chunk/NibbleArray getData ()[B func_177481_a +MD net/minecraft/world/chunk/NibbleArray getFromIndex (I)I func_177480_a +MD net/minecraft/world/chunk/NibbleArray setIndex (II)V func_177482_a +MD net/minecraft/world/chunk/NibbleArray get (III)I func_76582_a +MD net/minecraft/world/chunk/NibbleArray set (IIII)V func_76581_a +MD net/minecraft/world/chunk/NibbleArray isLowerNibble (I)Z func_177479_b +MD net/minecraft/world/chunk/NibbleArray getCoordinateIndex (III)I func_177483_b +MD net/minecraft/world/chunk/NibbleArray getNibbleIndex (I)I func_177478_c +MD net/minecraft/world/chunk/Chunk generateHeightMap ()V func_76590_a +MD net/minecraft/world/chunk/Chunk isAtLocation (II)Z func_76600_a +MD net/minecraft/world/chunk/Chunk getBlock (III)Lnet/minecraft/block/Block; func_177438_a +MD net/minecraft/world/chunk/Chunk updateSkylightNeighborHeight (IIII)V func_76609_d +MD net/minecraft/world/chunk/Chunk getRandomWithSeed (J)Ljava/util/Random; func_76617_a +MD net/minecraft/world/chunk/Chunk getLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;)I func_177413_a +MD net/minecraft/world/chunk/Chunk setLightFor (Lnet/minecraft/world/EnumSkyBlock;Lnet/minecraft/util/BlockPos;I)V func_177431_a +MD net/minecraft/world/chunk/Chunk addTileEntity (Lnet/minecraft/tileentity/TileEntity;)V func_150813_a +MD net/minecraft/world/chunk/Chunk populateChunk (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/chunk/IChunkProvider;II)V func_76624_a +MD net/minecraft/world/chunk/Chunk getBlock (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/Block; func_177428_a +MD net/minecraft/world/chunk/Chunk getLightSubtracted (Lnet/minecraft/util/BlockPos;I)I func_177443_a +MD net/minecraft/world/chunk/Chunk getBiome (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/biome/WorldChunkManager;)Lnet/minecraft/world/biome/BiomeGenBase; func_177411_a +MD net/minecraft/world/chunk/Chunk addTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/tileentity/TileEntity;)V func_177426_a +MD net/minecraft/world/chunk/Chunk setBlockState (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_177436_a +MD net/minecraft/world/chunk/Chunk getTileEntity (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType;)Lnet/minecraft/tileentity/TileEntity; func_177424_a +MD net/minecraft/world/chunk/Chunk func_180700_a (Lnet/minecraft/util/EnumFacing;)V func_180700_a +MD net/minecraft/world/chunk/Chunk getEntitiesOfTypeWithinAAAB (Ljava/lang/Class;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lcom/google/common/base/Predicate;)V func_177430_a +MD net/minecraft/world/chunk/Chunk addEntity (Lnet/minecraft/entity/Entity;)V func_76612_a +MD net/minecraft/world/chunk/Chunk removeEntityAtIndex (Lnet/minecraft/entity/Entity;I)V func_76608_a +MD net/minecraft/world/chunk/Chunk getEntitiesWithinAABBForEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/AxisAlignedBB;Ljava/util/List;Lcom/google/common/base/Predicate;)V func_177414_a +MD net/minecraft/world/chunk/Chunk needsSaving (Z)Z func_76601_a +MD net/minecraft/world/chunk/Chunk setBiomeArray ([B)V func_76616_a +MD net/minecraft/world/chunk/Chunk fillChunk ([BIZ)V func_177439_a +MD net/minecraft/world/chunk/Chunk setHeightMap ([I)V func_177420_a +MD net/minecraft/world/chunk/Chunk setStorageArrays ([Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;)V func_76602_a +MD net/minecraft/world/chunk/Chunk generateSkylightMap ()V func_76603_b +MD net/minecraft/world/chunk/Chunk getHeightValue (II)I func_76611_b +MD net/minecraft/world/chunk/Chunk setLastSaveTime (J)V func_177432_b +MD net/minecraft/world/chunk/Chunk getBlockLightOpacity (Lnet/minecraft/util/BlockPos;)I func_177437_b +MD net/minecraft/world/chunk/Chunk removeEntity (Lnet/minecraft/entity/Entity;)V func_76622_b +MD net/minecraft/world/chunk/Chunk func_150804_b (Z)V func_150804_b +MD net/minecraft/world/chunk/Chunk onChunkLoad ()V func_76631_c +MD net/minecraft/world/chunk/Chunk getAreLevelsEmpty (II)Z func_76606_c +MD net/minecraft/world/chunk/Chunk checkSkylightNeighborHeight (III)V func_76599_g +MD net/minecraft/world/chunk/Chunk setInhabitedTime (J)V func_177415_c +MD net/minecraft/world/chunk/Chunk getBlockMetadata (Lnet/minecraft/util/BlockPos;)I func_177418_c +MD net/minecraft/world/chunk/Chunk setChunkLoaded (Z)V func_177417_c +MD net/minecraft/world/chunk/Chunk onChunkUnload ()V func_76623_d +MD net/minecraft/world/chunk/Chunk propagateSkylightOcclusion (II)V func_76595_e +MD net/minecraft/world/chunk/Chunk relightBlock (III)V func_76615_h +MD net/minecraft/world/chunk/Chunk canSeeSky (Lnet/minecraft/util/BlockPos;)Z func_177444_d +MD net/minecraft/world/chunk/Chunk setTerrainPopulated (Z)V func_177446_d +MD net/minecraft/world/chunk/Chunk setChunkModified ()V func_76630_e +MD net/minecraft/world/chunk/Chunk func_150811_f (II)Z func_150811_f +MD net/minecraft/world/chunk/Chunk getBlockLightOpacity (III)I func_150808_b +MD net/minecraft/world/chunk/Chunk removeTileEntity (Lnet/minecraft/util/BlockPos;)V func_177425_e +MD net/minecraft/world/chunk/Chunk setLightPopulated (Z)V func_177421_e +MD net/minecraft/world/chunk/Chunk isEmpty ()Z func_76621_g +MD net/minecraft/world/chunk/Chunk getBlock0 (III)Lnet/minecraft/block/Block; func_150810_a +MD net/minecraft/world/chunk/Chunk getHeight (Lnet/minecraft/util/BlockPos;)I func_177433_f +MD net/minecraft/world/chunk/Chunk setModified (Z)V func_177427_f +MD net/minecraft/world/chunk/Chunk getTopFilledSegment ()I func_76625_h +MD net/minecraft/world/chunk/Chunk getBlockMetadata (III)I func_76628_c +MD net/minecraft/world/chunk/Chunk getBlockState (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; func_177435_g +MD net/minecraft/world/chunk/Chunk setHasEntities (Z)V func_177409_g +MD net/minecraft/world/chunk/Chunk getBlockStorageArray ()[Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage; func_76587_i +MD net/minecraft/world/chunk/Chunk getPrecipitationHeight (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_177440_h +MD net/minecraft/world/chunk/Chunk recheckGaps (Z)V func_150803_c +MD net/minecraft/world/chunk/Chunk isPopulated ()Z func_150802_k +MD net/minecraft/world/chunk/Chunk createNewTileEntity (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/tileentity/TileEntity; func_177422_i +MD net/minecraft/world/chunk/Chunk getChunkCoordIntPair ()Lnet/minecraft/world/ChunkCoordIntPair; func_76632_l +MD net/minecraft/world/chunk/Chunk getBiomeArray ()[B func_76605_m +MD net/minecraft/world/chunk/Chunk resetRelightChecks ()V func_76613_n +MD net/minecraft/world/chunk/Chunk enqueueRelightChecks ()V func_76594_o +MD net/minecraft/world/chunk/Chunk func_150809_p ()V func_150809_p +MD net/minecraft/world/chunk/Chunk isLoaded ()Z func_177410_o +MD net/minecraft/world/chunk/Chunk getWorld ()Lnet/minecraft/world/World; func_177412_p +MD net/minecraft/world/chunk/Chunk getHeightMap ()[I func_177445_q +MD net/minecraft/world/chunk/Chunk getTileEntityMap ()Ljava/util/Map; func_177434_r +MD net/minecraft/world/chunk/Chunk getEntityLists ()[Lnet/minecraft/util/ClassInheritanceMultiMap; func_177429_s +MD net/minecraft/world/chunk/Chunk isTerrainPopulated ()Z func_177419_t +MD net/minecraft/world/chunk/Chunk isLightPopulated ()Z func_177423_u +MD net/minecraft/world/chunk/Chunk getLowestHeight ()I func_177442_v +MD net/minecraft/world/chunk/Chunk getInhabitedTime ()J func_177416_w +MD net/minecraft/world/chunk/Chunk func_177441_y ()V func_177441_y +MD net/minecraft/world/chunk/Chunk$1 call ()Ljava/lang/String; call +MD net/minecraft/world/chunk/Chunk$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$2 call ()Ljava/lang/String; call +MD net/minecraft/world/chunk/Chunk$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$3 call ()Ljava/lang/String; call +MD net/minecraft/world/chunk/Chunk$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/chunk/Chunk$EnumCreateEntityType valueOf (Ljava/lang/String;)Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType; valueOf +MD net/minecraft/world/chunk/Chunk$EnumCreateEntityType values ()[Lnet/minecraft/world/chunk/Chunk$EnumCreateEntityType; values +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage isEmpty ()Z func_76663_a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage get (III)Lnet/minecraft/block/state/IBlockState; func_177485_a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setExtSkylightValue (IIII)V func_76657_c +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage set (IIILnet/minecraft/block/state/IBlockState;)V func_177484_a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setBlocklightArray (Lnet/minecraft/world/chunk/NibbleArray;)V func_76659_c +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setData ([C)V func_177486_a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getNeedsRandomTick ()Z func_76675_b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getBlockByExtId (III)Lnet/minecraft/block/Block; func_150819_a +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setExtBlocklightValue (IIII)V func_76677_d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage setSkylightArray (Lnet/minecraft/world/chunk/NibbleArray;)V func_76666_d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtBlockMetadata (III)I func_76665_b +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getYLocation ()I func_76662_d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtSkylightValue (III)I func_76670_c +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage removeInvalidBlocks ()V func_76672_e +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getExtBlocklightValue (III)I func_76674_d +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getData ()[C func_177487_g +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getBlocklightArray ()Lnet/minecraft/world/chunk/NibbleArray; func_76661_k +MD net/minecraft/world/chunk/storage/ExtendedBlockStorage getSkylightArray ()Lnet/minecraft/world/chunk/NibbleArray; func_76671_l +MD net/minecraft/world/chunk/storage/NibbleArrayReader get (III)I func_76686_a +MD net/minecraft/world/chunk/storage/IChunkLoader chunkTick ()V func_75817_a +MD net/minecraft/world/chunk/storage/IChunkLoader loadChunk (Lnet/minecraft/world/World;II)Lnet/minecraft/world/chunk/Chunk; func_75815_a +MD net/minecraft/world/chunk/storage/IChunkLoader saveChunk (Lnet/minecraft/world/World;Lnet/minecraft/world/chunk/Chunk;)V func_75816_a +MD net/minecraft/world/chunk/storage/IChunkLoader saveExtraData ()V func_75818_b +MD net/minecraft/world/chunk/storage/IChunkLoader saveExtraChunkData (Lnet/minecraft/world/World;Lnet/minecraft/world/chunk/Chunk;)V func_75819_b +MD net/minecraft/world/chunk/storage/ChunkLoader convertToAnvilFormat (Lnet/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData;Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/biome/WorldChunkManager;)V func_76690_a +MD net/minecraft/world/chunk/storage/ChunkLoader load (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/storage/ChunkLoader$AnvilConverterData; func_76691_a +MD net/minecraft/world/chunk/storage/RegionFile getChunkDataInputStream (II)Ljava/io/DataInputStream; func_76704_a +MD net/minecraft/world/chunk/storage/RegionFile setOffset (III)V func_76711_a +MD net/minecraft/world/chunk/storage/RegionFile write (II[BI)V func_76706_a +MD net/minecraft/world/chunk/storage/RegionFile write (I[BI)V func_76712_a +MD net/minecraft/world/chunk/storage/RegionFile getChunkDataOutputStream (II)Ljava/io/DataOutputStream; func_76710_b +MD net/minecraft/world/chunk/storage/RegionFile setChunkTimestamp (III)V func_76713_b +MD net/minecraft/world/chunk/storage/RegionFile close ()V func_76708_c +MD net/minecraft/world/chunk/storage/RegionFile isChunkSaved (II)Z func_76709_c +MD net/minecraft/world/chunk/storage/RegionFile outOfBounds (II)Z func_76705_d +MD net/minecraft/world/chunk/storage/RegionFile getOffset (II)I func_76707_e +MD net/minecraft/world/chunk/storage/RegionFile$ChunkBuffer close ()V close +MD net/minecraft/world/chunk/storage/RegionFileCache clearRegionFileReferences ()V func_76551_a +MD net/minecraft/world/chunk/storage/RegionFileCache createOrLoadRegionFile (Ljava/io/File;II)Lnet/minecraft/world/chunk/storage/RegionFile; func_76550_a +MD net/minecraft/world/chunk/storage/RegionFileCache getChunkInputStream (Ljava/io/File;II)Ljava/io/DataInputStream; func_76549_c +MD net/minecraft/world/chunk/storage/RegionFileCache getChunkOutputStream (Ljava/io/File;II)Ljava/io/DataOutputStream; func_76552_d +MD net/minecraft/world/chunk/storage/AnvilChunkLoader addChunkToPending (Lnet/minecraft/world/ChunkCoordIntPair;Lnet/minecraft/nbt/NBTTagCompound;)V func_75824_a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader checkedReadChunkFromNBT (Lnet/minecraft/world/World;IILnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/Chunk; func_75822_a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader readChunkFromNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/world/chunk/Chunk; func_75823_a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader writeChunkToNBT (Lnet/minecraft/world/chunk/Chunk;Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V func_75820_a +MD net/minecraft/world/chunk/storage/AnvilChunkLoader func_183013_b (Lnet/minecraft/world/ChunkCoordIntPair;Lnet/minecraft/nbt/NBTTagCompound;)V func_183013_b +MD net/minecraft/world/WorldProvider generateLightBrightnessTable ()V func_76556_a +MD net/minecraft/world/WorldProvider calcSunriseSunsetColors (FF)[F func_76560_a +MD net/minecraft/world/WorldProvider getProviderForDimension (I)Lnet/minecraft/world/WorldProvider; func_76570_a +MD net/minecraft/world/WorldProvider canCoordinateBeSpawn (II)Z func_76566_a +MD net/minecraft/world/WorldProvider getMoonPhase (J)I func_76559_b +MD net/minecraft/world/WorldProvider calculateCelestialAngle (JF)F func_76563_a +MD net/minecraft/world/WorldProvider registerWorld (Lnet/minecraft/world/World;)V func_76558_a +MD net/minecraft/world/WorldProvider registerWorldChunkManager ()V func_76572_b +MD net/minecraft/world/WorldProvider getFogColor (FF)Lnet/minecraft/util/Vec3; func_76562_b +MD net/minecraft/world/WorldProvider doesXZShowFog (II)Z func_76568_b +MD net/minecraft/world/WorldProvider createChunkGenerator ()Lnet/minecraft/world/chunk/IChunkProvider; func_76555_c +MD net/minecraft/world/WorldProvider isSurfaceWorld ()Z func_76569_d +MD net/minecraft/world/WorldProvider canRespawnHere ()Z func_76567_e +MD net/minecraft/world/WorldProvider getCloudHeight ()F func_76571_f +MD net/minecraft/world/WorldProvider isSkyColored ()Z func_76561_g +MD net/minecraft/world/WorldProvider getSpawnCoordinate ()Lnet/minecraft/util/BlockPos; func_177496_h +MD net/minecraft/world/WorldProvider getAverageGroundLevel ()I func_76557_i +MD net/minecraft/world/WorldProvider getVoidFogYFactor ()D func_76565_k +MD net/minecraft/world/WorldProvider getDimensionName ()Ljava/lang/String; func_80007_l +MD net/minecraft/world/WorldProvider getInternalNameSuffix ()Ljava/lang/String; func_177498_l +MD net/minecraft/world/WorldProvider getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; func_177499_m +MD net/minecraft/world/WorldProvider doesWaterVaporize ()Z func_177500_n +MD net/minecraft/world/WorldProvider getHasNoSky ()Z func_177495_o +MD net/minecraft/world/WorldProvider getLightBrightnessTable ()[F func_177497_p +MD net/minecraft/world/WorldProvider getDimensionId ()I func_177502_q +MD net/minecraft/world/WorldProvider getWorldBorder ()Lnet/minecraft/world/border/WorldBorder; func_177501_r +MD net/minecraft/world/gen/MapGenRavine func_180707_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V func_180707_a +MD net/minecraft/world/chunk/ChunkPrimer getBlockState (I)Lnet/minecraft/block/state/IBlockState; func_177858_a +MD net/minecraft/world/chunk/ChunkPrimer getBlockState (III)Lnet/minecraft/block/state/IBlockState; func_177856_a +MD net/minecraft/world/chunk/ChunkPrimer setBlockState (IIILnet/minecraft/block/state/IBlockState;)V func_177855_a +MD net/minecraft/world/chunk/ChunkPrimer setBlockState (ILnet/minecraft/block/state/IBlockState;)V func_177857_a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory func_177863_a ()V func_177863_a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory jsonToFactory (Ljava/lang/String;)Lnet/minecraft/world/gen/ChunkProviderSettings$Factory; func_177865_a +MD net/minecraft/world/gen/ChunkProviderSettings$Factory func_177864_b ()Lnet/minecraft/world/gen/ChunkProviderSettings; func_177864_b +MD net/minecraft/world/gen/ChunkProviderSettings$Factory equals (Ljava/lang/Object;)Z equals +MD net/minecraft/world/gen/ChunkProviderSettings$Factory hashCode ()I hashCode +MD net/minecraft/world/gen/ChunkProviderSettings$Factory toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer serialize (Lnet/minecraft/world/gen/ChunkProviderSettings$Factory;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/world/gen/ChunkProviderSettings$Factory; deserialize +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/world/gen/ChunkProviderSettings$Serializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/world/gen/ChunkProviderDebug func_177461_b (II)Lnet/minecraft/block/state/IBlockState; func_177461_b +MD net/minecraft/world/gen/ChunkProviderHell func_180515_a (IILnet/minecraft/world/chunk/ChunkPrimer;)V func_180515_a +MD net/minecraft/world/gen/ChunkProviderHell initializeNoiseField ([DIIIIII)[D func_73164_a +MD net/minecraft/world/gen/ChunkProviderHell func_180516_b (IILnet/minecraft/world/chunk/ChunkPrimer;)V func_180516_b +MD net/minecraft/world/gen/MapGenCaves func_180703_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDD)V func_180703_a +MD net/minecraft/world/gen/MapGenCaves func_180702_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V func_180702_a +MD net/minecraft/world/gen/MapGenCaves func_175793_a (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;)Z func_175793_a +MD net/minecraft/world/gen/MapGenBase recursiveGenerate (Lnet/minecraft/world/World;IIIILnet/minecraft/world/chunk/ChunkPrimer;)V func_180701_a +MD net/minecraft/world/gen/MapGenBase generate (Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/World;IILnet/minecraft/world/chunk/ChunkPrimer;)V func_175792_a +MD net/minecraft/world/gen/MapGenCavesHell func_180705_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDD)V func_180705_a +MD net/minecraft/world/gen/MapGenCavesHell func_180704_a (JIILnet/minecraft/world/chunk/ChunkPrimer;DDDFFFIID)V func_180704_a +MD net/minecraft/world/gen/ChunkProviderGenerate func_147423_a (III)V func_147423_a +MD net/minecraft/world/gen/ChunkProviderGenerate setBlocksInChunk (IILnet/minecraft/world/chunk/ChunkPrimer;)V func_180518_a +MD net/minecraft/world/gen/ChunkProviderGenerate replaceBlocksForBiome (IILnet/minecraft/world/chunk/ChunkPrimer;[Lnet/minecraft/world/biome/BiomeGenBase;)V func_180517_a +MD net/minecraft/world/gen/ChunkProviderEnd func_180520_a (IILnet/minecraft/world/chunk/ChunkPrimer;)V func_180520_a +MD net/minecraft/world/gen/ChunkProviderEnd func_180519_a (Lnet/minecraft/world/chunk/ChunkPrimer;)V func_180519_a +MD net/minecraft/world/gen/ChunkProviderEnd initializeNoiseField ([DIIIIII)[D func_73187_a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_175921_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_175921_a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_180711_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)V func_180711_a +MD net/minecraft/world/gen/feature/WorldGenAbstractTree func_150523_a (Lnet/minecraft/block/Block;)Z func_150523_a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNodeList ()V func_76489_a +MD net/minecraft/world/gen/feature/WorldGenBigTree layerSize (I)F func_76490_a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNode (Lnet/minecraft/util/BlockPos;)V func_175940_a +MD net/minecraft/world/gen/feature/WorldGenBigTree func_181631_a (Lnet/minecraft/util/BlockPos;FLnet/minecraft/block/state/IBlockState;)V func_181631_a +MD net/minecraft/world/gen/feature/WorldGenBigTree checkBlockLine (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)I func_175936_a +MD net/minecraft/world/gen/feature/WorldGenBigTree func_175937_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/Block;)V func_175937_a +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeaves ()V func_175941_b +MD net/minecraft/world/gen/feature/WorldGenBigTree leafSize (I)F func_76495_b +MD net/minecraft/world/gen/feature/WorldGenBigTree getGreatestDistance (Lnet/minecraft/util/BlockPos;)I func_175935_b +MD net/minecraft/world/gen/feature/WorldGenBigTree func_175938_b (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/BlockLog$EnumAxis; func_175938_b +MD net/minecraft/world/gen/feature/WorldGenBigTree generateTrunk ()V func_175942_c +MD net/minecraft/world/gen/feature/WorldGenBigTree leafNodeNeedsBase (I)Z func_76493_c +MD net/minecraft/world/gen/feature/WorldGenBigTree generateLeafNodeBases ()V func_175939_d +MD net/minecraft/world/gen/feature/WorldGenBigTree validTreeLocation ()Z func_76497_e +MD net/minecraft/world/gen/feature/WorldGenBigTree$FoliageCoordinates func_177999_q ()I func_177999_q +MD net/minecraft/world/gen/feature/WorldGenDoublePlant setPlantType (Lnet/minecraft/block/BlockDoublePlant$EnumPlantType;)V func_180710_a +MD net/minecraft/world/gen/feature/WorldGenerator setBlockAndNotifyAdequately (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_175903_a +MD net/minecraft/world/gen/feature/WorldGenerator generate (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;)Z func_180709_b +MD net/minecraft/world/gen/feature/WorldGenerator func_175904_e ()V func_175904_e +MD net/minecraft/world/gen/feature/WorldGenFlowers setGeneratedBlock (Lnet/minecraft/block/BlockFlower;Lnet/minecraft/block/BlockFlower$EnumFlowerType;)V func_175914_a +MD net/minecraft/world/gen/feature/WorldGenMegaJungle func_181632_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V func_181632_a +MD net/minecraft/world/gen/feature/WorldGenMegaJungle func_175930_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V func_175930_c +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_150541_c (Lnet/minecraft/world/World;IIIILjava/util/Random;)V func_150541_c +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_175933_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_175933_b +MD net/minecraft/world/gen/feature/WorldGenMegaPineTree func_175934_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_175934_c +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175925_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V func_175925_a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175929_a (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/util/BlockPos;I)Z func_175929_a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175927_a (Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/World;)Z func_175927_a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_150533_a (Ljava/util/Random;)I func_150533_a +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175928_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)V func_175928_b +MD net/minecraft/world/gen/feature/WorldGenHugeTrees func_175926_c (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Z func_175926_c +MD net/minecraft/world/gen/feature/WorldGenDungeons pickMobSpawner (Ljava/util/Random;)Ljava/lang/String; func_76543_b +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_150526_a (Lnet/minecraft/world/World;III)V func_150526_a +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_181638_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;I)Z func_181638_a +MD net/minecraft/world/gen/feature/WorldGenCanopyTree func_181639_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_181639_b +MD net/minecraft/world/gen/feature/WorldGenSavannaTree func_181642_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_181642_b +MD net/minecraft/world/gen/feature/WorldGenSavannaTree func_175924_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)V func_175924_b +MD net/minecraft/world/gen/feature/WorldGenSwamp func_181647_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V func_181647_a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181652_a (Lnet/minecraft/world/World;ILnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_181652_a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181651_a (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V func_181651_a +MD net/minecraft/world/gen/feature/WorldGenTrees func_181650_b (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/properties/PropertyBool;)V func_181650_b +MD net/minecraft/world/gen/FlatGeneratorInfo getBiome ()I func_82648_a +MD net/minecraft/world/gen/FlatGeneratorInfo setBiome (I)V func_82647_a +MD net/minecraft/world/gen/FlatGeneratorInfo func_180716_a (ILjava/lang/String;)Ljava/util/List; func_180716_a +MD net/minecraft/world/gen/FlatGeneratorInfo func_180715_a (ILjava/lang/String;I)Lnet/minecraft/world/gen/FlatLayerInfo; func_180715_a +MD net/minecraft/world/gen/FlatGeneratorInfo createFlatGeneratorFromString (Ljava/lang/String;)Lnet/minecraft/world/gen/FlatGeneratorInfo; func_82651_a +MD net/minecraft/world/gen/FlatGeneratorInfo getWorldFeatures ()Ljava/util/Map; func_82644_b +MD net/minecraft/world/gen/FlatGeneratorInfo getFlatLayers ()Ljava/util/List; func_82650_c +MD net/minecraft/world/gen/FlatGeneratorInfo func_82645_d ()V func_82645_d +MD net/minecraft/world/gen/FlatGeneratorInfo getDefaultFlatGenerator ()Lnet/minecraft/world/gen/FlatGeneratorInfo; func_82649_e +MD net/minecraft/world/gen/FlatGeneratorInfo toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/FlatLayerInfo getLayerCount ()I func_82657_a +MD net/minecraft/world/gen/FlatLayerInfo setMinY (I)V func_82660_d +MD net/minecraft/world/gen/FlatLayerInfo getLayerMaterial ()Lnet/minecraft/block/state/IBlockState; func_175900_c +MD net/minecraft/world/gen/FlatLayerInfo getMinY ()I func_82656_d +MD net/minecraft/world/gen/FlatLayerInfo getLayerMaterialBlock ()Lnet/minecraft/block/Block; func_151536_b +MD net/minecraft/world/gen/FlatLayerInfo getFillBlockMeta ()I func_82658_c +MD net/minecraft/world/gen/FlatLayerInfo toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/structure/StructureBoundingBox getNewBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_78887_a +MD net/minecraft/world/gen/structure/StructureBoundingBox offset (III)V func_78886_a +MD net/minecraft/world/gen/structure/StructureBoundingBox intersectsWith (IIII)Z func_78885_a +MD net/minecraft/world/gen/structure/StructureBoundingBox func_175899_a (IIIIII)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175899_a +MD net/minecraft/world/gen/structure/StructureBoundingBox getComponentToAddBoundingBox (IIIIIIIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175897_a +MD net/minecraft/world/gen/structure/StructureBoundingBox intersectsWith (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_78884_a +MD net/minecraft/world/gen/structure/StructureBoundingBox func_175896_b ()Lnet/minecraft/util/Vec3i; func_175896_b +MD net/minecraft/world/gen/structure/StructureBoundingBox expandTo (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_78888_b +MD net/minecraft/world/gen/structure/StructureBoundingBox isVecInside (Lnet/minecraft/util/Vec3i;)Z func_175898_b +MD net/minecraft/world/gen/structure/StructureBoundingBox getXSize ()I func_78883_b +MD net/minecraft/world/gen/structure/StructureBoundingBox getYSize ()I func_78882_c +MD net/minecraft/world/gen/structure/StructureBoundingBox getZSize ()I func_78880_d +MD net/minecraft/world/gen/structure/StructureBoundingBox getCenter ()Lnet/minecraft/util/Vec3i; func_180717_f +MD net/minecraft/world/gen/structure/StructureBoundingBox toNBTTagIntArray ()Lnet/minecraft/nbt/NBTTagIntArray; func_151535_h +MD net/minecraft/world/gen/structure/StructureBoundingBox toString ()Ljava/lang/String; toString +MD net/minecraft/world/gen/structure/StructureMineshaftPieces registerStructurePieces ()V func_143048_a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces access$000 (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; access$000 +MD net/minecraft/world/gen/structure/StructureMineshaftPieces func_175892_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; func_175892_a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces access$100 ()Ljava/util/List; access$100 +MD net/minecraft/world/gen/structure/StructureMineshaftPieces func_175890_b (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; func_175890_b +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Corridor func_175814_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175814_a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Cross func_175813_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175813_a +MD net/minecraft/world/gen/structure/StructureMineshaftPieces$Stairs func_175812_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175812_a +MD net/minecraft/world/gen/structure/MapGenNetherBridge getSpawnList ()Ljava/util/List; func_75059_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces registerNetherFortressPieces ()V func_143049_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$000 (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; access$000 +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$100 ()[Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight; access$100 +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces func_175887_b (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; func_175887_b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces access$200 ()[Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight; access$200 +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3 func_175885_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing3; func_175885_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$End func_175884_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$End; func_175884_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight func_175882_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Straight; func_175882_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3 func_175883_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor3; func_175883_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4 func_175880_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor4; func_175880_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance func_175881_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Entrance; func_175881_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2 func_175878_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing2; func_175878_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor func_175879_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor; func_175879_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5 func_175877_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor5; func_175877_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2 func_175876_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Corridor2; func_175876_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom func_175875_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$NetherStalkRoom; func_175875_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne func_175874_a (Ljava/util/List;Ljava/util/Random;IIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Throne; func_175874_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece isAboveGround (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_74964_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece func_175871_a (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece; func_175871_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece func_175870_a (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;IZ)Lnet/minecraft/world/gen/structure/StructureComponent; func_175870_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentNormal (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; func_74963_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getTotalWeight (Ljava/util/List;)I func_74960_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentX (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; func_74961_b +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Piece getNextComponentZ (Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Start;Ljava/util/List;Ljava/util/Random;IIZ)Lnet/minecraft/world/gen/structure/StructureComponent; func_74965_c +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight func_78823_a ()Z func_78823_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$PieceWeight func_78822_a (I)Z func_78822_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing func_175873_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Crossing; func_175873_a +MD net/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs func_175872_a (Ljava/util/List;Ljava/util/Random;IIIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureNetherBridgePieces$Stairs; func_175872_a +MD net/minecraft/world/gen/structure/StructureOceanMonument getScatteredFeatureSpawnList ()Ljava/util/List; func_175799_b +MD net/minecraft/world/gen/structure/StructureOceanMonument$StartMonument func_175789_b (Lnet/minecraft/world/World;Ljava/util/Random;II)V func_175789_b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces registerOceanMonumentPieces ()V func_175970_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175836_a (Ljava/util/Random;)Ljava/util/List; func_175836_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175840_a (ZILnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175840_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175839_b (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175839_b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175837_c (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175837_c +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175841_d (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175841_d +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175835_e (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175835_e +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175842_f (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175842_f +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentBuilding func_175838_g (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175838_g +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper func_175969_a (Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;)Z func_175969_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$MonumentRoomFitHelper func_175968_a (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;Ljava/util/Random;)Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece; func_175968_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175817_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;III)Z func_175817_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175819_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;)V func_175819_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_181655_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIIZ)V func_181655_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175821_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIZ)V func_175821_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175818_a (Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIII)Z func_175818_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$Piece func_175820_a (III)I func_175820_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175958_a ()V func_175958_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175959_a (I)Z func_175959_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175957_a (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition;)V func_175957_a +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175961_b ()Z func_175961_b +MD net/minecraft/world/gen/structure/StructureOceanMonumentPieces$RoomDefinition func_175960_c ()I func_175960_c +MD net/minecraft/world/gen/structure/MapGenScatteredFeature func_175798_a (Lnet/minecraft/util/BlockPos;)Z func_175798_a +MD net/minecraft/world/gen/structure/MapGenScatteredFeature getScatteredFeatureSpawnList ()Ljava/util/List; func_82667_a +MD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces registerScatteredFeaturePieces ()V func_143045_a +MD net/minecraft/world/gen/structure/ComponentScatteredFeaturePieces$Feature func_74935_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;I)Z func_74935_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces registerStrongholdPieces ()V func_143046_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$000 (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; access$000 +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$102 (Ljava/lang/Class;)Ljava/lang/Class; access$102 +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175954_a (Ljava/lang/Class;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold; func_175954_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces prepareStructurePieces ()V func_75198_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175955_b (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold; func_175955_b +MD net/minecraft/world/gen/structure/StructureStrongholdPieces access$200 ()Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stones; access$200 +MD net/minecraft/world/gen/structure/StructureStrongholdPieces func_175953_c (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; func_175953_c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces canAddStructurePieces ()Z func_75202_c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor func_175868_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$ChestCorridor; func_175868_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Corridor func_175869_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175869_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing func_175866_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Crossing; func_175866_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn func_175867_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$LeftTurn; func_175867_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Library func_175864_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Library; func_175864_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight canSpawnMoreStructures ()Z func_75190_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PieceWeight canSpawnMoreStructuresOfType (I)Z func_75189_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom func_175865_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$PortalRoom; func_175865_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Prison func_175860_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Prison; func_175860_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing func_175859_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$RoomCrossing; func_175859_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs func_175863_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs; func_175863_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Straight func_175862_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Straight; func_175862_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight func_175861_a (Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$StairsStraight; func_175861_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold placeDoor (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door;III)V func_74990_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold canStrongholdGoDeeper (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_74991_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentNormal (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; func_74986_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getRandomDoor (Ljava/util/Random;)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; func_74988_a +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentX (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; func_74989_b +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold getNextComponentZ (Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stairs2;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; func_74987_c +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door valueOf (Ljava/lang/String;)Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; valueOf +MD net/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door values ()[Lnet/minecraft/world/gen/structure/StructureStrongholdPieces$Stronghold$Door; values +MD net/minecraft/world/gen/structure/MapGenStructure getStructureName ()Ljava/lang/String; func_143025_a +MD net/minecraft/world/gen/structure/MapGenStructure canSpawnStructureAtCoords (II)Z func_75047_a +MD net/minecraft/world/gen/structure/MapGenStructure setStructureStart (IILnet/minecraft/world/gen/structure/StructureStart;)V func_143026_a +MD net/minecraft/world/gen/structure/MapGenStructure initializeStructureData (Lnet/minecraft/world/World;)V func_143027_a +MD net/minecraft/world/gen/structure/MapGenStructure isPositionInStructure (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Z func_175796_a +MD net/minecraft/world/gen/structure/MapGenStructure generateStructure (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/ChunkCoordIntPair;)Z func_175794_a +MD net/minecraft/world/gen/structure/MapGenStructure getStructureStart (II)Lnet/minecraft/world/gen/structure/StructureStart; func_75049_b +MD net/minecraft/world/gen/structure/MapGenStructure getClosestStrongholdPos (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/util/BlockPos; func_180706_b +MD net/minecraft/world/gen/structure/MapGenStructure func_175795_b (Lnet/minecraft/util/BlockPos;)Z func_175795_b +MD net/minecraft/world/gen/structure/MapGenStructure func_175797_c (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/world/gen/structure/StructureStart; func_175797_c +MD net/minecraft/world/gen/structure/MapGenStructure getCoordList ()Ljava/util/List; func_75052_o_ +MD net/minecraft/world/gen/structure/MapGenStructure$1 call ()Ljava/lang/String; call +MD net/minecraft/world/gen/structure/MapGenStructure$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructure$2 call ()Ljava/lang/String; call +MD net/minecraft/world/gen/structure/MapGenStructure$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructure$3 call ()Ljava/lang/String; call +MD net/minecraft/world/gen/structure/MapGenStructure$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureComponentName (Lnet/minecraft/world/gen/structure/StructureComponent;)Ljava/lang/String; func_143036_a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureStartName (Lnet/minecraft/world/gen/structure/StructureStart;)Ljava/lang/String; func_143033_a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureStart (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/world/gen/structure/StructureStart; func_143035_a +MD net/minecraft/world/gen/structure/MapGenStructureIO registerStructureComponent (Ljava/lang/Class;Ljava/lang/String;)V func_143031_a +MD net/minecraft/world/gen/structure/MapGenStructureIO getStructureComponent (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/world/World;)Lnet/minecraft/world/gen/structure/StructureComponent; func_143032_b +MD net/minecraft/world/gen/structure/MapGenStructureIO registerStructure (Ljava/lang/Class;Ljava/lang/String;)V func_143034_b +MD net/minecraft/world/gen/structure/MapGenStructureData getTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_143041_a +MD net/minecraft/world/gen/structure/MapGenStructureData writeInstance (Lnet/minecraft/nbt/NBTTagCompound;II)V func_143043_a +MD net/minecraft/world/gen/structure/MapGenStructureData formatChunkCoords (II)Ljava/lang/String; func_143042_b +MD net/minecraft/world/gen/structure/StructureComponent getBoundingBoxCenter ()Lnet/minecraft/util/BlockPos; func_180776_a +MD net/minecraft/world/gen/structure/StructureComponent getXWithOffset (II)I func_74865_a +MD net/minecraft/world/gen/structure/StructureComponent func_181138_a (III)V func_181138_a +MD net/minecraft/world/gen/structure/StructureComponent getBlockStateFromPos (Lnet/minecraft/world/World;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)Lnet/minecraft/block/state/IBlockState; func_175807_a +MD net/minecraft/world/gen/structure/StructureComponent setBlockState (Lnet/minecraft/world/World;Lnet/minecraft/block/state/IBlockState;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175811_a +MD net/minecraft/world/gen/structure/StructureComponent isLiquidInStructureBoundingBox (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_74860_a +MD net/minecraft/world/gen/structure/StructureComponent fillWithAir (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIII)V func_74878_a +MD net/minecraft/world/gen/structure/StructureComponent fillWithBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;Z)V func_175804_a +MD net/minecraft/world/gen/structure/StructureComponent randomlyRareFillWithBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIILnet/minecraft/block/state/IBlockState;Z)V func_180777_a +MD net/minecraft/world/gen/structure/StructureComponent fillWithRandomizedBlocks (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIIIIIZLjava/util/Random;Lnet/minecraft/world/gen/structure/StructureComponent$BlockSelector;)V func_74882_a +MD net/minecraft/world/gen/structure/StructureComponent func_175805_a (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;FIIIIIILnet/minecraft/block/state/IBlockState;Lnet/minecraft/block/state/IBlockState;Z)V func_175805_a +MD net/minecraft/world/gen/structure/StructureComponent randomlyPlaceBlock (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;FIIILnet/minecraft/block/state/IBlockState;)V func_175809_a +MD net/minecraft/world/gen/structure/StructureComponent generateDispenserContents (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIIILjava/util/List;I)Z func_175806_a +MD net/minecraft/world/gen/structure/StructureComponent placeDoorCurrentPosition (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)V func_175810_a +MD net/minecraft/world/gen/structure/StructureComponent generateChestContents (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;Ljava/util/Random;IIILjava/util/List;I)Z func_180778_a +MD net/minecraft/world/gen/structure/StructureComponent readStructureBaseNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V func_143009_a +MD net/minecraft/world/gen/structure/StructureComponent addComponentParts (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_74875_a +MD net/minecraft/world/gen/structure/StructureComponent getMetadataWithOffset (Lnet/minecraft/block/Block;I)I func_151555_a +MD net/minecraft/world/gen/structure/StructureComponent buildComponent (Lnet/minecraft/world/gen/structure/StructureComponent;Ljava/util/List;Ljava/util/Random;)V func_74861_a +MD net/minecraft/world/gen/structure/StructureComponent writeStructureToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_143012_a +MD net/minecraft/world/gen/structure/StructureComponent findIntersecting (Ljava/util/List;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Lnet/minecraft/world/gen/structure/StructureComponent; func_74883_a +MD net/minecraft/world/gen/structure/StructureComponent createStructureBaseNBT ()Lnet/minecraft/nbt/NBTTagCompound; func_143010_b +MD net/minecraft/world/gen/structure/StructureComponent getZWithOffset (II)I func_74873_b +MD net/minecraft/world/gen/structure/StructureComponent clearCurrentPositionBlocksUpwards (Lnet/minecraft/world/World;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_74871_b +MD net/minecraft/world/gen/structure/StructureComponent replaceAirAndLiquidDownwards (Lnet/minecraft/world/World;Lnet/minecraft/block/state/IBlockState;IIILnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_175808_b +MD net/minecraft/world/gen/structure/StructureComponent readStructureFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_143011_b +MD net/minecraft/world/gen/structure/StructureComponent getBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_74874_b +MD net/minecraft/world/gen/structure/StructureComponent getComponentType ()I func_74877_c +MD net/minecraft/world/gen/structure/StructureComponent getYWithOffset (I)I func_74862_a +MD net/minecraft/world/gen/structure/StructureComponent$BlockSelector getBlockState ()Lnet/minecraft/block/state/IBlockState; func_180780_a +MD net/minecraft/world/gen/structure/StructureComponent$BlockSelector selectBlocks (Ljava/util/Random;IIIZ)V func_75062_a +MD net/minecraft/world/gen/structure/StructureStart getBoundingBox ()Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_75071_a +MD net/minecraft/world/gen/structure/StructureStart writeStructureComponentsToNBT (II)Lnet/minecraft/nbt/NBTTagCompound; func_143021_a +MD net/minecraft/world/gen/structure/StructureStart func_175788_a (Lnet/minecraft/world/ChunkCoordIntPair;)Z func_175788_a +MD net/minecraft/world/gen/structure/StructureStart readStructureComponentsFromNBT (Lnet/minecraft/world/World;Lnet/minecraft/nbt/NBTTagCompound;)V func_143020_a +MD net/minecraft/world/gen/structure/StructureStart markAvailableHeight (Lnet/minecraft/world/World;Ljava/util/Random;I)V func_75067_a +MD net/minecraft/world/gen/structure/StructureStart setRandomHeight (Lnet/minecraft/world/World;Ljava/util/Random;II)V func_75070_a +MD net/minecraft/world/gen/structure/StructureStart generateStructure (Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)V func_75068_a +MD net/minecraft/world/gen/structure/StructureStart writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_143022_a +MD net/minecraft/world/gen/structure/StructureStart getComponents ()Ljava/util/LinkedList; func_75073_b +MD net/minecraft/world/gen/structure/StructureStart func_175787_b (Lnet/minecraft/world/ChunkCoordIntPair;)V func_175787_b +MD net/minecraft/world/gen/structure/StructureStart readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_143017_b +MD net/minecraft/world/gen/structure/StructureStart updateBoundingBox ()V func_75072_c +MD net/minecraft/world/gen/structure/StructureStart isSizeableStructure ()Z func_75069_d +MD net/minecraft/world/gen/structure/StructureStart getChunkPosX ()I func_143019_e +MD net/minecraft/world/gen/structure/StructureStart getChunkPosZ ()I func_143018_f +MD net/minecraft/world/gen/structure/StructureVillagePieces registerVillagePieces ()V func_143016_a +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176065_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Lnet/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Village; func_176065_a +MD net/minecraft/world/gen/structure/StructureVillagePieces access$000 (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; access$000 +MD net/minecraft/world/gen/structure/StructureVillagePieces func_75079_a (Ljava/util/List;)I func_75079_a +MD net/minecraft/world/gen/structure/StructureVillagePieces getStructureVillageWeightedPieceList (Ljava/util/Random;I)Ljava/util/List; func_75084_a +MD net/minecraft/world/gen/structure/StructureVillagePieces access$100 (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; access$100 +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176067_c (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Village; func_176067_c +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176066_d (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; func_176066_d +MD net/minecraft/world/gen/structure/StructureVillagePieces func_176069_e (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureComponent; func_176069_e +MD net/minecraft/world/gen/structure/StructureVillagePieces$House1 func_175850_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House1; func_175850_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 func_175851_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Field1; func_175851_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field1 func_151559_a (Ljava/util/Random;)Lnet/minecraft/block/Block; func_151559_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 func_175852_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Field2; func_175852_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Field2 func_151560_a (Ljava/util/Random;)Lnet/minecraft/block/Block; func_151560_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Torch func_175856_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175856_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight canSpawnMoreVillagePieces ()Z func_75086_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$PieceWeight canSpawnMoreVillagePiecesOfType (I)Z func_75085_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Hall func_175857_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Hall; func_175857_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House4Garden func_175858_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House4Garden; func_175858_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$WoodHut func_175853_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$WoodHut; func_175853_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Church func_175854_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$Church; func_175854_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House2 func_175855_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House2; func_175855_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Start getWorldChunkManager ()Lnet/minecraft/world/biome/WorldChunkManager; func_74925_d +MD net/minecraft/world/gen/structure/StructureVillagePieces$Path func_175848_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;)Lnet/minecraft/world/gen/structure/StructureBoundingBox; func_175848_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$House3 func_175849_a (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;IIILnet/minecraft/util/EnumFacing;I)Lnet/minecraft/world/gen/structure/StructureVillagePieces$House3; func_175849_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village spawnVillagers (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;IIII)V func_74893_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_175847_a (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/block/state/IBlockState; func_175847_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village canVillageGoDeeper (Lnet/minecraft/world/gen/structure/StructureBoundingBox;)Z func_74895_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getNextComponentNN (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; func_74891_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_175846_a (Z)V func_175846_a +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getAverageGroundLevel (Lnet/minecraft/world/World;Lnet/minecraft/world/gen/structure/StructureBoundingBox;)I func_74889_b +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village getNextComponentPP (Lnet/minecraft/world/gen/structure/StructureVillagePieces$Start;Ljava/util/List;Ljava/util/Random;II)Lnet/minecraft/world/gen/structure/StructureComponent; func_74894_b +MD net/minecraft/world/gen/structure/StructureVillagePieces$Village func_180779_c (II)I func_180779_c +MD net/minecraft/world/gen/NoiseGeneratorImproved func_76309_a (IDD)D func_76309_a +MD net/minecraft/world/gen/NoiseGeneratorImproved grad (IDDD)D func_76310_a +MD net/minecraft/world/gen/NoiseGeneratorImproved populateNoiseArray ([DDDDIIIDDDD)V func_76308_a +MD net/minecraft/world/gen/NoiseGeneratorImproved lerp (DDD)D func_76311_b +MD net/minecraft/world/gen/NoiseGeneratorOctaves generateNoiseOctaves ([DIIIIDDD)[D func_76305_a +MD net/minecraft/world/gen/NoiseGeneratorOctaves generateNoiseOctaves ([DIIIIIIDDD)[D func_76304_a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151601_a (DD)D func_151601_a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151599_a ([DDDIIDDD)[D func_151599_a +MD net/minecraft/world/gen/NoiseGeneratorPerlin func_151600_a ([DDDIIDDDD)[D func_151600_a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151607_a (D)I func_151607_a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151605_a (DD)D func_151605_a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151606_a ([DDDIIDDD)V func_151606_a +MD net/minecraft/world/gen/NoiseGeneratorSimplex func_151604_a ([IDD)D func_151604_a +MD net/minecraft/block/material/Material isSolid ()Z func_76220_a +MD net/minecraft/block/material/Material blocksLight ()Z func_76228_b +MD net/minecraft/block/material/Material blocksMovement ()Z func_76230_c +MD net/minecraft/block/material/Material isLiquid ()Z func_76224_d +MD net/minecraft/block/material/Material setRequiresTool ()Lnet/minecraft/block/material/Material; func_76221_f +MD net/minecraft/block/material/Material setBurning ()Lnet/minecraft/block/material/Material; func_76226_g +MD net/minecraft/block/material/Material getCanBurn ()Z func_76217_h +MD net/minecraft/block/material/Material setReplaceable ()Lnet/minecraft/block/material/Material; func_76231_i +MD net/minecraft/block/material/Material isReplaceable ()Z func_76222_j +MD net/minecraft/block/material/Material isOpaque ()Z func_76218_k +MD net/minecraft/block/material/Material isToolNotRequired ()Z func_76229_l +MD net/minecraft/block/material/Material getMaterialMobility ()I func_76227_m +MD net/minecraft/block/material/Material setNoPushMobility ()Lnet/minecraft/block/material/Material; func_76219_n +MD net/minecraft/block/material/Material setImmovableMobility ()Lnet/minecraft/block/material/Material; func_76225_o +MD net/minecraft/block/material/Material setAdventureModeExempt ()Lnet/minecraft/block/material/Material; func_85158_p +MD net/minecraft/block/material/Material getMaterialMapColor ()Lnet/minecraft/block/material/MapColor; func_151565_r +MD net/minecraft/block/material/Material setTranslucent ()Lnet/minecraft/block/material/Material; func_76223_p +MD net/minecraft/block/material/MapColor getMapColor (I)I func_151643_b +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsCoolWarm (IIII)[I func_151626_c +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsHeatIce (IIII)[I func_151624_d +MD net/minecraft/world/gen/layer/GenLayerEdge getIntsSpecial (IIII)[I func_151625_e +MD net/minecraft/world/gen/layer/GenLayerEdge$Mode valueOf (Ljava/lang/String;)Lnet/minecraft/world/gen/layer/GenLayerEdge$Mode; valueOf +MD net/minecraft/world/gen/layer/GenLayerEdge$Mode values ()[Lnet/minecraft/world/gen/layer/GenLayerEdge$Mode; values +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge replaceBiomeEdgeIfNecessary ([I[IIIIIII)Z func_151636_a +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge canBiomesBeNeighbors (II)Z func_151634_b +MD net/minecraft/world/gen/layer/GenLayerBiomeEdge replaceBiomeEdge ([I[IIIIIII)Z func_151635_b +MD net/minecraft/world/gen/layer/IntCache resetIntCache ()V func_76446_a +MD net/minecraft/world/gen/layer/IntCache getIntCache (I)[I func_76445_a +MD net/minecraft/world/gen/layer/IntCache getCacheSizes ()Ljava/lang/String; func_85144_b +MD net/minecraft/world/gen/layer/GenLayer nextInt (I)I func_75902_a +MD net/minecraft/world/gen/layer/GenLayer biomesEqualOrMesaPlateau (II)Z func_151616_a +MD net/minecraft/world/gen/layer/GenLayer getInts (IIII)[I func_75904_a +MD net/minecraft/world/gen/layer/GenLayer initWorldGenSeed (J)V func_75905_a +MD net/minecraft/world/gen/layer/GenLayer initChunkSeed (JJ)V func_75903_a +MD net/minecraft/world/gen/layer/GenLayer initializeAllBiomeGenerators (JLnet/minecraft/world/WorldType;Ljava/lang/String;)[Lnet/minecraft/world/gen/layer/GenLayer; func_180781_a +MD net/minecraft/world/gen/layer/GenLayer selectRandom ([I)I func_151619_a +MD net/minecraft/world/gen/layer/GenLayer isBiomeOceanic (I)Z func_151618_b +MD net/minecraft/world/gen/layer/GenLayer selectModeOrRandom (IIII)I func_151617_b +MD net/minecraft/world/gen/layer/GenLayer$1 call ()Ljava/lang/String; call +MD net/minecraft/world/gen/layer/GenLayer$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/layer/GenLayer$2 call ()Ljava/lang/String; call +MD net/minecraft/world/gen/layer/GenLayer$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/gen/layer/GenLayerRiver func_151630_c (I)I func_151630_c +MD net/minecraft/world/gen/layer/GenLayerShore func_151632_a ([I[IIIIII)V func_151632_a +MD net/minecraft/world/gen/layer/GenLayerShore func_151631_c (I)Z func_151631_c +MD net/minecraft/world/gen/layer/GenLayerShore func_151633_d (I)Z func_151633_d +MD net/minecraft/world/gen/layer/GenLayerZoom magnify (JLnet/minecraft/world/gen/layer/GenLayer;I)Lnet/minecraft/world/gen/layer/GenLayer; func_75915_a +MD net/minecraft/pathfinding/Path clearPath ()V func_75848_a +MD net/minecraft/pathfinding/Path sortBack (I)V func_75847_a +MD net/minecraft/pathfinding/Path addPoint (Lnet/minecraft/pathfinding/PathPoint;)Lnet/minecraft/pathfinding/PathPoint; func_75849_a +MD net/minecraft/pathfinding/Path changeDistance (Lnet/minecraft/pathfinding/PathPoint;F)V func_75850_a +MD net/minecraft/pathfinding/Path sortForward (I)V func_75846_b +MD net/minecraft/pathfinding/Path dequeue ()Lnet/minecraft/pathfinding/PathPoint; func_75844_c +MD net/minecraft/pathfinding/Path isPathEmpty ()Z func_75845_e +MD net/minecraft/pathfinding/PathPoint isAssigned ()Z func_75831_a +MD net/minecraft/pathfinding/PathPoint makeHash (III)I func_75830_a +MD net/minecraft/pathfinding/PathPoint distanceTo (Lnet/minecraft/pathfinding/PathPoint;)F func_75829_a +MD net/minecraft/pathfinding/PathPoint distanceToSquared (Lnet/minecraft/pathfinding/PathPoint;)F func_75832_b +MD net/minecraft/pathfinding/PathPoint equals (Ljava/lang/Object;)Z equals +MD net/minecraft/pathfinding/PathPoint hashCode ()I hashCode +MD net/minecraft/pathfinding/PathPoint toString ()Ljava/lang/String; toString +MD net/minecraft/world/pathfinder/NodeProcessor postProcess ()V func_176163_a +MD net/minecraft/world/pathfinder/NodeProcessor openPoint (III)Lnet/minecraft/pathfinding/PathPoint; func_176159_a +MD net/minecraft/world/pathfinder/NodeProcessor initProcessor (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;)V func_176162_a +MD net/minecraft/world/pathfinder/NodeProcessor getPathPointTo (Lnet/minecraft/entity/Entity;)Lnet/minecraft/pathfinding/PathPoint; func_176161_a +MD net/minecraft/world/pathfinder/NodeProcessor getPathPointToCoords (Lnet/minecraft/entity/Entity;DDD)Lnet/minecraft/pathfinding/PathPoint; func_176160_a +MD net/minecraft/world/pathfinder/NodeProcessor findPathOptions ([Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/entity/Entity;Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;F)I func_176164_a +MD net/minecraft/pathfinding/PathEntity incrementPathIndex ()V func_75875_a +MD net/minecraft/pathfinding/PathEntity getPathPointFromIndex (I)Lnet/minecraft/pathfinding/PathPoint; func_75877_a +MD net/minecraft/pathfinding/PathEntity isSamePath (Lnet/minecraft/pathfinding/PathEntity;)Z func_75876_a +MD net/minecraft/pathfinding/PathEntity getPosition (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/Vec3; func_75878_a +MD net/minecraft/pathfinding/PathEntity getVectorFromIndex (Lnet/minecraft/entity/Entity;I)Lnet/minecraft/util/Vec3; func_75881_a +MD net/minecraft/pathfinding/PathEntity isFinished ()Z func_75879_b +MD net/minecraft/pathfinding/PathEntity setCurrentPathLength (I)V func_75871_b +MD net/minecraft/pathfinding/PathEntity isDestinationSame (Lnet/minecraft/util/Vec3;)Z func_75880_b +MD net/minecraft/pathfinding/PathEntity getFinalPathPoint ()Lnet/minecraft/pathfinding/PathPoint; func_75870_c +MD net/minecraft/pathfinding/PathEntity setCurrentPathIndex (I)V func_75872_c +MD net/minecraft/pathfinding/PathEntity getCurrentPathLength ()I func_75874_d +MD net/minecraft/pathfinding/PathEntity getCurrentPathIndex ()I func_75873_e +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;DDDF)Lnet/minecraft/pathfinding/PathEntity; func_176189_a +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/BlockPos;F)Lnet/minecraft/pathfinding/PathEntity; func_180782_a +MD net/minecraft/pathfinding/PathFinder createEntityPathTo (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;F)Lnet/minecraft/pathfinding/PathEntity; func_176188_a +MD net/minecraft/pathfinding/PathFinder createEntityPath (Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;)Lnet/minecraft/pathfinding/PathEntity; func_75853_a +MD net/minecraft/pathfinding/PathFinder addToPath (Lnet/minecraft/entity/Entity;Lnet/minecraft/pathfinding/PathPoint;Lnet/minecraft/pathfinding/PathPoint;F)Lnet/minecraft/pathfinding/PathEntity; func_176187_a +MD net/minecraft/world/pathfinder/SwimNodeProcessor getSafePoint (Lnet/minecraft/entity/Entity;III)Lnet/minecraft/pathfinding/PathPoint; func_176185_a +MD net/minecraft/world/pathfinder/SwimNodeProcessor func_176186_b (Lnet/minecraft/entity/Entity;III)I func_176186_b +MD net/minecraft/world/pathfinder/WalkNodeProcessor func_176170_a (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/entity/Entity;IIIIIIZZZ)I func_176170_a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getVerticalOffset (Lnet/minecraft/entity/Entity;III)I func_176177_a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getSafePoint (Lnet/minecraft/entity/Entity;IIII)Lnet/minecraft/pathfinding/PathPoint; func_176171_a +MD net/minecraft/world/pathfinder/WalkNodeProcessor setEnterDoors (Z)V func_176175_a +MD net/minecraft/world/pathfinder/WalkNodeProcessor getEnterDoors ()Z func_176179_b +MD net/minecraft/world/pathfinder/WalkNodeProcessor setBreakDoors (Z)V func_176172_b +MD net/minecraft/world/pathfinder/WalkNodeProcessor setAvoidsWater (Z)V func_176176_c +MD net/minecraft/world/pathfinder/WalkNodeProcessor getCanSwim ()Z func_176174_d +MD net/minecraft/world/pathfinder/WalkNodeProcessor setCanSwim (Z)V func_176178_d +MD net/minecraft/world/pathfinder/WalkNodeProcessor getAvoidsWater ()Z func_176173_e +MD net/minecraft/world/WorldSavedData readFromNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_76184_a +MD net/minecraft/world/WorldSavedData setDirty (Z)V func_76186_a +MD net/minecraft/world/WorldSavedData writeToNBT (Lnet/minecraft/nbt/NBTTagCompound;)V func_76187_b +MD net/minecraft/world/WorldSavedData markDirty ()V func_76185_a +MD net/minecraft/world/WorldSavedData isDirty ()Z func_76188_b +MD net/minecraft/util/Vec4b func_176110_a ()B func_176110_a +MD net/minecraft/util/Vec4b func_176112_b ()B func_176112_b +MD net/minecraft/util/Vec4b func_176113_c ()B func_176113_c +MD net/minecraft/util/Vec4b func_176111_d ()B func_176111_d +MD net/minecraft/util/Vec4b equals (Ljava/lang/Object;)Z equals +MD net/minecraft/util/Vec4b hashCode ()I hashCode +MD net/minecraft/world/storage/MapData calculateMapCenter (DDI)V func_176054_a +MD net/minecraft/world/storage/MapData updateMapData (II)V func_176053_a +MD net/minecraft/world/storage/MapData updateDecorations (ILnet/minecraft/world/World;Ljava/lang/String;DDD)V func_82567_a +MD net/minecraft/world/storage/MapData getMapInfo (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/world/storage/MapData$MapInfo; func_82568_a +MD net/minecraft/world/storage/MapData updateVisiblePlayers (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/item/ItemStack;)V func_76191_a +MD net/minecraft/world/storage/MapData getMapPacket (Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/network/Packet; func_176052_a +MD net/minecraft/world/storage/MapData$MapInfo update (II)V func_176102_a +MD net/minecraft/world/storage/MapData$MapInfo getPacket (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/network/Packet; func_176101_a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter convertChunks (Ljava/io/File;Ljava/io/File;Lnet/minecraft/world/biome/WorldChunkManager;IILnet/minecraft/util/IProgressUpdate;)V func_75811_a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter convertFile (Ljava/io/File;Ljava/lang/Iterable;Lnet/minecraft/world/biome/WorldChunkManager;IILnet/minecraft/util/IProgressUpdate;)V func_75813_a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter addRegionFilesToCollection (Ljava/io/File;Ljava/util/Collection;)V func_75810_a +MD net/minecraft/world/chunk/storage/AnvilSaveConverter getSaveVersion ()I func_75812_c +MD net/minecraft/world/chunk/storage/AnvilSaveConverter createFile (Ljava/lang/String;)V func_75809_f +MD net/minecraft/world/chunk/storage/AnvilSaveConverter$1 accept (Ljava/io/File;Ljava/lang/String;)Z accept +MD net/minecraft/world/storage/SaveHandler setSessionLock ()V func_75766_h +MD net/minecraft/world/storage/SaveFormatOld deleteFiles ([Ljava/io/File;)Z func_75807_a +MD net/minecraft/world/storage/WorldInfo getCleanWeatherTime ()I func_176133_A +MD net/minecraft/world/storage/WorldInfo getGeneratorOptions ()Ljava/lang/String; func_82571_y +MD net/minecraft/world/storage/WorldInfo getBorderCenterX ()D func_176120_C +MD net/minecraft/world/storage/WorldInfo getBorderCenterZ ()D func_176126_D +MD net/minecraft/world/storage/WorldInfo getBorderSize ()D func_176137_E +MD net/minecraft/world/storage/WorldInfo getBorderLerpTime ()J func_176134_F +MD net/minecraft/world/storage/WorldInfo getBorderLerpTarget ()D func_176132_G +MD net/minecraft/world/storage/WorldInfo getBorderSafeZone ()D func_176138_H +MD net/minecraft/world/storage/WorldInfo getBorderDamagePerBlock ()D func_176140_I +MD net/minecraft/world/storage/WorldInfo getBorderWarningDistance ()I func_176131_J +MD net/minecraft/world/storage/WorldInfo getBorderWarningTime ()I func_176139_K +MD net/minecraft/world/storage/WorldInfo getNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_76066_a +MD net/minecraft/world/storage/WorldInfo setBorderSize (D)V func_176145_a +MD net/minecraft/world/storage/WorldInfo setSpawnX (I)V func_76058_a +MD net/minecraft/world/storage/WorldInfo setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_76060_a +MD net/minecraft/world/storage/WorldInfo populateFromWorldSettings (Lnet/minecraft/world/WorldSettings;)V func_176127_a +MD net/minecraft/world/storage/WorldInfo setTerrainType (Lnet/minecraft/world/WorldType;)V func_76085_a +MD net/minecraft/world/storage/WorldInfo access$000 (Lnet/minecraft/world/storage/WorldInfo;)Lnet/minecraft/world/WorldType; access$000 +MD net/minecraft/world/storage/WorldInfo addToCrashReport (Lnet/minecraft/crash/CrashReportCategory;)V func_85118_a +MD net/minecraft/world/storage/WorldInfo setSpawn (Lnet/minecraft/util/BlockPos;)V func_176143_a +MD net/minecraft/world/storage/WorldInfo cloneNBTCompound (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/nbt/NBTTagCompound; func_76082_a +MD net/minecraft/world/storage/WorldInfo updateTagCompound (Lnet/minecraft/nbt/NBTTagCompound;Lnet/minecraft/nbt/NBTTagCompound;)V func_76064_a +MD net/minecraft/world/storage/WorldInfo setWorldName (Ljava/lang/String;)V func_76062_a +MD net/minecraft/world/storage/WorldInfo setDifficulty (Lnet/minecraft/world/EnumDifficulty;)V func_176144_a +MD net/minecraft/world/storage/WorldInfo setThundering (Z)V func_76069_a +MD net/minecraft/world/storage/WorldInfo getSeed ()J func_76063_b +MD net/minecraft/world/storage/WorldInfo setBorderLerpTarget (D)V func_176118_b +MD net/minecraft/world/storage/WorldInfo setSpawnY (I)V func_76056_b +MD net/minecraft/world/storage/WorldInfo setWorldTotalTime (J)V func_82572_b +MD net/minecraft/world/storage/WorldInfo access$100 (Lnet/minecraft/world/storage/WorldInfo;)Z access$100 +MD net/minecraft/world/storage/WorldInfo setRaining (Z)V func_76084_b +MD net/minecraft/world/storage/WorldInfo getSpawnX ()I func_76079_c +MD net/minecraft/world/storage/WorldInfo getBorderCenterZ (D)V func_176141_c +MD net/minecraft/world/storage/WorldInfo setSpawnZ (I)V func_76087_c +MD net/minecraft/world/storage/WorldInfo setWorldTime (J)V func_76068_b +MD net/minecraft/world/storage/WorldInfo access$200 (Lnet/minecraft/world/storage/WorldInfo;)Ljava/lang/String; access$200 +MD net/minecraft/world/storage/WorldInfo setAllowCommands (Z)V func_176121_c +MD net/minecraft/world/storage/WorldInfo getSpawnY ()I func_76075_d +MD net/minecraft/world/storage/WorldInfo getBorderCenterX (D)V func_176124_d +MD net/minecraft/world/storage/WorldInfo access$300 (Lnet/minecraft/world/storage/WorldInfo;)I access$300 +MD net/minecraft/world/storage/WorldInfo setServerInitialized (Z)V func_76091_d +MD net/minecraft/world/storage/WorldInfo getSpawnZ ()I func_76074_e +MD net/minecraft/world/storage/WorldInfo setBorderSafeZone (D)V func_176129_e +MD net/minecraft/world/storage/WorldInfo setSaveVersion (I)V func_76078_e +MD net/minecraft/world/storage/WorldInfo setBorderLerpTime (J)V func_176135_e +MD net/minecraft/world/storage/WorldInfo access$400 (Lnet/minecraft/world/storage/WorldInfo;)I access$400 +MD net/minecraft/world/storage/WorldInfo setDifficultyLocked (Z)V func_180783_e +MD net/minecraft/world/storage/WorldInfo getWorldTotalTime ()J func_82573_f +MD net/minecraft/world/storage/WorldInfo setBorderDamagePerBlock (D)V func_176125_f +MD net/minecraft/world/storage/WorldInfo setThunderTime (I)V func_76090_f +MD net/minecraft/world/storage/WorldInfo access$500 (Lnet/minecraft/world/storage/WorldInfo;)I access$500 +MD net/minecraft/world/storage/WorldInfo setMapFeaturesEnabled (Z)V func_176128_f +MD net/minecraft/world/storage/WorldInfo getWorldTime ()J func_76073_f +MD net/minecraft/world/storage/WorldInfo setRainTime (I)V func_76080_g +MD net/minecraft/world/storage/WorldInfo access$600 (Lnet/minecraft/world/storage/WorldInfo;)J access$600 +MD net/minecraft/world/storage/WorldInfo setHardcore (Z)V func_176119_g +MD net/minecraft/world/storage/WorldInfo getSizeOnDisk ()J func_76092_g +MD net/minecraft/world/storage/WorldInfo access$700 (Lnet/minecraft/world/storage/WorldInfo;)J access$700 +MD net/minecraft/world/storage/WorldInfo getPlayerNBTTagCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_76072_h +MD net/minecraft/world/storage/WorldInfo setCleanWeatherTime (I)V func_176142_i +MD net/minecraft/world/storage/WorldInfo access$800 (Lnet/minecraft/world/storage/WorldInfo;)I access$800 +MD net/minecraft/world/storage/WorldInfo setBorderWarningDistance (I)V func_176122_j +MD net/minecraft/world/storage/WorldInfo access$900 (Lnet/minecraft/world/storage/WorldInfo;)I access$900 +MD net/minecraft/world/storage/WorldInfo getWorldName ()Ljava/lang/String; func_76065_j +MD net/minecraft/world/storage/WorldInfo setBorderWarningTime (I)V func_176136_k +MD net/minecraft/world/storage/WorldInfo access$1000 (Lnet/minecraft/world/storage/WorldInfo;)I access$1000 +MD net/minecraft/world/storage/WorldInfo getSaveVersion ()I func_76088_k +MD net/minecraft/world/storage/WorldInfo access$1100 (Lnet/minecraft/world/storage/WorldInfo;)Z access$1100 +MD net/minecraft/world/storage/WorldInfo getLastTimePlayed ()J func_76057_l +MD net/minecraft/world/storage/WorldInfo access$1200 (Lnet/minecraft/world/storage/WorldInfo;)I access$1200 +MD net/minecraft/world/storage/WorldInfo isThundering ()Z func_76061_m +MD net/minecraft/world/storage/WorldInfo access$1300 (Lnet/minecraft/world/storage/WorldInfo;)Z access$1300 +MD net/minecraft/world/storage/WorldInfo getThunderTime ()I func_76071_n +MD net/minecraft/world/storage/WorldInfo access$1400 (Lnet/minecraft/world/storage/WorldInfo;)Lnet/minecraft/world/WorldSettings$GameType; access$1400 +MD net/minecraft/world/storage/WorldInfo isRaining ()Z func_76059_o +MD net/minecraft/world/storage/WorldInfo access$1500 (Lnet/minecraft/world/storage/WorldInfo;)Z access$1500 +MD net/minecraft/world/storage/WorldInfo getRainTime ()I func_76083_p +MD net/minecraft/world/storage/WorldInfo access$1600 (Lnet/minecraft/world/storage/WorldInfo;)Z access$1600 +MD net/minecraft/world/storage/WorldInfo getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_76077_q +MD net/minecraft/world/storage/WorldInfo isMapFeaturesEnabled ()Z func_76089_r +MD net/minecraft/world/storage/WorldInfo isHardcoreModeEnabled ()Z func_76093_s +MD net/minecraft/world/storage/WorldInfo getTerrainType ()Lnet/minecraft/world/WorldType; func_76067_t +MD net/minecraft/world/storage/WorldInfo areCommandsAllowed ()Z func_76086_u +MD net/minecraft/world/storage/WorldInfo isInitialized ()Z func_76070_v +MD net/minecraft/world/storage/WorldInfo getGameRulesInstance ()Lnet/minecraft/world/GameRules; func_82574_x +MD net/minecraft/world/storage/WorldInfo getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_176130_y +MD net/minecraft/world/storage/WorldInfo isDifficultyLocked ()Z func_176123_z +MD net/minecraft/world/storage/WorldInfo$1 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$1 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$2 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$2 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$3 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$3 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$4 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$4 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$5 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$5 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$6 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$6 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$7 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$7 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$8 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$8 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/WorldInfo$9 call ()Ljava/lang/String; call +MD net/minecraft/world/storage/WorldInfo$9 call ()Ljava/lang/Object; call +MD net/minecraft/world/storage/ISaveHandler flush ()V func_75759_a +MD net/minecraft/world/storage/ISaveHandler getChunkLoader (Lnet/minecraft/world/WorldProvider;)Lnet/minecraft/world/chunk/storage/IChunkLoader; func_75763_a +MD net/minecraft/world/storage/ISaveHandler saveWorldInfo (Lnet/minecraft/world/storage/WorldInfo;)V func_75761_a +MD net/minecraft/world/storage/ISaveHandler saveWorldInfoWithPlayer (Lnet/minecraft/world/storage/WorldInfo;Lnet/minecraft/nbt/NBTTagCompound;)V func_75755_a +MD net/minecraft/world/storage/ISaveHandler getMapFileFromName (Ljava/lang/String;)Ljava/io/File; func_75758_b +MD net/minecraft/world/storage/ISaveHandler getWorldDirectory ()Ljava/io/File; func_75765_b +MD net/minecraft/world/storage/ISaveHandler checkSessionLock ()V func_75762_c +MD net/minecraft/world/storage/ISaveHandler loadWorldInfo ()Lnet/minecraft/world/storage/WorldInfo; func_75757_d +MD net/minecraft/world/storage/ISaveHandler getPlayerNBTManager ()Lnet/minecraft/world/storage/IPlayerFileData; func_75756_e +MD net/minecraft/world/storage/ISaveHandler getWorldDirectoryName ()Ljava/lang/String; func_75760_g +MD net/minecraft/world/storage/ISaveFormat getName ()Ljava/lang/String; func_154333_a +MD net/minecraft/world/storage/ISaveFormat isConvertible (Ljava/lang/String;)Z func_154334_a +MD net/minecraft/world/storage/ISaveFormat renameWorld (Ljava/lang/String;Ljava/lang/String;)V func_75806_a +MD net/minecraft/world/storage/ISaveFormat convertMapFormat (Ljava/lang/String;Lnet/minecraft/util/IProgressUpdate;)Z func_75805_a +MD net/minecraft/world/storage/ISaveFormat getSaveLoader (Ljava/lang/String;Z)Lnet/minecraft/world/storage/ISaveHandler; func_75804_a +MD net/minecraft/world/storage/ISaveFormat getSaveList ()Ljava/util/List; func_75799_b +MD net/minecraft/world/storage/ISaveFormat isOldMapFormat (Ljava/lang/String;)Z func_75801_b +MD net/minecraft/world/storage/ISaveFormat getWorldInfo (Ljava/lang/String;)Lnet/minecraft/world/storage/WorldInfo; func_75803_c +MD net/minecraft/world/storage/ISaveFormat flushCache ()V func_75800_d +MD net/minecraft/world/storage/ISaveFormat isNewLevelIdAcceptable (Ljava/lang/String;)Z func_154335_d +MD net/minecraft/world/storage/ISaveFormat deleteWorldDirectory (Ljava/lang/String;)Z func_75802_e +MD net/minecraft/world/storage/ISaveFormat canLoadWorld (Ljava/lang/String;)Z func_90033_f +MD net/minecraft/world/storage/SaveFormatComparator getFileName ()Ljava/lang/String; func_75786_a +MD net/minecraft/world/storage/SaveFormatComparator compareTo (Lnet/minecraft/world/storage/SaveFormatComparator;)I compareTo +MD net/minecraft/world/storage/SaveFormatComparator getDisplayName ()Ljava/lang/String; func_75788_b +MD net/minecraft/world/storage/SaveFormatComparator getSizeOnDisk ()J func_154336_c +MD net/minecraft/world/storage/SaveFormatComparator requiresConversion ()Z func_75785_d +MD net/minecraft/world/storage/SaveFormatComparator getLastTimePlayed ()J func_75784_e +MD net/minecraft/world/storage/SaveFormatComparator getEnumGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_75790_f +MD net/minecraft/world/storage/SaveFormatComparator isHardcoreModeEnabled ()Z func_75789_g +MD net/minecraft/world/storage/SaveFormatComparator getCheatsEnabled ()Z func_75783_h +MD net/minecraft/world/storage/SaveFormatComparator compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/world/storage/IPlayerFileData writePlayerData (Lnet/minecraft/entity/player/EntityPlayer;)V func_75753_a +MD net/minecraft/world/storage/IPlayerFileData readPlayerData (Lnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/nbt/NBTTagCompound; func_75752_b +MD net/minecraft/world/storage/IPlayerFileData getAvailablePlayerDat ()[Ljava/lang/String; func_75754_f +MD net/minecraft/world/storage/MapStorage saveAllData ()V func_75744_a +MD net/minecraft/world/storage/MapStorage saveData (Lnet/minecraft/world/WorldSavedData;)V func_75747_a +MD net/minecraft/world/storage/MapStorage loadData (Ljava/lang/Class;Ljava/lang/String;)Lnet/minecraft/world/WorldSavedData; func_75742_a +MD net/minecraft/world/storage/MapStorage getUniqueDataId (Ljava/lang/String;)I func_75743_a +MD net/minecraft/world/storage/MapStorage setData (Ljava/lang/String;Lnet/minecraft/world/WorldSavedData;)V func_75745_a +MD net/minecraft/world/storage/MapStorage loadIdCounts ()V func_75746_b +MD net/minecraft/world/storage/ThreadedFileIOBase getThreadedIOInstance ()Lnet/minecraft/world/storage/ThreadedFileIOBase; func_178779_a +MD net/minecraft/world/storage/ThreadedFileIOBase queueIO (Lnet/minecraft/world/storage/IThreadedFileIO;)V func_75735_a +MD net/minecraft/world/storage/ThreadedFileIOBase waitForFinish ()V func_75734_a +MD net/minecraft/world/storage/ThreadedFileIOBase processQueue ()V func_75736_b +MD net/minecraft/world/storage/ThreadedFileIOBase run ()V run +MD net/minecraft/world/storage/IThreadedFileIO writeNextIO ()Z func_75814_c +MD net/minecraft/util/AxisAlignedBB getAverageEdgeLength ()D func_72320_b +MD net/minecraft/util/AxisAlignedBB addCoord (DDD)Lnet/minecraft/util/AxisAlignedBB; func_72321_a +MD net/minecraft/util/AxisAlignedBB fromBounds (DDDDDD)Lnet/minecraft/util/AxisAlignedBB; func_178781_a +MD net/minecraft/util/AxisAlignedBB union (Lnet/minecraft/util/AxisAlignedBB;)Lnet/minecraft/util/AxisAlignedBB; func_111270_a +MD net/minecraft/util/AxisAlignedBB calculateXOffset (Lnet/minecraft/util/AxisAlignedBB;D)D func_72316_a +MD net/minecraft/util/AxisAlignedBB isVecInside (Lnet/minecraft/util/Vec3;)Z func_72318_a +MD net/minecraft/util/AxisAlignedBB calculateIntercept (Lnet/minecraft/util/Vec3;Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/MovingObjectPosition; func_72327_a +MD net/minecraft/util/AxisAlignedBB hasNaN ()Z func_181656_b +MD net/minecraft/util/AxisAlignedBB expand (DDD)Lnet/minecraft/util/AxisAlignedBB; func_72314_b +MD net/minecraft/util/AxisAlignedBB intersectsWith (Lnet/minecraft/util/AxisAlignedBB;)Z func_72326_a +MD net/minecraft/util/AxisAlignedBB calculateYOffset (Lnet/minecraft/util/AxisAlignedBB;D)D func_72323_b +MD net/minecraft/util/AxisAlignedBB isVecInYZ (Lnet/minecraft/util/Vec3;)Z func_72333_b +MD net/minecraft/util/AxisAlignedBB offset (DDD)Lnet/minecraft/util/AxisAlignedBB; func_72317_d +MD net/minecraft/util/AxisAlignedBB calculateZOffset (Lnet/minecraft/util/AxisAlignedBB;D)D func_72322_c +MD net/minecraft/util/AxisAlignedBB isVecInXZ (Lnet/minecraft/util/Vec3;)Z func_72315_c +MD net/minecraft/util/AxisAlignedBB contract (DDD)Lnet/minecraft/util/AxisAlignedBB; func_72331_e +MD net/minecraft/util/AxisAlignedBB isVecInXY (Lnet/minecraft/util/Vec3;)Z func_72319_d +MD net/minecraft/util/AxisAlignedBB toString ()Ljava/lang/String; toString +MD net/minecraft/util/MovingObjectPosition getBlockPos ()Lnet/minecraft/util/BlockPos; func_178782_a +MD net/minecraft/util/MovingObjectPosition toString ()Ljava/lang/String; toString +MD net/minecraft/util/MovingObjectPosition$MovingObjectType valueOf (Ljava/lang/String;)Lnet/minecraft/util/MovingObjectPosition$MovingObjectType; valueOf +MD net/minecraft/util/MovingObjectPosition$MovingObjectType values ()[Lnet/minecraft/util/MovingObjectPosition$MovingObjectType; values +MD net/minecraft/util/Vec3 normalize ()Lnet/minecraft/util/Vec3; func_72432_b +MD net/minecraft/util/Vec3 subtract (DDD)Lnet/minecraft/util/Vec3; func_178786_a +MD net/minecraft/util/Vec3 rotatePitch (F)Lnet/minecraft/util/Vec3; func_178789_a +MD net/minecraft/util/Vec3 subtractReverse (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_72444_a +MD net/minecraft/util/Vec3 getIntermediateWithXValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; func_72429_b +MD net/minecraft/util/Vec3 lengthVector ()D func_72433_c +MD net/minecraft/util/Vec3 addVector (DDD)Lnet/minecraft/util/Vec3; func_72441_c +MD net/minecraft/util/Vec3 rotateYaw (F)Lnet/minecraft/util/Vec3; func_178785_b +MD net/minecraft/util/Vec3 dotProduct (Lnet/minecraft/util/Vec3;)D func_72430_b +MD net/minecraft/util/Vec3 getIntermediateWithYValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; func_72435_c +MD net/minecraft/util/Vec3 crossProduct (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_72431_c +MD net/minecraft/util/Vec3 getIntermediateWithZValue (Lnet/minecraft/util/Vec3;D)Lnet/minecraft/util/Vec3; func_72434_d +MD net/minecraft/util/Vec3 subtract (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_178788_d +MD net/minecraft/util/Vec3 add (Lnet/minecraft/util/Vec3;)Lnet/minecraft/util/Vec3; func_178787_e +MD net/minecraft/util/Vec3 distanceTo (Lnet/minecraft/util/Vec3;)D func_72438_d +MD net/minecraft/util/Vec3 squareDistanceTo (Lnet/minecraft/util/Vec3;)D func_72436_e +MD net/minecraft/util/Vec3 toString ()Ljava/lang/String; toString +MD net/minecraft/scoreboard/ScoreObjective getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; func_96682_a +MD net/minecraft/scoreboard/ScoreObjective setRenderType (Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType;)V func_178767_a +MD net/minecraft/scoreboard/ScoreObjective setDisplayName (Ljava/lang/String;)V func_96681_a +MD net/minecraft/scoreboard/ScoreObjective getName ()Ljava/lang/String; func_96679_b +MD net/minecraft/scoreboard/ScoreObjective getCriteria ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria; func_96680_c +MD net/minecraft/scoreboard/ScoreObjective getDisplayName ()Ljava/lang/String; func_96678_d +MD net/minecraft/scoreboard/ScoreObjective getRenderType ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; func_178766_e +MD net/minecraft/scoreboard/ScorePlayerTeam func_98298_a (I)V func_98298_a +MD net/minecraft/scoreboard/ScorePlayerTeam setChatFormat (Lnet/minecraft/util/EnumChatFormatting;)V func_178774_a +MD net/minecraft/scoreboard/ScorePlayerTeam setNameTagVisibility (Lnet/minecraft/scoreboard/Team$EnumVisible;)V func_178772_a +MD net/minecraft/scoreboard/ScorePlayerTeam formatPlayerName (Lnet/minecraft/scoreboard/Team;Ljava/lang/String;)Ljava/lang/String; func_96667_a +MD net/minecraft/scoreboard/ScorePlayerTeam setTeamName (Ljava/lang/String;)V func_96664_a +MD net/minecraft/scoreboard/ScorePlayerTeam setAllowFriendlyFire (Z)V func_96660_a +MD net/minecraft/scoreboard/ScorePlayerTeam setDeathMessageVisibility (Lnet/minecraft/scoreboard/Team$EnumVisible;)V func_178773_b +MD net/minecraft/scoreboard/ScorePlayerTeam setNamePrefix (Ljava/lang/String;)V func_96666_b +MD net/minecraft/scoreboard/ScorePlayerTeam setSeeFriendlyInvisiblesEnabled (Z)V func_98300_b +MD net/minecraft/scoreboard/ScorePlayerTeam getTeamName ()Ljava/lang/String; func_96669_c +MD net/minecraft/scoreboard/ScorePlayerTeam setNameSuffix (Ljava/lang/String;)V func_96662_c +MD net/minecraft/scoreboard/ScorePlayerTeam getColorPrefix ()Ljava/lang/String; func_96668_e +MD net/minecraft/scoreboard/ScorePlayerTeam getColorSuffix ()Ljava/lang/String; func_96663_f +MD net/minecraft/scoreboard/ScorePlayerTeam func_98299_i ()I func_98299_i +MD net/minecraft/scoreboard/ScorePlayerTeam getChatFormat ()Lnet/minecraft/util/EnumChatFormatting; func_178775_l +MD net/minecraft/scoreboard/Score func_96648_a ()V func_96648_a +MD net/minecraft/scoreboard/Score increseScore (I)V func_96649_a +MD net/minecraft/scoreboard/Score func_96651_a (Ljava/util/List;)V func_96651_a +MD net/minecraft/scoreboard/Score setLocked (Z)V func_178815_a +MD net/minecraft/scoreboard/Score decreaseScore (I)V func_96646_b +MD net/minecraft/scoreboard/Score getScorePoints ()I func_96652_c +MD net/minecraft/scoreboard/Score setScorePoints (I)V func_96647_c +MD net/minecraft/scoreboard/Score getObjective ()Lnet/minecraft/scoreboard/ScoreObjective; func_96645_d +MD net/minecraft/scoreboard/Score getPlayerName ()Ljava/lang/String; func_96653_e +MD net/minecraft/scoreboard/Score getScoreScoreboard ()Lnet/minecraft/scoreboard/Scoreboard; func_96650_f +MD net/minecraft/scoreboard/Score isLocked ()Z func_178816_g +MD net/minecraft/scoreboard/Score$1 compare (Lnet/minecraft/scoreboard/Score;Lnet/minecraft/scoreboard/Score;)I compare +MD net/minecraft/scoreboard/Score$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/scoreboard/Scoreboard getObjectiveInDisplaySlot (I)Lnet/minecraft/scoreboard/ScoreObjective; func_96539_a +MD net/minecraft/scoreboard/Scoreboard setObjectiveInDisplaySlot (ILnet/minecraft/scoreboard/ScoreObjective;)V func_96530_a +MD net/minecraft/scoreboard/Scoreboard onScoreObjectiveAdded (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96522_a +MD net/minecraft/scoreboard/Scoreboard broadcastTeamCreated (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V func_96523_a +MD net/minecraft/scoreboard/Scoreboard func_96536_a (Lnet/minecraft/scoreboard/Score;)V func_96536_a +MD net/minecraft/scoreboard/Scoreboard getObjectivesFromCriteria (Lnet/minecraft/scoreboard/IScoreObjectiveCriteria;)Ljava/util/Collection; func_96520_a +MD net/minecraft/scoreboard/Scoreboard func_96516_a (Ljava/lang/String;)V func_96516_a +MD net/minecraft/scoreboard/Scoreboard func_178820_a (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)V func_178820_a +MD net/minecraft/scoreboard/Scoreboard removePlayerFromTeam (Ljava/lang/String;Lnet/minecraft/scoreboard/ScorePlayerTeam;)V func_96512_b +MD net/minecraft/scoreboard/Scoreboard addScoreObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/IScoreObjectiveCriteria;)Lnet/minecraft/scoreboard/ScoreObjective; func_96535_a +MD net/minecraft/scoreboard/Scoreboard addPlayerToTeam (Ljava/lang/String;Ljava/lang/String;)Z func_151392_a +MD net/minecraft/scoreboard/Scoreboard func_181140_a (Lnet/minecraft/entity/Entity;)V func_181140_a +MD net/minecraft/scoreboard/Scoreboard getObjectiveDisplaySlot (I)Ljava/lang/String; func_96517_b +MD net/minecraft/scoreboard/Scoreboard onObjectiveDisplayNameChanged (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96532_b +MD net/minecraft/scoreboard/Scoreboard sendTeamUpdate (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V func_96538_b +MD net/minecraft/scoreboard/Scoreboard getObjective (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScoreObjective; func_96518_b +MD net/minecraft/scoreboard/Scoreboard entityHasObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)Z func_178819_b +MD net/minecraft/scoreboard/Scoreboard getScoreObjectives ()Ljava/util/Collection; func_96514_c +MD net/minecraft/scoreboard/Scoreboard onScoreObjectiveRemoved (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96533_c +MD net/minecraft/scoreboard/Scoreboard func_96513_c (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V func_96513_c +MD net/minecraft/scoreboard/Scoreboard getObjectivesForEntity (Ljava/lang/String;)Ljava/util/Map; func_96510_d +MD net/minecraft/scoreboard/Scoreboard getValueFromObjective (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)Lnet/minecraft/scoreboard/Score; func_96529_a +MD net/minecraft/scoreboard/Scoreboard getObjectiveNames ()Ljava/util/Collection; func_96526_d +MD net/minecraft/scoreboard/Scoreboard removeTeam (Lnet/minecraft/scoreboard/ScorePlayerTeam;)V func_96511_d +MD net/minecraft/scoreboard/Scoreboard getTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; func_96508_e +MD net/minecraft/scoreboard/Scoreboard removeObjectiveFromEntity (Ljava/lang/String;Lnet/minecraft/scoreboard/ScoreObjective;)V func_178822_d +MD net/minecraft/scoreboard/Scoreboard getScores ()Ljava/util/Collection; func_96528_e +MD net/minecraft/scoreboard/Scoreboard createTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; func_96527_f +MD net/minecraft/scoreboard/Scoreboard getTeamNames ()Ljava/util/Collection; func_96531_f +MD net/minecraft/scoreboard/Scoreboard removePlayerFromTeams (Ljava/lang/String;)Z func_96524_g +MD net/minecraft/scoreboard/Scoreboard getTeams ()Ljava/util/Collection; func_96525_g +MD net/minecraft/scoreboard/Scoreboard getDisplaySlotStrings ()[Ljava/lang/String; func_178821_h +MD net/minecraft/scoreboard/Scoreboard getPlayersTeam (Ljava/lang/String;)Lnet/minecraft/scoreboard/ScorePlayerTeam; func_96509_i +MD net/minecraft/scoreboard/Scoreboard getSortedScores (Lnet/minecraft/scoreboard/ScoreObjective;)Ljava/util/Collection; func_96534_i +MD net/minecraft/scoreboard/Scoreboard getObjectiveDisplaySlotNumber (Ljava/lang/String;)I func_96537_j +MD net/minecraft/scoreboard/Scoreboard removeObjective (Lnet/minecraft/scoreboard/ScoreObjective;)V func_96519_k +MD net/minecraft/scoreboard/ScoreboardSaveData func_96496_a ()Lnet/minecraft/nbt/NBTTagList; func_96496_a +MD net/minecraft/scoreboard/ScoreboardSaveData func_96502_a (Lnet/minecraft/scoreboard/ScorePlayerTeam;Lnet/minecraft/nbt/NBTTagList;)V func_96502_a +MD net/minecraft/scoreboard/ScoreboardSaveData setScoreboard (Lnet/minecraft/scoreboard/Scoreboard;)V func_96499_a +MD net/minecraft/scoreboard/ScoreboardSaveData readTeams (Lnet/minecraft/nbt/NBTTagList;)V func_96498_a +MD net/minecraft/scoreboard/ScoreboardSaveData objectivesToNbt ()Lnet/minecraft/nbt/NBTTagList; func_96505_b +MD net/minecraft/scoreboard/ScoreboardSaveData readObjectives (Lnet/minecraft/nbt/NBTTagList;)V func_96501_b +MD net/minecraft/scoreboard/ScoreboardSaveData readDisplayConfig (Lnet/minecraft/nbt/NBTTagCompound;)V func_96504_c +MD net/minecraft/scoreboard/ScoreboardSaveData readScores (Lnet/minecraft/nbt/NBTTagList;)V func_96500_c +MD net/minecraft/scoreboard/ScoreboardSaveData func_96497_d (Lnet/minecraft/nbt/NBTTagCompound;)V func_96497_d +MD net/minecraft/scoreboard/ScoreboardSaveData scoresToNbt ()Lnet/minecraft/nbt/NBTTagList; func_96503_e +MD net/minecraft/scoreboard/Team isSameTeam (Lnet/minecraft/scoreboard/Team;)Z func_142054_a +MD net/minecraft/scoreboard/Team getRegisteredName ()Ljava/lang/String; func_96661_b +MD net/minecraft/scoreboard/Team getMembershipCollection ()Ljava/util/Collection; func_96670_d +MD net/minecraft/scoreboard/Team formatString (Ljava/lang/String;)Ljava/lang/String; func_142053_d +MD net/minecraft/scoreboard/Team getAllowFriendlyFire ()Z func_96665_g +MD net/minecraft/scoreboard/Team getSeeFriendlyInvisiblesEnabled ()Z func_98297_h +MD net/minecraft/scoreboard/Team getNameTagVisibility ()Lnet/minecraft/scoreboard/Team$EnumVisible; func_178770_i +MD net/minecraft/scoreboard/Team getDeathMessageVisibility ()Lnet/minecraft/scoreboard/Team$EnumVisible; func_178771_j +MD net/minecraft/scoreboard/Team$EnumVisible func_178825_a ()[Ljava/lang/String; func_178825_a +MD net/minecraft/scoreboard/Team$EnumVisible func_178824_a (Ljava/lang/String;)Lnet/minecraft/scoreboard/Team$EnumVisible; func_178824_a +MD net/minecraft/scoreboard/Team$EnumVisible valueOf (Ljava/lang/String;)Lnet/minecraft/scoreboard/Team$EnumVisible; valueOf +MD net/minecraft/scoreboard/Team$EnumVisible values ()[Lnet/minecraft/scoreboard/Team$EnumVisible; values +MD net/minecraft/scoreboard/IScoreObjectiveCriteria getName ()Ljava/lang/String; func_96636_a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria setScore (Ljava/util/List;)I func_96635_a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria isReadOnly ()Z func_96637_b +MD net/minecraft/scoreboard/IScoreObjectiveCriteria getRenderType ()Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; func_178790_c +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType func_178796_a ()Ljava/lang/String; func_178796_a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType func_178795_a (Ljava/lang/String;)Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; func_178795_a +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType valueOf (Ljava/lang/String;)Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; valueOf +MD net/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType values ()[Lnet/minecraft/scoreboard/IScoreObjectiveCriteria$EnumRenderType; values +MD net/minecraft/client/renderer/ActiveRenderInfo getPosition ()Lnet/minecraft/util/Vec3; func_178804_a +MD net/minecraft/client/renderer/ActiveRenderInfo getBlockAtEntityViewpoint (Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;F)Lnet/minecraft/block/Block; func_180786_a +MD net/minecraft/client/renderer/ActiveRenderInfo projectViewFromEntity (Lnet/minecraft/entity/Entity;D)Lnet/minecraft/util/Vec3; func_178806_a +MD net/minecraft/client/renderer/ActiveRenderInfo updateRenderInfo (Lnet/minecraft/entity/player/EntityPlayer;Z)V func_74583_a +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationX ()F func_178808_b +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationXZ ()F func_178809_c +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationZ ()F func_178803_d +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationYZ ()F func_178805_e +MD net/minecraft/client/renderer/ActiveRenderInfo getRotationXY ()F func_178807_f +MD net/minecraft/client/gui/ChatLine getChatComponent ()Lnet/minecraft/util/IChatComponent; func_151461_a +MD net/minecraft/client/gui/ChatLine getUpdatedCounter ()I func_74540_b +MD net/minecraft/client/gui/ChatLine getChatLineID ()I func_74539_c +MD net/minecraft/client/settings/KeyBinding unPressAllKeys ()V func_74506_a +MD net/minecraft/client/settings/KeyBinding onTick (I)V func_74507_a +MD net/minecraft/client/settings/KeyBinding setKeyBindState (IZ)V func_74510_a +MD net/minecraft/client/settings/KeyBinding compareTo (Lnet/minecraft/client/settings/KeyBinding;)I compareTo +MD net/minecraft/client/settings/KeyBinding resetKeyBindingArrayAndHash ()V func_74508_b +MD net/minecraft/client/settings/KeyBinding setKeyCode (I)V func_151462_b +MD net/minecraft/client/settings/KeyBinding getKeybinds ()Ljava/util/Set; func_151467_c +MD net/minecraft/client/settings/KeyBinding isKeyDown ()Z func_151470_d +MD net/minecraft/client/settings/KeyBinding getKeyCategory ()Ljava/lang/String; func_151466_e +MD net/minecraft/client/settings/KeyBinding isPressed ()Z func_151468_f +MD net/minecraft/client/settings/KeyBinding getKeyDescription ()Ljava/lang/String; func_151464_g +MD net/minecraft/client/settings/KeyBinding getKeyCodeDefault ()I func_151469_h +MD net/minecraft/client/settings/KeyBinding getKeyCode ()I func_151463_i +MD net/minecraft/client/settings/KeyBinding unpressKey ()V func_74505_d +MD net/minecraft/client/settings/KeyBinding compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/renderer/RenderHelper disableStandardItemLighting ()V func_74518_a +MD net/minecraft/client/renderer/RenderHelper setColorBuffer (DDDD)Ljava/nio/FloatBuffer; func_74517_a +MD net/minecraft/client/renderer/RenderHelper setColorBuffer (FFFF)Ljava/nio/FloatBuffer; func_74521_a +MD net/minecraft/client/renderer/RenderHelper enableStandardItemLighting ()V func_74519_b +MD net/minecraft/client/renderer/RenderHelper enableGUIStandardItemLighting ()V func_74520_c +MD net/minecraft/client/renderer/GLAllocation generateDisplayLists (I)I func_74526_a +MD net/minecraft/client/renderer/GLAllocation deleteDisplayLists (II)V func_178874_a +MD net/minecraft/client/renderer/GLAllocation deleteDisplayLists (I)V func_74523_b +MD net/minecraft/client/renderer/GLAllocation createDirectByteBuffer (I)Ljava/nio/ByteBuffer; func_74524_c +MD net/minecraft/client/renderer/GLAllocation createDirectIntBuffer (I)Ljava/nio/IntBuffer; func_74527_f +MD net/minecraft/client/renderer/GLAllocation createDirectFloatBuffer (I)Ljava/nio/FloatBuffer; func_74529_h +MD net/minecraft/client/Minecraft getMinecraft ()Lnet/minecraft/client/Minecraft; func_71410_x +MD net/minecraft/client/Minecraft scheduleResourcesRefresh ()Lcom/google/common/util/concurrent/ListenableFuture; func_175603_A +MD net/minecraft/client/Minecraft getGLMaximumTextureSize ()I func_71369_N +MD net/minecraft/client/Minecraft getCurrentServerData ()Lnet/minecraft/client/multiplayer/ServerData; func_147104_D +MD net/minecraft/client/Minecraft isIntegratedServerRunning ()Z func_71387_A +MD net/minecraft/client/Minecraft isSingleplayer ()Z func_71356_B +MD net/minecraft/client/Minecraft getIntegratedServer ()Lnet/minecraft/server/integrated/IntegratedServer; func_71401_C +MD net/minecraft/client/Minecraft stopIntegratedServer ()V func_71363_D +MD net/minecraft/client/Minecraft getPlayerUsageSnooper ()Lnet/minecraft/profiler/PlayerUsageSnooper; func_71378_E +MD net/minecraft/client/Minecraft getSystemTime ()J func_71386_F +MD net/minecraft/client/Minecraft isFullScreen ()Z func_71372_G +MD net/minecraft/client/Minecraft getSession ()Lnet/minecraft/util/Session; func_110432_I +MD net/minecraft/client/Minecraft getTwitchDetails ()Lcom/mojang/authlib/properties/PropertyMap; func_180509_L +MD net/minecraft/client/Minecraft getProfileProperties ()Lcom/mojang/authlib/properties/PropertyMap; func_181037_M +MD net/minecraft/client/Minecraft getProxy ()Ljava/net/Proxy; func_110437_J +MD net/minecraft/client/Minecraft getTextureManager ()Lnet/minecraft/client/renderer/texture/TextureManager; func_110434_K +MD net/minecraft/client/Minecraft getResourceManager ()Lnet/minecraft/client/resources/IResourceManager; func_110442_L +MD net/minecraft/client/Minecraft getResourcePackRepository ()Lnet/minecraft/client/resources/ResourcePackRepository; func_110438_M +MD net/minecraft/client/Minecraft getLanguageManager ()Lnet/minecraft/client/resources/LanguageManager; func_135016_M +MD net/minecraft/client/Minecraft getTextureMapBlocks ()Lnet/minecraft/client/renderer/texture/TextureMap; func_147117_R +MD net/minecraft/client/Minecraft isJava64bit ()Z func_147111_S +MD net/minecraft/client/Minecraft isGamePaused ()Z func_147113_T +MD net/minecraft/client/Minecraft getSoundHandler ()Lnet/minecraft/client/audio/SoundHandler; func_147118_V +MD net/minecraft/client/Minecraft getAmbientMusicType ()Lnet/minecraft/client/audio/MusicTicker$MusicType; func_147109_W +MD net/minecraft/client/Minecraft getTwitchStream ()Lnet/minecraft/client/stream/IStream; func_152346_Z +MD net/minecraft/client/Minecraft dispatchKeypresses ()V func_152348_aa +MD net/minecraft/client/Minecraft run ()V func_99999_d +MD net/minecraft/client/Minecraft setDimensionAndSpawnPlayer (I)V func_71354_a +MD net/minecraft/client/Minecraft resize (II)V func_71370_a +MD net/minecraft/client/Minecraft draw (IIIIIIIIII)V func_181536_a +MD net/minecraft/client/Minecraft displayDebugInfo (J)V func_71366_a +MD net/minecraft/client/Minecraft access$000 (Lnet/minecraft/client/Minecraft;)Ljava/lang/String; access$000 +MD net/minecraft/client/Minecraft displayGuiScreen (Lnet/minecraft/client/gui/GuiScreen;)V func_147108_a +MD net/minecraft/client/Minecraft crashed (Lnet/minecraft/crash/CrashReport;)V func_71404_a +MD net/minecraft/client/Minecraft loadWorld (Lnet/minecraft/client/multiplayer/WorldClient;)V func_71403_a +MD net/minecraft/client/Minecraft loadWorld (Lnet/minecraft/client/multiplayer/WorldClient;Ljava/lang/String;)V func_71353_a +MD net/minecraft/client/Minecraft setServerData (Lnet/minecraft/client/multiplayer/ServerData;)V func_71351_a +MD net/minecraft/client/Minecraft drawSplashScreen (Lnet/minecraft/client/renderer/texture/TextureManager;)V func_180510_a +MD net/minecraft/client/Minecraft readImageToBuffer (Ljava/io/InputStream;)Ljava/nio/ByteBuffer; func_152340_a +MD net/minecraft/client/Minecraft launchIntegratedServer (Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/WorldSettings;)V func_71371_a +MD net/minecraft/client/Minecraft addScheduledTask (Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/ListenableFuture; func_152343_a +MD net/minecraft/client/Minecraft setRenderViewEntity (Lnet/minecraft/entity/Entity;)V func_175607_a +MD net/minecraft/client/Minecraft pickBlockWithNBT (Lnet/minecraft/item/Item;ILnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/item/ItemStack; func_181036_a +MD net/minecraft/client/Minecraft setConnectedToRealms (Z)V func_181537_a +MD net/minecraft/client/Minecraft getCurrentAction ()Ljava/lang/String; func_181538_aA +MD net/minecraft/client/Minecraft getSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; func_152347_ac +MD net/minecraft/client/Minecraft getSkinManager ()Lnet/minecraft/client/resources/SkinManager; func_152342_ad +MD net/minecraft/client/Minecraft getRenderViewEntity ()Lnet/minecraft/entity/Entity; func_175606_aa +MD net/minecraft/client/Minecraft getBlockRendererDispatcher ()Lnet/minecraft/client/renderer/BlockRendererDispatcher; func_175602_ab +MD net/minecraft/client/Minecraft getRenderManager ()Lnet/minecraft/client/renderer/entity/RenderManager; func_175598_ae +MD net/minecraft/client/Minecraft getRenderItem ()Lnet/minecraft/client/renderer/entity/RenderItem; func_175599_af +MD net/minecraft/client/Minecraft getItemRenderer ()Lnet/minecraft/client/renderer/ItemRenderer; func_175597_ag +MD net/minecraft/client/Minecraft getDebugFPS ()I func_175610_ah +MD net/minecraft/client/Minecraft getFrameTimer ()Lnet/minecraft/util/FrameTimer; func_181539_aj +MD net/minecraft/client/Minecraft getSessionInfo ()Ljava/util/Map; func_175596_ai +MD net/minecraft/client/Minecraft isConnectedToRealms ()Z func_181540_al +MD net/minecraft/client/Minecraft startGame ()V func_71384_a +MD net/minecraft/client/Minecraft registerMetadataSerializers ()V func_175608_ak +MD net/minecraft/client/Minecraft initStream ()V func_175595_al +MD net/minecraft/client/Minecraft createDisplay ()V func_175609_am +MD net/minecraft/client/Minecraft setInitialDisplayMode ()V func_175605_an +MD net/minecraft/client/Minecraft setWindowIcon ()V func_175594_ao +MD net/minecraft/client/Minecraft isJvm64bit ()Z func_147122_X +MD net/minecraft/client/Minecraft startTimerHackThread ()V func_71389_H +MD net/minecraft/client/Minecraft updateDisplayMode ()V func_110441_Q +MD net/minecraft/client/Minecraft runGameLoop ()V func_71411_J +MD net/minecraft/client/Minecraft clickMouse ()V func_147116_af +MD net/minecraft/client/Minecraft rightClickMouse ()V func_147121_ag +MD net/minecraft/client/Minecraft updateFramebufferSize ()V func_147119_ah +MD net/minecraft/client/Minecraft middleClickMouse ()V func_147112_ai +MD net/minecraft/client/Minecraft getFramebuffer ()Lnet/minecraft/client/shader/Framebuffer; func_147110_a +MD net/minecraft/client/Minecraft updateDebugProfilerName (I)V func_71383_b +MD net/minecraft/client/Minecraft access$100 (Lnet/minecraft/client/Minecraft;)Lnet/minecraft/client/resources/LanguageManager; access$100 +MD net/minecraft/client/Minecraft addGraphicsAndWorldToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReport; func_71396_d +MD net/minecraft/client/Minecraft checkGLError (Ljava/lang/String;)V func_71361_d +MD net/minecraft/client/Minecraft sendClickBlockToController (Z)V func_147115_a +MD net/minecraft/client/Minecraft getVersion ()Ljava/lang/String; func_175600_c +MD net/minecraft/client/Minecraft displayCrashReport (Lnet/minecraft/crash/CrashReport;)V func_71377_b +MD net/minecraft/client/Minecraft isUnicode ()Z func_152349_b +MD net/minecraft/client/Minecraft refreshResources ()V func_110436_a +MD net/minecraft/client/Minecraft getSaveLoader ()Lnet/minecraft/world/storage/ISaveFormat; func_71359_d +MD net/minecraft/client/Minecraft shutdownMinecraftApplet ()V func_71405_e +MD net/minecraft/client/Minecraft updateDisplay ()V func_175601_h +MD net/minecraft/client/Minecraft checkWindowResize ()V func_175604_i +MD net/minecraft/client/Minecraft getLimitFramerate ()I func_90020_K +MD net/minecraft/client/Minecraft isFramerateLimitBelowMax ()Z func_147107_h +MD net/minecraft/client/Minecraft freeMemory ()V func_71398_f +MD net/minecraft/client/Minecraft shutdown ()V func_71400_g +MD net/minecraft/client/Minecraft setIngameFocus ()V func_71381_h +MD net/minecraft/client/Minecraft setIngameNotInFocus ()V func_71364_i +MD net/minecraft/client/Minecraft displayInGameMenu ()V func_71385_j +MD net/minecraft/client/Minecraft toggleFullscreen ()V func_71352_k +MD net/minecraft/client/Minecraft getMusicTicker ()Lnet/minecraft/client/audio/MusicTicker; func_181535_r +MD net/minecraft/client/Minecraft runTick ()V func_71407_l +MD net/minecraft/client/Minecraft isDemo ()Z func_71355_q +MD net/minecraft/client/Minecraft getNetHandler ()Lnet/minecraft/client/network/NetHandlerPlayClient; func_147114_u +MD net/minecraft/client/Minecraft isGuiEnabled ()Z func_71382_s +MD net/minecraft/client/Minecraft isFancyGraphicsEnabled ()Z func_71375_t +MD net/minecraft/client/Minecraft isAmbientOcclusionEnabled ()Z func_71379_u +MD net/minecraft/client/Minecraft$2 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$3 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$4 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$5 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$5 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$6 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$6 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$7 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$7 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$8 run ()V run +MD net/minecraft/client/Minecraft$11 run ()V run +MD net/minecraft/client/Minecraft$12 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$12 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$13 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$13 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$14 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$14 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$15 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$15 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$16 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$16 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$17 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$17 call ()Ljava/lang/Object; call +MD net/minecraft/client/Minecraft$18 call ()Ljava/lang/String; call +MD net/minecraft/client/Minecraft$18 call ()Ljava/lang/Object; call +MD net/minecraft/util/MouseHelper grabMouseCursor ()V func_74372_a +MD net/minecraft/util/MouseHelper ungrabMouseCursor ()V func_74373_b +MD net/minecraft/util/MouseHelper mouseXYChange ()V func_74374_c +MD net/minecraft/client/settings/GameSettings loadOptions ()V func_74300_a +MD net/minecraft/client/settings/GameSettings isKeyDown (Lnet/minecraft/client/settings/KeyBinding;)Z func_100015_a +MD net/minecraft/client/settings/GameSettings setOptionKeyBinding (Lnet/minecraft/client/settings/KeyBinding;I)V func_151440_a +MD net/minecraft/client/settings/GameSettings getOptionFloatValue (Lnet/minecraft/client/settings/GameSettings$Options;)F func_74296_a +MD net/minecraft/client/settings/GameSettings setOptionFloatValue (Lnet/minecraft/client/settings/GameSettings$Options;F)V func_74304_a +MD net/minecraft/client/settings/GameSettings setOptionValue (Lnet/minecraft/client/settings/GameSettings$Options;I)V func_74306_a +MD net/minecraft/client/settings/GameSettings getSoundLevel (Lnet/minecraft/client/audio/SoundCategory;)F func_151438_a +MD net/minecraft/client/settings/GameSettings setSoundLevel (Lnet/minecraft/client/audio/SoundCategory;F)V func_151439_a +MD net/minecraft/client/settings/GameSettings parseFloat (Ljava/lang/String;)F func_74305_a +MD net/minecraft/client/settings/GameSettings switchModelPartEnabled (Lnet/minecraft/entity/player/EnumPlayerModelParts;)V func_178877_a +MD net/minecraft/client/settings/GameSettings setModelPartEnabled (Lnet/minecraft/entity/player/EnumPlayerModelParts;Z)V func_178878_a +MD net/minecraft/client/settings/GameSettings getTranslation ([Ljava/lang/String;I)Ljava/lang/String; func_74299_a +MD net/minecraft/client/settings/GameSettings saveOptions ()V func_74303_b +MD net/minecraft/client/settings/GameSettings getOptionOrdinalValue (Lnet/minecraft/client/settings/GameSettings$Options;)Z func_74308_b +MD net/minecraft/client/settings/GameSettings sendSettingsToServer ()V func_82879_c +MD net/minecraft/client/settings/GameSettings getKeyDisplayString (I)Ljava/lang/String; func_74298_c +MD net/minecraft/client/settings/GameSettings getKeyBinding (Lnet/minecraft/client/settings/GameSettings$Options;)Ljava/lang/String; func_74297_c +MD net/minecraft/client/settings/GameSettings getModelParts ()Ljava/util/Set; func_178876_d +MD net/minecraft/client/settings/GameSettings shouldRenderClouds ()I func_181147_e +MD net/minecraft/client/settings/GameSettings isUsingNativeTransport ()Z func_181148_f +MD net/minecraft/client/settings/GameSettings$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/client/settings/GameSettings$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/client/settings/GameSettings$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/client/settings/GameSettings$Options getEnumFloat ()Z func_74380_a +MD net/minecraft/client/settings/GameSettings$Options setValueMax (F)V func_148263_a +MD net/minecraft/client/settings/GameSettings$Options getEnumOptions (I)Lnet/minecraft/client/settings/GameSettings$Options; func_74379_a +MD net/minecraft/client/settings/GameSettings$Options access$000 (Lnet/minecraft/client/settings/GameSettings$Options;)F access$000 +MD net/minecraft/client/settings/GameSettings$Options getEnumBoolean ()Z func_74382_b +MD net/minecraft/client/settings/GameSettings$Options access$100 (Lnet/minecraft/client/settings/GameSettings$Options;)F access$100 +MD net/minecraft/client/settings/GameSettings$Options returnEnumOrdinal ()I func_74381_c +MD net/minecraft/client/settings/GameSettings$Options normalizeValue (F)F func_148266_c +MD net/minecraft/client/settings/GameSettings$Options getEnumString ()Ljava/lang/String; func_74378_d +MD net/minecraft/client/settings/GameSettings$Options denormalizeValue (F)F func_148262_d +MD net/minecraft/client/settings/GameSettings$Options snapToStepClamp (F)F func_148268_e +MD net/minecraft/client/settings/GameSettings$Options getValueMax ()F func_148267_f +MD net/minecraft/client/settings/GameSettings$Options snapToStep (F)F func_148264_f +MD net/minecraft/client/settings/GameSettings$Options valueOf (Ljava/lang/String;)Lnet/minecraft/client/settings/GameSettings$Options; valueOf +MD net/minecraft/client/settings/GameSettings$Options values ()[Lnet/minecraft/client/settings/GameSettings$Options; values +MD net/minecraft/client/LoadingScreenRenderer displayString (Ljava/lang/String;)V func_73722_d +MD net/minecraft/util/ScreenShotHelper getTimestampedPNGFileForDirectory (Ljava/io/File;)Ljava/io/File; func_74290_a +MD net/minecraft/util/ScreenShotHelper saveScreenshot (Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent; func_148260_a +MD net/minecraft/util/ScreenShotHelper saveScreenshot (Ljava/io/File;Ljava/lang/String;IILnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/util/IChatComponent; func_148259_a +MD net/minecraft/util/Timer updateTimer ()V func_74275_a +MD net/minecraft/util/Session getSessionID ()Ljava/lang/String; func_111286_b +MD net/minecraft/util/Session getPlayerID ()Ljava/lang/String; func_148255_b +MD net/minecraft/util/Session getUsername ()Ljava/lang/String; func_111285_a +MD net/minecraft/util/Session getToken ()Ljava/lang/String; func_148254_d +MD net/minecraft/util/Session getProfile ()Lcom/mojang/authlib/GameProfile; func_148256_e +MD net/minecraft/util/Session getSessionType ()Lnet/minecraft/util/Session$Type; func_152428_f +MD net/minecraft/util/Session$Type setSessionType (Ljava/lang/String;)Lnet/minecraft/util/Session$Type; func_152421_a +MD net/minecraft/util/Session$Type valueOf (Ljava/lang/String;)Lnet/minecraft/util/Session$Type; valueOf +MD net/minecraft/util/Session$Type values ()[Lnet/minecraft/util/Session$Type; values +MD net/minecraft/client/gui/FontRenderer getUnicodeFlag ()Z func_82883_a +MD net/minecraft/client/gui/FontRenderer getCharWidth (C)I func_78263_a +MD net/minecraft/client/gui/FontRenderer renderChar (CZ)F func_181559_a +MD net/minecraft/client/gui/FontRenderer getUnicodePageLocation (I)Lnet/minecraft/util/ResourceLocation; func_111271_a +MD net/minecraft/client/gui/FontRenderer renderDefaultChar (IZ)F func_78266_a +MD net/minecraft/client/gui/FontRenderer getStringWidth (Ljava/lang/String;)I func_78256_a +MD net/minecraft/client/gui/FontRenderer drawStringWithShadow (Ljava/lang/String;FFI)I func_175063_a +MD net/minecraft/client/gui/FontRenderer drawString (Ljava/lang/String;FFIZ)I func_175065_a +MD net/minecraft/client/gui/FontRenderer trimStringToWidth (Ljava/lang/String;I)Ljava/lang/String; func_78269_a +MD net/minecraft/client/gui/FontRenderer drawString (Ljava/lang/String;III)I func_78276_b +MD net/minecraft/client/gui/FontRenderer drawSplitString (Ljava/lang/String;IIII)V func_78279_b +MD net/minecraft/client/gui/FontRenderer renderStringAligned (Ljava/lang/String;IIIIZ)I func_78274_b +MD net/minecraft/client/gui/FontRenderer renderSplitString (Ljava/lang/String;IIIZ)V func_78268_b +MD net/minecraft/client/gui/FontRenderer trimStringToWidth (Ljava/lang/String;IZ)Ljava/lang/String; func_78262_a +MD net/minecraft/client/gui/FontRenderer renderStringAtPos (Ljava/lang/String;Z)V func_78255_a +MD net/minecraft/client/gui/FontRenderer setUnicodeFlag (Z)V func_78264_a +MD net/minecraft/client/gui/FontRenderer getBidiFlag ()Z func_78260_a +MD net/minecraft/client/gui/FontRenderer getColorCode (C)I func_175064_b +MD net/minecraft/client/gui/FontRenderer renderUnicodeChar (CZ)F func_78277_a +MD net/minecraft/client/gui/FontRenderer loadGlyphTexture (I)V func_78257_a +MD net/minecraft/client/gui/FontRenderer getFormatFromString (Ljava/lang/String;)Ljava/lang/String; func_78282_e +MD net/minecraft/client/gui/FontRenderer renderString (Ljava/lang/String;FFIZ)I func_180455_b +MD net/minecraft/client/gui/FontRenderer splitStringWidth (Ljava/lang/String;I)I func_78267_b +MD net/minecraft/client/gui/FontRenderer setBidiFlag (Z)V func_78275_b +MD net/minecraft/client/gui/FontRenderer readFontTexture ()V func_111272_d +MD net/minecraft/client/gui/FontRenderer isFormatColor (C)Z func_78272_b +MD net/minecraft/client/gui/FontRenderer bidiReorder (Ljava/lang/String;)Ljava/lang/String; func_147647_b +MD net/minecraft/client/gui/FontRenderer listFormattedStringToWidth (Ljava/lang/String;I)Ljava/util/List; func_78271_c +MD net/minecraft/client/gui/FontRenderer readGlyphSizes ()V func_98306_d +MD net/minecraft/client/gui/FontRenderer isFormatSpecial (C)Z func_78270_c +MD net/minecraft/client/gui/FontRenderer trimStringNewline (Ljava/lang/String;)Ljava/lang/String; func_78273_d +MD net/minecraft/client/gui/FontRenderer wrapFormattedStringToWidth (Ljava/lang/String;I)Ljava/lang/String; func_78280_d +MD net/minecraft/client/gui/FontRenderer resetStyles ()V func_78265_b +MD net/minecraft/client/gui/FontRenderer sizeStringToWidth (Ljava/lang/String;I)I func_78259_e +MD net/minecraft/client/gui/GuiIngame setDefaultTitlesTimes ()V func_175177_a +MD net/minecraft/client/gui/GuiIngame renderGameOverlay (F)V func_175180_a +MD net/minecraft/client/gui/GuiIngame renderVignette (FLnet/minecraft/client/gui/ScaledResolution;)V func_180480_a +MD net/minecraft/client/gui/GuiIngame renderHotbarItem (IIIFLnet/minecraft/entity/player/EntityPlayer;)V func_175184_a +MD net/minecraft/client/gui/GuiIngame renderScoreboard (Lnet/minecraft/scoreboard/ScoreObjective;Lnet/minecraft/client/gui/ScaledResolution;)V func_180475_a +MD net/minecraft/client/gui/GuiIngame renderSelectedItem (Lnet/minecraft/client/gui/ScaledResolution;)V func_181551_a +MD net/minecraft/client/gui/GuiIngame renderTooltip (Lnet/minecraft/client/gui/ScaledResolution;F)V func_180479_a +MD net/minecraft/client/gui/GuiIngame renderHorseJumpBar (Lnet/minecraft/client/gui/ScaledResolution;I)V func_175186_a +MD net/minecraft/client/gui/GuiIngame setRecordPlaying (Lnet/minecraft/util/IChatComponent;Z)V func_175188_a +MD net/minecraft/client/gui/GuiIngame setRecordPlayingMessage (Ljava/lang/String;)V func_73833_a +MD net/minecraft/client/gui/GuiIngame displayTitle (Ljava/lang/String;Ljava/lang/String;III)V func_175178_a +MD net/minecraft/client/gui/GuiIngame setRecordPlaying (Ljava/lang/String;Z)V func_110326_a +MD net/minecraft/client/gui/GuiIngame showCrosshair ()Z func_175183_b +MD net/minecraft/client/gui/GuiIngame renderPortal (FLnet/minecraft/client/gui/ScaledResolution;)V func_180474_b +MD net/minecraft/client/gui/GuiIngame renderDemo (Lnet/minecraft/client/gui/ScaledResolution;)V func_175185_b +MD net/minecraft/client/gui/GuiIngame renderExpBar (Lnet/minecraft/client/gui/ScaledResolution;I)V func_175176_b +MD net/minecraft/client/gui/GuiIngame updateTick ()V func_73831_a +MD net/minecraft/client/gui/GuiIngame renderStreamIndicator (Lnet/minecraft/client/gui/ScaledResolution;)V func_180478_c +MD net/minecraft/client/gui/GuiIngame getChatGUI ()Lnet/minecraft/client/gui/GuiNewChat; func_146158_b +MD net/minecraft/client/gui/GuiIngame renderPlayerStats (Lnet/minecraft/client/gui/ScaledResolution;)V func_180477_d +MD net/minecraft/client/gui/GuiIngame getUpdateCounter ()I func_73834_c +MD net/minecraft/client/gui/GuiIngame renderPumpkinOverlay (Lnet/minecraft/client/gui/ScaledResolution;)V func_180476_e +MD net/minecraft/client/gui/GuiIngame getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; func_175179_f +MD net/minecraft/client/gui/GuiIngame getSpectatorGui ()Lnet/minecraft/client/gui/GuiSpectator; func_175187_g +MD net/minecraft/client/gui/GuiIngame getTabList ()Lnet/minecraft/client/gui/GuiPlayerTabOverlay; func_175181_h +MD net/minecraft/client/gui/GuiIngame resetPlayersOverlayFooterHeader ()V func_181029_i +MD net/minecraft/client/gui/GuiIngame renderBossHealth ()V func_73828_d +MD net/minecraft/client/gui/GuiIngame$1 apply (Lnet/minecraft/scoreboard/Score;)Z apply +MD net/minecraft/client/gui/GuiIngame$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/Gui drawTexturedModalRect (FFIIII)V func_175174_a +MD net/minecraft/client/gui/Gui drawModalRectWithCustomSizedTexture (IIFFIIFF)V func_146110_a +MD net/minecraft/client/gui/Gui drawScaledCustomSizeModalRect (IIFFIIIIFF)V func_152125_a +MD net/minecraft/client/gui/Gui drawHorizontalLine (IIII)V func_73730_a +MD net/minecraft/client/gui/Gui drawRect (IIIII)V func_73734_a +MD net/minecraft/client/gui/Gui drawGradientRect (IIIIII)V func_73733_a +MD net/minecraft/client/gui/Gui drawTexturedModalRect (IILnet/minecraft/client/renderer/texture/TextureAtlasSprite;II)V func_175175_a +MD net/minecraft/client/gui/Gui drawCenteredString (Lnet/minecraft/client/gui/FontRenderer;Ljava/lang/String;III)V func_73732_a +MD net/minecraft/client/gui/Gui drawVerticalLine (IIII)V func_73728_b +MD net/minecraft/client/gui/Gui drawTexturedModalRect (IIIIII)V func_73729_b +MD net/minecraft/client/gui/Gui drawString (Lnet/minecraft/client/gui/FontRenderer;Ljava/lang/String;III)V func_73731_b +MD net/minecraft/client/gui/MapItemRenderer clearLoadedMaps ()V func_148249_a +MD net/minecraft/client/gui/MapItemRenderer updateMapTexture (Lnet/minecraft/world/storage/MapData;)V func_148246_a +MD net/minecraft/client/gui/MapItemRenderer renderMap (Lnet/minecraft/world/storage/MapData;Z)V func_148250_a +MD net/minecraft/client/gui/MapItemRenderer access$400 (Lnet/minecraft/client/gui/MapItemRenderer;)Lnet/minecraft/client/renderer/texture/TextureManager; access$400 +MD net/minecraft/client/gui/MapItemRenderer access$500 ()Lnet/minecraft/util/ResourceLocation; access$500 +MD net/minecraft/client/gui/MapItemRenderer getMapRendererInstance (Lnet/minecraft/world/storage/MapData;)Lnet/minecraft/client/gui/MapItemRenderer$Instance; func_148248_b +MD net/minecraft/client/gui/MapItemRenderer$Instance updateMapTexture ()V func_148236_a +MD net/minecraft/client/gui/MapItemRenderer$Instance access$000 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;)V access$000 +MD net/minecraft/client/gui/MapItemRenderer$Instance access$100 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;Z)V access$100 +MD net/minecraft/client/gui/MapItemRenderer$Instance render (Z)V func_148237_a +MD net/minecraft/client/gui/MapItemRenderer$Instance access$300 (Lnet/minecraft/client/gui/MapItemRenderer$Instance;)Lnet/minecraft/util/ResourceLocation; access$300 +MD net/minecraft/client/gui/ScaledResolution getScaledWidth ()I func_78326_a +MD net/minecraft/client/gui/ScaledResolution getScaledHeight ()I func_78328_b +MD net/minecraft/client/gui/ScaledResolution getScaledWidth_double ()D func_78327_c +MD net/minecraft/client/gui/ScaledResolution getScaledHeight_double ()D func_78324_d +MD net/minecraft/client/gui/ScaledResolution getScaleFactor ()I func_78325_e +MD net/minecraft/client/gui/GuiButton isMouseOver ()Z func_146115_a +MD net/minecraft/client/gui/GuiButton setWidth (I)V func_175211_a +MD net/minecraft/client/gui/GuiButton mouseReleased (II)V func_146118_a +MD net/minecraft/client/gui/GuiButton drawButton (Lnet/minecraft/client/Minecraft;II)V func_146112_a +MD net/minecraft/client/gui/GuiButton playPressSound (Lnet/minecraft/client/audio/SoundHandler;)V func_146113_a +MD net/minecraft/client/gui/GuiButton getHoverState (Z)I func_146114_a +MD net/minecraft/client/gui/GuiButton getButtonWidth ()I func_146117_b +MD net/minecraft/client/gui/GuiButton drawButtonForegroundLayer (II)V func_146111_b +MD net/minecraft/client/gui/GuiButton mouseDragged (Lnet/minecraft/client/Minecraft;II)V func_146119_b +MD net/minecraft/client/gui/GuiButton mousePressed (Lnet/minecraft/client/Minecraft;II)Z func_146116_c +MD net/minecraft/client/gui/GuiNewChat clearChatMessages ()V func_146231_a +MD net/minecraft/client/gui/GuiNewChat calculateChatboxWidth (F)I func_146233_a +MD net/minecraft/client/gui/GuiNewChat drawChat (I)V func_146230_a +MD net/minecraft/client/gui/GuiNewChat getChatComponent (II)Lnet/minecraft/util/IChatComponent; func_146236_a +MD net/minecraft/client/gui/GuiNewChat printChatMessage (Lnet/minecraft/util/IChatComponent;)V func_146227_a +MD net/minecraft/client/gui/GuiNewChat printChatMessageWithOptionalDeletion (Lnet/minecraft/util/IChatComponent;I)V func_146234_a +MD net/minecraft/client/gui/GuiNewChat setChatLine (Lnet/minecraft/util/IChatComponent;IIZ)V func_146237_a +MD net/minecraft/client/gui/GuiNewChat addToSentMessages (Ljava/lang/String;)V func_146239_a +MD net/minecraft/client/gui/GuiNewChat refreshChat ()V func_146245_b +MD net/minecraft/client/gui/GuiNewChat calculateChatboxHeight (F)I func_146243_b +MD net/minecraft/client/gui/GuiNewChat scroll (I)V func_146229_b +MD net/minecraft/client/gui/GuiNewChat getSentMessages ()Ljava/util/List; func_146238_c +MD net/minecraft/client/gui/GuiNewChat deleteChatLine (I)V func_146242_c +MD net/minecraft/client/gui/GuiNewChat resetScroll ()V func_146240_d +MD net/minecraft/client/gui/GuiNewChat getChatOpen ()Z func_146241_e +MD net/minecraft/client/gui/GuiNewChat getChatWidth ()I func_146228_f +MD net/minecraft/client/gui/GuiNewChat getChatHeight ()I func_146246_g +MD net/minecraft/client/gui/GuiNewChat getChatScale ()F func_146244_h +MD net/minecraft/client/gui/GuiNewChat getLineCount ()I func_146232_i +MD net/minecraft/client/gui/GuiUtilRenderComponents splitText (Lnet/minecraft/util/IChatComponent;ILnet/minecraft/client/gui/FontRenderer;ZZ)Ljava/util/List; func_178908_a +MD net/minecraft/client/gui/GuiUtilRenderComponents func_178909_a (Ljava/lang/String;Z)Ljava/lang/String; func_178909_a +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfoLeft ()V func_180798_a +MD net/minecraft/client/gui/GuiOverlayDebug blendColors (IIF)I func_181553_a +MD net/minecraft/client/gui/GuiOverlayDebug bytesToMb (J)J func_175240_a +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfo (Lnet/minecraft/client/gui/ScaledResolution;)V func_175237_a +MD net/minecraft/client/gui/GuiOverlayDebug call ()Ljava/util/List; call +MD net/minecraft/client/gui/GuiOverlayDebug renderDebugInfoRight (Lnet/minecraft/client/gui/ScaledResolution;)V func_175239_b +MD net/minecraft/client/gui/GuiOverlayDebug getDebugInfoRight ()Ljava/util/List; func_175238_c +MD net/minecraft/client/gui/GuiOverlayDebug getFrameColor (IIII)I func_181552_c +MD net/minecraft/client/gui/GuiOverlayDebug isReducedDebug ()Z func_175236_d +MD net/minecraft/client/gui/GuiOverlayDebug renderLagometer ()V func_181554_e +MD net/minecraft/client/gui/GuiTextField updateCursorCounter ()V func_146178_a +MD net/minecraft/client/gui/GuiTextField textboxKeyTyped (CI)Z func_146201_a +MD net/minecraft/client/gui/GuiTextField deleteWords (I)V func_146177_a +MD net/minecraft/client/gui/GuiTextField getNthWordFromPos (II)I func_146183_a +MD net/minecraft/client/gui/GuiTextField mouseClicked (III)V func_146192_a +MD net/minecraft/client/gui/GuiTextField func_146197_a (IIZ)I func_146197_a +MD net/minecraft/client/gui/GuiTextField func_175207_a (Lnet/minecraft/client/gui/GuiPageButtonList$GuiResponder;)V func_175207_a +MD net/minecraft/client/gui/GuiTextField setValidator (Lcom/google/common/base/Predicate;)V func_175205_a +MD net/minecraft/client/gui/GuiTextField setText (Ljava/lang/String;)V func_146180_a +MD net/minecraft/client/gui/GuiTextField setEnableBackgroundDrawing (Z)V func_146185_a +MD net/minecraft/client/gui/GuiTextField getText ()Ljava/lang/String; func_146179_b +MD net/minecraft/client/gui/GuiTextField deleteFromCursor (I)V func_146175_b +MD net/minecraft/client/gui/GuiTextField writeText (Ljava/lang/String;)V func_146191_b +MD net/minecraft/client/gui/GuiTextField setFocused (Z)V func_146195_b +MD net/minecraft/client/gui/GuiTextField getSelectedText ()Ljava/lang/String; func_146207_c +MD net/minecraft/client/gui/GuiTextField getNthWordFromCursor (I)I func_146187_c +MD net/minecraft/client/gui/GuiTextField drawCursorVertical (IIII)V func_146188_c +MD net/minecraft/client/gui/GuiTextField setEnabled (Z)V func_146184_c +MD net/minecraft/client/gui/GuiTextField getId ()I func_175206_d +MD net/minecraft/client/gui/GuiTextField moveCursorBy (I)V func_146182_d +MD net/minecraft/client/gui/GuiTextField setCanLoseFocus (Z)V func_146205_d +MD net/minecraft/client/gui/GuiTextField setCursorPositionZero ()V func_146196_d +MD net/minecraft/client/gui/GuiTextField setCursorPosition (I)V func_146190_e +MD net/minecraft/client/gui/GuiTextField setVisible (Z)V func_146189_e +MD net/minecraft/client/gui/GuiTextField setCursorPositionEnd ()V func_146202_e +MD net/minecraft/client/gui/GuiTextField setMaxStringLength (I)V func_146203_f +MD net/minecraft/client/gui/GuiTextField drawTextBox ()V func_146194_f +MD net/minecraft/client/gui/GuiTextField setTextColor (I)V func_146193_g +MD net/minecraft/client/gui/GuiTextField getMaxStringLength ()I func_146208_g +MD net/minecraft/client/gui/GuiTextField setDisabledTextColour (I)V func_146204_h +MD net/minecraft/client/gui/GuiTextField getCursorPosition ()I func_146198_h +MD net/minecraft/client/gui/GuiTextField setSelectionPos (I)V func_146199_i +MD net/minecraft/client/gui/GuiTextField getEnableBackgroundDrawing ()Z func_146181_i +MD net/minecraft/client/gui/GuiTextField isFocused ()Z func_146206_l +MD net/minecraft/client/gui/GuiTextField getSelectionEnd ()I func_146186_n +MD net/minecraft/client/gui/GuiTextField getWidth ()I func_146200_o +MD net/minecraft/client/gui/GuiTextField getVisible ()Z func_146176_q +MD net/minecraft/client/gui/GuiSlider func_175219_a (F)V func_175219_a +MD net/minecraft/client/gui/GuiSlider func_175218_a (FZ)V func_175218_a +MD net/minecraft/client/gui/GuiSlider func_175220_c ()F func_175220_c +MD net/minecraft/client/gui/GuiSlider func_175217_d ()F func_175217_d +MD net/minecraft/client/gui/GuiSlider getDisplayString ()Ljava/lang/String; func_175221_e +MD net/minecraft/client/gui/GuiSlider$FormatHelper getText (ILjava/lang/String;F)Ljava/lang/String; func_175318_a +MD net/minecraft/client/gui/GuiLabel setCentered ()Lnet/minecraft/client/gui/GuiLabel; func_175203_a +MD net/minecraft/client/gui/GuiLabel drawLabel (Lnet/minecraft/client/Minecraft;II)V func_146159_a +MD net/minecraft/client/gui/GuiLabel func_175202_a (Ljava/lang/String;)V func_175202_a +MD net/minecraft/client/gui/GuiLabel drawLabelBackground (Lnet/minecraft/client/Minecraft;II)V func_146160_b +MD net/minecraft/client/gui/GuiListButton func_175212_b (Z)V func_175212_b +MD net/minecraft/client/gui/GuiListButton buildDisplayString ()Ljava/lang/String; func_175213_c +MD net/minecraft/client/gui/GuiLockIconButton func_175229_b (Z)V func_175229_b +MD net/minecraft/client/gui/GuiLockIconButton func_175230_c ()Z func_175230_c +MD net/minecraft/client/gui/GuiLockIconButton$Icon func_178910_a ()I func_178910_a +MD net/minecraft/client/gui/GuiLockIconButton$Icon func_178912_b ()I func_178912_b +MD net/minecraft/client/gui/GuiLockIconButton$Icon valueOf (Ljava/lang/String;)Lnet/minecraft/client/gui/GuiLockIconButton$Icon; valueOf +MD net/minecraft/client/gui/GuiLockIconButton$Icon values ()[Lnet/minecraft/client/gui/GuiLockIconButton$Icon; values +MD net/minecraft/client/gui/GuiListExtended getListEntry (I)Lnet/minecraft/client/gui/GuiListExtended$IGuiListEntry; func_148180_b +MD net/minecraft/client/gui/GuiListExtended mouseClicked (III)Z func_148179_a +MD net/minecraft/client/gui/GuiListExtended mouseReleased (III)Z func_148181_b +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry setSelected (III)V func_178011_a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry mousePressed (IIIIII)Z func_148278_a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry drawEntry (IIIIIIIZ)V func_180790_a +MD net/minecraft/client/gui/GuiListExtended$IGuiListEntry mouseReleased (IIIIII)V func_148277_b +MD net/minecraft/client/gui/GuiOptionButton returnEnumOptions ()Lnet/minecraft/client/settings/GameSettings$Options; func_146136_c +MD net/minecraft/client/gui/GuiOptionsRowList func_148182_a (Lnet/minecraft/client/Minecraft;IILnet/minecraft/client/settings/GameSettings$Options;)Lnet/minecraft/client/gui/GuiButton; func_148182_a +MD net/minecraft/client/gui/GuiOptionsRowList getListEntry (I)Lnet/minecraft/client/gui/GuiOptionsRowList$Row; func_148180_b +MD net/minecraft/client/gui/GuiPageButtonList func_178062_a (CI)V func_178062_a +MD net/minecraft/client/gui/GuiPageButtonList func_178065_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry;)Lnet/minecraft/client/gui/GuiListButton; func_178065_a +MD net/minecraft/client/gui/GuiPageButtonList func_178068_a (IILnet/minecraft/client/gui/GuiPageButtonList$EditBoxEntry;)Lnet/minecraft/client/gui/GuiTextField; func_178068_a +MD net/minecraft/client/gui/GuiPageButtonList func_178063_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiLabelEntry;Z)Lnet/minecraft/client/gui/GuiLabel; func_178063_a +MD net/minecraft/client/gui/GuiPageButtonList func_178067_a (IILnet/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry;)Lnet/minecraft/client/gui/GuiSlider; func_178067_a +MD net/minecraft/client/gui/GuiPageButtonList func_178066_a (Lnet/minecraft/client/gui/Gui;Z)V func_178066_a +MD net/minecraft/client/gui/GuiPageButtonList func_178058_a (Lnet/minecraft/client/gui/GuiPageButtonList$GuiListEntry;IZ)Lnet/minecraft/client/gui/Gui; func_178058_a +MD net/minecraft/client/gui/GuiPageButtonList func_181155_a (Z)V func_181155_a +MD net/minecraft/client/gui/GuiPageButtonList func_181156_c (I)V func_181156_c +MD net/minecraft/client/gui/GuiPageButtonList func_178061_c (I)Lnet/minecraft/client/gui/Gui; func_178061_c +MD net/minecraft/client/gui/GuiPageButtonList func_178059_e ()I func_178059_e +MD net/minecraft/client/gui/GuiPageButtonList getListEntry (I)Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry; func_148180_b +MD net/minecraft/client/gui/GuiPageButtonList func_178060_e (II)V func_178060_e +MD net/minecraft/client/gui/GuiPageButtonList func_178057_f ()I func_178057_f +MD net/minecraft/client/gui/GuiPageButtonList func_178056_g ()Lnet/minecraft/client/gui/Gui; func_178056_g +MD net/minecraft/client/gui/GuiPageButtonList func_178071_h ()V func_178071_h +MD net/minecraft/client/gui/GuiPageButtonList func_178064_i ()V func_178064_i +MD net/minecraft/client/gui/GuiPageButtonList func_178069_s ()V func_178069_s +MD net/minecraft/client/gui/GuiPageButtonList func_178055_t ()V func_178055_t +MD net/minecraft/client/gui/GuiPageButtonList$GuiButtonEntry func_178940_a ()Z func_178940_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder onTick (IF)V func_175320_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder func_175319_a (ILjava/lang/String;)V func_175319_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiResponder func_175321_a (IZ)V func_175321_a +MD net/minecraft/client/gui/GuiPageButtonList$EditBoxEntry func_178950_a ()Lcom/google/common/base/Predicate; func_178950_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178022_a ()Lnet/minecraft/client/gui/Gui; func_178022_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178026_a (Lnet/minecraft/client/gui/Gui;III)Z func_178026_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178017_a (Lnet/minecraft/client/gui/Gui;IIIZ)V func_178017_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178023_a (Lnet/minecraft/client/gui/GuiButton;III)Z func_178023_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178024_a (Lnet/minecraft/client/gui/GuiButton;IIIZ)V func_178024_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178018_a (Lnet/minecraft/client/gui/GuiTextField;III)V func_178018_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178027_a (Lnet/minecraft/client/gui/GuiTextField;IZ)V func_178027_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178025_a (Lnet/minecraft/client/gui/GuiLabel;IIIZ)V func_178025_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$000 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; access$000 +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178021_b ()Lnet/minecraft/client/gui/Gui; func_178021_b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178016_b (Lnet/minecraft/client/gui/Gui;III)V func_178016_b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry func_178019_b (Lnet/minecraft/client/gui/GuiButton;III)V func_178019_b +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$100 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; access$100 +MD net/minecraft/client/gui/GuiPageButtonList$GuiEntry access$200 (Lnet/minecraft/client/gui/GuiPageButtonList$GuiEntry;)Lnet/minecraft/client/gui/Gui; access$200 +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178935_b ()I func_178935_b +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178936_c ()Ljava/lang/String; func_178936_c +MD net/minecraft/client/gui/GuiPageButtonList$GuiListEntry func_178934_d ()Z func_178934_d +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178945_a ()Lnet/minecraft/client/gui/GuiSlider$FormatHelper; func_178945_a +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178943_e ()F func_178943_e +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178944_f ()F func_178944_f +MD net/minecraft/client/gui/GuiPageButtonList$GuiSlideEntry func_178942_g ()F func_178942_g +MD net/minecraft/client/gui/GuiPlayerTabOverlay resetFooterHeader ()V func_181030_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay drawPing (IIILnet/minecraft/client/network/NetworkPlayerInfo;)V func_175245_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay renderPlayerlist (ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreObjective;)V func_175249_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay drawScoreboardValues (Lnet/minecraft/scoreboard/ScoreObjective;ILjava/lang/String;IILnet/minecraft/client/network/NetworkPlayerInfo;)V func_175247_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay getPlayerName (Lnet/minecraft/client/network/NetworkPlayerInfo;)Ljava/lang/String; func_175243_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay setFooter (Lnet/minecraft/util/IChatComponent;)V func_175248_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay updatePlayerList (Z)V func_175246_a +MD net/minecraft/client/gui/GuiPlayerTabOverlay setHeader (Lnet/minecraft/util/IChatComponent;)V func_175244_b +MD net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator compare (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/client/network/NetworkPlayerInfo;)I compare +MD net/minecraft/client/gui/GuiPlayerTabOverlay$PlayerComparator compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/GuiSlot drawBackground ()V func_148123_a +MD net/minecraft/client/gui/GuiSlot isSelected (I)Z func_148131_a +MD net/minecraft/client/gui/GuiSlot func_148132_a (II)V func_148132_a +MD net/minecraft/client/gui/GuiSlot drawScreen (IIF)V func_148128_a +MD net/minecraft/client/gui/GuiSlot func_178040_a (III)V func_178040_a +MD net/minecraft/client/gui/GuiSlot setDimensions (IIII)V func_148122_a +MD net/minecraft/client/gui/GuiSlot drawSlot (IIIIII)V func_180791_a +MD net/minecraft/client/gui/GuiSlot drawListHeader (IILnet/minecraft/client/renderer/Tessellator;)V func_148129_a +MD net/minecraft/client/gui/GuiSlot elementClicked (IZII)V func_148144_a +MD net/minecraft/client/gui/GuiSlot actionPerformed (Lnet/minecraft/client/gui/GuiButton;)V func_148147_a +MD net/minecraft/client/gui/GuiSlot setHasListHeader (ZI)V func_148133_a +MD net/minecraft/client/gui/GuiSlot getSize ()I func_148127_b +MD net/minecraft/client/gui/GuiSlot func_148142_b (II)V func_148142_b +MD net/minecraft/client/gui/GuiSlot drawSelectionBox (IIII)V func_148120_b +MD net/minecraft/client/gui/GuiSlot setShowSelectionBox (Z)V func_148130_a +MD net/minecraft/client/gui/GuiSlot getListWidth ()I func_148139_c +MD net/minecraft/client/gui/GuiSlot getSlotIndexFromScreenCoords (II)I func_148124_c +MD net/minecraft/client/gui/GuiSlot overlayBackground (IIII)V func_148136_c +MD net/minecraft/client/gui/GuiSlot getScrollBarX ()I func_148137_d +MD net/minecraft/client/gui/GuiSlot registerScrollButtons (II)V func_148134_d +MD net/minecraft/client/gui/GuiSlot setEnabled (Z)V func_148143_b +MD net/minecraft/client/gui/GuiSlot isMouseYWithinSlotBounds (I)Z func_148141_e +MD net/minecraft/client/gui/GuiSlot scrollBy (I)V func_148145_f +MD net/minecraft/client/gui/GuiSlot setSlotXBoundsFromLeft (I)V func_148140_g +MD net/minecraft/client/gui/GuiSlot getContentHeight ()I func_148138_e +MD net/minecraft/client/gui/GuiSlot bindAmountScrolled ()V func_148121_k +MD net/minecraft/client/gui/GuiSlot func_148135_f ()I func_148135_f +MD net/minecraft/client/gui/GuiSlot getAmountScrolled ()I func_148148_g +MD net/minecraft/client/gui/GuiSlot handleMouseInput ()V func_178039_p +MD net/minecraft/client/gui/GuiSlot getEnabled ()Z func_148125_i +MD net/minecraft/client/gui/GuiSlot getSlotHeight ()I func_148146_j +MD net/minecraft/client/gui/GuiStreamIndicator updateStreamAlpha ()V func_152439_a +MD net/minecraft/client/gui/GuiStreamIndicator render (II)V func_152437_a +MD net/minecraft/client/gui/GuiStreamIndicator render (IIII)V func_152436_a +MD net/minecraft/client/gui/GuiStreamIndicator func_152440_b ()I func_152440_b +MD net/minecraft/client/gui/GuiStreamIndicator func_152438_c ()I func_152438_c +MD net/minecraft/client/gui/GuiSpectator func_175262_a ()Z func_175262_a +MD net/minecraft/client/gui/GuiSpectator func_175260_a (I)V func_175260_a +MD net/minecraft/client/gui/GuiSpectator func_175266_a (IIFFLnet/minecraft/client/gui/spectator/ISpectatorMenuObject;)V func_175266_a +MD net/minecraft/client/gui/GuiSpectator renderSelectedItem (Lnet/minecraft/client/gui/ScaledResolution;)V func_175263_a +MD net/minecraft/client/gui/GuiSpectator renderTooltip (Lnet/minecraft/client/gui/ScaledResolution;F)V func_175264_a +MD net/minecraft/client/gui/GuiSpectator func_175258_a (Lnet/minecraft/client/gui/ScaledResolution;FIFLnet/minecraft/client/gui/spectator/categories/SpectatorDetails;)V func_175258_a +MD net/minecraft/client/gui/GuiSpectator func_175261_b ()V func_175261_b +MD net/minecraft/client/gui/GuiSpectator func_175259_b (I)V func_175259_b +MD net/minecraft/client/gui/GuiSpectator func_175265_c ()F func_175265_c +MD net/minecraft/client/gui/GuiButtonRealmsProxy setText (Ljava/lang/String;)V func_154311_a +MD net/minecraft/client/gui/GuiButtonRealmsProxy setEnabled (Z)V func_154313_b +MD net/minecraft/client/gui/GuiButtonRealmsProxy getId ()I func_154314_d +MD net/minecraft/client/gui/GuiButtonRealmsProxy func_154312_c (Z)I func_154312_c +MD net/minecraft/client/gui/GuiButtonRealmsProxy getEnabled ()Z func_154315_e +MD net/minecraft/client/gui/GuiButtonRealmsProxy getPositionY ()I func_154316_f +MD net/minecraft/client/gui/GuiButtonRealmsProxy getRealmsButton ()Lnet/minecraft/realms/RealmsButton; func_154317_g +MD net/minecraft/client/gui/GuiButtonRealmsProxy getHeight ()I func_175232_g +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178043_a (IIILnet/minecraft/realms/Tezzelator;)V func_178043_a +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178044_e ()I func_178044_e +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178042_f ()I func_178042_f +MD net/minecraft/client/gui/GuiClickableScrolledSelectionListProxy func_178045_g ()I func_178045_g +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154321_a ()Lnet/minecraft/realms/RealmsScreen; func_154321_a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154323_a (Ljava/lang/String;I)Ljava/util/List; func_154323_a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154325_a (Ljava/lang/String;III)V func_154325_a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154322_b (Ljava/lang/String;IIIZ)V func_154322_b +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154327_a (Lnet/minecraft/realms/RealmsButton;)V func_154327_a +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154319_c (Ljava/lang/String;III)V func_154319_c +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154328_b (Lnet/minecraft/realms/RealmsButton;)V func_154328_b +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154326_c (Ljava/lang/String;)I func_154326_c +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154329_h ()I func_154329_h +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154324_i ()V func_154324_i +MD net/minecraft/client/gui/GuiScreenRealmsProxy func_154320_j ()Ljava/util/List; func_154320_j +MD net/minecraft/client/gui/GuiSlotRealmsProxy getWidth ()I func_154338_k +MD net/minecraft/client/gui/GuiSlotRealmsProxy getMouseY ()I func_154339_l +MD net/minecraft/client/gui/GuiSlotRealmsProxy getMouseX ()I func_154337_m +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getWidth ()I func_178048_e +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getMouseY ()I func_178047_f +MD net/minecraft/client/gui/GuiSimpleScrolledSelectionListProxy getMouseX ()I func_178049_g +MD net/minecraft/client/gui/GuiChat autocompletePlayerNames ()V func_146404_p_ +MD net/minecraft/client/gui/GuiChat sendAutocompleteRequest (Ljava/lang/String;Ljava/lang/String;)V func_146405_a +MD net/minecraft/client/gui/GuiChat onAutocompleteResponse ([Ljava/lang/String;)V func_146406_a +MD net/minecraft/client/gui/GuiChat getSentHistory (I)V func_146402_a +MD net/minecraft/client/gui/GuiConfirmOpenLink copyLinkToClipboard ()V func_146359_e +MD net/minecraft/client/gui/GuiConfirmOpenLink disableSecurityWarning ()V func_146358_g +MD net/minecraft/client/gui/GuiYesNoCallback confirmClicked (ZI)V func_73878_a +MD net/minecraft/client/gui/GuiYesNo setButtonDelay (I)V func_146350_a +MD net/minecraft/client/multiplayer/GuiConnecting access$300 ()Lorg/apache/logging/log4j/Logger; access$300 +MD net/minecraft/client/multiplayer/GuiConnecting access$000 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Z access$000 +MD net/minecraft/client/multiplayer/GuiConnecting access$102 (Lnet/minecraft/client/multiplayer/GuiConnecting;Lnet/minecraft/network/NetworkManager;)Lnet/minecraft/network/NetworkManager; access$102 +MD net/minecraft/client/multiplayer/GuiConnecting connect (Ljava/lang/String;I)V func_146367_a +MD net/minecraft/client/multiplayer/GuiConnecting access$100 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Lnet/minecraft/network/NetworkManager; access$100 +MD net/minecraft/client/multiplayer/GuiConnecting access$200 (Lnet/minecraft/client/multiplayer/GuiConnecting;)Lnet/minecraft/client/gui/GuiScreen; access$200 +MD net/minecraft/client/multiplayer/GuiConnecting$1 run ()V run +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146384_e ()Ljava/lang/String; func_146384_e +MD net/minecraft/client/gui/GuiCreateFlatWorld access$000 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F access$000 +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146383_a (Ljava/lang/String;)V func_146383_a +MD net/minecraft/client/gui/GuiCreateFlatWorld access$100 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F access$100 +MD net/minecraft/client/gui/GuiCreateFlatWorld access$200 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F access$200 +MD net/minecraft/client/gui/GuiCreateFlatWorld access$300 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)F access$300 +MD net/minecraft/client/gui/GuiCreateFlatWorld access$400 (Lnet/minecraft/client/gui/GuiCreateFlatWorld;)Lnet/minecraft/world/gen/FlatGeneratorInfo; access$400 +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146375_g ()V func_146375_g +MD net/minecraft/client/gui/GuiCreateFlatWorld func_146382_i ()Z func_146382_i +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148225_a (IILnet/minecraft/item/ItemStack;)V func_148225_a +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148224_c (IIII)V func_148224_c +MD net/minecraft/client/gui/GuiCreateFlatWorld$Details func_148226_e (II)V func_148226_e +MD net/minecraft/client/gui/GuiCreateWorld calcSaveDirName ()V func_146314_g +MD net/minecraft/client/gui/GuiCreateWorld recreateFromExistingWorld (Lnet/minecraft/world/storage/WorldInfo;)V func_146318_a +MD net/minecraft/client/gui/GuiCreateWorld getUncollidingSaveDirName (Lnet/minecraft/world/storage/ISaveFormat;Ljava/lang/String;)Ljava/lang/String; func_146317_a +MD net/minecraft/client/gui/GuiCreateWorld showMoreWorldOptions (Z)V func_146316_a +MD net/minecraft/client/gui/GuiCreateWorld updateDisplayState ()V func_146319_h +MD net/minecraft/client/gui/GuiCreateWorld canSelectCurWorldType ()Z func_175299_g +MD net/minecraft/client/gui/GuiCreateWorld toggleMoreWorldOptions ()V func_146315_i +MD net/minecraft/client/gui/GuiScreenCustomizePresets func_175304_a ()V func_175304_a +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$100 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;)Lnet/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset; access$100 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$300 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V access$300 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$200 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;)Lnet/minecraft/client/gui/GuiTextField; access$200 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$400 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V access$400 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$500 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V access$500 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$600 (Lnet/minecraft/client/gui/GuiScreenCustomizePresets;IIII)V access$600 +MD net/minecraft/client/gui/GuiScreenCustomizePresets access$000 ()Ljava/util/List; access$000 +MD net/minecraft/client/gui/GuiScreenCustomizePresets func_175305_g ()Z func_175305_g +MD net/minecraft/client/gui/GuiScreenCustomizePresets$ListPreset func_178051_a (IILnet/minecraft/util/ResourceLocation;)V func_178051_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175323_a ()Ljava/lang/String; func_175323_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175327_a (F)V func_175327_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175324_a (Ljava/lang/String;)V func_175324_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_181031_a (Z)V func_181031_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175322_b (I)V func_175322_b +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175330_b (IF)Ljava/lang/String; func_175330_b +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175329_a (Z)V func_175329_a +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175325_f ()V func_175325_f +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175326_g ()V func_175326_g +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175331_h ()V func_175331_h +MD net/minecraft/client/gui/GuiCustomizeWorldScreen func_175328_i ()V func_175328_i +MD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 apply (Ljava/lang/String;)Z apply +MD net/minecraft/client/gui/GuiCustomizeWorldScreen$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/GuiScreenAddServer$1 apply (Ljava/lang/String;)Z apply +MD net/minecraft/client/gui/GuiScreenAddServer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/gui/GuiSleepMP wakeFromSleep ()V func_146418_g +MD net/minecraft/client/gui/GuiLanguage access$000 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/resources/LanguageManager; access$000 +MD net/minecraft/client/gui/GuiLanguage access$100 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/settings/GameSettings; access$100 +MD net/minecraft/client/gui/GuiLanguage access$200 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/gui/GuiOptionButton; access$200 +MD net/minecraft/client/gui/GuiLanguage access$300 (Lnet/minecraft/client/gui/GuiLanguage;)Lnet/minecraft/client/gui/GuiOptionButton; access$300 +MD net/minecraft/client/gui/GuiOptions func_175355_a (Lnet/minecraft/world/EnumDifficulty;)Ljava/lang/String; func_175355_a +MD net/minecraft/client/gui/GuiFlatPresets func_146426_g ()V func_146426_g +MD net/minecraft/client/gui/GuiFlatPresets access$000 (Lnet/minecraft/client/gui/GuiFlatPresets;)F access$000 +MD net/minecraft/client/gui/GuiFlatPresets func_175354_a (Ljava/lang/String;Lnet/minecraft/item/Item;ILnet/minecraft/world/biome/BiomeGenBase;Ljava/util/List;[Lnet/minecraft/world/gen/FlatLayerInfo;)V func_175354_a +MD net/minecraft/client/gui/GuiFlatPresets func_146421_a (Ljava/lang/String;Lnet/minecraft/item/Item;Lnet/minecraft/world/biome/BiomeGenBase;Ljava/util/List;[Lnet/minecraft/world/gen/FlatLayerInfo;)V func_146421_a +MD net/minecraft/client/gui/GuiFlatPresets func_146425_a (Ljava/lang/String;Lnet/minecraft/item/Item;Lnet/minecraft/world/biome/BiomeGenBase;[Lnet/minecraft/world/gen/FlatLayerInfo;)V func_146425_a +MD net/minecraft/client/gui/GuiFlatPresets access$100 (Lnet/minecraft/client/gui/GuiFlatPresets;)F access$100 +MD net/minecraft/client/gui/GuiFlatPresets access$200 (Lnet/minecraft/client/gui/GuiFlatPresets;)F access$200 +MD net/minecraft/client/gui/GuiFlatPresets access$300 (Lnet/minecraft/client/gui/GuiFlatPresets;)F access$300 +MD net/minecraft/client/gui/GuiFlatPresets access$500 (Lnet/minecraft/client/gui/GuiFlatPresets;)Lnet/minecraft/client/gui/GuiFlatPresets$ListSlot; access$500 +MD net/minecraft/client/gui/GuiFlatPresets access$400 ()Ljava/util/List; access$400 +MD net/minecraft/client/gui/GuiFlatPresets access$600 (Lnet/minecraft/client/gui/GuiFlatPresets;)Lnet/minecraft/client/gui/GuiTextField; access$600 +MD net/minecraft/client/gui/GuiFlatPresets func_146430_p ()Z func_146430_p +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_178054_a (IILnet/minecraft/item/Item;I)V func_178054_a +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_148171_c (IIII)V func_148171_c +MD net/minecraft/client/gui/GuiFlatPresets$ListSlot func_148173_e (II)V func_148173_e +MD net/minecraft/client/gui/GuiScreen keyTyped (CI)V func_73869_a +MD net/minecraft/client/gui/GuiScreen setGuiSize (II)V func_183500_a +MD net/minecraft/client/gui/GuiScreen drawScreen (IIF)V func_73863_a +MD net/minecraft/client/gui/GuiScreen mouseClicked (III)V func_73864_a +MD net/minecraft/client/gui/GuiScreen mouseClickMove (IIIJ)V func_146273_a +MD net/minecraft/client/gui/GuiScreen setWorldAndResolution (Lnet/minecraft/client/Minecraft;II)V func_146280_a +MD net/minecraft/client/gui/GuiScreen actionPerformed (Lnet/minecraft/client/gui/GuiButton;)V func_146284_a +MD net/minecraft/client/gui/GuiScreen handleComponentClick (Lnet/minecraft/util/IChatComponent;)Z func_175276_a +MD net/minecraft/client/gui/GuiScreen handleComponentHover (Lnet/minecraft/util/IChatComponent;II)V func_175272_a +MD net/minecraft/client/gui/GuiScreen drawCreativeTabHoveringText (Ljava/lang/String;II)V func_146279_a +MD net/minecraft/client/gui/GuiScreen setText (Ljava/lang/String;Z)V func_175274_a +MD net/minecraft/client/gui/GuiScreen openWebLink (Ljava/net/URI;)V func_175282_a +MD net/minecraft/client/gui/GuiScreen drawHoveringText (Ljava/util/List;II)V func_146283_a +MD net/minecraft/client/gui/GuiScreen renderToolTip (Lnet/minecraft/item/ItemStack;II)V func_146285_a +MD net/minecraft/client/gui/GuiScreen initGui ()V func_73866_w_ +MD net/minecraft/client/gui/GuiScreen mouseReleased (III)V func_146286_b +MD net/minecraft/client/gui/GuiScreen onResize (Lnet/minecraft/client/Minecraft;II)V func_175273_b +MD net/minecraft/client/gui/GuiScreen sendChatMessage (Ljava/lang/String;Z)V func_175281_b +MD net/minecraft/client/gui/GuiScreen drawWorldBackground (I)V func_146270_b +MD net/minecraft/client/gui/GuiScreen drawDefaultBackground ()V func_146276_q_ +MD net/minecraft/client/gui/GuiScreen drawBackground (I)V func_146278_c +MD net/minecraft/client/gui/GuiScreen doesGuiPauseGame ()Z func_73868_f +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlX (I)Z func_175277_d +MD net/minecraft/client/gui/GuiScreen updateScreen ()V func_73876_c +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlV (I)Z func_175279_e +MD net/minecraft/client/gui/GuiScreen setClipboardString (Ljava/lang/String;)V func_146275_d +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlC (I)Z func_175280_f +MD net/minecraft/client/gui/GuiScreen sendChatMessage (Ljava/lang/String;)V func_175275_f +MD net/minecraft/client/gui/GuiScreen isKeyComboCtrlA (I)Z func_175278_g +MD net/minecraft/client/gui/GuiScreen handleMouseInput ()V func_146274_d +MD net/minecraft/client/gui/GuiScreen handleKeyboardInput ()V func_146282_l +MD net/minecraft/client/gui/GuiScreen onGuiClosed ()V func_146281_b +MD net/minecraft/client/gui/GuiScreen getClipboardString ()Ljava/lang/String; func_146277_j +MD net/minecraft/client/gui/GuiScreen handleInput ()V func_146269_k +MD net/minecraft/client/gui/GuiScreen isCtrlKeyDown ()Z func_146271_m +MD net/minecraft/client/gui/GuiScreen isShiftKeyDown ()Z func_146272_n +MD net/minecraft/client/gui/GuiScreen isAltKeyDown ()Z func_175283_s +MD net/minecraft/client/gui/GuiSelectWorld addWorldSelectionButtons ()V func_146618_g +MD net/minecraft/client/gui/GuiSelectWorld makeDeleteWorldYesNo (Lnet/minecraft/client/gui/GuiYesNoCallback;Ljava/lang/String;I)Lnet/minecraft/client/gui/GuiYesNo; func_152129_a +MD net/minecraft/client/gui/GuiSelectWorld access$000 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/util/List; access$000 +MD net/minecraft/client/gui/GuiSelectWorld access$102 (Lnet/minecraft/client/gui/GuiSelectWorld;I)I access$102 +MD net/minecraft/client/gui/GuiSelectWorld func_146621_a (I)Ljava/lang/String; func_146621_a +MD net/minecraft/client/gui/GuiSelectWorld access$100 (Lnet/minecraft/client/gui/GuiSelectWorld;)I access$100 +MD net/minecraft/client/gui/GuiSelectWorld access$200 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; access$200 +MD net/minecraft/client/gui/GuiSelectWorld access$300 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; access$300 +MD net/minecraft/client/gui/GuiSelectWorld access$400 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; access$400 +MD net/minecraft/client/gui/GuiSelectWorld loadLevelList ()V func_146627_h +MD net/minecraft/client/gui/GuiSelectWorld access$500 (Lnet/minecraft/client/gui/GuiSelectWorld;)Lnet/minecraft/client/gui/GuiButton; access$500 +MD net/minecraft/client/gui/GuiSelectWorld access$600 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/lang/String; access$600 +MD net/minecraft/client/gui/GuiSelectWorld func_146614_d (I)Ljava/lang/String; func_146614_d +MD net/minecraft/client/gui/GuiSelectWorld access$700 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/text/DateFormat; access$700 +MD net/minecraft/client/gui/GuiSelectWorld func_146615_e (I)V func_146615_e +MD net/minecraft/client/gui/GuiSelectWorld access$800 (Lnet/minecraft/client/gui/GuiSelectWorld;)Ljava/lang/String; access$800 +MD net/minecraft/client/gui/GuiSelectWorld access$900 (Lnet/minecraft/client/gui/GuiSelectWorld;)[Ljava/lang/String; access$900 +MD net/minecraft/client/gui/GuiShareToLan func_146595_g ()V func_146595_g +MD net/minecraft/client/gui/GuiCustomizeSkin access$200 (Lnet/minecraft/client/gui/GuiCustomizeSkin;Lnet/minecraft/entity/player/EnumPlayerModelParts;)Ljava/lang/String; access$200 +MD net/minecraft/client/gui/GuiCustomizeSkin func_175358_a (Lnet/minecraft/entity/player/EnumPlayerModelParts;)Ljava/lang/String; func_175358_a +MD net/minecraft/client/gui/GuiCustomizeSkin$ButtonPart access$100 (Lnet/minecraft/client/gui/GuiCustomizeSkin$ButtonPart;)Lnet/minecraft/entity/player/EnumPlayerModelParts; access$100 +MD net/minecraft/client/gui/GuiSnooper access$000 (Lnet/minecraft/client/gui/GuiSnooper;)Ljava/util/List; access$000 +MD net/minecraft/client/gui/GuiSnooper access$100 (Lnet/minecraft/client/gui/GuiSnooper;)Ljava/util/List; access$100 +MD net/minecraft/client/gui/GuiScreenOptionsSounds access$000 (Lnet/minecraft/client/gui/GuiScreenOptionsSounds;)Lnet/minecraft/client/settings/GameSettings; access$000 +MD net/minecraft/client/gui/GuiScreenOptionsSounds getSoundVolume (Lnet/minecraft/client/audio/SoundCategory;)Ljava/lang/String; func_146504_a +MD net/minecraft/client/gui/GuiMainMenu func_183501_a ()Z func_183501_a +MD net/minecraft/client/gui/GuiMainMenu rotateAndBlurSkybox (F)V func_73968_a +MD net/minecraft/client/gui/GuiMainMenu addSingleplayerMultiplayerButtons (II)V func_73969_a +MD net/minecraft/client/gui/GuiMainMenu drawPanorama (IIF)V func_73970_b +MD net/minecraft/client/gui/GuiMainMenu addDemoButtons (II)V func_73972_b +MD net/minecraft/client/gui/GuiMainMenu renderSkybox (IIF)V func_73971_c +MD net/minecraft/client/gui/GuiMainMenu switchToRealms ()V func_140005_i +MD net/minecraft/client/gui/GuiWinGame sendRespawnPacket ()V func_146574_g +MD net/minecraft/client/gui/GuiWinGame drawWinGameScreen (IIF)V func_146575_b +MD net/minecraft/client/gui/achievement/GuiAchievement updateAchievementWindow ()V func_146254_a +MD net/minecraft/client/gui/achievement/GuiAchievement displayAchievement (Lnet/minecraft/stats/Achievement;)V func_146256_a +MD net/minecraft/client/gui/achievement/GuiAchievement clearAchievements ()V func_146257_b +MD net/minecraft/client/gui/achievement/GuiAchievement displayUnformattedAchievement (Lnet/minecraft/stats/Achievement;)V func_146255_b +MD net/minecraft/client/gui/achievement/GuiAchievement updateAchievementWindowScale ()V func_146258_c +MD net/minecraft/client/gui/achievement/GuiAchievements func_175371_a (Lnet/minecraft/block/Block;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_175371_a +MD net/minecraft/client/gui/achievement/GuiAchievements drawAchievementScreen (IIF)V func_146552_b +MD net/minecraft/client/gui/achievement/GuiAchievements drawTitle ()V func_146553_h +MD net/minecraft/client/gui/achievement/GuiStats drawStatsScreen (IILnet/minecraft/item/Item;)V func_146521_a +MD net/minecraft/client/gui/achievement/GuiStats access$000 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$000 +MD net/minecraft/client/gui/achievement/GuiStats access$400 (Lnet/minecraft/client/gui/achievement/GuiStats;IIII)V access$400 +MD net/minecraft/client/gui/achievement/GuiStats access$1000 (Lnet/minecraft/client/gui/achievement/GuiStats;IIIIII)V access$1000 +MD net/minecraft/client/gui/achievement/GuiStats access$1500 (Lnet/minecraft/client/gui/achievement/GuiStats;IILnet/minecraft/item/Item;)V access$1500 +MD net/minecraft/client/gui/achievement/GuiStats drawButtonBackground (II)V func_146531_b +MD net/minecraft/client/gui/achievement/GuiStats access$100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/stats/StatFileWriter; access$100 +MD net/minecraft/client/gui/achievement/GuiStats access$1300 (Lnet/minecraft/client/gui/achievement/GuiStats;IIIIII)V access$1300 +MD net/minecraft/client/gui/achievement/GuiStats drawSprite (IIII)V func_146527_c +MD net/minecraft/client/gui/achievement/GuiStats access$200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$200 +MD net/minecraft/client/gui/achievement/GuiStats access$300 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$300 +MD net/minecraft/client/gui/achievement/GuiStats access$500 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$500 +MD net/minecraft/client/gui/achievement/GuiStats func_175366_f ()V func_175366_f +MD net/minecraft/client/gui/achievement/GuiStats access$600 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$600 +MD net/minecraft/client/gui/achievement/GuiStats createButtons ()V func_146541_h +MD net/minecraft/client/gui/achievement/GuiStats access$700 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$700 +MD net/minecraft/client/gui/achievement/GuiStats access$800 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$800 +MD net/minecraft/client/gui/achievement/GuiStats access$900 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$900 +MD net/minecraft/client/gui/achievement/GuiStats access$1100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1100 +MD net/minecraft/client/gui/achievement/GuiStats access$1200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1200 +MD net/minecraft/client/gui/achievement/GuiStats access$1400 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1400 +MD net/minecraft/client/gui/achievement/GuiStats access$1600 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1600 +MD net/minecraft/client/gui/achievement/GuiStats access$1700 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1700 +MD net/minecraft/client/gui/achievement/GuiStats access$1800 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1800 +MD net/minecraft/client/gui/achievement/GuiStats access$1900 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$1900 +MD net/minecraft/client/gui/achievement/GuiStats access$2000 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$2000 +MD net/minecraft/client/gui/achievement/GuiStats access$2100 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$2100 +MD net/minecraft/client/gui/achievement/GuiStats access$2200 (Lnet/minecraft/client/gui/achievement/GuiStats;)Lnet/minecraft/client/gui/FontRenderer; access$2200 +MD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 compare (Lnet/minecraft/stats/StatCrafting;Lnet/minecraft/stats/StatCrafting;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$StatsBlock$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 compare (Lnet/minecraft/stats/StatCrafting;Lnet/minecraft/stats/StatCrafting;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$StatsItem$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148213_a (Lnet/minecraft/stats/StatCrafting;II)V func_148213_a +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148209_a (Lnet/minecraft/stats/StatBase;IIZ)V func_148209_a +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148210_b (I)Ljava/lang/String; func_148210_b +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148211_c (I)Lnet/minecraft/stats/StatCrafting; func_148211_c +MD net/minecraft/client/gui/achievement/GuiStats$Stats func_148212_h (I)V func_148212_h +MD net/minecraft/client/gui/IProgressMeter doneLoading ()V func_146509_g +MD net/minecraft/client/gui/GuiKeyBindingList access$100 (Lnet/minecraft/client/gui/GuiKeyBindingList;)Lnet/minecraft/client/Minecraft; access$100 +MD net/minecraft/client/gui/GuiKeyBindingList access$200 (Lnet/minecraft/client/gui/GuiKeyBindingList;)Lnet/minecraft/client/gui/GuiControls; access$200 +MD net/minecraft/client/gui/GuiKeyBindingList access$300 (Lnet/minecraft/client/gui/GuiKeyBindingList;)I access$300 +MD net/minecraft/client/gui/inventory/GuiContainer updateDragSplitting ()V func_146980_g +MD net/minecraft/client/gui/inventory/GuiContainer drawGuiContainerBackgroundLayer (FII)V func_146976_a +MD net/minecraft/client/gui/inventory/GuiContainer drawSlot (Lnet/minecraft/inventory/Slot;)V func_146977_a +MD net/minecraft/client/gui/inventory/GuiContainer isMouseOverSlot (Lnet/minecraft/inventory/Slot;II)Z func_146981_a +MD net/minecraft/client/gui/inventory/GuiContainer handleMouseClick (Lnet/minecraft/inventory/Slot;III)V func_146984_a +MD net/minecraft/client/gui/inventory/GuiContainer drawItemStack (Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V func_146982_a +MD net/minecraft/client/gui/inventory/GuiContainer checkHotbarKeys (I)Z func_146983_a +MD net/minecraft/client/gui/inventory/GuiContainer drawGuiContainerForegroundLayer (II)V func_146979_b +MD net/minecraft/client/gui/inventory/GuiContainer getSlotAtPosition (II)Lnet/minecraft/inventory/Slot; func_146975_c +MD net/minecraft/client/gui/inventory/GuiContainer isPointInRegion (IIIIII)Z func_146978_c +MD net/minecraft/client/gui/GuiRepair renameItem ()V func_147090_g +MD net/minecraft/client/gui/inventory/GuiBeacon access$000 ()Lnet/minecraft/util/ResourceLocation; access$000 +MD net/minecraft/client/gui/inventory/GuiBeacon access$100 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V access$100 +MD net/minecraft/client/gui/inventory/GuiBeacon access$200 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V access$200 +MD net/minecraft/client/gui/inventory/GuiBeacon access$300 (Lnet/minecraft/client/gui/inventory/GuiBeacon;Ljava/lang/String;II)V access$300 +MD net/minecraft/client/gui/inventory/GuiBeacon$Button func_146140_b (Z)V func_146140_b +MD net/minecraft/client/gui/inventory/GuiBeacon$Button func_146141_c ()Z func_146141_c +MD net/minecraft/client/gui/GuiScreenBook access$000 ()Lnet/minecraft/util/ResourceLocation; access$000 +MD net/minecraft/client/gui/GuiScreenBook pageSetCurrent (Ljava/lang/String;)V func_146457_a +MD net/minecraft/client/gui/GuiScreenBook sendBookToServer (Z)V func_146462_a +MD net/minecraft/client/gui/GuiScreenBook keyTypedInBook (CI)V func_146463_b +MD net/minecraft/client/gui/GuiScreenBook func_175385_b (II)Lnet/minecraft/util/IChatComponent; func_175385_b +MD net/minecraft/client/gui/GuiScreenBook pageInsertIntoCurrent (Ljava/lang/String;)V func_146459_b +MD net/minecraft/client/gui/GuiScreenBook keyTypedInTitle (CI)V func_146460_c +MD net/minecraft/client/gui/GuiScreenBook updateButtons ()V func_146464_h +MD net/minecraft/client/gui/GuiScreenBook addNewPage ()V func_146461_i +MD net/minecraft/client/gui/GuiScreenBook pageGetCurrent ()Ljava/lang/String; func_146456_p +MD net/minecraft/client/gui/GuiCommandBlock func_175388_a ()V func_175388_a +MD net/minecraft/client/gui/inventory/GuiContainerCreative func_147051_a (Lnet/minecraft/creativetab/CreativeTabs;)V func_147051_a +MD net/minecraft/client/gui/inventory/GuiContainerCreative func_147049_a (Lnet/minecraft/creativetab/CreativeTabs;II)Z func_147049_a +MD net/minecraft/client/gui/inventory/GuiContainerCreative setCurrentCreativeTab (Lnet/minecraft/creativetab/CreativeTabs;)V func_147050_b +MD net/minecraft/client/gui/inventory/GuiContainerCreative renderCreativeInventoryHoveringText (Lnet/minecraft/creativetab/CreativeTabs;II)Z func_147052_b +MD net/minecraft/client/gui/inventory/GuiContainerCreative getSelectedTabIndex ()I func_147056_g +MD net/minecraft/client/gui/inventory/GuiContainerCreative access$000 ()Lnet/minecraft/inventory/InventoryBasic; access$000 +MD net/minecraft/client/gui/inventory/GuiContainerCreative updateCreativeSearch ()V func_147053_i +MD net/minecraft/client/gui/inventory/GuiContainerCreative needsScrollBars ()Z func_147055_p +MD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative scrollTo (F)V func_148329_a +MD net/minecraft/client/gui/inventory/GuiContainerCreative$ContainerCreative func_148328_e ()Z func_148328_e +MD net/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot access$100 (Lnet/minecraft/client/gui/inventory/GuiContainerCreative$CreativeSlot;)Lnet/minecraft/inventory/Slot; access$100 +MD net/minecraft/client/renderer/InventoryEffectRenderer updateActivePotionEffects ()V func_175378_g +MD net/minecraft/client/renderer/InventoryEffectRenderer drawActivePotionEffects ()V func_147044_g +MD net/minecraft/util/EnchantmentNameParts getInstance ()Lnet/minecraft/util/EnchantmentNameParts; func_178176_a +MD net/minecraft/util/EnchantmentNameParts reseedRandomGenerator (J)V func_148335_a +MD net/minecraft/util/EnchantmentNameParts generateNewRandomName ()Ljava/lang/String; func_148334_a +MD net/minecraft/client/gui/GuiEnchantment func_147068_g ()V func_147068_g +MD net/minecraft/client/gui/inventory/GuiFurnace getCookProgressScaled (I)I func_175381_h +MD net/minecraft/client/gui/inventory/GuiFurnace getBurnLeftScaled (I)I func_175382_i +MD net/minecraft/client/gui/inventory/GuiInventory drawEntityOnScreen (IIIFFLnet/minecraft/entity/EntityLivingBase;)V func_147046_a +MD net/minecraft/client/gui/GuiMerchant getMerchant ()Lnet/minecraft/entity/IMerchant; func_147035_g +MD net/minecraft/client/gui/GuiMerchant access$000 ()Lnet/minecraft/util/ResourceLocation; access$000 +MD net/minecraft/client/gui/GuiMultiplayer createButtons ()V func_146794_g +MD net/minecraft/client/gui/GuiMultiplayer func_175392_a (Lnet/minecraft/client/gui/ServerListEntryNormal;I)Z func_175392_a +MD net/minecraft/client/gui/GuiMultiplayer func_175391_a (Lnet/minecraft/client/gui/ServerListEntryNormal;IZ)V func_175391_a +MD net/minecraft/client/gui/GuiMultiplayer connectToServer (Lnet/minecraft/client/multiplayer/ServerData;)V func_146791_a +MD net/minecraft/client/gui/GuiMultiplayer setHoveringText (Ljava/lang/String;)V func_146793_a +MD net/minecraft/client/gui/GuiMultiplayer selectServer (I)V func_146790_a +MD net/minecraft/client/gui/GuiMultiplayer func_175394_b (Lnet/minecraft/client/gui/ServerListEntryNormal;I)Z func_175394_b +MD net/minecraft/client/gui/GuiMultiplayer func_175393_b (Lnet/minecraft/client/gui/ServerListEntryNormal;IZ)V func_175393_b +MD net/minecraft/client/gui/GuiMultiplayer connectToSelected ()V func_146796_h +MD net/minecraft/client/gui/GuiMultiplayer getOldServerPinger ()Lnet/minecraft/client/network/OldServerPinger; func_146789_i +MD net/minecraft/client/gui/GuiMultiplayer getServerList ()Lnet/minecraft/client/multiplayer/ServerList; func_146795_p +MD net/minecraft/client/gui/GuiMultiplayer refreshServerList ()V func_146792_q +MD net/minecraft/client/gui/ServerListEntryLanDetected getLanServer ()Lnet/minecraft/client/network/LanServerDetector$LanServer; func_148289_a +MD net/minecraft/client/gui/ServerListEntryNormal getServerData ()Lnet/minecraft/client/multiplayer/ServerData; func_148296_a +MD net/minecraft/client/gui/ServerListEntryNormal drawTextureAt (IILnet/minecraft/util/ResourceLocation;)V func_178012_a +MD net/minecraft/client/gui/ServerListEntryNormal access$000 (Lnet/minecraft/client/gui/ServerListEntryNormal;)Lnet/minecraft/client/multiplayer/ServerData; access$000 +MD net/minecraft/client/gui/ServerListEntryNormal func_178013_b ()Z func_178013_b +MD net/minecraft/client/gui/ServerListEntryNormal access$100 (Lnet/minecraft/client/gui/ServerListEntryNormal;)Lnet/minecraft/client/gui/GuiMultiplayer; access$100 +MD net/minecraft/client/gui/ServerListEntryNormal prepareServerIcon ()V func_148297_b +MD net/minecraft/client/gui/ServerListEntryNormal$1 run ()V run +MD net/minecraft/client/gui/ServerSelectionList func_148195_a (Lnet/minecraft/client/multiplayer/ServerList;)V func_148195_a +MD net/minecraft/client/gui/ServerSelectionList func_148194_a (Ljava/util/List;)V func_148194_a +MD net/minecraft/client/gui/ServerSelectionList setSelectedSlotIndex (I)V func_148192_c +MD net/minecraft/client/gui/ServerSelectionList func_148193_k ()I func_148193_k +MD net/minecraft/client/gui/GuiScreenResourcePacks getAvailableResourcePacks ()Ljava/util/List; func_146964_g +MD net/minecraft/client/gui/GuiScreenResourcePacks hasResourcePackEntry (Lnet/minecraft/client/resources/ResourcePackListEntry;)Z func_146961_a +MD net/minecraft/client/gui/GuiScreenResourcePacks getListContaining (Lnet/minecraft/client/resources/ResourcePackListEntry;)Ljava/util/List; func_146962_b +MD net/minecraft/client/gui/GuiScreenResourcePacks getSelectedResourcePacks ()Ljava/util/List; func_146963_h +MD net/minecraft/client/gui/GuiScreenResourcePacks markChanged ()V func_175288_g +MD net/minecraft/client/resources/ResourcePackListEntry func_183019_a ()I func_183019_a +MD net/minecraft/client/resources/ResourcePackListEntry func_148311_a ()Ljava/lang/String; func_148311_a +MD net/minecraft/client/resources/ResourcePackListEntry func_148312_b ()Ljava/lang/String; func_148312_b +MD net/minecraft/client/resources/ResourcePackListEntry func_148313_c ()V func_148313_c +MD net/minecraft/client/resources/ResourcePackListEntry func_148310_d ()Z func_148310_d +MD net/minecraft/client/resources/ResourcePackListEntry func_148309_e ()Z func_148309_e +MD net/minecraft/client/resources/ResourcePackListEntry func_148308_f ()Z func_148308_f +MD net/minecraft/client/resources/ResourcePackListEntry func_148314_g ()Z func_148314_g +MD net/minecraft/client/resources/ResourcePackListEntry func_148307_h ()Z func_148307_h +MD net/minecraft/client/resources/ResourcePackListEntryFound func_148318_i ()Lnet/minecraft/client/resources/ResourcePackRepository$Entry; func_148318_i +MD net/minecraft/client/gui/GuiResourcePackList getListEntry (I)Lnet/minecraft/client/resources/ResourcePackListEntry; func_148180_b +MD net/minecraft/client/gui/GuiResourcePackList getListHeader ()Ljava/lang/String; func_148202_k +MD net/minecraft/client/gui/GuiResourcePackList getList ()Ljava/util/List; func_148201_l +MD net/minecraft/client/gui/stream/GuiIngestServers access$000 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$000 +MD net/minecraft/client/gui/stream/GuiIngestServers access$100 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$100 +MD net/minecraft/client/gui/stream/GuiIngestServers access$200 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$200 +MD net/minecraft/client/gui/stream/GuiIngestServers access$300 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$300 +MD net/minecraft/client/gui/stream/GuiIngestServers access$400 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$400 +MD net/minecraft/client/gui/stream/GuiIngestServers access$500 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$500 +MD net/minecraft/client/gui/stream/GuiIngestServers access$600 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$600 +MD net/minecraft/client/gui/stream/GuiIngestServers access$700 (Lnet/minecraft/client/gui/stream/GuiIngestServers;)Lnet/minecraft/client/gui/FontRenderer; access$700 +MD net/minecraft/client/gui/stream/GuiStreamUnavailable func_152321_a (Lnet/minecraft/client/gui/GuiScreen;)V func_152321_a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable func_152320_a (Ljava/lang/String;)V func_152320_a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason func_152561_a ()Lnet/minecraft/util/IChatComponent; func_152561_a +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason func_152559_b ()Lnet/minecraft/util/IChatComponent; func_152559_b +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason valueOf (Ljava/lang/String;)Lnet/minecraft/client/gui/stream/GuiStreamUnavailable$Reason; valueOf +MD net/minecraft/client/gui/stream/GuiStreamUnavailable$Reason values ()[Lnet/minecraft/client/gui/stream/GuiStreamUnavailable$Reason; values +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152328_a (Ljava/util/Set;Ljava/util/Set;Lnet/minecraft/client/stream/IStream;)Ljava/util/List; func_152328_a +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152329_a (Ltv/twitch/chat/ChatUserMode;Ljava/lang/String;Z)Lnet/minecraft/util/IChatComponent; func_152329_a +MD net/minecraft/client/gui/stream/GuiTwitchUserMode func_152330_a (Ltv/twitch/chat/ChatUserSubscription;Ljava/lang/String;Z)Lnet/minecraft/util/IChatComponent; func_152330_a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178642_a ()Ljava/util/List; func_178642_a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178643_a (I)Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; func_178643_a +MD net/minecraft/client/gui/spectator/SpectatorMenu access$112 (Lnet/minecraft/client/gui/spectator/SpectatorMenu;I)I access$112 +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178647_a (Lnet/minecraft/client/gui/spectator/ISpectatorMenuView;)V func_178647_a +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178645_b ()Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; func_178645_b +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178644_b (I)V func_178644_b +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178650_c ()Lnet/minecraft/client/gui/spectator/ISpectatorMenuView; func_178650_c +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178641_d ()V func_178641_d +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178648_e ()I func_178648_e +MD net/minecraft/client/gui/spectator/SpectatorMenu func_178646_f ()Lnet/minecraft/client/gui/spectator/categories/SpectatorDetails; func_178646_f +MD net/minecraft/client/gui/spectator/ISpectatorMenuView func_178669_a ()Ljava/util/List; func_178669_a +MD net/minecraft/client/gui/spectator/ISpectatorMenuView func_178670_b ()Lnet/minecraft/util/IChatComponent; func_178670_b +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject getSpectatorName ()Lnet/minecraft/util/IChatComponent; func_178664_z_ +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178662_A_ ()Z func_178662_A_ +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178663_a (FI)V func_178663_a +MD net/minecraft/client/gui/spectator/ISpectatorMenuObject func_178661_a (Lnet/minecraft/client/gui/spectator/SpectatorMenu;)V func_178661_a +MD net/minecraft/client/gui/spectator/ISpectatorMenuRecipient func_175257_a (Lnet/minecraft/client/gui/spectator/SpectatorMenu;)V func_175257_a +MD net/minecraft/client/gui/spectator/categories/SpectatorDetails func_178680_a (I)Lnet/minecraft/client/gui/spectator/ISpectatorMenuObject; func_178680_a +MD net/minecraft/client/gui/spectator/categories/SpectatorDetails func_178681_b ()I func_178681_b +MD net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 compare (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/client/network/NetworkPlayerInfo;)I compare +MD net/minecraft/client/gui/spectator/categories/TeleportToPlayer$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/model/ModelBanner renderBanner ()V func_178687_a +MD net/minecraft/client/model/ModelChest renderAll ()V func_78231_a +MD net/minecraft/client/model/ModelGuardian func_178706_a ()I func_178706_a +MD net/minecraft/client/model/ModelHorse updateHorseRotation (FFF)F func_110683_a +MD net/minecraft/client/model/ModelHorse setBoxRotation (Lnet/minecraft/client/model/ModelRenderer;FFF)V func_110682_a +MD net/minecraft/client/model/ModelBiped postRenderArm (F)V func_178718_a +MD net/minecraft/client/model/ModelBiped setInvisible (Z)V func_178719_a +MD net/minecraft/client/model/ModelBase setRotationAngles (FFFFFFLnet/minecraft/entity/Entity;)V func_78087_a +MD net/minecraft/client/model/ModelBase setModelAttributes (Lnet/minecraft/client/model/ModelBase;)V func_178686_a +MD net/minecraft/client/model/ModelBase copyModelAngles (Lnet/minecraft/client/model/ModelRenderer;Lnet/minecraft/client/model/ModelRenderer;)V func_178685_a +MD net/minecraft/client/model/ModelBase getTextureOffset (Ljava/lang/String;)Lnet/minecraft/client/model/TextureOffset; func_78084_a +MD net/minecraft/client/model/ModelBase setTextureOffset (Ljava/lang/String;II)V func_78085_a +MD net/minecraft/client/model/ModelBase getRandomModelBox (Ljava/util/Random;)Lnet/minecraft/client/model/ModelRenderer; func_85181_a +MD net/minecraft/client/model/ModelBase render (Lnet/minecraft/entity/Entity;FFFFFF)V func_78088_a +MD net/minecraft/client/model/ModelBase setLivingAnimations (Lnet/minecraft/entity/EntityLivingBase;FFF)V func_78086_a +MD net/minecraft/client/model/ModelPlayer renderRightArm ()V func_178725_a +MD net/minecraft/client/model/ModelPlayer renderLeftArm ()V func_178726_b +MD net/minecraft/client/model/ModelPlayer renderDeadmau5Head (F)V func_178727_b +MD net/minecraft/client/model/ModelPlayer renderCape (F)V func_178728_c +MD net/minecraft/client/model/TexturedQuad flipFace ()V func_78235_a +MD net/minecraft/client/model/TexturedQuad draw (Lnet/minecraft/client/renderer/WorldRenderer;F)V func_178765_a +MD net/minecraft/client/model/ModelRabbit setRotationOffset (Lnet/minecraft/client/model/ModelRenderer;FFF)V func_178691_a +MD net/minecraft/client/model/ModelSign renderSign ()V func_78164_a +MD net/minecraft/client/model/PositionTextureVertex setTexturePosition (FF)Lnet/minecraft/client/model/PositionTextureVertex; func_78240_a +MD net/minecraft/client/model/ModelIronGolem func_78172_a (FF)F func_78172_a +MD net/minecraft/client/model/ModelDragon updateRotations (D)F func_78214_a +MD net/minecraft/client/model/ModelBox render (Lnet/minecraft/client/renderer/WorldRenderer;F)V func_178780_a +MD net/minecraft/client/model/ModelBox setBoxName (Ljava/lang/String;)Lnet/minecraft/client/model/ModelBox; func_78244_a +MD net/minecraft/client/model/ModelRenderer render (F)V func_78785_a +MD net/minecraft/client/model/ModelRenderer setRotationPoint (FFF)V func_78793_a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIII)Lnet/minecraft/client/model/ModelRenderer; func_78789_a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIIIF)V func_78790_a +MD net/minecraft/client/model/ModelRenderer addBox (FFFIIIZ)Lnet/minecraft/client/model/ModelRenderer; func_178769_a +MD net/minecraft/client/model/ModelRenderer setTextureOffset (II)Lnet/minecraft/client/model/ModelRenderer; func_78784_a +MD net/minecraft/client/model/ModelRenderer addChild (Lnet/minecraft/client/model/ModelRenderer;)V func_78792_a +MD net/minecraft/client/model/ModelRenderer addBox (Ljava/lang/String;FFFIII)Lnet/minecraft/client/model/ModelRenderer; func_78786_a +MD net/minecraft/client/model/ModelRenderer renderWithRotation (F)V func_78791_b +MD net/minecraft/client/model/ModelRenderer setTextureSize (II)Lnet/minecraft/client/model/ModelRenderer; func_78787_b +MD net/minecraft/client/model/ModelRenderer postRender (F)V func_78794_c +MD net/minecraft/client/model/ModelRenderer compileDisplayList (F)V func_78788_d +MD net/minecraft/client/network/NetHandlerLoginClient access$000 (Lnet/minecraft/client/network/NetHandlerLoginClient;)Lnet/minecraft/network/NetworkManager; access$000 +MD net/minecraft/client/network/NetHandlerLoginClient getSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; func_147391_c +MD net/minecraft/client/network/NetHandlerLoginClient$1 operationComplete (Lio/netty/util/concurrent/Future;)V operationComplete +MD net/minecraft/client/network/NetHandlerPlayClient getNetworkManager ()Lnet/minecraft/network/NetworkManager; func_147298_b +MD net/minecraft/client/network/NetHandlerPlayClient access$000 (Lnet/minecraft/client/network/NetHandlerPlayClient;)Lnet/minecraft/network/NetworkManager; access$000 +MD net/minecraft/client/network/NetHandlerPlayClient access$102 (Lnet/minecraft/client/network/NetHandlerPlayClient;Lnet/minecraft/client/Minecraft;)Lnet/minecraft/client/Minecraft; access$102 +MD net/minecraft/client/network/NetHandlerPlayClient addToSendQueue (Lnet/minecraft/network/Packet;)V func_147297_a +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfo (Ljava/lang/String;)Lnet/minecraft/client/network/NetworkPlayerInfo; func_175104_a +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfo (Ljava/util/UUID;)Lnet/minecraft/client/network/NetworkPlayerInfo; func_175102_a +MD net/minecraft/client/network/NetHandlerPlayClient cleanup ()V func_147296_c +MD net/minecraft/client/network/NetHandlerPlayClient access$100 (Lnet/minecraft/client/network/NetHandlerPlayClient;)Lnet/minecraft/client/Minecraft; access$100 +MD net/minecraft/client/network/NetHandlerPlayClient getPlayerInfoMap ()Ljava/util/Collection; func_175106_d +MD net/minecraft/client/network/NetHandlerPlayClient getGameProfile ()Lcom/mojang/authlib/GameProfile; func_175105_e +MD net/minecraft/client/network/NetHandlerPlayClient$1 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$1 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/network/NetHandlerPlayClient$2 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$2 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/network/NetHandlerPlayClient$3 run ()V run +MD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/network/NetHandlerPlayClient$3$1$1 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/multiplayer/ChunkProviderClient unloadChunk (II)V func_73234_b +MD net/minecraft/client/multiplayer/ChunkProviderClient loadChunk (II)Lnet/minecraft/world/chunk/Chunk; func_73158_c +MD net/minecraft/client/multiplayer/PlayerControllerMP isSpectator ()Z func_78747_a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendEnchantPacket (II)V func_78756_a +MD net/minecraft/client/multiplayer/PlayerControllerMP windowClick (IIIILnet/minecraft/entity/player/EntityPlayer;)Lnet/minecraft/item/ItemStack; func_78753_a +MD net/minecraft/client/multiplayer/PlayerControllerMP func_178892_a (Lnet/minecraft/world/World;Lnet/minecraft/stats/StatFileWriter;)Lnet/minecraft/client/entity/EntityPlayerSP; func_178892_a +MD net/minecraft/client/multiplayer/PlayerControllerMP setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_78746_a +MD net/minecraft/client/multiplayer/PlayerControllerMP clickBlockCreative (Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/multiplayer/PlayerControllerMP;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_178891_a +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerRightClick (Lnet/minecraft/client/entity/EntityPlayerSP;Lnet/minecraft/client/multiplayer/WorldClient;Lnet/minecraft/item/ItemStack;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/Vec3;)Z func_178890_a +MD net/minecraft/client/multiplayer/PlayerControllerMP isHittingPosition (Lnet/minecraft/util/BlockPos;)Z func_178893_a +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerDestroyBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_178888_a +MD net/minecraft/client/multiplayer/PlayerControllerMP setPlayerCapabilities (Lnet/minecraft/entity/player/EntityPlayer;)V func_78748_a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendUseItem (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/world/World;Lnet/minecraft/item/ItemStack;)Z func_78769_a +MD net/minecraft/client/multiplayer/PlayerControllerMP attackEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;)V func_78764_a +MD net/minecraft/client/multiplayer/PlayerControllerMP isPlayerRightClickingOnEntity (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/MovingObjectPosition;)Z func_178894_a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendPacketDropItem (Lnet/minecraft/item/ItemStack;)V func_78752_a +MD net/minecraft/client/multiplayer/PlayerControllerMP sendSlotPacket (Lnet/minecraft/item/ItemStack;I)V func_78761_a +MD net/minecraft/client/multiplayer/PlayerControllerMP shouldDrawHUD ()Z func_78755_b +MD net/minecraft/client/multiplayer/PlayerControllerMP clickBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_180511_b +MD net/minecraft/client/multiplayer/PlayerControllerMP flipPlayer (Lnet/minecraft/entity/player/EntityPlayer;)V func_78745_b +MD net/minecraft/client/multiplayer/PlayerControllerMP interactWithEntitySendPacket (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/entity/Entity;)Z func_78768_b +MD net/minecraft/client/multiplayer/PlayerControllerMP resetBlockRemoving ()V func_78767_c +MD net/minecraft/client/multiplayer/PlayerControllerMP onPlayerDamageBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)Z func_180512_c +MD net/minecraft/client/multiplayer/PlayerControllerMP onStoppedUsingItem (Lnet/minecraft/entity/player/EntityPlayer;)V func_78766_c +MD net/minecraft/client/multiplayer/PlayerControllerMP getBlockReachDistance ()F func_78757_d +MD net/minecraft/client/multiplayer/PlayerControllerMP updateController ()V func_78765_e +MD net/minecraft/client/multiplayer/PlayerControllerMP gameIsSurvivalOrAdventure ()Z func_78763_f +MD net/minecraft/client/multiplayer/PlayerControllerMP isNotCreative ()Z func_78762_g +MD net/minecraft/client/multiplayer/PlayerControllerMP isInCreativeMode ()Z func_78758_h +MD net/minecraft/client/multiplayer/PlayerControllerMP extendedReach ()Z func_78749_i +MD net/minecraft/client/multiplayer/PlayerControllerMP isRidingHorse ()Z func_110738_j +MD net/minecraft/client/multiplayer/PlayerControllerMP isSpectatorMode ()Z func_178887_k +MD net/minecraft/client/multiplayer/PlayerControllerMP getCurrentGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_178889_l +MD net/minecraft/client/multiplayer/PlayerControllerMP getIsHittingBlock ()Z func_181040_m +MD net/minecraft/client/multiplayer/PlayerControllerMP syncCurrentPlayItem ()V func_78750_j +MD net/minecraft/client/multiplayer/WorldClient removeAllEntities ()V func_73022_a +MD net/minecraft/client/multiplayer/WorldClient invalidateBlockReceiveRegion (IIIIII)V func_73031_a +MD net/minecraft/client/multiplayer/WorldClient addEntityToWorld (ILnet/minecraft/entity/Entity;)V func_73027_a +MD net/minecraft/client/multiplayer/WorldClient setWorldScoreboard (Lnet/minecraft/scoreboard/Scoreboard;)V func_96443_a +MD net/minecraft/client/multiplayer/WorldClient access$000 (Lnet/minecraft/client/multiplayer/WorldClient;)Ljava/util/Set; access$000 +MD net/minecraft/client/multiplayer/WorldClient playSoundAtPos (Lnet/minecraft/util/BlockPos;Ljava/lang/String;FFZ)V func_175731_a +MD net/minecraft/client/multiplayer/WorldClient doVoidFogParticles (III)V func_73029_E +MD net/minecraft/client/multiplayer/WorldClient doPreChunk (IIZ)V func_73025_a +MD net/minecraft/client/multiplayer/WorldClient access$100 (Lnet/minecraft/client/multiplayer/WorldClient;)Ljava/util/Set; access$100 +MD net/minecraft/client/multiplayer/WorldClient invalidateRegionAndSetBlock (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)Z func_180503_b +MD net/minecraft/client/multiplayer/WorldClient access$200 (Lnet/minecraft/client/multiplayer/WorldClient;)Lnet/minecraft/client/Minecraft; access$200 +MD net/minecraft/client/multiplayer/WorldClient removeEntityFromWorld (I)Lnet/minecraft/entity/Entity; func_73028_b +MD net/minecraft/client/multiplayer/WorldClient$1 call ()Ljava/lang/String; call +MD net/minecraft/client/multiplayer/WorldClient$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$2 call ()Ljava/lang/String; call +MD net/minecraft/client/multiplayer/WorldClient$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$3 call ()Ljava/lang/String; call +MD net/minecraft/client/multiplayer/WorldClient$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/multiplayer/WorldClient$4 call ()Ljava/lang/String; call +MD net/minecraft/client/multiplayer/WorldClient$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/network/NetworkPlayerInfo getGameProfile ()Lcom/mojang/authlib/GameProfile; func_178845_a +MD net/minecraft/client/network/NetworkPlayerInfo setResponseTime (I)V func_178838_a +MD net/minecraft/client/network/NetworkPlayerInfo func_178846_a (J)V func_178846_a +MD net/minecraft/client/network/NetworkPlayerInfo setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_178839_a +MD net/minecraft/client/network/NetworkPlayerInfo access$100 (Lnet/minecraft/client/network/NetworkPlayerInfo;)Ljava/lang/String; access$100 +MD net/minecraft/client/network/NetworkPlayerInfo access$102 (Lnet/minecraft/client/network/NetworkPlayerInfo;Ljava/lang/String;)Ljava/lang/String; access$102 +MD net/minecraft/client/network/NetworkPlayerInfo access$002 (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; access$002 +MD net/minecraft/client/network/NetworkPlayerInfo setDisplayName (Lnet/minecraft/util/IChatComponent;)V func_178859_a +MD net/minecraft/client/network/NetworkPlayerInfo getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_178848_b +MD net/minecraft/client/network/NetworkPlayerInfo func_178836_b (I)V func_178836_b +MD net/minecraft/client/network/NetworkPlayerInfo func_178844_b (J)V func_178844_b +MD net/minecraft/client/network/NetworkPlayerInfo access$202 (Lnet/minecraft/client/network/NetworkPlayerInfo;Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; access$202 +MD net/minecraft/client/network/NetworkPlayerInfo getResponseTime ()I func_178853_c +MD net/minecraft/client/network/NetworkPlayerInfo func_178857_c (I)V func_178857_c +MD net/minecraft/client/network/NetworkPlayerInfo func_178843_c (J)V func_178843_c +MD net/minecraft/client/network/NetworkPlayerInfo hasLocationSkin ()Z func_178856_e +MD net/minecraft/client/network/NetworkPlayerInfo getSkinType ()Ljava/lang/String; func_178851_f +MD net/minecraft/client/network/NetworkPlayerInfo getLocationSkin ()Lnet/minecraft/util/ResourceLocation; func_178837_g +MD net/minecraft/client/network/NetworkPlayerInfo getLocationCape ()Lnet/minecraft/util/ResourceLocation; func_178861_h +MD net/minecraft/client/network/NetworkPlayerInfo getPlayerTeam ()Lnet/minecraft/scoreboard/ScorePlayerTeam; func_178850_i +MD net/minecraft/client/network/NetworkPlayerInfo loadPlayerTextures ()V func_178841_j +MD net/minecraft/client/network/NetworkPlayerInfo getDisplayName ()Lnet/minecraft/util/IChatComponent; func_178854_k +MD net/minecraft/client/network/NetworkPlayerInfo func_178835_l ()I func_178835_l +MD net/minecraft/client/network/NetworkPlayerInfo func_178860_m ()I func_178860_m +MD net/minecraft/client/network/NetworkPlayerInfo func_178847_n ()J func_178847_n +MD net/minecraft/client/network/NetworkPlayerInfo func_178858_o ()J func_178858_o +MD net/minecraft/client/network/NetworkPlayerInfo func_178855_p ()J func_178855_p +MD net/minecraft/client/multiplayer/ServerAddress getIP ()Ljava/lang/String; func_78861_a +MD net/minecraft/client/multiplayer/ServerAddress fromString (Ljava/lang/String;)Lnet/minecraft/client/multiplayer/ServerAddress; func_78860_a +MD net/minecraft/client/multiplayer/ServerAddress parseIntWithDefault (Ljava/lang/String;I)I func_78862_a +MD net/minecraft/client/multiplayer/ServerAddress getPort ()I func_78864_b +MD net/minecraft/client/multiplayer/ServerAddress getServerAddress (Ljava/lang/String;)[Ljava/lang/String; func_78863_b +MD net/minecraft/client/multiplayer/ServerData getNBTCompound ()Lnet/minecraft/nbt/NBTTagCompound; func_78836_a +MD net/minecraft/client/multiplayer/ServerData setResourceMode (Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode;)V func_152584_a +MD net/minecraft/client/multiplayer/ServerData copyFrom (Lnet/minecraft/client/multiplayer/ServerData;)V func_152583_a +MD net/minecraft/client/multiplayer/ServerData getServerDataFromNBTCompound (Lnet/minecraft/nbt/NBTTagCompound;)Lnet/minecraft/client/multiplayer/ServerData; func_78837_a +MD net/minecraft/client/multiplayer/ServerData setBase64EncodedIconData (Ljava/lang/String;)V func_147407_a +MD net/minecraft/client/multiplayer/ServerData getResourceMode ()Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; func_152586_b +MD net/minecraft/client/multiplayer/ServerData getBase64EncodedIconData ()Ljava/lang/String; func_147409_e +MD net/minecraft/client/multiplayer/ServerData isOnLAN ()Z func_181041_d +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode getMotd ()Lnet/minecraft/util/IChatComponent; func_152589_a +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode valueOf (Ljava/lang/String;)Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; valueOf +MD net/minecraft/client/multiplayer/ServerData$ServerResourceMode values ()[Lnet/minecraft/client/multiplayer/ServerData$ServerResourceMode; values +MD net/minecraft/client/multiplayer/ServerList loadServerList ()V func_78853_a +MD net/minecraft/client/multiplayer/ServerList getServerData (I)Lnet/minecraft/client/multiplayer/ServerData; func_78850_a +MD net/minecraft/client/multiplayer/ServerList swapServers (II)V func_78857_a +MD net/minecraft/client/multiplayer/ServerList func_147413_a (ILnet/minecraft/client/multiplayer/ServerData;)V func_147413_a +MD net/minecraft/client/multiplayer/ServerList addServerData (Lnet/minecraft/client/multiplayer/ServerData;)V func_78849_a +MD net/minecraft/client/multiplayer/ServerList saveServerList ()V func_78855_b +MD net/minecraft/client/multiplayer/ServerList removeServerData (I)V func_78851_b +MD net/minecraft/client/multiplayer/ServerList func_147414_b (Lnet/minecraft/client/multiplayer/ServerData;)V func_147414_b +MD net/minecraft/client/multiplayer/ServerList countServers ()I func_78856_c +MD net/minecraft/client/network/OldServerPinger pingPendingNetworks ()V func_147223_a +MD net/minecraft/client/network/OldServerPinger ping (Lnet/minecraft/client/multiplayer/ServerData;)V func_147224_a +MD net/minecraft/client/network/OldServerPinger access$100 (Lnet/minecraft/client/network/OldServerPinger;Lnet/minecraft/client/multiplayer/ServerData;)V access$100 +MD net/minecraft/client/network/OldServerPinger clearPendingNetworks ()V func_147226_b +MD net/minecraft/client/network/OldServerPinger tryCompatibilityPing (Lnet/minecraft/client/multiplayer/ServerData;)V func_147225_b +MD net/minecraft/client/network/OldServerPinger access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/client/network/OldServerPinger access$200 ()Lcom/google/common/base/Splitter; access$200 +MD net/minecraft/client/network/OldServerPinger$2 initChannel (Lio/netty/channel/Channel;)V initChannel +MD net/minecraft/client/network/OldServerPinger$2$1 channelRead0 (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;)V channelRead0 +MD net/minecraft/client/network/OldServerPinger$2$1 channelActive (Lio/netty/channel/ChannelHandlerContext;)V channelActive +MD net/minecraft/client/network/OldServerPinger$2$1 channelRead0 (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V channelRead0 +MD net/minecraft/client/network/OldServerPinger$2$1 exceptionCaught (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V exceptionCaught +MD net/minecraft/client/particle/EntityFirework$SparkFX setColour (I)V func_92044_a +MD net/minecraft/client/particle/EntityFirework$SparkFX setTrail (Z)V func_92045_e +MD net/minecraft/client/particle/EntityFirework$SparkFX setFadeColour (I)V func_92046_g +MD net/minecraft/client/particle/EntityFirework$SparkFX setTwinkle (Z)V func_92043_f +MD net/minecraft/client/particle/EntityFirework$StarterFX createParticle (DDDDDD[I[IZZ)V func_92034_a +MD net/minecraft/client/particle/EntityFirework$StarterFX createBall (DI[I[IZZ)V func_92035_a +MD net/minecraft/client/particle/EntityFirework$StarterFX createShaped (D[[D[I[IZZZ)V func_92038_a +MD net/minecraft/client/particle/EntityFirework$StarterFX createBurst ([I[IZZ)V func_92036_a +MD net/minecraft/client/particle/EntityFirework$StarterFX func_92037_i ()Z func_92037_i +MD net/minecraft/client/particle/EntityFX getFXLayer ()I func_70537_b +MD net/minecraft/client/particle/EntityFX multiplyVelocity (F)Lnet/minecraft/client/particle/EntityFX; func_70543_e +MD net/minecraft/client/particle/EntityFX renderParticle (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/entity/Entity;FFFFFF)V func_180434_a +MD net/minecraft/client/particle/EntityFX setParticleIcon (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_180435_a +MD net/minecraft/client/particle/EntityFX getRedColorF ()F func_70534_d +MD net/minecraft/client/particle/EntityFX setRBGColorF (FFF)V func_70538_b +MD net/minecraft/client/particle/EntityFX getGreenColorF ()F func_70542_f +MD net/minecraft/client/particle/EntityFX multipleParticleScaleBy (F)Lnet/minecraft/client/particle/EntityFX; func_70541_f +MD net/minecraft/client/particle/EntityFX getBlueColorF ()F func_70535_g +MD net/minecraft/client/particle/EntityFX setAlphaF (F)V func_82338_g +MD net/minecraft/client/particle/EntityFX getAlpha ()F func_174838_j +MD net/minecraft/client/particle/EntityFX nextTextureIndexX ()V func_94053_h +MD net/minecraft/client/particle/EntityFX setParticleTextureIndex (I)V func_70536_a +MD net/minecraft/client/particle/EffectRenderer updateEffects ()V func_78868_a +MD net/minecraft/client/particle/EffectRenderer updateEffectLayer (I)V func_178922_a +MD net/minecraft/client/particle/EffectRenderer spawnEffectParticle (IDDDDDD[I)Lnet/minecraft/client/particle/EntityFX; func_178927_a +MD net/minecraft/client/particle/EffectRenderer registerParticle (ILnet/minecraft/client/particle/IParticleFactory;)V func_178929_a +MD net/minecraft/client/particle/EffectRenderer clearEffects (Lnet/minecraft/world/World;)V func_78870_a +MD net/minecraft/client/particle/EffectRenderer addEffect (Lnet/minecraft/client/particle/EntityFX;)V func_78873_a +MD net/minecraft/client/particle/EffectRenderer moveToLayer (Lnet/minecraft/client/particle/EntityFX;II)V func_178924_a +MD net/minecraft/client/particle/EffectRenderer addBlockDestroyEffects (Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/state/IBlockState;)V func_180533_a +MD net/minecraft/client/particle/EffectRenderer addBlockHitEffects (Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;)V func_180532_a +MD net/minecraft/client/particle/EffectRenderer updateEffectAlphaLayer (Ljava/util/List;)V func_178925_a +MD net/minecraft/client/particle/EffectRenderer renderParticles (Lnet/minecraft/entity/Entity;F)V func_78874_a +MD net/minecraft/client/particle/EffectRenderer emitParticleAtEntity (Lnet/minecraft/entity/Entity;Lnet/minecraft/util/EnumParticleTypes;)V func_178926_a +MD net/minecraft/client/particle/EffectRenderer getStatistics ()Ljava/lang/String; func_78869_b +MD net/minecraft/client/particle/EffectRenderer moveToAlphaLayer (Lnet/minecraft/client/particle/EntityFX;)V func_178928_b +MD net/minecraft/client/particle/EffectRenderer renderLitParticles (Lnet/minecraft/entity/Entity;F)V func_78872_b +MD net/minecraft/client/particle/EffectRenderer registerVanillaParticles ()V func_178930_c +MD net/minecraft/client/particle/EffectRenderer moveToNoAlphaLayer (Lnet/minecraft/client/particle/EntityFX;)V func_178931_c +MD net/minecraft/client/particle/EffectRenderer tickParticle (Lnet/minecraft/client/particle/EntityFX;)V func_178923_d +MD net/minecraft/client/particle/EffectRenderer$1 call ()Ljava/lang/String; call +MD net/minecraft/client/particle/EffectRenderer$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$2 call ()Ljava/lang/String; call +MD net/minecraft/client/particle/EffectRenderer$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$3 call ()Ljava/lang/String; call +MD net/minecraft/client/particle/EffectRenderer$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/EffectRenderer$4 call ()Ljava/lang/String; call +MD net/minecraft/client/particle/EffectRenderer$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/particle/IParticleFactory getEntityFX (ILnet/minecraft/world/World;DDDDDD[I)Lnet/minecraft/client/particle/EntityFX; func_178902_a +MD net/minecraft/client/particle/EntitySpellParticleFX setBaseSpellTextureIndex (I)V func_70589_b +MD net/minecraft/client/particle/EntityDiggingFX setBlockPos (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/particle/EntityDiggingFX; func_174846_a +MD net/minecraft/client/particle/EntityDiggingFX func_174845_l ()Lnet/minecraft/client/particle/EntityDiggingFX; func_174845_l +MD net/minecraft/client/entity/AbstractClientPlayer hasPlayerInfo ()Z func_152122_n +MD net/minecraft/client/entity/AbstractClientPlayer getDownloadImageSkin (Lnet/minecraft/util/ResourceLocation;Ljava/lang/String;)Lnet/minecraft/client/renderer/ThreadDownloadImageData; func_110304_a +MD net/minecraft/client/entity/AbstractClientPlayer getPlayerInfo ()Lnet/minecraft/client/network/NetworkPlayerInfo; func_175155_b +MD net/minecraft/client/entity/AbstractClientPlayer getLocationSkin (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; func_110311_f +MD net/minecraft/client/entity/AbstractClientPlayer hasSkin ()Z func_152123_o +MD net/minecraft/client/entity/AbstractClientPlayer getLocationSkin ()Lnet/minecraft/util/ResourceLocation; func_110306_p +MD net/minecraft/client/entity/AbstractClientPlayer getLocationCape ()Lnet/minecraft/util/ResourceLocation; func_110303_q +MD net/minecraft/client/entity/AbstractClientPlayer getSkinType ()Ljava/lang/String; func_175154_l +MD net/minecraft/client/entity/AbstractClientPlayer getFovModifier ()F func_175156_o +MD net/minecraft/util/MovementInput updatePlayerMoveState ()V func_78898_a +MD net/minecraft/client/entity/EntityPlayerSP isCurrentViewEntity ()Z func_175160_A +MD net/minecraft/client/entity/EntityPlayerSP setXPStats (FII)V func_71152_a +MD net/minecraft/client/entity/EntityPlayerSP isOpenBlockSpace (Lnet/minecraft/util/BlockPos;)Z func_175162_d +MD net/minecraft/client/entity/EntityPlayerSP sendChatMessage (Ljava/lang/String;)V func_71165_d +MD net/minecraft/client/entity/EntityPlayerSP setClientBrand (Ljava/lang/String;)V func_175158_f +MD net/minecraft/client/entity/EntityPlayerSP setPlayerSPHealth (F)V func_71150_b +MD net/minecraft/client/entity/EntityPlayerSP onUpdateWalkingPlayer ()V func_175161_p +MD net/minecraft/client/entity/EntityPlayerSP closeScreenAndDropStack ()V func_175159_q +MD net/minecraft/client/entity/EntityPlayerSP sendHorseJump ()V func_110318_g +MD net/minecraft/client/entity/EntityPlayerSP sendHorseInventory ()V func_175163_u +MD net/minecraft/client/entity/EntityPlayerSP getClientBrand ()Ljava/lang/String; func_142021_k +MD net/minecraft/client/entity/EntityPlayerSP getStatFileWriter ()Lnet/minecraft/stats/StatFileWriter; func_146107_m +MD net/minecraft/client/entity/EntityPlayerSP isRidingHorse ()Z func_110317_t +MD net/minecraft/client/entity/EntityPlayerSP getHorseJumpPower ()F func_110319_bJ +MD net/minecraft/entity/boss/BossStatus setBossStatus (Lnet/minecraft/entity/boss/IBossDisplayData;Z)V func_82824_a +MD net/minecraft/client/renderer/WorldRenderer getVertexState ()Lnet/minecraft/client/renderer/WorldRenderer$State; func_181672_a +MD net/minecraft/client/renderer/WorldRenderer tex (DD)Lnet/minecraft/client/renderer/WorldRenderer; func_181673_a +MD net/minecraft/client/renderer/WorldRenderer putPosition (DDD)V func_178987_a +MD net/minecraft/client/renderer/WorldRenderer sortVertexData (FFF)V func_181674_a +MD net/minecraft/client/renderer/WorldRenderer color (FFFF)Lnet/minecraft/client/renderer/WorldRenderer; func_181666_a +MD net/minecraft/client/renderer/WorldRenderer putColorMultiplier (FFFI)V func_178978_a +MD net/minecraft/client/renderer/WorldRenderer putColor4 (I)V func_178968_d +MD net/minecraft/client/renderer/WorldRenderer lightmap (II)Lnet/minecraft/client/renderer/WorldRenderer; func_181671_a +MD net/minecraft/client/renderer/WorldRenderer putBrightness4 (IIII)V func_178962_a +MD net/minecraft/client/renderer/WorldRenderer putColorRGBA (IIIII)V func_178972_a +MD net/minecraft/client/renderer/WorldRenderer begin (ILnet/minecraft/client/renderer/vertex/VertexFormat;)V func_181668_a +MD net/minecraft/client/renderer/WorldRenderer setVertexState (Lnet/minecraft/client/renderer/WorldRenderer$State;)V func_178993_a +MD net/minecraft/client/renderer/WorldRenderer getDistanceSq (Ljava/nio/FloatBuffer;FFFII)F func_181665_a +MD net/minecraft/client/renderer/WorldRenderer addVertexData ([I)V func_178981_a +MD net/minecraft/client/renderer/WorldRenderer reset ()V func_178965_a +MD net/minecraft/client/renderer/WorldRenderer pos (DDD)Lnet/minecraft/client/renderer/WorldRenderer; func_181662_b +MD net/minecraft/client/renderer/WorldRenderer putNormal (FFF)V func_178975_e +MD net/minecraft/client/renderer/WorldRenderer putColorRGB_F (FFFI)V func_178994_b +MD net/minecraft/client/renderer/WorldRenderer growBuffer (I)V func_181670_b +MD net/minecraft/client/renderer/WorldRenderer putColor (II)V func_178988_b +MD net/minecraft/client/renderer/WorldRenderer color (IIII)Lnet/minecraft/client/renderer/WorldRenderer; func_181669_b +MD net/minecraft/client/renderer/WorldRenderer noColor ()V func_78914_f +MD net/minecraft/client/renderer/WorldRenderer setTranslation (DDD)V func_178969_c +MD net/minecraft/client/renderer/WorldRenderer normal (FFF)Lnet/minecraft/client/renderer/WorldRenderer; func_181663_c +MD net/minecraft/client/renderer/WorldRenderer getColorIndex (I)I func_78909_a +MD net/minecraft/client/renderer/WorldRenderer endVertex ()V func_181675_d +MD net/minecraft/client/renderer/WorldRenderer putColorRGB_F4 (FFF)V func_178990_f +MD net/minecraft/client/renderer/WorldRenderer finishDrawing ()V func_178977_d +MD net/minecraft/client/renderer/WorldRenderer getByteBuffer ()Ljava/nio/ByteBuffer; func_178966_f +MD net/minecraft/client/renderer/WorldRenderer getVertexFormat ()Lnet/minecraft/client/renderer/vertex/VertexFormat; func_178973_g +MD net/minecraft/client/renderer/WorldRenderer getVertexCount ()I func_178989_h +MD net/minecraft/client/renderer/WorldRenderer getDrawMode ()I func_178979_i +MD net/minecraft/client/renderer/WorldRenderer getBufferSize ()I func_181664_j +MD net/minecraft/client/renderer/WorldRenderer nextVertexFormatIndex ()V func_181667_k +MD net/minecraft/client/renderer/WorldRenderer$1 compare (Ljava/lang/Integer;Ljava/lang/Integer;)I compare +MD net/minecraft/client/renderer/WorldRenderer$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/renderer/WorldRenderer$State getRawBuffer ()[I func_179013_a +MD net/minecraft/client/renderer/WorldRenderer$State getVertexCount ()I func_179014_c +MD net/minecraft/client/renderer/WorldRenderer$State getVertexFormat ()Lnet/minecraft/client/renderer/vertex/VertexFormat; func_179016_d +MD net/minecraft/client/renderer/WorldVertexBufferUploader draw (Lnet/minecraft/client/renderer/WorldRenderer;)V func_181679_a +MD net/minecraft/client/renderer/RegionRenderCache getBlockStateRaw (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/block/state/IBlockState; func_175631_c +MD net/minecraft/client/renderer/RegionRenderCache getPositionIndex (Lnet/minecraft/util/BlockPos;)I func_175630_e +MD net/minecraft/client/renderer/RegionRenderCacheBuilder getWorldRendererByLayerId (I)Lnet/minecraft/client/renderer/WorldRenderer; func_179039_a +MD net/minecraft/client/renderer/RegionRenderCacheBuilder getWorldRendererByLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)Lnet/minecraft/client/renderer/WorldRenderer; func_179038_a +MD net/minecraft/client/renderer/ChunkRenderContainer initialize (DDD)V func_178004_a +MD net/minecraft/client/renderer/ChunkRenderContainer renderChunkLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)V func_178001_a +MD net/minecraft/client/renderer/ChunkRenderContainer preRenderChunk (Lnet/minecraft/client/renderer/chunk/RenderChunk;)V func_178003_a +MD net/minecraft/client/renderer/ChunkRenderContainer addRenderChunk (Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/util/EnumWorldBlockLayer;)V func_178002_a +MD net/minecraft/client/renderer/tileentity/TileEntityItemStackRenderer renderByItem (Lnet/minecraft/item/ItemStack;)V func_179022_a +MD net/minecraft/client/renderer/EnumFaceDirection getVertexInformation (I)Lnet/minecraft/client/renderer/EnumFaceDirection$VertexInformation; func_179025_a +MD net/minecraft/client/renderer/EnumFaceDirection getFacing (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/EnumFaceDirection; func_179027_a +MD net/minecraft/client/renderer/EnumFaceDirection valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/EnumFaceDirection; valueOf +MD net/minecraft/client/renderer/EnumFaceDirection values ()[Lnet/minecraft/client/renderer/EnumFaceDirection; values +MD net/minecraft/client/renderer/EntityRenderer isShaderActive ()Z func_147702_a +MD net/minecraft/client/renderer/EntityRenderer getMouseOver (F)V func_78473_a +MD net/minecraft/client/renderer/EntityRenderer setFogColorBuffer (FFFF)Ljava/nio/FloatBuffer; func_78469_a +MD net/minecraft/client/renderer/EntityRenderer setupCameraTransform (FI)V func_78479_a +MD net/minecraft/client/renderer/EntityRenderer updateCameraAndRender (FJ)V func_181560_a +MD net/minecraft/client/renderer/EntityRenderer getFOVModifier (FZ)F func_78481_a +MD net/minecraft/client/renderer/EntityRenderer setupFog (IF)V func_78468_a +MD net/minecraft/client/renderer/EntityRenderer renderWorldPass (IFJ)V func_175068_a +MD net/minecraft/client/renderer/EntityRenderer updateShaderGroupSize (II)V func_147704_a +MD net/minecraft/client/renderer/EntityRenderer access$000 (Lnet/minecraft/client/renderer/EntityRenderer;)Lnet/minecraft/client/Minecraft; access$000 +MD net/minecraft/client/renderer/EntityRenderer renderCloudsCheck (Lnet/minecraft/client/renderer/RenderGlobal;FI)V func_180437_a +MD net/minecraft/client/renderer/EntityRenderer loadShader (Lnet/minecraft/util/ResourceLocation;)V func_175069_a +MD net/minecraft/client/renderer/EntityRenderer loadEntityShader (Lnet/minecraft/entity/Entity;)V func_175066_a +MD net/minecraft/client/renderer/EntityRenderer getNightVisionBrightness (Lnet/minecraft/entity/EntityLivingBase;F)F func_180438_a +MD net/minecraft/client/renderer/EntityRenderer stopUseShader ()V func_181022_b +MD net/minecraft/client/renderer/EntityRenderer renderStreamIndicator (F)V func_152430_c +MD net/minecraft/client/renderer/EntityRenderer renderHand (FI)V func_78476_b +MD net/minecraft/client/renderer/EntityRenderer renderWorld (FJ)V func_78471_a +MD net/minecraft/client/renderer/EntityRenderer switchUseShader ()V func_175071_c +MD net/minecraft/client/renderer/EntityRenderer renderRainSnow (F)V func_78474_d +MD net/minecraft/client/renderer/EntityRenderer activateNextShader ()V func_147705_c +MD net/minecraft/client/renderer/EntityRenderer hurtCameraEffect (F)V func_78482_e +MD net/minecraft/client/renderer/EntityRenderer updateRenderer ()V func_78464_a +MD net/minecraft/client/renderer/EntityRenderer setupViewBobbing (F)V func_78475_f +MD net/minecraft/client/renderer/EntityRenderer getShaderGroup ()Lnet/minecraft/client/shader/ShaderGroup; func_147706_e +MD net/minecraft/client/renderer/EntityRenderer orientCamera (F)V func_78467_g +MD net/minecraft/client/renderer/EntityRenderer updateLightmap (F)V func_78472_g +MD net/minecraft/client/renderer/EntityRenderer disableLightmap ()V func_175072_h +MD net/minecraft/client/renderer/EntityRenderer renderWorldDirections (F)V func_175067_i +MD net/minecraft/client/renderer/EntityRenderer enableLightmap ()V func_180436_i +MD net/minecraft/client/renderer/EntityRenderer updateFogColor (F)V func_78466_h +MD net/minecraft/client/renderer/EntityRenderer setupOverlayRendering ()V func_78478_c +MD net/minecraft/client/renderer/EntityRenderer getMapItemRenderer ()Lnet/minecraft/client/gui/MapItemRenderer; func_147701_i +MD net/minecraft/client/renderer/EntityRenderer updateFovModifierHand ()V func_78477_e +MD net/minecraft/client/renderer/EntityRenderer updateTorchFlicker ()V func_78470_f +MD net/minecraft/client/renderer/EntityRenderer isDrawBlockOutline ()Z func_175070_n +MD net/minecraft/client/renderer/EntityRenderer addRainParticles ()V func_78484_h +MD net/minecraft/client/renderer/EntityRenderer$1 apply (Lnet/minecraft/entity/Entity;)Z apply +MD net/minecraft/client/renderer/EntityRenderer$1 apply (Ljava/lang/Object;)Z apply +MD net/minecraft/client/renderer/EntityRenderer$2 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/EntityRenderer$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/EntityRenderer$3 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/EntityRenderer$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/EntityRenderer$4 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/EntityRenderer$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/GlStateManager disableNormalize ()V func_179133_A +MD net/minecraft/client/renderer/GlStateManager enableRescaleNormal ()V func_179091_B +MD net/minecraft/client/renderer/GlStateManager disableRescaleNormal ()V func_179101_C +MD net/minecraft/client/renderer/GlStateManager loadIdentity ()V func_179096_D +MD net/minecraft/client/renderer/GlStateManager pushMatrix ()V func_179094_E +MD net/minecraft/client/renderer/GlStateManager popMatrix ()V func_179121_F +MD net/minecraft/client/renderer/GlStateManager resetColor ()V func_179117_G +MD net/minecraft/client/renderer/GlStateManager pushAttrib ()V func_179123_a +MD net/minecraft/client/renderer/GlStateManager clearDepth (D)V func_179151_a +MD net/minecraft/client/renderer/GlStateManager scale (DDD)V func_179139_a +MD net/minecraft/client/renderer/GlStateManager ortho (DDDDDD)V func_179130_a +MD net/minecraft/client/renderer/GlStateManager setFogDensity (F)V func_179095_a +MD net/minecraft/client/renderer/GlStateManager doPolygonOffset (FF)V func_179136_a +MD net/minecraft/client/renderer/GlStateManager scale (FFF)V func_179152_a +MD net/minecraft/client/renderer/GlStateManager clearColor (FFFF)V func_179082_a +MD net/minecraft/client/renderer/GlStateManager enableLight (I)V func_179085_a +MD net/minecraft/client/renderer/GlStateManager alphaFunc (IF)V func_179092_a +MD net/minecraft/client/renderer/GlStateManager colorMaterial (II)V func_179104_a +MD net/minecraft/client/renderer/GlStateManager tryBlendFuncSeparate (IIII)V func_179120_a +MD net/minecraft/client/renderer/GlStateManager getFloat (ILjava/nio/FloatBuffer;)V func_179111_a +MD net/minecraft/client/renderer/GlStateManager enableTexGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)V func_179087_a +MD net/minecraft/client/renderer/GlStateManager texGen (Lnet/minecraft/client/renderer/GlStateManager$TexGen;I)V func_179149_a +MD net/minecraft/client/renderer/GlStateManager texGen (Lnet/minecraft/client/renderer/GlStateManager$TexGen;ILjava/nio/FloatBuffer;)V func_179105_a +MD net/minecraft/client/renderer/GlStateManager multMatrix (Ljava/nio/FloatBuffer;)V func_179110_a +MD net/minecraft/client/renderer/GlStateManager depthMask (Z)V func_179132_a +MD net/minecraft/client/renderer/GlStateManager colorMask (ZZZZ)V func_179135_a +MD net/minecraft/client/renderer/GlStateManager popAttrib ()V func_179099_b +MD net/minecraft/client/renderer/GlStateManager translate (DDD)V func_179137_b +MD net/minecraft/client/renderer/GlStateManager setFogStart (F)V func_179102_b +MD net/minecraft/client/renderer/GlStateManager translate (FFF)V func_179109_b +MD net/minecraft/client/renderer/GlStateManager rotate (FFFF)V func_179114_b +MD net/minecraft/client/renderer/GlStateManager disableLight (I)V func_179122_b +MD net/minecraft/client/renderer/GlStateManager blendFunc (II)V func_179112_b +MD net/minecraft/client/renderer/GlStateManager viewport (IIII)V func_179083_b +MD net/minecraft/client/renderer/GlStateManager disableTexGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)V func_179100_b +MD net/minecraft/client/renderer/GlStateManager disableAlpha ()V func_179118_c +MD net/minecraft/client/renderer/GlStateManager setFogEnd (F)V func_179153_c +MD net/minecraft/client/renderer/GlStateManager color (FFF)V func_179124_c +MD net/minecraft/client/renderer/GlStateManager color (FFFF)V func_179131_c +MD net/minecraft/client/renderer/GlStateManager depthFunc (I)V func_179143_c +MD net/minecraft/client/renderer/GlStateManager texGenCoord (Lnet/minecraft/client/renderer/GlStateManager$TexGen;)Lnet/minecraft/client/renderer/GlStateManager$TexGenCoord; func_179125_c +MD net/minecraft/client/renderer/GlStateManager enableAlpha ()V func_179141_d +MD net/minecraft/client/renderer/GlStateManager setFog (I)V func_179093_d +MD net/minecraft/client/renderer/GlStateManager enableLighting ()V func_179145_e +MD net/minecraft/client/renderer/GlStateManager cullFace (I)V func_179107_e +MD net/minecraft/client/renderer/GlStateManager disableLighting ()V func_179140_f +MD net/minecraft/client/renderer/GlStateManager colorLogicOp (I)V func_179116_f +MD net/minecraft/client/renderer/GlStateManager enableColorMaterial ()V func_179142_g +MD net/minecraft/client/renderer/GlStateManager setActiveTexture (I)V func_179138_g +MD net/minecraft/client/renderer/GlStateManager disableColorMaterial ()V func_179119_h +MD net/minecraft/client/renderer/GlStateManager deleteTexture (I)V func_179150_h +MD net/minecraft/client/renderer/GlStateManager disableDepth ()V func_179097_i +MD net/minecraft/client/renderer/GlStateManager bindTexture (I)V func_179144_i +MD net/minecraft/client/renderer/GlStateManager enableDepth ()V func_179126_j +MD net/minecraft/client/renderer/GlStateManager shadeModel (I)V func_179103_j +MD net/minecraft/client/renderer/GlStateManager disableBlend ()V func_179084_k +MD net/minecraft/client/renderer/GlStateManager enableBlend ()V func_179147_l +MD net/minecraft/client/renderer/GlStateManager enableFog ()V func_179127_m +MD net/minecraft/client/renderer/GlStateManager clear (I)V func_179086_m +MD net/minecraft/client/renderer/GlStateManager disableFog ()V func_179106_n +MD net/minecraft/client/renderer/GlStateManager matrixMode (I)V func_179128_n +MD net/minecraft/client/renderer/GlStateManager enableCull ()V func_179089_o +MD net/minecraft/client/renderer/GlStateManager callList (I)V func_179148_o +MD net/minecraft/client/renderer/GlStateManager disableCull ()V func_179129_p +MD net/minecraft/client/renderer/GlStateManager enablePolygonOffset ()V func_179088_q +MD net/minecraft/client/renderer/GlStateManager disablePolygonOffset ()V func_179113_r +MD net/minecraft/client/renderer/GlStateManager enableColorLogic ()V func_179115_u +MD net/minecraft/client/renderer/GlStateManager disableColorLogic ()V func_179134_v +MD net/minecraft/client/renderer/GlStateManager enableTexture2D ()V func_179098_w +MD net/minecraft/client/renderer/GlStateManager disableTexture2D ()V func_179090_x +MD net/minecraft/client/renderer/GlStateManager generateTexture ()I func_179146_y +MD net/minecraft/client/renderer/GlStateManager enableNormalize ()V func_179108_z +MD net/minecraft/client/renderer/GlStateManager$BooleanState setDisabled ()V func_179198_a +MD net/minecraft/client/renderer/GlStateManager$BooleanState setState (Z)V func_179199_a +MD net/minecraft/client/renderer/GlStateManager$BooleanState setEnabled ()V func_179200_b +MD net/minecraft/client/renderer/GlStateManager$TexGen valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/GlStateManager$TexGen; valueOf +MD net/minecraft/client/renderer/GlStateManager$TexGen values ()[Lnet/minecraft/client/renderer/GlStateManager$TexGen; values +MD net/minecraft/client/renderer/IImageBuffer skinAvailable ()V func_152634_a +MD net/minecraft/client/renderer/IImageBuffer parseUserSkin (Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage; func_78432_a +MD net/minecraft/client/renderer/ItemRenderer updateEquippedItem ()V func_78441_a +MD net/minecraft/client/renderer/ItemRenderer renderItemInFirstPerson (F)V func_78440_a +MD net/minecraft/client/renderer/ItemRenderer rotateArroundXAndY (FF)V func_178101_a +MD net/minecraft/client/renderer/ItemRenderer doBowTransformations (FLnet/minecraft/client/entity/AbstractClientPlayer;)V func_178098_a +MD net/minecraft/client/renderer/ItemRenderer renderBlockInHand (FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_178108_a +MD net/minecraft/client/renderer/ItemRenderer isBlockTranslucent (Lnet/minecraft/block/Block;)Z func_178107_a +MD net/minecraft/client/renderer/ItemRenderer setLightMapFromPlayer (Lnet/minecraft/client/entity/AbstractClientPlayer;)V func_178109_a +MD net/minecraft/client/renderer/ItemRenderer performDrinking (Lnet/minecraft/client/entity/AbstractClientPlayer;F)V func_178104_a +MD net/minecraft/client/renderer/ItemRenderer renderPlayerArm (Lnet/minecraft/client/entity/AbstractClientPlayer;FF)V func_178095_a +MD net/minecraft/client/renderer/ItemRenderer renderItemMap (Lnet/minecraft/client/entity/AbstractClientPlayer;FFF)V func_178097_a +MD net/minecraft/client/renderer/ItemRenderer rotateWithPlayerRotations (Lnet/minecraft/client/entity/EntityPlayerSP;F)V func_178110_a +MD net/minecraft/client/renderer/ItemRenderer renderRightArm (Lnet/minecraft/client/renderer/entity/RenderPlayer;)V func_180534_a +MD net/minecraft/client/renderer/ItemRenderer renderItem (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V func_178099_a +MD net/minecraft/client/renderer/ItemRenderer resetEquippedProgress ()V func_78444_b +MD net/minecraft/client/renderer/ItemRenderer renderOverlays (F)V func_78447_b +MD net/minecraft/client/renderer/ItemRenderer transformFirstPersonItem (FF)V func_178096_b +MD net/minecraft/client/renderer/ItemRenderer renderPlayerArms (Lnet/minecraft/client/entity/AbstractClientPlayer;)V func_178102_b +MD net/minecraft/client/renderer/ItemRenderer renderLeftArm (Lnet/minecraft/client/renderer/entity/RenderPlayer;)V func_178106_b +MD net/minecraft/client/renderer/ItemRenderer resetEquippedProgress2 ()V func_78445_c +MD net/minecraft/client/renderer/ItemRenderer getMapAngleFromPitch (F)F func_178100_c +MD net/minecraft/client/renderer/ItemRenderer doBlockTransformations ()V func_178103_d +MD net/minecraft/client/renderer/ItemRenderer doItemUsedTransformations (F)V func_178105_d +MD net/minecraft/client/renderer/ItemRenderer renderWaterOverlayTexture (F)V func_78448_c +MD net/minecraft/client/renderer/ItemRenderer renderFireInFirstPerson (F)V func_78442_d +MD net/minecraft/client/renderer/ItemModelMesher getModelManager ()Lnet/minecraft/client/resources/model/ModelManager; func_178083_a +MD net/minecraft/client/renderer/ItemModelMesher getParticleIcon (Lnet/minecraft/item/Item;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_178082_a +MD net/minecraft/client/renderer/ItemModelMesher getParticleIcon (Lnet/minecraft/item/Item;I)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_178087_a +MD net/minecraft/client/renderer/ItemModelMesher register (Lnet/minecraft/item/Item;ILnet/minecraft/client/resources/model/ModelResourceLocation;)V func_178086_a +MD net/minecraft/client/renderer/ItemModelMesher register (Lnet/minecraft/item/Item;Lnet/minecraft/client/renderer/ItemMeshDefinition;)V func_178080_a +MD net/minecraft/client/renderer/ItemModelMesher getItemModel (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/resources/model/IBakedModel; func_178089_a +MD net/minecraft/client/renderer/ItemModelMesher rebuildCache ()V func_178085_b +MD net/minecraft/client/renderer/ItemModelMesher getItemModel (Lnet/minecraft/item/Item;I)Lnet/minecraft/client/resources/model/IBakedModel; func_178088_b +MD net/minecraft/client/renderer/ItemModelMesher getMetadata (Lnet/minecraft/item/ItemStack;)I func_178084_b +MD net/minecraft/client/renderer/ItemModelMesher getIndex (Lnet/minecraft/item/Item;I)I func_178081_c +MD net/minecraft/client/renderer/ItemMeshDefinition getModelLocation (Lnet/minecraft/item/ItemStack;)Lnet/minecraft/client/resources/model/ModelResourceLocation; func_178113_a +MD net/minecraft/client/renderer/RenderGlobal loadRenderers ()V func_72712_a +MD net/minecraft/client/renderer/RenderGlobal fixTerrainFrustum (DDD)V func_174984_a +MD net/minecraft/client/renderer/RenderGlobal hasCloudFog (DDDF)Z func_72721_a +MD net/minecraft/client/renderer/RenderGlobal renderSky (FI)V func_174976_a +MD net/minecraft/client/renderer/RenderGlobal createBindEntityOutlineFbs (II)V func_72720_a +MD net/minecraft/client/renderer/RenderGlobal updateChunks (J)V func_174967_a +MD net/minecraft/client/renderer/RenderGlobal renderBlockLayer (Lnet/minecraft/util/EnumWorldBlockLayer;)V func_174982_a +MD net/minecraft/client/renderer/RenderGlobal renderBlockLayer (Lnet/minecraft/util/EnumWorldBlockLayer;DILnet/minecraft/entity/Entity;)I func_174977_a +MD net/minecraft/client/renderer/RenderGlobal drawSelectionBoundingBox (Lnet/minecraft/util/AxisAlignedBB;)V func_181561_a +MD net/minecraft/client/renderer/RenderGlobal drawOutlinedBoundingBox (Lnet/minecraft/util/AxisAlignedBB;IIII)V func_181563_a +MD net/minecraft/client/renderer/RenderGlobal setWorldAndLoadRenderers (Lnet/minecraft/client/multiplayer/WorldClient;)V func_72732_a +MD net/minecraft/client/renderer/RenderGlobal renderStars (Lnet/minecraft/client/renderer/WorldRenderer;)V func_180444_a +MD net/minecraft/client/renderer/RenderGlobal renderSky (Lnet/minecraft/client/renderer/WorldRenderer;FZ)V func_174968_a +MD net/minecraft/client/renderer/RenderGlobal drawBlockDamageTexture (Lnet/minecraft/client/renderer/Tessellator;Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/entity/Entity;F)V func_174981_a +MD net/minecraft/client/renderer/RenderGlobal isPositionInRenderChunk (Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z func_174983_a +MD net/minecraft/client/renderer/RenderGlobal getRenderChunkOffset (Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/chunk/RenderChunk; func_181562_a +MD net/minecraft/client/renderer/RenderGlobal spawnParticle (Lnet/minecraft/util/EnumParticleTypes;DDDDDD[I)V func_174972_a +MD net/minecraft/client/renderer/RenderGlobal updateTileEntities (Ljava/util/Collection;Ljava/util/Collection;)V func_181023_a +MD net/minecraft/client/renderer/RenderGlobal cleanupDamagedBlocks (Ljava/util/Iterator;)V func_174965_a +MD net/minecraft/client/renderer/RenderGlobal getViewVector (Lnet/minecraft/entity/Entity;D)Lorg/lwjgl/util/vector/Vector3f; func_174962_a +MD net/minecraft/client/renderer/RenderGlobal setupTerrain (Lnet/minecraft/entity/Entity;DLnet/minecraft/client/renderer/culling/ICamera;IZ)V func_174970_a +MD net/minecraft/client/renderer/RenderGlobal renderWorldBorder (Lnet/minecraft/entity/Entity;F)V func_180449_a +MD net/minecraft/client/renderer/RenderGlobal renderEntities (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;F)V func_180446_a +MD net/minecraft/client/renderer/RenderGlobal drawSelectionBox (Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/MovingObjectPosition;IF)V func_72731_b +MD net/minecraft/client/renderer/RenderGlobal makeEntityOutlineShader ()V func_174966_b +MD net/minecraft/client/renderer/RenderGlobal renderClouds (FI)V func_180447_b +MD net/minecraft/client/renderer/RenderGlobal markBlocksForUpdate (IIIIII)V func_72725_b +MD net/minecraft/client/renderer/RenderGlobal spawnEntityFX (IZDDDDDD[I)Lnet/minecraft/client/particle/EntityFX; func_174974_b +MD net/minecraft/client/renderer/RenderGlobal renderEntityOutlineFramebuffer ()V func_174975_c +MD net/minecraft/client/renderer/RenderGlobal renderCloudsFancy (FI)V func_180445_c +MD net/minecraft/client/renderer/RenderGlobal getVisibleFacings (Lnet/minecraft/util/BlockPos;)Ljava/util/Set; func_174978_c +MD net/minecraft/client/renderer/RenderGlobal isRenderEntityOutlines ()Z func_174985_d +MD net/minecraft/client/renderer/RenderGlobal stopChunkUpdates ()V func_174986_e +MD net/minecraft/client/renderer/RenderGlobal getDebugInfoRenders ()Ljava/lang/String; func_72735_c +MD net/minecraft/client/renderer/RenderGlobal getDebugInfoEntities ()Ljava/lang/String; func_72723_d +MD net/minecraft/client/renderer/RenderGlobal updateClouds ()V func_72734_e +MD net/minecraft/client/renderer/RenderGlobal deleteAllDisplayLists ()V func_72728_f +MD net/minecraft/client/renderer/RenderGlobal setDisplayListEntitiesDirty ()V func_174979_m +MD net/minecraft/client/renderer/RenderGlobal updateDestroyBlockIcons ()V func_174971_n +MD net/minecraft/client/renderer/RenderGlobal generateSky2 ()V func_174964_o +MD net/minecraft/client/renderer/RenderGlobal generateSky ()V func_174980_p +MD net/minecraft/client/renderer/RenderGlobal generateStars ()V func_174963_q +MD net/minecraft/client/renderer/RenderGlobal renderSkyEnd ()V func_180448_r +MD net/minecraft/client/renderer/RenderGlobal preRenderDamagedBlocks ()V func_180443_s +MD net/minecraft/client/renderer/RenderGlobal postRenderDamagedBlocks ()V func_174969_t +MD net/minecraft/client/renderer/RenderGlobal$1 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/RenderGlobal$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/ImageBufferDownload setAreaTransparent (IIII)V func_78434_a +MD net/minecraft/client/renderer/ImageBufferDownload setAreaOpaque (IIII)V func_78433_b +MD net/minecraft/client/renderer/ImageBufferDownload hasTransparency (IIII)Z func_78435_c +MD net/minecraft/client/shader/Framebuffer deleteFramebuffer ()V func_147608_a +MD net/minecraft/client/shader/Framebuffer setFramebufferColor (FFFF)V func_147604_a +MD net/minecraft/client/shader/Framebuffer setFramebufferFilter (I)V func_147607_a +MD net/minecraft/client/shader/Framebuffer createBindFramebuffer (II)V func_147613_a +MD net/minecraft/client/shader/Framebuffer framebufferRenderExt (IIZ)V func_178038_a +MD net/minecraft/client/shader/Framebuffer bindFramebuffer (Z)V func_147610_a +MD net/minecraft/client/shader/Framebuffer checkFramebufferComplete ()V func_147611_b +MD net/minecraft/client/shader/Framebuffer createFramebuffer (II)V func_147605_b +MD net/minecraft/client/shader/Framebuffer bindFramebufferTexture ()V func_147612_c +MD net/minecraft/client/shader/Framebuffer framebufferRender (II)V func_147615_c +MD net/minecraft/client/shader/Framebuffer unbindFramebufferTexture ()V func_147606_d +MD net/minecraft/client/shader/Framebuffer unbindFramebuffer ()V func_147609_e +MD net/minecraft/client/shader/Framebuffer framebufferClear ()V func_147614_f +MD net/minecraft/client/renderer/Tessellator getInstance ()Lnet/minecraft/client/renderer/Tessellator; func_178181_a +MD net/minecraft/client/renderer/Tessellator draw ()V func_78381_a +MD net/minecraft/client/renderer/Tessellator getWorldRenderer ()Lnet/minecraft/client/renderer/WorldRenderer; func_178180_c +MD net/minecraft/client/renderer/VboRenderList setupArrayPointers ()V func_178010_a +MD net/minecraft/client/renderer/VertexBufferUploader setVertexBuffer (Lnet/minecraft/client/renderer/vertex/VertexBuffer;)V func_178178_a +MD net/minecraft/client/renderer/ViewFrustum deleteGlResources ()V func_178160_a +MD net/minecraft/client/renderer/ViewFrustum updateChunkPositions (DD)V func_178163_a +MD net/minecraft/client/renderer/ViewFrustum setCountChunksXYZ (I)V func_178159_a +MD net/minecraft/client/renderer/ViewFrustum func_178157_a (III)I func_178157_a +MD net/minecraft/client/renderer/ViewFrustum markBlocksForUpdate (IIIIII)V func_178162_a +MD net/minecraft/client/renderer/ViewFrustum createRenderChunks (Lnet/minecraft/client/renderer/chunk/IRenderChunkFactory;)V func_178158_a +MD net/minecraft/client/renderer/ViewFrustum getRenderChunk (Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/renderer/chunk/RenderChunk; func_178161_a +MD net/minecraft/client/renderer/ChestRenderer renderChestBrightness (Lnet/minecraft/block/Block;F)V func_178175_a +MD net/minecraft/client/renderer/BlockModelShapes getBlockStateMapper ()Lnet/minecraft/client/renderer/block/statemap/BlockStateMapper; func_178120_a +MD net/minecraft/client/renderer/BlockModelShapes registerBlockWithStateMapper (Lnet/minecraft/block/Block;Lnet/minecraft/client/renderer/block/statemap/IStateMapper;)V func_178121_a +MD net/minecraft/client/renderer/BlockModelShapes getTexture (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_178122_a +MD net/minecraft/client/renderer/BlockModelShapes registerBuiltInBlocks ([Lnet/minecraft/block/Block;)V func_178123_a +MD net/minecraft/client/renderer/BlockModelShapes getModelManager ()Lnet/minecraft/client/resources/model/ModelManager; func_178126_b +MD net/minecraft/client/renderer/BlockModelShapes getModelForState (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/resources/model/IBakedModel; func_178125_b +MD net/minecraft/client/renderer/BlockModelShapes reloadModels ()V func_178124_c +MD net/minecraft/client/renderer/BlockModelShapes registerAllBlocks ()V func_178119_d +MD net/minecraft/client/renderer/BlockRendererDispatcher getBlockModelShapes ()Lnet/minecraft/client/renderer/BlockModelShapes; func_175023_a +MD net/minecraft/client/renderer/BlockRendererDispatcher isRenderTypeChest (Lnet/minecraft/block/Block;I)Z func_175021_a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlockBrightness (Lnet/minecraft/block/state/IBlockState;F)V func_175016_a +MD net/minecraft/client/renderer/BlockRendererDispatcher getModelFromBlockState (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/resources/model/IBakedModel; func_175022_a +MD net/minecraft/client/renderer/BlockRendererDispatcher getBakedModel (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;)Lnet/minecraft/client/resources/model/IBakedModel; func_175017_a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlock (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/renderer/WorldRenderer;)Z func_175018_a +MD net/minecraft/client/renderer/BlockRendererDispatcher renderBlockDamage (Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/world/IBlockAccess;)V func_175020_a +MD net/minecraft/client/renderer/BlockRendererDispatcher getBlockModelRenderer ()Lnet/minecraft/client/renderer/BlockModelRenderer; func_175019_b +MD net/minecraft/client/renderer/BlockFluidRenderer initAtlasSprites ()V func_178268_a +MD net/minecraft/client/renderer/BlockFluidRenderer renderFluid (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;)Z func_178270_a +MD net/minecraft/client/renderer/BlockFluidRenderer getFluidHeight (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/util/BlockPos;Lnet/minecraft/block/material/Material;)F func_178269_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightnessColorQuads (FFFFLjava/util/List;)V func_178264_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelAmbientOcclusionQuads (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;[FLjava/util/BitSet;Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)V func_178263_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelStandardQuads (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;IZLnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;Ljava/util/BitSet;)V func_178260_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelAmbientOcclusion (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z func_178265_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;)Z func_178259_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModel (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z func_178267_a +MD net/minecraft/client/renderer/BlockModelRenderer fillQuadBounds (Lnet/minecraft/block/Block;[ILnet/minecraft/util/EnumFacing;[FLjava/util/BitSet;)V func_178261_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightnessColor (Lnet/minecraft/client/resources/model/IBakedModel;FFFF)V func_178262_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelBrightness (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/state/IBlockState;FZ)V func_178266_a +MD net/minecraft/client/renderer/BlockModelRenderer renderModelStandard (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/client/renderer/WorldRenderer;Z)Z func_178258_b +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo getNeighbourInfo (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; func_178273_a +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$EnumNeighborInfo; values +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace getAoBrightness (IIII)I func_147778_a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace getVertexBrightness (IIIIFFFF)I func_178203_a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace updateVertexBrightness (Lnet/minecraft/world/IBlockAccess;Lnet/minecraft/block/Block;Lnet/minecraft/util/BlockPos;Lnet/minecraft/util/EnumFacing;[FLjava/util/BitSet;)V func_178204_a +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace access$000 (Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)[I access$000 +MD net/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace access$100 (Lnet/minecraft/client/renderer/BlockModelRenderer$AmbientOcclusionFace;)[F access$100 +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$200 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I access$200 +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations getVertexTranslations (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; func_178184_a +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$300 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I access$300 +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$400 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I access$400 +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations access$500 (Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations;)I access$500 +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$VertexTranslations values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$VertexTranslations; values +MD net/minecraft/client/renderer/BlockModelRenderer$Orientation valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/BlockModelRenderer$Orientation; valueOf +MD net/minecraft/client/renderer/BlockModelRenderer$Orientation values ()[Lnet/minecraft/client/renderer/BlockModelRenderer$Orientation; values +MD net/minecraft/client/renderer/block/model/BakedQuad getVertexData ()[I func_178209_a +MD net/minecraft/client/renderer/block/model/BakedQuad hasTintIndex ()Z func_178212_b +MD net/minecraft/client/renderer/block/model/BakedQuad getTintIndex ()I func_178211_c +MD net/minecraft/client/renderer/block/model/BakedQuad getFace ()Lnet/minecraft/util/EnumFacing; func_178210_d +MD net/minecraft/client/renderer/block/model/BlockPart setDefaultUvs ()V func_178235_a +MD net/minecraft/client/renderer/block/model/BlockPart getFaceUvs (Lnet/minecraft/util/EnumFacing;)[F func_178236_a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseFacesCheck (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; func_178250_a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockPart; deserialize +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseRotation (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/renderer/block/model/BlockPartRotation; func_178256_a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePosition (Lcom/google/gson/JsonObject;Ljava/lang/String;)Lorg/lwjgl/util/vector/Vector3f; func_178251_a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseEnumFacing (Ljava/lang/String;)Lnet/minecraft/util/EnumFacing; func_178248_a +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseFaces (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/Map; func_178253_b +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseAngle (Lcom/google/gson/JsonObject;)F func_178255_b +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parseAxis (Lcom/google/gson/JsonObject;)Lnet/minecraft/util/EnumFacing$Axis; func_178252_c +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePositionTo (Lcom/google/gson/JsonObject;)Lorg/lwjgl/util/vector/Vector3f; func_178247_d +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer parsePositionFrom (Lcom/google/gson/JsonObject;)Lorg/lwjgl/util/vector/Vector3f; func_178249_e +MD net/minecraft/client/renderer/block/model/BlockPart$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockPartFace; deserialize +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseTintIndex (Lcom/google/gson/JsonObject;)I func_178337_a +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseTexture (Lcom/google/gson/JsonObject;)Ljava/lang/String; func_178340_b +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer parseCullFace (Lcom/google/gson/JsonObject;)Lnet/minecraft/util/EnumFacing; func_178339_c +MD net/minecraft/client/renderer/block/model/BlockPartFace$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178348_a (I)F func_178348_a +MD net/minecraft/client/renderer/block/model/BlockFaceUV setUvs ([F)V func_178349_a +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178346_b (I)F func_178346_b +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178345_c (I)I func_178345_c +MD net/minecraft/client/renderer/block/model/BlockFaceUV func_178347_d (I)I func_178347_d +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/BlockFaceUV; deserialize +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer parseRotation (Lcom/google/gson/JsonObject;)I func_178291_a +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer parseUV (Lcom/google/gson/JsonObject;)[F func_178292_b +MD net/minecraft/client/renderer/block/model/BlockFaceUV$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlock getElements ()Ljava/util/List; func_178298_a +MD net/minecraft/client/renderer/block/model/ModelBlock getTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; func_181681_a +MD net/minecraft/client/renderer/block/model/ModelBlock deserialize (Ljava/io/Reader;)Lnet/minecraft/client/renderer/block/model/ModelBlock; func_178307_a +MD net/minecraft/client/renderer/block/model/ModelBlock deserialize (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ModelBlock; func_178294_a +MD net/minecraft/client/renderer/block/model/ModelBlock resolveTextureName (Ljava/lang/String;Lnet/minecraft/client/renderer/block/model/ModelBlock$Bookkeep;)Ljava/lang/String; func_178302_a +MD net/minecraft/client/renderer/block/model/ModelBlock getParentFromMap (Ljava/util/Map;)V func_178299_a +MD net/minecraft/client/renderer/block/model/ModelBlock isAmbientOcclusion ()Z func_178309_b +MD net/minecraft/client/renderer/block/model/ModelBlock isTexturePresent (Ljava/lang/String;)Z func_178300_b +MD net/minecraft/client/renderer/block/model/ModelBlock checkModelHierarchy (Ljava/util/Map;)V func_178312_b +MD net/minecraft/client/renderer/block/model/ModelBlock isGui3d ()Z func_178311_c +MD net/minecraft/client/renderer/block/model/ModelBlock resolveTextureName (Ljava/lang/String;)Ljava/lang/String; func_178308_c +MD net/minecraft/client/renderer/block/model/ModelBlock isResolved ()Z func_178303_d +MD net/minecraft/client/renderer/block/model/ModelBlock startsWithHash (Ljava/lang/String;)Z func_178304_d +MD net/minecraft/client/renderer/block/model/ModelBlock getParentLocation ()Lnet/minecraft/util/ResourceLocation; func_178305_e +MD net/minecraft/client/renderer/block/model/ModelBlock getRootModel ()Lnet/minecraft/client/renderer/block/model/ModelBlock; func_178310_f +MD net/minecraft/client/renderer/block/model/ModelBlock getAllTransforms ()Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; func_181682_g +MD net/minecraft/client/renderer/block/model/ModelBlock hasParent ()Z func_178295_k +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getModelElements (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; func_178325_a +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlock; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getAmbientOcclusionEnabled (Lcom/google/gson/JsonObject;)Z func_178328_a +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getTextures (Lcom/google/gson/JsonObject;)Ljava/util/Map; func_178329_b +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer getParent (Lcom/google/gson/JsonObject;)Ljava/lang/String; func_178326_c +MD net/minecraft/client/renderer/block/model/ModelBlock$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition parseFromReader (Ljava/io/Reader;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; func_178331_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition getVariants (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants; func_178330_b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer parseVariantsList (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;)Ljava/util/List; func_178334_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer parseVariants (Lcom/google/gson/JsonDeserializationContext;Ljava/util/Map$Entry;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants; func_178335_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getModelLocation ()Lnet/minecraft/util/ResourceLocation; func_178431_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getRotation ()Lnet/minecraft/client/resources/model/ModelRotation; func_178432_b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant isUvLocked ()Z func_178433_c +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant getWeight ()I func_178430_d +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseRotation (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/resources/model/ModelRotation; func_178428_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer makeModelLocation (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; func_178426_a +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseModel (Lcom/google/gson/JsonObject;)Ljava/lang/String; func_178424_b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseWeight (Lcom/google/gson/JsonObject;)I func_178427_c +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer parseUvLock (Lcom/google/gson/JsonObject;)Z func_178429_d +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variant$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants access$000 (Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants;)Ljava/lang/String; access$000 +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants getVariants ()Ljava/util/List; func_178420_b +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ModelBlockDefinition$Variants hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/BreakingFour remapVert (I)V func_178216_a +MD net/minecraft/client/renderer/block/model/BreakingFour remapQuad ()V func_178217_e +MD net/minecraft/client/renderer/block/model/FaceBakery getMatrixIdentity ()Lorg/lwjgl/util/vector/Matrix4f; func_178411_a +MD net/minecraft/client/renderer/block/model/FaceBakery lockVertexUv (I[ILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_178401_a +MD net/minecraft/client/renderer/block/model/FaceBakery makeQuadVertexData (Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;[FLnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)[I func_178405_a +MD net/minecraft/client/renderer/block/model/FaceBakery getFaceShadeColor (Lnet/minecraft/util/EnumFacing;)I func_178413_a +MD net/minecraft/client/renderer/block/model/FaceBakery rotatePart (Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;)V func_178407_a +MD net/minecraft/client/renderer/block/model/FaceBakery rotateVertex (Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/util/EnumFacing;ILnet/minecraft/client/resources/model/ModelRotation;Z)I func_178415_a +MD net/minecraft/client/renderer/block/model/FaceBakery getPositionsDiv16 (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;)[F func_178403_a +MD net/minecraft/client/renderer/block/model/FaceBakery makeBakedQuad (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)Lnet/minecraft/client/renderer/block/model/BakedQuad; func_178414_a +MD net/minecraft/client/renderer/block/model/FaceBakery rotateScale (Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Vector3f;Lorg/lwjgl/util/vector/Matrix4f;Lorg/lwjgl/util/vector/Vector3f;)V func_178406_a +MD net/minecraft/client/renderer/block/model/FaceBakery getFacingFromVertexData ([I)Lnet/minecraft/util/EnumFacing; func_178410_a +MD net/minecraft/client/renderer/block/model/FaceBakery storeVertexData ([IIILorg/lwjgl/util/vector/Vector3f;ILnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;)V func_178404_a +MD net/minecraft/client/renderer/block/model/FaceBakery fillVertexData ([IILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockPartFace;[FLnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/client/resources/model/ModelRotation;Lnet/minecraft/client/renderer/block/model/BlockPartRotation;ZZ)V func_178402_a +MD net/minecraft/client/renderer/block/model/FaceBakery applyFacing ([ILnet/minecraft/util/EnumFacing;)V func_178408_a +MD net/minecraft/client/renderer/block/model/FaceBakery lockUv ([ILnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BlockFaceUV;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_178409_a +MD net/minecraft/client/renderer/block/model/FaceBakery getFaceBrightness (Lnet/minecraft/util/EnumFacing;)F func_178412_b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178394_a (ILjava/lang/String;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Ljava/util/List; func_178394_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178396_a (Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;Ljava/util/List;[IIIIIZ)V func_178396_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator makeItemModel (Lnet/minecraft/client/renderer/texture/TextureMap;Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; func_178392_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178393_a (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Ljava/util/List; func_178393_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178397_a (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Ljava/lang/String;I)Ljava/util/List; func_178397_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178395_a (Ljava/util/List;Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;II)V func_178395_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator func_178391_a ([IIIII)Z func_178391_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178383_a ()Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; func_178383_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178382_a (I)V func_178382_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178385_b ()I func_178385_b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178384_c ()I func_178384_c +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$Span func_178381_d ()I func_178381_d +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing getFacing ()Lnet/minecraft/util/EnumFacing; func_178367_a +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing access$000 (Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing;)Z access$000 +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178372_b ()I func_178372_b +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178371_c ()I func_178371_c +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing func_178369_d ()Z func_178369_d +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; valueOf +MD net/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing values ()[Lnet/minecraft/client/renderer/block/model/ItemModelGenerator$SpanFacing; values +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f hashCode ()I hashCode +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; deserialize +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer parseVector3f (Lcom/google/gson/JsonObject;Ljava/lang/String;Lorg/lwjgl/util/vector/Vector3f;)Lorg/lwjgl/util/vector/Vector3f; func_178358_a +MD net/minecraft/client/renderer/block/model/ItemTransformVec3f$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms applyTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V func_181689_a +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms getTransform (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; func_181688_b +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms func_181687_c (Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)Z func_181687_c +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer func_181683_a (Lcom/google/gson/JsonDeserializationContext;Lcom/google/gson/JsonObject;Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f; func_181683_a +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; deserialize +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$Deserializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType; valueOf +MD net/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType values ()[Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType; values +MD net/minecraft/client/renderer/block/statemap/StateMapperBase getModelResourceLocation (Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/resources/model/ModelResourceLocation; func_178132_a +MD net/minecraft/client/renderer/block/statemap/StateMapperBase getPropertyString (Ljava/util/Map;)Ljava/lang/String; func_178131_a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper putAllStateModelLocations ()Ljava/util/Map; func_178446_a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper registerBlockStateMapper (Lnet/minecraft/block/Block;Lnet/minecraft/client/renderer/block/statemap/IStateMapper;)V func_178447_a +MD net/minecraft/client/renderer/block/statemap/BlockStateMapper registerBuiltInBlocks ([Lnet/minecraft/block/Block;)V func_178448_a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder build ()Lnet/minecraft/client/renderer/block/statemap/StateMap; func_178441_a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder withName (Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; func_178440_a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder withSuffix (Ljava/lang/String;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; func_178439_a +MD net/minecraft/client/renderer/block/statemap/StateMap$Builder ignore ([Lnet/minecraft/block/properties/IProperty;)Lnet/minecraft/client/renderer/block/statemap/StateMap$Builder; func_178442_a +MD net/minecraft/client/renderer/block/statemap/IStateMapper putStateModelLocations (Lnet/minecraft/block/Block;)Ljava/util/Map; func_178130_a +MD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer func_178463_a (Lnet/minecraft/tileentity/TileEntityBanner;)Lnet/minecraft/util/ResourceLocation; func_178463_a +MD net/minecraft/client/renderer/tileentity/TileEntityBannerRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityBanner;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityBeaconRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityBeacon;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; func_147548_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher setWorld (Lnet/minecraft/world/World;)V func_147543_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher cacheActiveRenderInfo (Lnet/minecraft/world/World;Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/entity/Entity;F)V func_178470_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDF)V func_147549_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDFI)V func_178469_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher renderTileEntity (Lnet/minecraft/tileentity/TileEntity;FI)V func_180546_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getSpecialRendererByClass (Ljava/lang/Class;)Lnet/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer; func_147546_a +MD net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher getSpecialRenderer (Lnet/minecraft/tileentity/TileEntity;)Lnet/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer; func_147547_b +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer forceTileEntityRender ()Z func_181055_a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntity;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer setRendererDispatcher (Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;)V func_147497_a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer bindTexture (Lnet/minecraft/util/ResourceLocation;)V func_147499_a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer getWorld ()Lnet/minecraft/world/World; func_178459_a +MD net/minecraft/client/renderer/tileentity/TileEntitySpecialRenderer getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; func_147498_b +MD net/minecraft/client/renderer/tileentity/TileEntityChestRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityChest;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityEnchantmentTableRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEnchantmentTable;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityEnderChestRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEnderChest;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer renderMob (Lnet/minecraft/tileentity/MobSpawnerBaseLogic;DDDF)V func_147517_a +MD net/minecraft/client/renderer/tileentity/TileEntityMobSpawnerRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityMobSpawner;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityPistonRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityPiston;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntitySignRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntitySign;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer renderSkull (FFFLnet/minecraft/util/EnumFacing;FILcom/mojang/authlib/GameProfile;I)V func_180543_a +MD net/minecraft/client/renderer/tileentity/TileEntitySkullRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntitySkull;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer func_147525_a (FFFF)Ljava/nio/FloatBuffer; func_147525_a +MD net/minecraft/client/renderer/tileentity/TileEntityEndPortalRenderer renderTileEntityAt (Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFI)V func_180535_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getStatus ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; func_178546_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setRegionRenderCacheBuilder (Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)V func_178541_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setStatus (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status;)V func_178535_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator setCompiledChunk (Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V func_178543_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator addFinishRunnable (Ljava/lang/Runnable;)V func_178539_a +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getRenderChunk ()Lnet/minecraft/client/renderer/chunk/RenderChunk; func_178536_b +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getCompiledChunk ()Lnet/minecraft/client/renderer/chunk/CompiledChunk; func_178544_c +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getRegionRenderCacheBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; func_178545_d +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator finish ()V func_178542_e +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getLock ()Ljava/util/concurrent/locks/ReentrantLock; func_178540_f +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator getType ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; func_178538_g +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator isFinished ()Z func_178537_h +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; valueOf +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status values ()[Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Status; values +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; valueOf +MD net/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type values ()[Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator$Type; values +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher getDebugInfo ()Ljava/lang/String; func_178504_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher runChunkUploads (J)Z func_178516_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadChunk (Lnet/minecraft/util/EnumWorldBlockLayer;Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/chunk/RenderChunk;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)Lcom/google/common/util/concurrent/ListenableFuture; func_178503_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadDisplayList (Lnet/minecraft/client/renderer/WorldRenderer;ILnet/minecraft/client/renderer/chunk/RenderChunk;)V func_178510_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher uploadVertexBuffer (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/vertex/VertexBuffer;)V func_178506_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher freeRenderBuilder (Lnet/minecraft/client/renderer/RegionRenderCacheBuilder;)V func_178512_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher access$000 (Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher;)Ljava/util/concurrent/BlockingQueue; access$000 +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateChunkLater (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z func_178507_a +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher stopChunkUpdates ()V func_178514_b +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateChunkNow (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z func_178505_b +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher allocateRenderBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; func_178515_c +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher updateTransparencyLater (Lnet/minecraft/client/renderer/chunk/RenderChunk;)Z func_178509_c +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher getNextChunkUpdate ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; func_178511_d +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher clearChunkUpdates ()V func_178513_e +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$1 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$2 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderDispatcher$3 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker access$100 ()Lorg/apache/logging/log4j/Logger; access$100 +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker processTask (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V func_178474_a +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker access$000 (Lnet/minecraft/client/renderer/chunk/ChunkRenderWorker;Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V access$000 +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker getRegionRenderCacheBuilder ()Lnet/minecraft/client/renderer/RegionRenderCacheBuilder; func_178475_b +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker freeRenderBuilder (Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V func_178473_b +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$1 run ()V run +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onSuccess (Ljava/util/List;)V onSuccess +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/renderer/chunk/ChunkRenderWorker$2 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/renderer/chunk/CompiledChunk isEmpty ()Z func_178489_a +MD net/minecraft/client/renderer/chunk/CompiledChunk setLayerUsed (Lnet/minecraft/util/EnumWorldBlockLayer;)V func_178486_a +MD net/minecraft/client/renderer/chunk/CompiledChunk addTileEntity (Lnet/minecraft/tileentity/TileEntity;)V func_178490_a +MD net/minecraft/client/renderer/chunk/CompiledChunk setState (Lnet/minecraft/client/renderer/WorldRenderer$State;)V func_178494_a +MD net/minecraft/client/renderer/chunk/CompiledChunk setVisibility (Lnet/minecraft/client/renderer/chunk/SetVisibility;)V func_178488_a +MD net/minecraft/client/renderer/chunk/CompiledChunk isVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Z func_178495_a +MD net/minecraft/client/renderer/chunk/CompiledChunk getTileEntities ()Ljava/util/List; func_178485_b +MD net/minecraft/client/renderer/chunk/CompiledChunk isLayerEmpty (Lnet/minecraft/util/EnumWorldBlockLayer;)Z func_178491_b +MD net/minecraft/client/renderer/chunk/CompiledChunk getState ()Lnet/minecraft/client/renderer/WorldRenderer$State; func_178487_c +MD net/minecraft/client/renderer/chunk/CompiledChunk setLayerStarted (Lnet/minecraft/util/EnumWorldBlockLayer;)V func_178493_c +MD net/minecraft/client/renderer/chunk/CompiledChunk isLayerStarted (Lnet/minecraft/util/EnumWorldBlockLayer;)Z func_178492_d +MD net/minecraft/client/renderer/chunk/ListedRenderChunk getDisplayList (Lnet/minecraft/util/EnumWorldBlockLayer;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)I func_178600_a +MD net/minecraft/client/renderer/chunk/RenderChunk deleteGlResources ()V func_178566_a +MD net/minecraft/client/renderer/chunk/RenderChunk resortTransparency (FFFLnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V func_178570_a +MD net/minecraft/client/renderer/chunk/RenderChunk setFrameIndex (I)Z func_178577_a +MD net/minecraft/client/renderer/chunk/RenderChunk postRenderBlocks (Lnet/minecraft/util/EnumWorldBlockLayer;FFFLnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V func_178584_a +MD net/minecraft/client/renderer/chunk/RenderChunk preRenderBlocks (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/util/BlockPos;)V func_178573_a +MD net/minecraft/client/renderer/chunk/RenderChunk setCompiledChunk (Lnet/minecraft/client/renderer/chunk/CompiledChunk;)V func_178580_a +MD net/minecraft/client/renderer/chunk/RenderChunk setPosition (Lnet/minecraft/util/BlockPos;)V func_178576_a +MD net/minecraft/client/renderer/chunk/RenderChunk getBlockPosOffset16 (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/BlockPos; func_181701_a +MD net/minecraft/client/renderer/chunk/RenderChunk setNeedsUpdate (Z)V func_178575_a +MD net/minecraft/client/renderer/chunk/RenderChunk finishCompileTask ()V func_178578_b +MD net/minecraft/client/renderer/chunk/RenderChunk rebuildChunk (FFFLnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator;)V func_178581_b +MD net/minecraft/client/renderer/chunk/RenderChunk getVertexBufferByLayer (I)Lnet/minecraft/client/renderer/vertex/VertexBuffer; func_178565_b +MD net/minecraft/client/renderer/chunk/RenderChunk getLockCompileTask ()Ljava/util/concurrent/locks/ReentrantLock; func_178579_c +MD net/minecraft/client/renderer/chunk/RenderChunk makeCompileTaskChunk ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; func_178574_d +MD net/minecraft/client/renderer/chunk/RenderChunk makeCompileTaskTransparency ()Lnet/minecraft/client/renderer/chunk/ChunkCompileTaskGenerator; func_178582_e +MD net/minecraft/client/renderer/chunk/RenderChunk multModelviewMatrix ()V func_178572_f +MD net/minecraft/client/renderer/chunk/RenderChunk getCompiledChunk ()Lnet/minecraft/client/renderer/chunk/CompiledChunk; func_178571_g +MD net/minecraft/client/renderer/chunk/RenderChunk stopCompileTask ()V func_178585_h +MD net/minecraft/client/renderer/chunk/RenderChunk getPosition ()Lnet/minecraft/util/BlockPos; func_178568_j +MD net/minecraft/client/renderer/chunk/RenderChunk isNeedsUpdate ()Z func_178569_m +MD net/minecraft/client/renderer/chunk/RenderChunk initModelviewMatrix ()V func_178567_n +MD net/minecraft/client/renderer/chunk/IRenderChunkFactory makeRenderChunk (Lnet/minecraft/world/World;Lnet/minecraft/client/renderer/RenderGlobal;Lnet/minecraft/util/BlockPos;I)Lnet/minecraft/client/renderer/chunk/RenderChunk; func_178602_a +MD net/minecraft/client/renderer/chunk/VisGraph computeVisibility ()Lnet/minecraft/client/renderer/chunk/SetVisibility; func_178607_a +MD net/minecraft/client/renderer/chunk/VisGraph func_178604_a (I)Ljava/util/Set; func_178604_a +MD net/minecraft/client/renderer/chunk/VisGraph getIndex (III)I func_178605_a +MD net/minecraft/client/renderer/chunk/VisGraph func_178603_a (ILnet/minecraft/util/EnumFacing;)I func_178603_a +MD net/minecraft/client/renderer/chunk/VisGraph func_178610_a (ILjava/util/Set;)V func_178610_a +MD net/minecraft/client/renderer/chunk/VisGraph func_178606_a (Lnet/minecraft/util/BlockPos;)V func_178606_a +MD net/minecraft/client/renderer/chunk/VisGraph func_178609_b (Lnet/minecraft/util/BlockPos;)Ljava/util/Set; func_178609_b +MD net/minecraft/client/renderer/chunk/VisGraph getIndex (Lnet/minecraft/util/BlockPos;)I func_178608_c +MD net/minecraft/client/renderer/chunk/SetVisibility isVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;)Z func_178621_a +MD net/minecraft/client/renderer/chunk/SetVisibility setVisible (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/util/EnumFacing;Z)V func_178619_a +MD net/minecraft/client/renderer/chunk/SetVisibility setManyVisible (Ljava/util/Set;)V func_178620_a +MD net/minecraft/client/renderer/chunk/SetVisibility setAllVisible (Z)V func_178618_a +MD net/minecraft/client/renderer/chunk/SetVisibility toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/culling/ICamera setPosition (DDD)V func_78547_a +MD net/minecraft/client/renderer/culling/ICamera isBoundingBoxInFrustum (Lnet/minecraft/util/AxisAlignedBB;)Z func_78546_a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl getInstance ()Lnet/minecraft/client/renderer/culling/ClippingHelper; func_78558_a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl normalize ([F)V func_180547_a +MD net/minecraft/client/renderer/culling/ClippingHelperImpl init ()V func_78560_b +MD net/minecraft/client/renderer/culling/Frustum isBoxInFrustum (DDDDDD)Z func_78548_b +MD net/minecraft/client/renderer/culling/ClippingHelper dot ([FDDD)D func_178624_a +MD net/minecraft/client/renderer/culling/ClippingHelper isBoxInFrustum (DDDDDD)Z func_78553_b +MD net/minecraft/client/renderer/entity/ArmorStandRenderer getMainModel ()Lnet/minecraft/client/model/ModelArmorStand; func_177087_b +MD net/minecraft/client/renderer/entity/ArmorStandRenderer getEntityTexture (Lnet/minecraft/entity/item/EntityArmorStand;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/ArmorStandRenderer rotateCorpse (Lnet/minecraft/entity/item/EntityArmorStand;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/ArmorStandRenderer canRenderName (Lnet/minecraft/entity/item/EntityArmorStand;)Z func_177070_b +MD net/minecraft/client/renderer/entity/RenderArrow getEntityTexture (Lnet/minecraft/entity/projectile/EntityArrow;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderArrow doRender (Lnet/minecraft/entity/projectile/EntityArrow;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderBat getEntityTexture (Lnet/minecraft/entity/passive/EntityBat;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderBat preRenderCallback (Lnet/minecraft/entity/passive/EntityBat;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderBat rotateCorpse (Lnet/minecraft/entity/passive/EntityBat;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderBlaze getEntityTexture (Lnet/minecraft/entity/monster/EntityBlaze;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderBoat getEntityTexture (Lnet/minecraft/entity/item/EntityBoat;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderBoat doRender (Lnet/minecraft/entity/item/EntityBoat;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderCaveSpider getEntityTexture (Lnet/minecraft/entity/monster/EntityCaveSpider;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderCaveSpider preRenderCallback (Lnet/minecraft/entity/monster/EntityCaveSpider;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderChicken getEntityTexture (Lnet/minecraft/entity/passive/EntityChicken;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderChicken handleRotationFloat (Lnet/minecraft/entity/passive/EntityChicken;F)F func_77044_a +MD net/minecraft/client/renderer/entity/RenderCow getEntityTexture (Lnet/minecraft/entity/passive/EntityCow;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderCreeper getEntityTexture (Lnet/minecraft/entity/monster/EntityCreeper;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderCreeper preRenderCallback (Lnet/minecraft/entity/monster/EntityCreeper;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderCreeper getColorMultiplier (Lnet/minecraft/entity/monster/EntityCreeper;FF)I func_77030_a +MD net/minecraft/client/renderer/tileentity/RenderEnderCrystal getEntityTexture (Lnet/minecraft/entity/item/EntityEnderCrystal;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/tileentity/RenderEnderCrystal doRender (Lnet/minecraft/entity/item/EntityEnderCrystal;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderDragon getEntityTexture (Lnet/minecraft/entity/boss/EntityDragon;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderDragon drawRechargeRay (Lnet/minecraft/entity/boss/EntityDragon;DDDF)V func_180574_a +MD net/minecraft/client/renderer/entity/RenderDragon doRender (Lnet/minecraft/entity/boss/EntityDragon;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderDragon rotateCorpse (Lnet/minecraft/entity/boss/EntityDragon;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderDragon renderModel (Lnet/minecraft/entity/boss/EntityDragon;FFFFFF)V func_77036_a +MD net/minecraft/client/renderer/entity/RenderEnderman getEntityTexture (Lnet/minecraft/entity/monster/EntityEnderman;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderEnderman doRender (Lnet/minecraft/entity/monster/EntityEnderman;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderEndermite getDeathMaxRotation (Lnet/minecraft/entity/monster/EntityEndermite;)F func_77037_a +MD net/minecraft/client/renderer/entity/RenderEndermite getEntityTexture (Lnet/minecraft/entity/monster/EntityEndermite;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderManager isRenderShadow ()Z func_178627_a +MD net/minecraft/client/renderer/entity/RenderManager setRenderPosition (DDD)V func_178628_a +MD net/minecraft/client/renderer/entity/RenderManager setPlayerViewY (F)V func_178631_a +MD net/minecraft/client/renderer/entity/RenderManager set (Lnet/minecraft/world/World;)V func_78717_a +MD net/minecraft/client/renderer/entity/RenderManager cacheActiveRenderInfo (Lnet/minecraft/world/World;Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/Entity;Lnet/minecraft/client/settings/GameSettings;F)V func_180597_a +MD net/minecraft/client/renderer/entity/RenderManager getEntityClassRenderObject (Ljava/lang/Class;)Lnet/minecraft/client/renderer/entity/Render; func_78715_a +MD net/minecraft/client/renderer/entity/RenderManager getEntityRenderObject (Lnet/minecraft/entity/Entity;)Lnet/minecraft/client/renderer/entity/Render; func_78713_a +MD net/minecraft/client/renderer/entity/RenderManager renderEntityWithPosYaw (Lnet/minecraft/entity/Entity;DDDFF)Z func_147940_a +MD net/minecraft/client/renderer/entity/RenderManager doRenderEntity (Lnet/minecraft/entity/Entity;DDDFFZ)Z func_147939_a +MD net/minecraft/client/renderer/entity/RenderManager renderEntitySimple (Lnet/minecraft/entity/Entity;F)Z func_147937_a +MD net/minecraft/client/renderer/entity/RenderManager renderEntityStatic (Lnet/minecraft/entity/Entity;FZ)Z func_147936_a +MD net/minecraft/client/renderer/entity/RenderManager shouldRender (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z func_178635_a +MD net/minecraft/client/renderer/entity/RenderManager setRenderShadow (Z)V func_178633_a +MD net/minecraft/client/renderer/entity/RenderManager isDebugBoundingBox ()Z func_178634_b +MD net/minecraft/client/renderer/entity/RenderManager getDistanceToCamera (DDD)D func_78714_a +MD net/minecraft/client/renderer/entity/RenderManager renderDebugBoundingBox (Lnet/minecraft/entity/Entity;DDDFF)V func_85094_b +MD net/minecraft/client/renderer/entity/RenderManager renderWitherSkull (Lnet/minecraft/entity/Entity;F)V func_178630_b +MD net/minecraft/client/renderer/entity/RenderManager setDebugBoundingBox (Z)V func_178629_b +MD net/minecraft/client/renderer/entity/RenderManager getFontRenderer ()Lnet/minecraft/client/gui/FontRenderer; func_78716_a +MD net/minecraft/client/renderer/entity/RenderManager setRenderOutlines (Z)V func_178632_c +MD net/minecraft/client/renderer/entity/Render getWorldFromRenderManager ()Lnet/minecraft/world/World; func_76982_b +MD net/minecraft/client/renderer/entity/Render renderShadowBlock (Lnet/minecraft/block/Block;DDDLnet/minecraft/util/BlockPos;FFDDD)V func_180549_a +MD net/minecraft/client/renderer/entity/Render renderOffsetAABB (Lnet/minecraft/util/AxisAlignedBB;DDD)V func_76978_a +MD net/minecraft/client/renderer/entity/Render bindTexture (Lnet/minecraft/util/ResourceLocation;)V func_110776_a +MD net/minecraft/client/renderer/entity/Render getEntityTexture (Lnet/minecraft/entity/Entity;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/Render renderName (Lnet/minecraft/entity/Entity;DDD)V func_177067_a +MD net/minecraft/client/renderer/entity/Render renderEntityOnFire (Lnet/minecraft/entity/Entity;DDDF)V func_76977_a +MD net/minecraft/client/renderer/entity/Render doRender (Lnet/minecraft/entity/Entity;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/Render renderOffsetLivingLabel (Lnet/minecraft/entity/Entity;DDDLjava/lang/String;FD)V func_177069_a +MD net/minecraft/client/renderer/entity/Render shouldRender (Lnet/minecraft/entity/Entity;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z func_177071_a +MD net/minecraft/client/renderer/entity/Render renderLivingLabel (Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V func_147906_a +MD net/minecraft/client/renderer/entity/Render canRenderName (Lnet/minecraft/entity/Entity;)Z func_177070_b +MD net/minecraft/client/renderer/entity/Render doRenderShadowAndFire (Lnet/minecraft/entity/Entity;DDDFF)V func_76979_b +MD net/minecraft/client/renderer/entity/Render getFontRendererFromRenderManager ()Lnet/minecraft/client/gui/FontRenderer; func_76983_a +MD net/minecraft/client/renderer/entity/Render bindEntityTexture (Lnet/minecraft/entity/Entity;)Z func_180548_c +MD net/minecraft/client/renderer/entity/Render renderShadow (Lnet/minecraft/entity/Entity;DDDFF)V func_76975_c +MD net/minecraft/client/renderer/entity/Render getRenderManager ()Lnet/minecraft/client/renderer/entity/RenderManager; func_177068_d +MD net/minecraft/client/renderer/entity/RenderXPOrb getEntityTexture (Lnet/minecraft/entity/item/EntityXPOrb;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderXPOrb doRender (Lnet/minecraft/entity/item/EntityXPOrb;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderFallingBlock getEntityTexture (Lnet/minecraft/entity/item/EntityFallingBlock;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderFallingBlock doRender (Lnet/minecraft/entity/item/EntityFallingBlock;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderFireball getEntityTexture (Lnet/minecraft/entity/projectile/EntityFireball;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderFireball doRender (Lnet/minecraft/entity/projectile/EntityFireball;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderFish getEntityTexture (Lnet/minecraft/entity/projectile/EntityFishHook;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderFish doRender (Lnet/minecraft/entity/projectile/EntityFishHook;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderGhast getEntityTexture (Lnet/minecraft/entity/monster/EntityGhast;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderGhast preRenderCallback (Lnet/minecraft/entity/monster/EntityGhast;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderGiantZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityGiantZombie;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderGiantZombie preRenderCallback (Lnet/minecraft/entity/monster/EntityGiantZombie;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderGuardian func_177110_a (Lnet/minecraft/entity/EntityLivingBase;DF)Lnet/minecraft/util/Vec3; func_177110_a +MD net/minecraft/client/renderer/entity/RenderGuardian getEntityTexture (Lnet/minecraft/entity/monster/EntityGuardian;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderGuardian doRender (Lnet/minecraft/entity/monster/EntityGuardian;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderGuardian preRenderCallback (Lnet/minecraft/entity/monster/EntityGuardian;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderGuardian shouldRender (Lnet/minecraft/entity/monster/EntityGuardian;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z func_177071_a +MD net/minecraft/client/renderer/entity/RenderHorse getEntityTexture (Lnet/minecraft/entity/passive/EntityHorse;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderHorse preRenderCallback (Lnet/minecraft/entity/passive/EntityHorse;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderHorse func_110848_b (Lnet/minecraft/entity/passive/EntityHorse;)Lnet/minecraft/util/ResourceLocation; func_110848_b +MD net/minecraft/client/renderer/entity/RenderBiped getEntityTexture (Lnet/minecraft/entity/EntityLiving;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderEntityItem getEntityTexture (Lnet/minecraft/entity/item/EntityItem;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderEntityItem doRender (Lnet/minecraft/entity/item/EntityItem;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderEntityItem func_177077_a (Lnet/minecraft/entity/item/EntityItem;DDDFLnet/minecraft/client/resources/model/IBakedModel;)I func_177077_a +MD net/minecraft/client/renderer/entity/RenderEntityItem func_177078_a (Lnet/minecraft/item/ItemStack;)I func_177078_a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame getEntityTexture (Lnet/minecraft/entity/item/EntityItemFrame;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame renderName (Lnet/minecraft/entity/item/EntityItemFrame;DDD)V func_177067_a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame doRender (Lnet/minecraft/entity/item/EntityItemFrame;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/tileentity/RenderItemFrame renderItem (Lnet/minecraft/entity/item/EntityItemFrame;)V func_82402_b +MD net/minecraft/client/renderer/entity/RenderItem getItemModelMesher ()Lnet/minecraft/client/renderer/ItemModelMesher; func_175037_a +MD net/minecraft/client/renderer/entity/RenderItem setupGuiTransform (IIZ)V func_180452_a +MD net/minecraft/client/renderer/entity/RenderItem registerBlock (Lnet/minecraft/block/Block;ILjava/lang/String;)V func_175029_a +MD net/minecraft/client/renderer/entity/RenderItem registerBlock (Lnet/minecraft/block/Block;Ljava/lang/String;)V func_175031_a +MD net/minecraft/client/renderer/entity/RenderItem renderItemOverlays (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/item/ItemStack;II)V func_175030_a +MD net/minecraft/client/renderer/entity/RenderItem renderItemOverlayIntoGUI (Lnet/minecraft/client/gui/FontRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V func_180453_a +MD net/minecraft/client/renderer/entity/RenderItem draw (Lnet/minecraft/client/renderer/WorldRenderer;IIIIIIII)V func_181565_a +MD net/minecraft/client/renderer/entity/RenderItem putQuadNormal (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/block/model/BakedQuad;)V func_175038_a +MD net/minecraft/client/renderer/entity/RenderItem renderQuad (Lnet/minecraft/client/renderer/WorldRenderer;Lnet/minecraft/client/renderer/block/model/BakedQuad;I)V func_175033_a +MD net/minecraft/client/renderer/entity/RenderItem renderQuads (Lnet/minecraft/client/renderer/WorldRenderer;Ljava/util/List;ILnet/minecraft/item/ItemStack;)V func_175032_a +MD net/minecraft/client/renderer/entity/RenderItem isThereOneNegativeScale (Lnet/minecraft/client/renderer/block/model/ItemTransformVec3f;)Z func_183005_a +MD net/minecraft/client/renderer/entity/RenderItem renderEffect (Lnet/minecraft/client/resources/model/IBakedModel;)V func_180451_a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;I)V func_175035_a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;ILnet/minecraft/item/ItemStack;)V func_175045_a +MD net/minecraft/client/renderer/entity/RenderItem renderModel (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V func_175036_a +MD net/minecraft/client/renderer/entity/RenderItem registerItem (Lnet/minecraft/item/Item;ILjava/lang/String;)V func_175048_a +MD net/minecraft/client/renderer/entity/RenderItem registerItem (Lnet/minecraft/item/Item;Ljava/lang/String;)V func_175047_a +MD net/minecraft/client/renderer/entity/RenderItem shouldRenderItemIn3D (Lnet/minecraft/item/ItemStack;)Z func_175050_a +MD net/minecraft/client/renderer/entity/RenderItem renderItemIntoGUI (Lnet/minecraft/item/ItemStack;II)V func_175042_a +MD net/minecraft/client/renderer/entity/RenderItem renderItem (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V func_181564_a +MD net/minecraft/client/renderer/entity/RenderItem renderItem (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;)V func_180454_a +MD net/minecraft/client/renderer/entity/RenderItem renderItemModelTransform (Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V func_175040_a +MD net/minecraft/client/renderer/entity/RenderItem renderItemModelForEntity (Lnet/minecraft/item/ItemStack;Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms$TransformType;)V func_175049_a +MD net/minecraft/client/renderer/entity/RenderItem isNotRenderingEffectsInGUI (Z)V func_175039_a +MD net/minecraft/client/renderer/entity/RenderItem registerItems ()V func_175041_b +MD net/minecraft/client/renderer/entity/RenderItem preTransform (Lnet/minecraft/item/ItemStack;)V func_175046_c +MD net/minecraft/client/renderer/entity/RenderItem renderItemAndEffectIntoGUI (Lnet/minecraft/item/ItemStack;II)V func_180450_b +MD net/minecraft/client/renderer/entity/RenderItem$1 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/entity/RenderItem$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$2 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/entity/RenderItem$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$3 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/entity/RenderItem$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderItem$4 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/entity/RenderItem$4 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/entity/RenderMagmaCube getEntityTexture (Lnet/minecraft/entity/monster/EntityMagmaCube;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderMagmaCube preRenderCallback (Lnet/minecraft/entity/monster/EntityMagmaCube;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderLeashKnot getEntityTexture (Lnet/minecraft/entity/EntityLeashKnot;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderLeashKnot doRender (Lnet/minecraft/entity/EntityLeashKnot;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderLightningBolt getEntityTexture (Lnet/minecraft/entity/effect/EntityLightningBolt;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderLightningBolt doRender (Lnet/minecraft/entity/effect/EntityLightningBolt;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity transformHeldFull3DItemLayer ()V func_82422_c +MD net/minecraft/client/renderer/entity/RendererLivingEntity interpolateRotation (FFF)F func_77034_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity addLayer (Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z func_177094_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity canRenderName (Lnet/minecraft/entity/EntityLivingBase;)Z func_177070_b +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderLivingAt (Lnet/minecraft/entity/EntityLivingBase;DDD)V func_77039_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity doRender (Lnet/minecraft/entity/EntityLivingBase;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity preRenderCallback (Lnet/minecraft/entity/EntityLivingBase;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RendererLivingEntity getColorMultiplier (Lnet/minecraft/entity/EntityLivingBase;FF)I func_77030_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity rotateCorpse (Lnet/minecraft/entity/EntityLivingBase;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderModel (Lnet/minecraft/entity/EntityLivingBase;FFFFFF)V func_77036_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderLayers (Lnet/minecraft/entity/EntityLivingBase;FFFFFFF)V func_177093_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity setBrightness (Lnet/minecraft/entity/EntityLivingBase;FZ)Z func_177092_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity setRenderOutlines (Z)V func_177086_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity getMainModel ()Lnet/minecraft/client/model/ModelBase; func_177087_b +MD net/minecraft/client/renderer/entity/RendererLivingEntity removeLayer (Lnet/minecraft/client/renderer/entity/layers/LayerRenderer;)Z func_177089_b +MD net/minecraft/client/renderer/entity/RendererLivingEntity getDeathMaxRotation (Lnet/minecraft/entity/EntityLivingBase;)F func_77037_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity renderName (Lnet/minecraft/entity/EntityLivingBase;DDD)V func_177067_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity handleRotationFloat (Lnet/minecraft/entity/EntityLivingBase;F)F func_77044_a +MD net/minecraft/client/renderer/entity/RendererLivingEntity setScoreTeamColor (Lnet/minecraft/entity/EntityLivingBase;)Z func_177088_c +MD net/minecraft/client/renderer/entity/RendererLivingEntity setDoRenderBrightness (Lnet/minecraft/entity/EntityLivingBase;F)Z func_177090_c +MD net/minecraft/client/renderer/entity/RendererLivingEntity getSwingProgress (Lnet/minecraft/entity/EntityLivingBase;F)F func_77040_d +MD net/minecraft/client/renderer/entity/RendererLivingEntity unsetScoreTeamColor ()V func_180565_e +MD net/minecraft/client/renderer/entity/RendererLivingEntity unsetBrightness ()V func_177091_f +MD net/minecraft/client/renderer/entity/RenderMinecart getEntityTexture (Lnet/minecraft/entity/item/EntityMinecart;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderMinecart doRender (Lnet/minecraft/entity/item/EntityMinecart;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderMinecart func_180560_a (Lnet/minecraft/entity/item/EntityMinecart;FLnet/minecraft/block/state/IBlockState;)V func_180560_a +MD net/minecraft/client/renderer/entity/RenderMinecartMobSpawner func_180560_a (Lnet/minecraft/entity/ai/EntityMinecartMobSpawner;FLnet/minecraft/block/state/IBlockState;)V func_180560_a +MD net/minecraft/client/renderer/entity/RenderLiving interpolateValue (DDD)D func_110828_a +MD net/minecraft/client/renderer/entity/RenderLiving doRender (Lnet/minecraft/entity/EntityLiving;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderLiving setLightmap (Lnet/minecraft/entity/EntityLiving;F)V func_177105_a +MD net/minecraft/client/renderer/entity/RenderLiving shouldRender (Lnet/minecraft/entity/EntityLiving;Lnet/minecraft/client/renderer/culling/ICamera;DDD)Z func_177071_a +MD net/minecraft/client/renderer/entity/RenderLiving canRenderName (Lnet/minecraft/entity/EntityLiving;)Z func_177070_b +MD net/minecraft/client/renderer/entity/RenderLiving renderLeash (Lnet/minecraft/entity/EntityLiving;DDDFF)V func_110827_b +MD net/minecraft/client/renderer/entity/RenderMooshroom getEntityTexture (Lnet/minecraft/entity/passive/EntityMooshroom;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderOcelot getEntityTexture (Lnet/minecraft/entity/passive/EntityOcelot;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderOcelot preRenderCallback (Lnet/minecraft/entity/passive/EntityOcelot;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderPainting getEntityTexture (Lnet/minecraft/entity/item/EntityPainting;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderPainting doRender (Lnet/minecraft/entity/item/EntityPainting;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderPainting setLightmap (Lnet/minecraft/entity/item/EntityPainting;FF)V func_77008_a +MD net/minecraft/client/renderer/entity/RenderPainting renderPainting (Lnet/minecraft/entity/item/EntityPainting;IIII)V func_77010_a +MD net/minecraft/client/renderer/entity/RenderPig getEntityTexture (Lnet/minecraft/entity/passive/EntityPig;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderPigZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityPigZombie;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderRabbit getEntityTexture (Lnet/minecraft/entity/passive/EntityRabbit;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSheep getEntityTexture (Lnet/minecraft/entity/passive/EntitySheep;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSilverfish getDeathMaxRotation (Lnet/minecraft/entity/monster/EntitySilverfish;)F func_77037_a +MD net/minecraft/client/renderer/entity/RenderSilverfish getEntityTexture (Lnet/minecraft/entity/monster/EntitySilverfish;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSkeleton getEntityTexture (Lnet/minecraft/entity/monster/EntitySkeleton;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSkeleton preRenderCallback (Lnet/minecraft/entity/monster/EntitySkeleton;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderSlime getEntityTexture (Lnet/minecraft/entity/monster/EntitySlime;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSlime doRender (Lnet/minecraft/entity/monster/EntitySlime;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderSlime preRenderCallback (Lnet/minecraft/entity/monster/EntitySlime;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderSnowMan getEntityTexture (Lnet/minecraft/entity/monster/EntitySnowman;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSnowMan getMainModel ()Lnet/minecraft/client/model/ModelSnowMan; func_177087_b +MD net/minecraft/client/renderer/entity/RenderSpider getEntityTexture (Lnet/minecraft/entity/monster/EntitySpider;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSpider getDeathMaxRotation (Lnet/minecraft/entity/monster/EntitySpider;)F func_77037_a +MD net/minecraft/client/renderer/entity/RenderSquid getEntityTexture (Lnet/minecraft/entity/passive/EntitySquid;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderSquid handleRotationFloat (Lnet/minecraft/entity/passive/EntitySquid;F)F func_77044_a +MD net/minecraft/client/renderer/entity/RenderSquid rotateCorpse (Lnet/minecraft/entity/passive/EntitySquid;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderSnowball func_177082_d (Lnet/minecraft/entity/Entity;)Lnet/minecraft/item/ItemStack; func_177082_d +MD net/minecraft/client/renderer/entity/RenderPotion func_177082_d (Lnet/minecraft/entity/projectile/EntityPotion;)Lnet/minecraft/item/ItemStack; func_177082_d +MD net/minecraft/client/renderer/entity/RenderTntMinecart func_180560_a (Lnet/minecraft/entity/item/EntityMinecartTNT;FLnet/minecraft/block/state/IBlockState;)V func_180560_a +MD net/minecraft/client/renderer/entity/RenderTNTPrimed getEntityTexture (Lnet/minecraft/entity/item/EntityTNTPrimed;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderTNTPrimed doRender (Lnet/minecraft/entity/item/EntityTNTPrimed;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderIronGolem getEntityTexture (Lnet/minecraft/entity/monster/EntityIronGolem;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderIronGolem rotateCorpse (Lnet/minecraft/entity/monster/EntityIronGolem;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderVillager getEntityTexture (Lnet/minecraft/entity/passive/EntityVillager;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderVillager preRenderCallback (Lnet/minecraft/entity/passive/EntityVillager;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderVillager getMainModel ()Lnet/minecraft/client/model/ModelVillager; func_177087_b +MD net/minecraft/client/renderer/entity/RenderWitch getEntityTexture (Lnet/minecraft/entity/monster/EntityWitch;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderWitch doRender (Lnet/minecraft/entity/monster/EntityWitch;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderWitch preRenderCallback (Lnet/minecraft/entity/monster/EntityWitch;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderWither getEntityTexture (Lnet/minecraft/entity/boss/EntityWither;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderWither doRender (Lnet/minecraft/entity/boss/EntityWither;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderWither preRenderCallback (Lnet/minecraft/entity/boss/EntityWither;F)V func_77041_b +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull func_82400_a (FFF)F func_82400_a +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull getEntityTexture (Lnet/minecraft/entity/projectile/EntityWitherSkull;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/tileentity/RenderWitherSkull doRender (Lnet/minecraft/entity/projectile/EntityWitherSkull;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderWolf getEntityTexture (Lnet/minecraft/entity/passive/EntityWolf;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderWolf doRender (Lnet/minecraft/entity/passive/EntityWolf;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderWolf handleRotationFloat (Lnet/minecraft/entity/passive/EntityWolf;F)F func_77044_a +MD net/minecraft/client/renderer/entity/RenderZombie getEntityTexture (Lnet/minecraft/entity/monster/EntityZombie;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderZombie doRender (Lnet/minecraft/entity/monster/EntityZombie;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderZombie rotateCorpse (Lnet/minecraft/entity/monster/EntityZombie;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderZombie func_82427_a (Lnet/minecraft/entity/monster/EntityZombie;)V func_82427_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase initArmor ()V func_177177_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorModel (I)Lnet/minecraft/client/model/ModelBase; func_177175_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase setModelPartVisible (Lnet/minecraft/client/model/ModelBase;I)V func_177179_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderLayer (Lnet/minecraft/entity/EntityLivingBase;FFFFFFFI)V func_177182_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getCurrentArmor (Lnet/minecraft/entity/EntityLivingBase;I)Lnet/minecraft/item/ItemStack; func_177176_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase renderGlint (Lnet/minecraft/entity/EntityLivingBase;Lnet/minecraft/client/model/ModelBase;FFFFFFF)V func_177183_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorResource (Lnet/minecraft/item/ItemArmor;Z)Lnet/minecraft/util/ResourceLocation; func_177181_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase getArmorResource (Lnet/minecraft/item/ItemArmor;ZLjava/lang/String;)Lnet/minecraft/util/ResourceLocation; func_177178_a +MD net/minecraft/client/renderer/entity/layers/LayerArmorBase isSlotForLeggings (I)Z func_177180_b +MD net/minecraft/client/renderer/entity/layers/LayerCape doRenderLayer (Lnet/minecraft/client/entity/AbstractClientPlayer;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerHeldBlock doRenderLayer (Lnet/minecraft/entity/monster/EntityEnderman;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerCreeperCharge doRenderLayer (Lnet/minecraft/entity/monster/EntityCreeper;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerDeadmau5Head doRenderLayer (Lnet/minecraft/client/entity/AbstractClientPlayer;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerEnderDragonDeath doRenderLayer (Lnet/minecraft/entity/boss/EntityDragon;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerEnderDragonEyes doRenderLayer (Lnet/minecraft/entity/boss/EntityDragon;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerEndermanEyes doRenderLayer (Lnet/minecraft/entity/monster/EntityEnderman;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerBipedArmor setModelVisible (Lnet/minecraft/client/model/ModelBiped;)V func_177194_a +MD net/minecraft/client/renderer/entity/layers/LayerBipedArmor setModelPartVisible (Lnet/minecraft/client/model/ModelBiped;I)V func_177179_a +MD net/minecraft/client/renderer/entity/layers/LayerMooshroomMushroom doRenderLayer (Lnet/minecraft/entity/passive/EntityMooshroom;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerSaddle doRenderLayer (Lnet/minecraft/entity/passive/EntityPig;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerRenderer doRenderLayer (Lnet/minecraft/entity/EntityLivingBase;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerRenderer shouldCombineTextures ()Z func_177142_b +MD net/minecraft/client/renderer/entity/layers/LayerSheepWool doRenderLayer (Lnet/minecraft/entity/passive/EntitySheep;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerSlimeGel doRenderLayer (Lnet/minecraft/entity/monster/EntitySlime;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerSnowmanHead doRenderLayer (Lnet/minecraft/entity/monster/EntitySnowman;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerSpiderEyes doRenderLayer (Lnet/minecraft/entity/monster/EntitySpider;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerIronGolemFlower doRenderLayer (Lnet/minecraft/entity/monster/EntityIronGolem;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch doRenderLayer (Lnet/minecraft/entity/monster/EntityWitch;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerWitherAura doRenderLayer (Lnet/minecraft/entity/boss/EntityWither;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/layers/LayerWolfCollar doRenderLayer (Lnet/minecraft/entity/passive/EntityWolf;FFFFFFF)V func_177141_a +MD net/minecraft/client/renderer/entity/RenderPlayer getEntityTexture (Lnet/minecraft/client/entity/AbstractClientPlayer;)Lnet/minecraft/util/ResourceLocation; func_110775_a +MD net/minecraft/client/renderer/entity/RenderPlayer renderLivingAt (Lnet/minecraft/client/entity/AbstractClientPlayer;DDD)V func_77039_a +MD net/minecraft/client/renderer/entity/RenderPlayer doRender (Lnet/minecraft/client/entity/AbstractClientPlayer;DDDFF)V func_76986_a +MD net/minecraft/client/renderer/entity/RenderPlayer renderOffsetLivingLabel (Lnet/minecraft/client/entity/AbstractClientPlayer;DDDLjava/lang/String;FD)V func_177069_a +MD net/minecraft/client/renderer/entity/RenderPlayer preRenderCallback (Lnet/minecraft/client/entity/AbstractClientPlayer;F)V func_77041_b +MD net/minecraft/client/renderer/entity/RenderPlayer rotateCorpse (Lnet/minecraft/client/entity/AbstractClientPlayer;FFF)V func_77043_a +MD net/minecraft/client/renderer/entity/RenderPlayer renderRightArm (Lnet/minecraft/client/entity/AbstractClientPlayer;)V func_177138_b +MD net/minecraft/client/renderer/entity/RenderPlayer renderLeftArm (Lnet/minecraft/client/entity/AbstractClientPlayer;)V func_177139_c +MD net/minecraft/client/renderer/entity/RenderPlayer setModelVisibilities (Lnet/minecraft/client/entity/AbstractClientPlayer;)V func_177137_d +MD net/minecraft/client/renderer/entity/RenderPlayer getMainModel ()Lnet/minecraft/client/model/ModelPlayer; func_177087_b +MD net/minecraft/client/util/JsonBlendingMode func_148109_a ()V func_148109_a +MD net/minecraft/client/util/JsonBlendingMode func_148110_a (Lcom/google/gson/JsonObject;)Lnet/minecraft/client/util/JsonBlendingMode; func_148110_a +MD net/minecraft/client/util/JsonBlendingMode func_148108_a (Ljava/lang/String;)I func_148108_a +MD net/minecraft/client/util/JsonBlendingMode func_148111_b ()Z func_148111_b +MD net/minecraft/client/util/JsonBlendingMode func_148107_b (Ljava/lang/String;)I func_148107_b +MD net/minecraft/client/util/JsonBlendingMode equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/util/JsonBlendingMode hashCode ()I hashCode +MD net/minecraft/client/shader/ShaderManager deleteShader ()V func_147988_a +MD net/minecraft/client/shader/ShaderManager parseSampler (Lcom/google/gson/JsonElement;)V func_147996_a +MD net/minecraft/client/shader/ShaderManager getShaderUniform (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderUniform; func_147991_a +MD net/minecraft/client/shader/ShaderManager addSamplerTexture (Ljava/lang/String;Ljava/lang/Object;)V func_147992_a +MD net/minecraft/client/shader/ShaderManager endShader ()V func_147993_b +MD net/minecraft/client/shader/ShaderManager parseUniform (Lcom/google/gson/JsonElement;)V func_147987_b +MD net/minecraft/client/shader/ShaderManager getShaderUniformOrDefault (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderUniform; func_147984_b +MD net/minecraft/client/shader/ShaderManager useShader ()V func_147995_c +MD net/minecraft/client/shader/ShaderManager markDirty ()V func_147985_d +MD net/minecraft/client/shader/ShaderManager getVertexShaderLoader ()Lnet/minecraft/client/shader/ShaderLoader; func_147989_e +MD net/minecraft/client/shader/ShaderManager getFragmentShaderLoader ()Lnet/minecraft/client/shader/ShaderLoader; func_147994_f +MD net/minecraft/client/shader/ShaderManager getProgram ()I func_147986_h +MD net/minecraft/client/shader/ShaderManager setupUniforms ()V func_147990_i +MD net/minecraft/client/shader/ShaderGroup deleteShaderGroup ()V func_148021_a +MD net/minecraft/client/shader/ShaderGroup loadShaderGroup (F)V func_148018_a +MD net/minecraft/client/shader/ShaderGroup createBindFramebuffers (II)V func_148026_a +MD net/minecraft/client/shader/ShaderGroup parsePass (Lnet/minecraft/client/renderer/texture/TextureManager;Lcom/google/gson/JsonElement;)V func_152764_a +MD net/minecraft/client/shader/ShaderGroup parseGroup (Lnet/minecraft/client/renderer/texture/TextureManager;Lnet/minecraft/util/ResourceLocation;)V func_152765_a +MD net/minecraft/client/shader/ShaderGroup initTarget (Lcom/google/gson/JsonElement;)V func_148027_a +MD net/minecraft/client/shader/ShaderGroup getFramebufferRaw (Ljava/lang/String;)Lnet/minecraft/client/shader/Framebuffer; func_177066_a +MD net/minecraft/client/shader/ShaderGroup addFramebuffer (Ljava/lang/String;II)V func_148020_a +MD net/minecraft/client/shader/ShaderGroup addShader (Ljava/lang/String;Lnet/minecraft/client/shader/Framebuffer;Lnet/minecraft/client/shader/Framebuffer;)Lnet/minecraft/client/shader/Shader; func_148023_a +MD net/minecraft/client/shader/ShaderGroup getShaderGroupName ()Ljava/lang/String; func_148022_b +MD net/minecraft/client/shader/ShaderGroup initUniform (Lcom/google/gson/JsonElement;)V func_148028_c +MD net/minecraft/client/shader/ShaderGroup getFramebuffer (Ljava/lang/String;)Lnet/minecraft/client/shader/Framebuffer; func_148017_a +MD net/minecraft/client/shader/ShaderGroup resetProjectionMatrix ()V func_148024_c +MD net/minecraft/client/shader/Shader loadShader (F)V func_148042_a +MD net/minecraft/client/shader/Shader addAuxFramebuffer (Ljava/lang/String;Ljava/lang/Object;II)V func_148041_a +MD net/minecraft/client/shader/Shader setProjectionMatrix (Lorg/lwjgl/util/vector/Matrix4f;)V func_148045_a +MD net/minecraft/client/shader/Shader deleteShader ()V func_148044_b +MD net/minecraft/client/shader/Shader getShaderManager ()Lnet/minecraft/client/shader/ShaderManager; func_148043_c +MD net/minecraft/client/shader/Shader preLoadShader ()V func_148040_d +MD net/minecraft/client/shader/ShaderLoader getShaderFilename ()Ljava/lang/String; func_148055_a +MD net/minecraft/client/shader/ShaderLoader attachShader (Lnet/minecraft/client/shader/ShaderManager;)V func_148056_a +MD net/minecraft/client/shader/ShaderLoader loadShader (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/client/shader/ShaderLoader$ShaderType;Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderLoader; func_148057_a +MD net/minecraft/client/shader/ShaderLoader toByteArray (Ljava/io/BufferedInputStream;)[B func_177064_a +MD net/minecraft/client/shader/ShaderLoader deleteShader (Lnet/minecraft/client/shader/ShaderManager;)V func_148054_b +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderName ()Ljava/lang/String; func_148062_a +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderExtension ()Ljava/lang/String; func_148063_b +MD net/minecraft/client/shader/ShaderLoader$ShaderType getShaderMode ()I func_148065_c +MD net/minecraft/client/shader/ShaderLoader$ShaderType getLoadedShaders ()Ljava/util/Map; func_148064_d +MD net/minecraft/client/shader/ShaderLoader$ShaderType valueOf (Ljava/lang/String;)Lnet/minecraft/client/shader/ShaderLoader$ShaderType; valueOf +MD net/minecraft/client/shader/ShaderLoader$ShaderType values ()[Lnet/minecraft/client/shader/ShaderLoader$ShaderType; values +MD net/minecraft/client/shader/ShaderLinkHelper setNewStaticShaderLinkHelper ()V func_148076_a +MD net/minecraft/client/shader/ShaderLinkHelper deleteShader (Lnet/minecraft/client/shader/ShaderManager;)V func_148077_a +MD net/minecraft/client/shader/ShaderLinkHelper getStaticShaderLinkHelper ()Lnet/minecraft/client/shader/ShaderLinkHelper; func_148074_b +MD net/minecraft/client/shader/ShaderLinkHelper linkProgram (Lnet/minecraft/client/shader/ShaderManager;)V func_148075_b +MD net/minecraft/client/shader/ShaderLinkHelper createProgram ()I func_148078_c +MD net/minecraft/client/shader/ShaderUniform getShaderName ()Ljava/lang/String; func_148086_a +MD net/minecraft/client/shader/ShaderUniform set (F)V func_148090_a +MD net/minecraft/client/shader/ShaderUniform set (FF)V func_148087_a +MD net/minecraft/client/shader/ShaderUniform set (FFF)V func_148095_a +MD net/minecraft/client/shader/ShaderUniform set (FFFF)V func_148081_a +MD net/minecraft/client/shader/ShaderUniform set (FFFFFFFFFFFFFFFF)V func_148094_a +MD net/minecraft/client/shader/ShaderUniform set (IIII)V func_148083_a +MD net/minecraft/client/shader/ShaderUniform parseType (Ljava/lang/String;)I func_148085_a +MD net/minecraft/client/shader/ShaderUniform set (Lorg/lwjgl/util/vector/Matrix4f;)V func_148088_a +MD net/minecraft/client/shader/ShaderUniform set ([F)V func_148097_a +MD net/minecraft/client/shader/ShaderUniform upload ()V func_148093_b +MD net/minecraft/client/shader/ShaderUniform func_148092_b (FFFF)V func_148092_b +MD net/minecraft/client/shader/ShaderUniform setUniformLocation (I)V func_148084_b +MD net/minecraft/client/shader/ShaderUniform markDirty ()V func_148096_h +MD net/minecraft/client/shader/ShaderUniform uploadInt ()V func_148091_i +MD net/minecraft/client/shader/ShaderUniform uploadFloat ()V func_148089_j +MD net/minecraft/client/shader/ShaderUniform uploadFloatMatrix ()V func_148082_k +MD net/minecraft/client/renderer/texture/AbstractTexture setBlurMipmapDirect (ZZ)V func_174937_a +MD net/minecraft/client/renderer/texture/AbstractTexture deleteGlTexture ()V func_147631_c +MD net/minecraft/client/renderer/texture/DynamicTexture updateDynamicTexture ()V func_110564_a +MD net/minecraft/client/renderer/texture/DynamicTexture getTextureData ()[I func_110565_c +MD net/minecraft/client/renderer/ThreadDownloadImageData access$000 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Ljava/lang/String; access$000 +MD net/minecraft/client/renderer/ThreadDownloadImageData setBufferedImage (Ljava/awt/image/BufferedImage;)V func_147641_a +MD net/minecraft/client/renderer/ThreadDownloadImageData access$100 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Ljava/io/File; access$100 +MD net/minecraft/client/renderer/ThreadDownloadImageData access$300 (Lnet/minecraft/client/renderer/ThreadDownloadImageData;)Lnet/minecraft/client/renderer/IImageBuffer; access$300 +MD net/minecraft/client/renderer/ThreadDownloadImageData loadTextureFromServer ()V func_152433_a +MD net/minecraft/client/renderer/ThreadDownloadImageData access$200 ()Lorg/apache/logging/log4j/Logger; access$200 +MD net/minecraft/client/renderer/ThreadDownloadImageData checkTextureUploaded ()V func_147640_e +MD net/minecraft/client/renderer/ThreadDownloadImageData$1 run ()V run +MD net/minecraft/client/renderer/texture/IIconCreator registerSprites (Lnet/minecraft/client/renderer/texture/TextureMap;)V func_177059_a +MD net/minecraft/client/renderer/texture/Stitcher getCurrentWidth ()I func_110935_a +MD net/minecraft/client/renderer/texture/Stitcher access$000 (II)I access$000 +MD net/minecraft/client/renderer/texture/Stitcher allocateSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z func_94310_b +MD net/minecraft/client/renderer/texture/Stitcher addSprite (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_110934_a +MD net/minecraft/client/renderer/texture/Stitcher getCurrentHeight ()I func_110936_b +MD net/minecraft/client/renderer/texture/Stitcher getMipmapDimension (II)I func_147969_b +MD net/minecraft/client/renderer/texture/Stitcher expandAndAllocateSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z func_94311_c +MD net/minecraft/client/renderer/texture/Stitcher doStitch ()V func_94305_f +MD net/minecraft/client/renderer/texture/Stitcher getStichSlots ()Ljava/util/List; func_94309_g +MD net/minecraft/client/renderer/texture/Stitcher$Holder getAtlasSprite ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_98150_a +MD net/minecraft/client/renderer/texture/Stitcher$Holder setNewDimension (I)V func_94196_a +MD net/minecraft/client/renderer/texture/Stitcher$Holder compareTo (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)I compareTo +MD net/minecraft/client/renderer/texture/Stitcher$Holder getWidth ()I func_94197_a +MD net/minecraft/client/renderer/texture/Stitcher$Holder getHeight ()I func_94199_b +MD net/minecraft/client/renderer/texture/Stitcher$Holder rotate ()V func_94194_d +MD net/minecraft/client/renderer/texture/Stitcher$Holder isRotated ()Z func_94195_e +MD net/minecraft/client/renderer/texture/Stitcher$Holder compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/renderer/texture/Stitcher$Holder toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/Stitcher$Slot getStitchHolder ()Lnet/minecraft/client/renderer/texture/Stitcher$Holder; func_94183_a +MD net/minecraft/client/renderer/texture/Stitcher$Slot addSlot (Lnet/minecraft/client/renderer/texture/Stitcher$Holder;)Z func_94182_a +MD net/minecraft/client/renderer/texture/Stitcher$Slot getAllStitchSlots (Ljava/util/List;)V func_94184_a +MD net/minecraft/client/renderer/texture/Stitcher$Slot getOriginX ()I func_94186_b +MD net/minecraft/client/renderer/texture/Stitcher$Slot getOriginY ()I func_94185_c +MD net/minecraft/client/renderer/texture/Stitcher$Slot toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/TextureMap setMipmapLevels (I)V func_147633_a +MD net/minecraft/client/renderer/texture/TextureMap loadSprites (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/client/renderer/texture/IIconCreator;)V func_174943_a +MD net/minecraft/client/renderer/texture/TextureMap getAtlasSprite (Ljava/lang/String;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_110572_b +MD net/minecraft/client/renderer/texture/TextureMap registerSprite (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_174942_a +MD net/minecraft/client/renderer/texture/TextureMap completeResourceLocation (Lnet/minecraft/util/ResourceLocation;I)Lnet/minecraft/util/ResourceLocation; func_147634_a +MD net/minecraft/client/renderer/texture/TextureMap loadTextureAtlas (Lnet/minecraft/client/resources/IResourceManager;)V func_110571_b +MD net/minecraft/client/renderer/texture/TextureMap updateAnimations ()V func_94248_c +MD net/minecraft/client/renderer/texture/TextureMap getMissingSprite ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_174944_f +MD net/minecraft/client/renderer/texture/TextureMap initMissingImage ()V func_110569_e +MD net/minecraft/client/renderer/texture/TextureMap$1 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/texture/TextureMap$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureMap$2 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/texture/TextureMap$2 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureMap$3 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/texture/TextureMap$3 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getOriginX ()I func_130010_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getInterpolatedU (D)F func_94214_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameTextureData (I)[[I func_147965_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite initSprite (IIIIZ)V func_110971_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite copyFrom (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_94217_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setLocationNameClock (Ljava/lang/String;)V func_176602_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setFramesTextureData (Ljava/util/List;)V func_110968_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite makeAtlasSprite (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_176604_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite loadSprite ([Ljava/awt/image/BufferedImage;Lnet/minecraft/client/resources/data/AnimationMetadataSection;)V func_180598_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameTextureData ([[IIII)[[I func_147962_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getOriginY ()I func_110967_i +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getInterpolatedV (D)F func_94207_b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setIconWidth (I)V func_110966_b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setLocationNameCompass (Ljava/lang/String;)V func_176603_b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconWidth ()I func_94211_a +MD net/minecraft/client/renderer/texture/TextureAtlasSprite setIconHeight (I)V func_110969_c +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconHeight ()I func_94216_b +MD net/minecraft/client/renderer/texture/TextureAtlasSprite generateMipmaps (I)V func_147963_d +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMinU ()F func_94209_e +MD net/minecraft/client/renderer/texture/TextureAtlasSprite allocateFrameTextureData (I)V func_130099_d +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMaxU ()F func_94212_f +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMinV ()F func_94206_g +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getMaxV ()F func_94210_h +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getIconName ()Ljava/lang/String; func_94215_i +MD net/minecraft/client/renderer/texture/TextureAtlasSprite updateAnimation ()V func_94219_l +MD net/minecraft/client/renderer/texture/TextureAtlasSprite getFrameCount ()I func_110970_k +MD net/minecraft/client/renderer/texture/TextureAtlasSprite clearFramesTextureData ()V func_130103_l +MD net/minecraft/client/renderer/texture/TextureAtlasSprite hasAnimationMetadata ()Z func_130098_m +MD net/minecraft/client/renderer/texture/TextureAtlasSprite updateAnimationInterpolated ()V func_180599_n +MD net/minecraft/client/renderer/texture/TextureAtlasSprite resetSprite ()V func_130102_n +MD net/minecraft/client/renderer/texture/TextureAtlasSprite toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/texture/TextureAtlasSprite$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/TextureManager getDynamicTextureLocation (Ljava/lang/String;Lnet/minecraft/client/renderer/texture/DynamicTexture;)Lnet/minecraft/util/ResourceLocation; func_110578_a +MD net/minecraft/client/renderer/texture/TextureManager bindTexture (Lnet/minecraft/util/ResourceLocation;)V func_110577_a +MD net/minecraft/client/renderer/texture/TextureManager loadTexture (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/renderer/texture/ITextureObject;)Z func_110579_a +MD net/minecraft/client/renderer/texture/TextureManager loadTickableTexture (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/renderer/texture/ITickableTextureObject;)Z func_110580_a +MD net/minecraft/client/renderer/texture/TextureManager getTexture (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/texture/ITextureObject; func_110581_b +MD net/minecraft/client/renderer/texture/TextureManager deleteTexture (Lnet/minecraft/util/ResourceLocation;)V func_147645_c +MD net/minecraft/client/renderer/texture/TextureManager$1 call ()Ljava/lang/String; call +MD net/minecraft/client/renderer/texture/TextureManager$1 call ()Ljava/lang/Object; call +MD net/minecraft/client/renderer/texture/ITextureObject restoreLastBlurMipmap ()V func_174935_a +MD net/minecraft/client/renderer/texture/ITextureObject loadTexture (Lnet/minecraft/client/resources/IResourceManager;)V func_110551_a +MD net/minecraft/client/renderer/texture/ITextureObject getGlTextureId ()I func_110552_b +MD net/minecraft/client/renderer/texture/ITextureObject setBlurMipmap (ZZ)V func_174936_b +MD net/minecraft/client/renderer/texture/TextureUtil glGenTextures ()I func_110996_a +MD net/minecraft/client/renderer/texture/TextureUtil deleteTexture (I)V func_147942_a +MD net/minecraft/client/renderer/texture/TextureUtil allocateTexture (III)V func_110991_a +MD net/minecraft/client/renderer/texture/TextureUtil allocateTextureImpl (IIII)V func_180600_a +MD net/minecraft/client/renderer/texture/TextureUtil blendColorComponent (IIIII)I func_147944_a +MD net/minecraft/client/renderer/texture/TextureUtil blendColors (IIIIZ)I func_147943_a +MD net/minecraft/client/renderer/texture/TextureUtil generateMipmapData (II[[I)[[I func_147949_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImage (ILjava/awt/image/BufferedImage;)I func_110987_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageSub (ILjava/awt/image/BufferedImage;IIZZ)I func_110995_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageAllocate (ILjava/awt/image/BufferedImage;ZZ)I func_110989_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTexture (I[III)V func_110988_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureSub (I[IIIIIZZZ)V func_147947_a +MD net/minecraft/client/renderer/texture/TextureUtil readImageData (Lnet/minecraft/client/resources/IResourceManager;Lnet/minecraft/util/ResourceLocation;)[I func_110986_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureImageSubImpl (Ljava/awt/image/BufferedImage;IIZZ)V func_110993_a +MD net/minecraft/client/renderer/texture/TextureUtil readBufferedImage (Ljava/io/InputStream;)Ljava/awt/image/BufferedImage; func_177053_a +MD net/minecraft/client/renderer/texture/TextureUtil setTextureClamped (Z)V func_110997_a +MD net/minecraft/client/renderer/texture/TextureUtil setTextureBlurMipmap (ZZ)V func_147954_b +MD net/minecraft/client/renderer/texture/TextureUtil updateAnaglyph ([I)[I func_110985_a +MD net/minecraft/client/renderer/texture/TextureUtil copyToBuffer ([II)V func_110990_a +MD net/minecraft/client/renderer/texture/TextureUtil processPixelValues ([III)V func_147953_a +MD net/minecraft/client/renderer/texture/TextureUtil uploadTextureMipmap ([[IIIIIZZ)V func_147955_a +MD net/minecraft/client/renderer/texture/TextureUtil bindTexture (I)V func_94277_a +MD net/minecraft/client/renderer/texture/TextureUtil setTextureBlurred (Z)V func_147951_b +MD net/minecraft/client/renderer/texture/TextureUtil copyToBufferPos ([III)V func_110994_a +MD net/minecraft/client/renderer/texture/TextureUtil anaglyphColor (I)I func_177054_c +MD net/minecraft/client/renderer/texture/ITickable tick ()V func_110550_d +MD net/minecraft/client/renderer/texture/TextureCompass updateCompass (Lnet/minecraft/world/World;DDDZZ)V func_94241_a +MD net/minecraft/client/renderer/vertex/VertexBuffer bindBuffer ()V func_177359_a +MD net/minecraft/client/renderer/vertex/VertexBuffer drawArrays (I)V func_177358_a +MD net/minecraft/client/renderer/vertex/VertexBuffer bufferData (Ljava/nio/ByteBuffer;)V func_181722_a +MD net/minecraft/client/renderer/vertex/VertexBuffer unbindBuffer ()V func_177361_b +MD net/minecraft/client/renderer/vertex/VertexBuffer deleteGlBuffers ()V func_177362_c +MD net/minecraft/client/renderer/vertex/VertexFormat clear ()V func_177339_a +MD net/minecraft/client/renderer/vertex/VertexFormat hasUvOffset (I)Z func_177347_a +MD net/minecraft/client/renderer/vertex/VertexFormat addElement (Lnet/minecraft/client/renderer/vertex/VertexFormatElement;)Lnet/minecraft/client/renderer/vertex/VertexFormat; func_181721_a +MD net/minecraft/client/renderer/vertex/VertexFormat hasNormal ()Z func_177350_b +MD net/minecraft/client/renderer/vertex/VertexFormat getUvOffsetById (I)I func_177344_b +MD net/minecraft/client/renderer/vertex/VertexFormat getNormalOffset ()I func_177342_c +MD net/minecraft/client/renderer/vertex/VertexFormat getElement (I)Lnet/minecraft/client/renderer/vertex/VertexFormatElement; func_177348_c +MD net/minecraft/client/renderer/vertex/VertexFormat hasColor ()Z func_177346_d +MD net/minecraft/client/renderer/vertex/VertexFormat getOffset (I)I func_181720_d +MD net/minecraft/client/renderer/vertex/VertexFormat getColorOffset ()I func_177340_e +MD net/minecraft/client/renderer/vertex/VertexFormat getIntegerSize ()I func_181719_f +MD net/minecraft/client/renderer/vertex/VertexFormat getNextOffset ()I func_177338_f +MD net/minecraft/client/renderer/vertex/VertexFormat getElements ()Ljava/util/List; func_177343_g +MD net/minecraft/client/renderer/vertex/VertexFormat getElementCount ()I func_177345_h +MD net/minecraft/client/renderer/vertex/VertexFormat hasPosition ()Z func_177341_i +MD net/minecraft/client/renderer/vertex/VertexFormat equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/vertex/VertexFormat hashCode ()I hashCode +MD net/minecraft/client/renderer/vertex/VertexFormat toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/vertex/VertexFormatElement getType ()Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; func_177367_b +MD net/minecraft/client/renderer/vertex/VertexFormatElement func_177372_a (ILnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage;)Z func_177372_a +MD net/minecraft/client/renderer/vertex/VertexFormatElement getUsage ()Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; func_177375_c +MD net/minecraft/client/renderer/vertex/VertexFormatElement getElementCount ()I func_177370_d +MD net/minecraft/client/renderer/vertex/VertexFormatElement getIndex ()I func_177369_e +MD net/minecraft/client/renderer/vertex/VertexFormatElement getSize ()I func_177368_f +MD net/minecraft/client/renderer/vertex/VertexFormatElement isPositionElement ()Z func_177374_g +MD net/minecraft/client/renderer/vertex/VertexFormatElement equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/renderer/vertex/VertexFormatElement hashCode ()I hashCode +MD net/minecraft/client/renderer/vertex/VertexFormatElement toString ()Ljava/lang/String; toString +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getSize ()I func_177395_a +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getDisplayName ()Ljava/lang/String; func_177396_b +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType getGlConstant ()I func_177397_c +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; valueOf +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumType values ()[Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumType; values +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage getDisplayName ()Ljava/lang/String; func_177384_a +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage valueOf (Ljava/lang/String;)Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; valueOf +MD net/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage values ()[Lnet/minecraft/client/renderer/vertex/VertexFormatElement$EnumUsage; values +MD net/minecraft/client/resources/AbstractResourcePack readMetadata (Lnet/minecraft/client/resources/data/IMetadataSerializer;Ljava/io/InputStream;Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; func_110596_a +MD net/minecraft/client/resources/AbstractResourcePack getRelativeName (Ljava/io/File;Ljava/io/File;)Ljava/lang/String; func_110595_a +MD net/minecraft/client/resources/AbstractResourcePack getInputStreamByName (Ljava/lang/String;)Ljava/io/InputStream; func_110591_a +MD net/minecraft/client/resources/AbstractResourcePack hasResourceName (Ljava/lang/String;)Z func_110593_b +MD net/minecraft/client/resources/AbstractResourcePack logNameNotLowercase (Ljava/lang/String;)V func_110594_c +MD net/minecraft/client/resources/AbstractResourcePack locationToName (Lnet/minecraft/util/ResourceLocation;)Ljava/lang/String; func_110592_c +MD net/minecraft/client/resources/ResourceIndex getResourceMap ()Ljava/util/Map; func_152782_a +MD net/minecraft/client/resources/DefaultPlayerSkin getDefaultSkinLegacy ()Lnet/minecraft/util/ResourceLocation; func_177335_a +MD net/minecraft/client/resources/DefaultPlayerSkin getDefaultSkin (Ljava/util/UUID;)Lnet/minecraft/util/ResourceLocation; func_177334_a +MD net/minecraft/client/resources/DefaultPlayerSkin getSkinType (Ljava/util/UUID;)Ljava/lang/String; func_177332_b +MD net/minecraft/client/resources/DefaultPlayerSkin isSlimSkin (Ljava/util/UUID;)Z func_177333_c +MD net/minecraft/client/resources/DefaultResourcePack getInputStreamAssets (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; func_152780_c +MD net/minecraft/client/resources/DefaultResourcePack getResourceStream (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; func_110605_c +MD net/minecraft/client/resources/FallbackResourceManager addResourcePack (Lnet/minecraft/client/resources/IResourcePack;)V func_110538_a +MD net/minecraft/client/resources/FallbackResourceManager getInputStream (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/resources/IResourcePack;)Ljava/io/InputStream; func_177245_a +MD net/minecraft/client/resources/FallbackResourceManager access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/client/resources/FallbackResourceManager getLocationMcmeta (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; func_110537_b +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger close ()V close +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger finalize ()V finalize +MD net/minecraft/client/resources/FallbackResourceManager$InputStreamLeakedResourceLogger read ()I read +MD net/minecraft/client/resources/FileResourcePack getResourcePackZipFile ()Ljava/util/zip/ZipFile; func_110599_c +MD net/minecraft/client/resources/FileResourcePack close ()V close +MD net/minecraft/client/resources/FileResourcePack finalize ()V finalize +MD net/minecraft/client/resources/IReloadableResourceManager registerReloadListener (Lnet/minecraft/client/resources/IResourceManagerReloadListener;)V func_110542_a +MD net/minecraft/client/resources/IReloadableResourceManager reloadResources (Ljava/util/List;)V func_110541_a +MD net/minecraft/client/resources/IResource getResourceLocation ()Lnet/minecraft/util/ResourceLocation; func_177241_a +MD net/minecraft/client/resources/IResource getMetadata (Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; func_110526_a +MD net/minecraft/client/resources/IResource getInputStream ()Ljava/io/InputStream; func_110527_b +MD net/minecraft/client/resources/IResource hasMetadata ()Z func_110528_c +MD net/minecraft/client/resources/IResource getResourcePackName ()Ljava/lang/String; func_177240_d +MD net/minecraft/client/resources/IResourceManager getResourceDomains ()Ljava/util/Set; func_135055_a +MD net/minecraft/client/resources/IResourceManager getResource (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/resources/IResource; func_110536_a +MD net/minecraft/client/resources/IResourceManager getAllResources (Lnet/minecraft/util/ResourceLocation;)Ljava/util/List; func_135056_b +MD net/minecraft/client/resources/IResourceManagerReloadListener onResourceManagerReload (Lnet/minecraft/client/resources/IResourceManager;)V func_110549_a +MD net/minecraft/client/resources/IResourcePack getPackImage ()Ljava/awt/image/BufferedImage; func_110586_a +MD net/minecraft/client/resources/IResourcePack getPackMetadata (Lnet/minecraft/client/resources/data/IMetadataSerializer;Ljava/lang/String;)Lnet/minecraft/client/resources/data/IMetadataSection; func_135058_a +MD net/minecraft/client/resources/IResourcePack getInputStream (Lnet/minecraft/util/ResourceLocation;)Ljava/io/InputStream; func_110590_a +MD net/minecraft/client/resources/IResourcePack getPackName ()Ljava/lang/String; func_130077_b +MD net/minecraft/client/resources/IResourcePack resourceExists (Lnet/minecraft/util/ResourceLocation;)Z func_110589_b +MD net/minecraft/client/resources/IResourcePack getResourceDomains ()Ljava/util/Set; func_110587_b +MD net/minecraft/client/resources/ResourcePackRepository updateRepositoryEntriesAll ()V func_110611_a +MD net/minecraft/client/resources/ResourcePackRepository setResourcePackInstance (Ljava/io/File;)Lcom/google/common/util/concurrent/ListenableFuture; func_177319_a +MD net/minecraft/client/resources/ResourcePackRepository downloadResourcePack (Ljava/lang/String;Ljava/lang/String;)Lcom/google/common/util/concurrent/ListenableFuture; func_180601_a +MD net/minecraft/client/resources/ResourcePackRepository setRepositories (Ljava/util/List;)V func_148527_a +MD net/minecraft/client/resources/ResourcePackRepository getRepositoryEntriesAll ()Ljava/util/List; func_110609_b +MD net/minecraft/client/resources/ResourcePackRepository getRepositoryEntries ()Ljava/util/List; func_110613_c +MD net/minecraft/client/resources/ResourcePackRepository getDirResourcepacks ()Ljava/io/File; func_110612_e +MD net/minecraft/client/resources/ResourcePackRepository getResourcePackInstance ()Lnet/minecraft/client/resources/IResourcePack; func_148530_e +MD net/minecraft/client/resources/ResourcePackRepository clearResourcePack ()V func_148529_f +MD net/minecraft/client/resources/ResourcePackRepository fixDirResourcepacks ()V func_110616_f +MD net/minecraft/client/resources/ResourcePackRepository getResourcePackFiles ()Ljava/util/List; func_110614_g +MD net/minecraft/client/resources/ResourcePackRepository deleteOldServerResourcesPacks ()V func_183028_i +MD net/minecraft/client/resources/ResourcePackRepository$1 accept (Ljava/io/File;)Z accept +MD net/minecraft/client/resources/ResourcePackRepository$2 run ()V run +MD net/minecraft/client/resources/ResourcePackRepository$3 onFailure (Ljava/lang/Throwable;)V onFailure +MD net/minecraft/client/resources/ResourcePackRepository$3 onSuccess (Ljava/lang/Object;)V onSuccess +MD net/minecraft/client/resources/ResourcePackRepository$Entry updateResourcePack ()V func_110516_a +MD net/minecraft/client/resources/ResourcePackRepository$Entry bindTexturePackIcon (Lnet/minecraft/client/renderer/texture/TextureManager;)V func_110518_a +MD net/minecraft/client/resources/ResourcePackRepository$Entry closeResourcePack ()V func_110517_b +MD net/minecraft/client/resources/ResourcePackRepository$Entry getResourcePack ()Lnet/minecraft/client/resources/IResourcePack; func_110514_c +MD net/minecraft/client/resources/ResourcePackRepository$Entry getResourcePackName ()Ljava/lang/String; func_110515_d +MD net/minecraft/client/resources/ResourcePackRepository$Entry getTexturePackDescription ()Ljava/lang/String; func_110519_e +MD net/minecraft/client/resources/ResourcePackRepository$Entry func_183027_f ()I func_183027_f +MD net/minecraft/client/resources/ResourcePackRepository$Entry equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/ResourcePackRepository$Entry hashCode ()I hashCode +MD net/minecraft/client/resources/ResourcePackRepository$Entry toString ()Ljava/lang/String; toString +MD net/minecraft/client/resources/SimpleReloadableResourceManager reloadResourcePack (Lnet/minecraft/client/resources/IResourcePack;)V func_110545_a +MD net/minecraft/client/resources/SimpleReloadableResourceManager clearResources ()V func_110543_a +MD net/minecraft/client/resources/SimpleReloadableResourceManager notifyReloadListeners ()V func_110544_b +MD net/minecraft/client/resources/SimpleReloadableResourceManager$1 apply (Lnet/minecraft/client/resources/IResourcePack;)Ljava/lang/String; apply +MD net/minecraft/client/resources/SimpleReloadableResourceManager$1 apply (Ljava/lang/Object;)Ljava/lang/Object; apply +MD net/minecraft/client/resources/SimpleResource equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/SimpleResource hashCode ()I hashCode +MD net/minecraft/client/resources/SkinManager access$000 (Lnet/minecraft/client/resources/SkinManager;)Lcom/mojang/authlib/minecraft/MinecraftSessionService; access$000 +MD net/minecraft/client/resources/SkinManager loadSkinFromCache (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map; func_152788_a +MD net/minecraft/client/resources/SkinManager loadProfileTextures (Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;Z)V func_152790_a +MD net/minecraft/client/resources/SkinManager loadSkin (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;)Lnet/minecraft/util/ResourceLocation; func_152792_a +MD net/minecraft/client/resources/SkinManager loadSkin (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;)Lnet/minecraft/util/ResourceLocation; func_152789_a +MD net/minecraft/client/resources/SkinManager$1 load (Lcom/mojang/authlib/GameProfile;)Ljava/util/Map; load +MD net/minecraft/client/resources/SkinManager$1 load (Ljava/lang/Object;)Ljava/lang/Object; load +MD net/minecraft/client/resources/SkinManager$3 run ()V run +MD net/minecraft/client/resources/SkinManager$3$1 run ()V run +MD net/minecraft/client/resources/SkinManager$SkinAvailableCallback skinAvailable (Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/util/ResourceLocation;Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;)V func_180521_a +MD net/minecraft/client/resources/I18n setLocale (Lnet/minecraft/client/resources/Locale;)V func_135051_a +MD net/minecraft/client/resources/I18n format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; func_135052_a +MD net/minecraft/client/resources/Language getLanguageCode ()Ljava/lang/String; func_135034_a +MD net/minecraft/client/resources/Language compareTo (Lnet/minecraft/client/resources/Language;)I compareTo +MD net/minecraft/client/resources/Language isBidirectional ()Z func_135035_b +MD net/minecraft/client/resources/Language compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/resources/Language equals (Ljava/lang/Object;)Z equals +MD net/minecraft/client/resources/Language hashCode ()I hashCode +MD net/minecraft/client/resources/Language toString ()Ljava/lang/String; toString +MD net/minecraft/client/resources/LanguageManager isCurrentLocaleUnicode ()Z func_135042_a +MD net/minecraft/client/resources/LanguageManager setCurrentLanguage (Lnet/minecraft/client/resources/Language;)V func_135045_a +MD net/minecraft/client/resources/LanguageManager parseLanguageMetadata (Ljava/util/List;)V func_135043_a +MD net/minecraft/client/resources/LanguageManager isCurrentLanguageBidirectional ()Z func_135044_b +MD net/minecraft/client/resources/LanguageManager getCurrentLanguage ()Lnet/minecraft/client/resources/Language; func_135041_c +MD net/minecraft/client/resources/LanguageManager getLanguages ()Ljava/util/SortedSet; func_135040_d +MD net/minecraft/client/resources/Locale isUnicode ()Z func_135025_a +MD net/minecraft/client/resources/Locale loadLocaleDataFiles (Lnet/minecraft/client/resources/IResourceManager;Ljava/util/List;)V func_135022_a +MD net/minecraft/client/resources/Locale loadLocaleData (Ljava/io/InputStream;)V func_135021_a +MD net/minecraft/client/resources/Locale formatMessage (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; func_135023_a +MD net/minecraft/client/resources/Locale loadLocaleData (Ljava/util/List;)V func_135028_a +MD net/minecraft/client/resources/Locale checkUnicode ()V func_135024_b +MD net/minecraft/client/resources/Locale translateKeyPrivate (Ljava/lang/String;)Ljava/lang/String; func_135026_c +MD net/minecraft/client/resources/data/IMetadataSectionSerializer getSectionName ()Ljava/lang/String; func_110483_a +MD net/minecraft/client/resources/data/IMetadataSerializer getGson ()Lcom/google/gson/Gson; func_110505_a +MD net/minecraft/client/resources/data/IMetadataSerializer registerMetadataSectionType (Lnet/minecraft/client/resources/data/IMetadataSectionSerializer;Ljava/lang/Class;)V func_110504_a +MD net/minecraft/client/resources/data/IMetadataSerializer parseMetadataSection (Ljava/lang/String;Lcom/google/gson/JsonObject;)Lnet/minecraft/client/resources/data/IMetadataSection; func_110503_a +MD net/minecraft/client/resources/data/AnimationFrame hasNoTime ()Z func_110495_a +MD net/minecraft/client/resources/data/AnimationFrame getFrameTime ()I func_110497_b +MD net/minecraft/client/resources/data/AnimationFrame getFrameIndex ()I func_110496_c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameHeight ()I func_110471_a +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameTimeSingle (I)I func_110472_a +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameWidth ()I func_110474_b +MD net/minecraft/client/resources/data/AnimationMetadataSection frameHasTime (I)Z func_110470_b +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameCount ()I func_110473_c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameIndex (I)I func_110468_c +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameTime ()I func_110469_d +MD net/minecraft/client/resources/data/AnimationMetadataSection getAnimationFrame (I)Lnet/minecraft/client/resources/data/AnimationFrame; func_130072_d +MD net/minecraft/client/resources/data/AnimationMetadataSection isInterpolate ()Z func_177219_e +MD net/minecraft/client/resources/data/AnimationMetadataSection getFrameIndexSet ()Ljava/util/Set; func_130073_e +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer parseAnimationFrame (ILcom/google/gson/JsonElement;)Lnet/minecraft/client/resources/data/AnimationFrame; func_110492_a +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer serialize (Lnet/minecraft/client/resources/data/AnimationMetadataSection;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/AnimationMetadataSection; deserialize +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/AnimationMetadataSectionSerializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/FontMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/FontMetadataSection; deserialize +MD net/minecraft/client/resources/data/FontMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/LanguageMetadataSection getLanguages ()Ljava/util/Collection; func_135018_a +MD net/minecraft/client/resources/data/LanguageMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/LanguageMetadataSection; deserialize +MD net/minecraft/client/resources/data/LanguageMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/PackMetadataSection getPackDescription ()Lnet/minecraft/util/IChatComponent; func_152805_a +MD net/minecraft/client/resources/data/PackMetadataSection getPackFormat ()I func_110462_b +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer serialize (Lnet/minecraft/client/resources/data/PackMetadataSection;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/PackMetadataSection; deserialize +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/data/PackMetadataSectionSerializer serialize (Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement; serialize +MD net/minecraft/client/resources/data/TextureMetadataSection getTextureBlur ()Z func_110479_a +MD net/minecraft/client/resources/data/TextureMetadataSection getTextureClamp ()Z func_110480_b +MD net/minecraft/client/resources/data/TextureMetadataSection getListMipmaps ()Ljava/util/List; func_148535_c +MD net/minecraft/client/resources/data/TextureMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/resources/data/TextureMetadataSection; deserialize +MD net/minecraft/client/resources/data/TextureMetadataSectionSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/resources/model/IBakedModel getGeneralQuads ()Ljava/util/List; func_177550_a +MD net/minecraft/client/resources/model/IBakedModel getFaceQuads (Lnet/minecraft/util/EnumFacing;)Ljava/util/List; func_177551_a +MD net/minecraft/client/resources/model/IBakedModel isAmbientOcclusion ()Z func_177555_b +MD net/minecraft/client/resources/model/IBakedModel isGui3d ()Z func_177556_c +MD net/minecraft/client/resources/model/IBakedModel isBuiltInRenderer ()Z func_177553_d +MD net/minecraft/client/resources/model/IBakedModel getParticleTexture ()Lnet/minecraft/client/renderer/texture/TextureAtlasSprite; func_177554_e +MD net/minecraft/client/resources/model/IBakedModel getItemCameraTransforms ()Lnet/minecraft/client/renderer/block/model/ItemCameraTransforms; func_177552_f +MD net/minecraft/client/resources/model/ModelRotation getMatrix4d ()Lorg/lwjgl/util/vector/Matrix4f; func_177525_a +MD net/minecraft/client/resources/model/ModelRotation getModelRotation (II)Lnet/minecraft/client/resources/model/ModelRotation; func_177524_a +MD net/minecraft/client/resources/model/ModelRotation rotateFace (Lnet/minecraft/util/EnumFacing;)Lnet/minecraft/util/EnumFacing; func_177523_a +MD net/minecraft/client/resources/model/ModelRotation rotateVertex (Lnet/minecraft/util/EnumFacing;I)I func_177520_a +MD net/minecraft/client/resources/model/ModelRotation combineXY (II)I func_177521_b +MD net/minecraft/client/resources/model/ModelRotation valueOf (Ljava/lang/String;)Lnet/minecraft/client/resources/model/ModelRotation; valueOf +MD net/minecraft/client/resources/model/ModelRotation values ()[Lnet/minecraft/client/resources/model/ModelRotation; values +MD net/minecraft/client/resources/model/ModelBakery setupModelRegistry ()Lnet/minecraft/util/IRegistry; func_177570_a +MD net/minecraft/client/resources/model/ModelBakery makeBakedQuad (Lnet/minecraft/client/renderer/block/model/BlockPart;Lnet/minecraft/client/renderer/block/model/BlockPartFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/resources/model/ModelRotation;Z)Lnet/minecraft/client/renderer/block/model/BakedQuad; func_177589_a +MD net/minecraft/client/resources/model/ModelBakery getTextureLocations (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Ljava/util/Set; func_177585_a +MD net/minecraft/client/resources/model/ModelBakery bakeModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;Lnet/minecraft/client/resources/model/ModelRotation;Z)Lnet/minecraft/client/resources/model/IBakedModel; func_177578_a +MD net/minecraft/client/resources/model/ModelBakery registerVariant (Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition;Lnet/minecraft/client/resources/model/ModelResourceLocation;)V func_177569_a +MD net/minecraft/client/resources/model/ModelBakery access$000 (Lnet/minecraft/client/resources/model/ModelBakery;)Ljava/util/Map; access$000 +MD net/minecraft/client/resources/model/ModelBakery getItemLocation (Ljava/lang/String;)Lnet/minecraft/util/ResourceLocation; func_177583_a +MD net/minecraft/client/resources/model/ModelBakery loadVariants (Ljava/util/Collection;)V func_177591_a +MD net/minecraft/client/resources/model/ModelBakery getModelBlockDefinition (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlockDefinition; func_177586_a +MD net/minecraft/client/resources/model/ModelBakery getVariantNames (Lnet/minecraft/item/Item;)Ljava/util/List; func_177596_a +MD net/minecraft/client/resources/model/ModelBakery loadVariantItemModels ()V func_177577_b +MD net/minecraft/client/resources/model/ModelBakery hasItemModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z func_177581_b +MD net/minecraft/client/resources/model/ModelBakery getBlockStateLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; func_177584_b +MD net/minecraft/client/resources/model/ModelBakery loadVariantModels ()V func_177595_c +MD net/minecraft/client/resources/model/ModelBakery isCustomRenderer (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Z func_177587_c +MD net/minecraft/client/resources/model/ModelBakery loadModel (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/renderer/block/model/ModelBlock; func_177594_c +MD net/minecraft/client/resources/model/ModelBakery loadItemModels ()V func_177590_d +MD net/minecraft/client/resources/model/ModelBakery makeItemModel (Lnet/minecraft/client/renderer/block/model/ModelBlock;)Lnet/minecraft/client/renderer/block/model/ModelBlock; func_177582_d +MD net/minecraft/client/resources/model/ModelBakery getModelLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; func_177580_d +MD net/minecraft/client/resources/model/ModelBakery registerVariantNames ()V func_177592_e +MD net/minecraft/client/resources/model/ModelBakery getParentPath (Lnet/minecraft/util/ResourceLocation;)Ljava/util/List; func_177573_e +MD net/minecraft/client/resources/model/ModelBakery bakeBlockModels ()V func_177588_f +MD net/minecraft/client/resources/model/ModelBakery getParentLocation (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/util/ResourceLocation; func_177576_f +MD net/minecraft/client/resources/model/ModelBakery getVariantsTextureLocations ()Ljava/util/Set; func_177575_g +MD net/minecraft/client/resources/model/ModelBakery loadModelsCheck ()V func_177597_h +MD net/minecraft/client/resources/model/ModelBakery loadModels ()V func_177574_i +MD net/minecraft/client/resources/model/ModelBakery loadSprites ()V func_177572_j +MD net/minecraft/client/resources/model/ModelBakery getItemsTextureLocations ()Ljava/util/Set; func_177571_k +MD net/minecraft/client/resources/model/ModelBakery bakeItemModels ()V func_177593_l +MD net/minecraft/client/resources/model/ModelBakery$1 compare (Lnet/minecraft/client/resources/model/ModelResourceLocation;Lnet/minecraft/client/resources/model/ModelResourceLocation;)I compare +MD net/minecraft/client/resources/model/ModelBakery$1 compare (Ljava/lang/Object;Ljava/lang/Object;)I compare +MD net/minecraft/client/resources/model/ModelManager getMissingModel ()Lnet/minecraft/client/resources/model/IBakedModel; func_174951_a +MD net/minecraft/client/resources/model/ModelManager getModel (Lnet/minecraft/client/resources/model/ModelResourceLocation;)Lnet/minecraft/client/resources/model/IBakedModel; func_174953_a +MD net/minecraft/client/resources/model/ModelManager getTextureMap ()Lnet/minecraft/client/renderer/texture/TextureMap; func_174952_b +MD net/minecraft/client/resources/model/ModelManager getBlockModelShapes ()Lnet/minecraft/client/renderer/BlockModelShapes; func_174954_c +MD net/minecraft/client/resources/model/ModelResourceLocation parsePathString (Ljava/lang/String;)[Ljava/lang/String; func_177517_b +MD net/minecraft/client/resources/model/ModelResourceLocation getVariant ()Ljava/lang/String; func_177518_c +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addGeneralQuad (Lnet/minecraft/client/renderer/block/model/BakedQuad;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; func_177648_a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder setTexture (Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; func_177646_a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addGeneralBreakingFours (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V func_177647_a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addFaceBreakingFours (Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/util/EnumFacing;)V func_177649_a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder addFaceQuad (Lnet/minecraft/util/EnumFacing;Lnet/minecraft/client/renderer/block/model/BakedQuad;)Lnet/minecraft/client/resources/model/SimpleBakedModel$Builder; func_177650_a +MD net/minecraft/client/resources/model/SimpleBakedModel$Builder makeBakedModel ()Lnet/minecraft/client/resources/model/IBakedModel; func_177645_b +MD net/minecraft/client/resources/model/WeightedBakedModel getAlternativeModel (J)Lnet/minecraft/client/resources/model/IBakedModel; func_177564_a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder build ()Lnet/minecraft/client/resources/model/WeightedBakedModel; func_177676_a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder add (Lnet/minecraft/client/resources/model/IBakedModel;I)Lnet/minecraft/client/resources/model/WeightedBakedModel$Builder; func_177677_a +MD net/minecraft/client/resources/model/WeightedBakedModel$Builder first ()Lnet/minecraft/client/resources/model/IBakedModel; func_177675_b +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem getCountQuads ()I func_177635_a +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem compareTo (Lnet/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem;)I compareTo +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem compareTo (Ljava/lang/Object;)I compareTo +MD net/minecraft/client/resources/model/WeightedBakedModel$MyWeighedRandomItem toString ()Ljava/lang/String; toString +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/audio/PositionedSoundRecord; func_147673_a +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;F)Lnet/minecraft/client/audio/PositionedSoundRecord; func_147674_a +MD net/minecraft/client/audio/PositionedSoundRecord create (Lnet/minecraft/util/ResourceLocation;FFF)Lnet/minecraft/client/audio/PositionedSoundRecord; func_147675_a +MD net/minecraft/client/audio/SoundCategory getCategoryName ()Ljava/lang/String; func_147155_a +MD net/minecraft/client/audio/SoundCategory getCategory (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundCategory; func_147154_a +MD net/minecraft/client/audio/SoundCategory getCategoryId ()I func_147156_b +MD net/minecraft/client/audio/SoundCategory valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundCategory; valueOf +MD net/minecraft/client/audio/SoundCategory values ()[Lnet/minecraft/client/audio/SoundCategory; values +MD net/minecraft/client/audio/SoundList getSoundList ()Ljava/util/List; func_148570_a +MD net/minecraft/client/audio/SoundList setSoundCategory (Lnet/minecraft/client/audio/SoundCategory;)V func_148571_a +MD net/minecraft/client/audio/SoundList setReplaceExisting (Z)V func_148572_a +MD net/minecraft/client/audio/SoundList canReplaceExisting ()Z func_148574_b +MD net/minecraft/client/audio/SoundList getSoundCategory ()Lnet/minecraft/client/audio/SoundCategory; func_148573_c +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryName ()Ljava/lang/String; func_148556_a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryVolume (F)V func_148553_a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryWeight (I)V func_148554_a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryType (Lnet/minecraft/client/audio/SoundList$SoundEntry$Type;)V func_148562_a +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryName (Ljava/lang/String;)V func_148561_a +MD net/minecraft/client/audio/SoundList$SoundEntry setStreaming (Z)V func_148557_a +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryVolume ()F func_148558_b +MD net/minecraft/client/audio/SoundList$SoundEntry setSoundEntryPitch (F)V func_148559_b +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryPitch ()F func_148560_c +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryWeight ()I func_148555_d +MD net/minecraft/client/audio/SoundList$SoundEntry getSoundEntryType ()Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; func_148563_e +MD net/minecraft/client/audio/SoundList$SoundEntry isStreaming ()Z func_148552_f +MD net/minecraft/client/audio/SoundList$SoundEntry$Type getType (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; func_148580_a +MD net/minecraft/client/audio/SoundList$SoundEntry$Type valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; valueOf +MD net/minecraft/client/audio/SoundList$SoundEntry$Type values ()[Lnet/minecraft/client/audio/SoundList$SoundEntry$Type; values +MD net/minecraft/client/audio/SoundListSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/audio/SoundList; deserialize +MD net/minecraft/client/audio/SoundListSerializer deserialize (Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object; deserialize +MD net/minecraft/client/audio/ISound getSoundLocation ()Lnet/minecraft/util/ResourceLocation; func_147650_b +MD net/minecraft/client/audio/ISound canRepeat ()Z func_147657_c +MD net/minecraft/client/audio/ISound getRepeatDelay ()I func_147652_d +MD net/minecraft/client/audio/ISound getVolume ()F func_147653_e +MD net/minecraft/client/audio/ISound getPitch ()F func_147655_f +MD net/minecraft/client/audio/ISound getXPosF ()F func_147649_g +MD net/minecraft/client/audio/ISound getYPosF ()F func_147654_h +MD net/minecraft/client/audio/ISound getZPosF ()F func_147651_i +MD net/minecraft/client/audio/ISound getAttenuationType ()Lnet/minecraft/client/audio/ISound$AttenuationType; func_147656_j +MD net/minecraft/client/audio/ISound$AttenuationType getTypeInt ()I func_148586_a +MD net/minecraft/client/audio/ISound$AttenuationType valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/ISound$AttenuationType; valueOf +MD net/minecraft/client/audio/ISound$AttenuationType values ()[Lnet/minecraft/client/audio/ISound$AttenuationType; values +MD net/minecraft/client/audio/ITickableSound isDonePlaying ()Z func_147667_k +MD net/minecraft/server/integrated/IntegratedPlayerList getServerInstance ()Lnet/minecraft/server/integrated/IntegratedServer; func_72365_p +MD net/minecraft/server/integrated/IntegratedServer setStaticInstance ()V func_175592_a +MD net/minecraft/server/integrated/IntegratedServer getPublic ()Z func_71344_c +MD net/minecraft/server/integrated/IntegratedServer$1 call ()Ljava/lang/String; call +MD net/minecraft/server/integrated/IntegratedServer$1 call ()Ljava/lang/Object; call +MD net/minecraft/server/integrated/IntegratedServer$2 call ()Ljava/lang/String; call +MD net/minecraft/server/integrated/IntegratedServer$2 call ()Ljava/lang/Object; call +MD net/minecraft/server/integrated/IntegratedServer$3 run ()V run +MD net/minecraft/client/network/LanServerDetector access$000 ()Ljava/util/concurrent/atomic/AtomicInteger; access$000 +MD net/minecraft/client/network/LanServerDetector access$100 ()Lorg/apache/logging/log4j/Logger; access$100 +MD net/minecraft/client/network/LanServerDetector$LanServer getServerMotd ()Ljava/lang/String; func_77487_a +MD net/minecraft/client/network/LanServerDetector$LanServer getServerIpPort ()Ljava/lang/String; func_77488_b +MD net/minecraft/client/network/LanServerDetector$LanServer updateLastSeen ()V func_77489_c +MD net/minecraft/client/network/LanServerDetector$ThreadLanServerFind run ()V run +MD net/minecraft/client/network/LanServerDetector$LanServerList getWasUpdated ()Z func_77553_a +MD net/minecraft/client/network/LanServerDetector$LanServerList func_77551_a (Ljava/lang/String;Ljava/net/InetAddress;)V func_77551_a +MD net/minecraft/client/network/LanServerDetector$LanServerList setWasNotUpdated ()V func_77552_b +MD net/minecraft/client/network/LanServerDetector$LanServerList getLanServers ()Ljava/util/List; func_77554_c +MD net/minecraft/client/multiplayer/ThreadLanServerPing getMotdFromPingResponse (Ljava/lang/String;)Ljava/lang/String; func_77524_a +MD net/minecraft/client/multiplayer/ThreadLanServerPing getPingResponse (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; func_77525_a +MD net/minecraft/client/multiplayer/ThreadLanServerPing getAdFromPingResponse (Ljava/lang/String;)Ljava/lang/String; func_77523_b +MD net/minecraft/client/multiplayer/ThreadLanServerPing interrupt ()V interrupt +MD net/minecraft/client/multiplayer/ThreadLanServerPing run ()V run +MD net/minecraft/client/audio/MusicTicker func_181557_a ()V func_181557_a +MD net/minecraft/client/audio/MusicTicker func_181558_a (Lnet/minecraft/client/audio/MusicTicker$MusicType;)V func_181558_a +MD net/minecraft/client/audio/MusicTicker$MusicType getMusicLocation ()Lnet/minecraft/util/ResourceLocation; func_148635_a +MD net/minecraft/client/audio/MusicTicker$MusicType getMinDelay ()I func_148634_b +MD net/minecraft/client/audio/MusicTicker$MusicType getMaxDelay ()I func_148633_c +MD net/minecraft/client/audio/MusicTicker$MusicType valueOf (Ljava/lang/String;)Lnet/minecraft/client/audio/MusicTicker$MusicType; valueOf +MD net/minecraft/client/audio/MusicTicker$MusicType values ()[Lnet/minecraft/client/audio/MusicTicker$MusicType; values +MD net/minecraft/client/audio/SoundPoolEntry getSoundPoolEntryLocation ()Lnet/minecraft/util/ResourceLocation; func_148652_a +MD net/minecraft/client/audio/SoundPoolEntry setPitch (D)V func_148651_a +MD net/minecraft/client/audio/SoundPoolEntry getPitch ()D func_148650_b +MD net/minecraft/client/audio/SoundPoolEntry setVolume (D)V func_148647_b +MD net/minecraft/client/audio/SoundPoolEntry getVolume ()D func_148649_c +MD net/minecraft/client/audio/SoundPoolEntry isStreamingSound ()Z func_148648_d +MD net/minecraft/client/audio/SoundManager reloadSoundSystem ()V func_148596_a +MD net/minecraft/client/audio/SoundManager getSoundCategoryVolume (Lnet/minecraft/client/audio/SoundCategory;)F func_148595_a +MD net/minecraft/client/audio/SoundManager setSoundCategoryVolume (Lnet/minecraft/client/audio/SoundCategory;F)V func_148601_a +MD net/minecraft/client/audio/SoundManager isSoundPlaying (Lnet/minecraft/client/audio/ISound;)Z func_148597_a +MD net/minecraft/client/audio/SoundManager playDelayedSound (Lnet/minecraft/client/audio/ISound;I)V func_148599_a +MD net/minecraft/client/audio/SoundManager getNormalizedPitch (Lnet/minecraft/client/audio/ISound;Lnet/minecraft/client/audio/SoundPoolEntry;)F func_148606_a +MD net/minecraft/client/audio/SoundManager getNormalizedVolume (Lnet/minecraft/client/audio/ISound;Lnet/minecraft/client/audio/SoundPoolEntry;Lnet/minecraft/client/audio/SoundCategory;)F func_148594_a +MD net/minecraft/client/audio/SoundManager access$400 (Lnet/minecraft/client/audio/SoundManager;)Lnet/minecraft/client/settings/GameSettings; access$400 +MD net/minecraft/client/audio/SoundManager access$102 (Lnet/minecraft/client/audio/SoundManager;Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread;)Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread; access$102 +MD net/minecraft/client/audio/SoundManager access$302 (Lnet/minecraft/client/audio/SoundManager;Z)Z access$302 +MD net/minecraft/client/audio/SoundManager getURLForSoundResource (Lnet/minecraft/util/ResourceLocation;)Ljava/net/URL; func_148612_a +MD net/minecraft/client/audio/SoundManager setListener (Lnet/minecraft/entity/player/EntityPlayer;F)V func_148615_a +MD net/minecraft/client/audio/SoundManager unloadSoundSystem ()V func_148613_b +MD net/minecraft/client/audio/SoundManager stopSound (Lnet/minecraft/client/audio/ISound;)V func_148602_b +MD net/minecraft/client/audio/SoundManager access$100 (Lnet/minecraft/client/audio/SoundManager;)Lnet/minecraft/client/audio/SoundManager$SoundSystemStarterThread; access$100 +MD net/minecraft/client/audio/SoundManager stopAllSounds ()V func_148614_c +MD net/minecraft/client/audio/SoundManager playSound (Lnet/minecraft/client/audio/ISound;)V func_148611_c +MD net/minecraft/client/audio/SoundManager updateAllSounds ()V func_148605_d +MD net/minecraft/client/audio/SoundManager pauseAllSounds ()V func_148610_e +MD net/minecraft/client/audio/SoundManager resumeAllSounds ()V func_148604_f +MD net/minecraft/client/audio/SoundManager access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/client/audio/SoundManager access$500 ()Lorg/apache/logging/log4j/Marker; access$500 +MD net/minecraft/client/audio/SoundManager loadSoundSystem ()V func_148608_i +MD net/minecraft/client/audio/SoundManager$1 run ()V run +MD net/minecraft/client/audio/SoundManager$1$1 errorMessage (Ljava/lang/String;Ljava/lang/String;I)V errorMessage +MD net/minecraft/client/audio/SoundManager$1$1 importantMessage (Ljava/lang/String;I)V importantMessage +MD net/minecraft/client/audio/SoundManager$1$1 message (Ljava/lang/String;I)V message +MD net/minecraft/client/audio/SoundManager$2 openConnection (Ljava/net/URL;)Ljava/net/URLConnection; openConnection +MD net/minecraft/client/audio/SoundManager$2$1 connect ()V connect +MD net/minecraft/client/audio/SoundManager$2$1 getInputStream ()Ljava/io/InputStream; getInputStream +MD net/minecraft/client/audio/SoundManager$SoundSystemStarterThread playing (Ljava/lang/String;)Z playing +MD net/minecraft/client/audio/SoundEventAccessorComposite addSoundToEventPool (Lnet/minecraft/client/audio/ISoundEventAccessor;)V func_148727_a +MD net/minecraft/client/audio/SoundEventAccessorComposite cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; func_148720_g +MD net/minecraft/client/audio/SoundEventAccessorComposite getSoundEventLocation ()Lnet/minecraft/util/ResourceLocation; func_148729_c +MD net/minecraft/client/audio/SoundEventAccessorComposite getSoundCategory ()Lnet/minecraft/client/audio/SoundCategory; func_148728_d +MD net/minecraft/client/audio/SoundHandler pauseSounds ()V func_147689_b +MD net/minecraft/client/audio/SoundHandler setSoundLevel (Lnet/minecraft/client/audio/SoundCategory;F)V func_147684_a +MD net/minecraft/client/audio/SoundHandler playSound (Lnet/minecraft/client/audio/ISound;)V func_147682_a +MD net/minecraft/client/audio/SoundHandler playDelayedSound (Lnet/minecraft/client/audio/ISound;I)V func_147681_a +MD net/minecraft/client/audio/SoundHandler access$000 (Lnet/minecraft/client/audio/SoundHandler;)Lnet/minecraft/client/audio/SoundRegistry; access$000 +MD net/minecraft/client/audio/SoundHandler getSoundMap (Ljava/io/InputStream;)Ljava/util/Map; func_175085_a +MD net/minecraft/client/audio/SoundHandler getSound (Lnet/minecraft/util/ResourceLocation;)Lnet/minecraft/client/audio/SoundEventAccessorComposite; func_147680_a +MD net/minecraft/client/audio/SoundHandler loadSoundResource (Lnet/minecraft/util/ResourceLocation;Lnet/minecraft/client/audio/SoundList;)V func_147693_a +MD net/minecraft/client/audio/SoundHandler setListener (Lnet/minecraft/entity/player/EntityPlayer;F)V func_147691_a +MD net/minecraft/client/audio/SoundHandler getRandomSoundFromCategories ([Lnet/minecraft/client/audio/SoundCategory;)Lnet/minecraft/client/audio/SoundEventAccessorComposite; func_147686_a +MD net/minecraft/client/audio/SoundHandler stopSounds ()V func_147690_c +MD net/minecraft/client/audio/SoundHandler stopSound (Lnet/minecraft/client/audio/ISound;)V func_147683_b +MD net/minecraft/client/audio/SoundHandler isSoundPlaying (Lnet/minecraft/client/audio/ISound;)Z func_147692_c +MD net/minecraft/client/audio/SoundHandler unloadSounds ()V func_147685_d +MD net/minecraft/client/audio/SoundHandler resumeSounds ()V func_147687_e +MD net/minecraft/client/audio/SoundHandler$1 getActualTypeArguments ()[Ljava/lang/reflect/Type; getActualTypeArguments +MD net/minecraft/client/audio/SoundHandler$1 getOwnerType ()Ljava/lang/reflect/Type; getOwnerType +MD net/minecraft/client/audio/SoundHandler$1 getRawType ()Ljava/lang/reflect/Type; getRawType +MD net/minecraft/client/audio/SoundHandler$2 cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; func_148720_g +MD net/minecraft/client/audio/SoundRegistry clearMap ()V func_148763_c +MD net/minecraft/client/audio/SoundRegistry registerSound (Lnet/minecraft/client/audio/SoundEventAccessorComposite;)V func_148762_a +MD net/minecraft/client/audio/ISoundEventAccessor getWeight ()I func_148721_a +MD net/minecraft/client/audio/ISoundEventAccessor cloneEntry ()Ljava/lang/Object; func_148720_g +MD net/minecraft/client/audio/SoundEventAccessor cloneEntry ()Lnet/minecraft/client/audio/SoundPoolEntry; func_148720_g +MD net/minecraft/client/stream/Metadata func_152809_a ()Ljava/lang/String; func_152809_a +MD net/minecraft/client/stream/Metadata func_152807_a (Ljava/lang/String;)V func_152807_a +MD net/minecraft/client/stream/Metadata func_152808_a (Ljava/lang/String;Ljava/lang/String;)V func_152808_a +MD net/minecraft/client/stream/Metadata func_152806_b ()Ljava/lang/String; func_152806_b +MD net/minecraft/client/stream/Metadata func_152810_c ()Ljava/lang/String; func_152810_c +MD net/minecraft/client/stream/Metadata toString ()Ljava/lang/String; toString +MD net/minecraft/client/stream/BroadcastController getErrorCode ()Ltv/twitch/ErrorCode; func_152852_P +MD net/minecraft/client/stream/BroadcastController getPixelFormat ()Ltv/twitch/broadcast/PixelFormat; func_152826_z +MD net/minecraft/client/stream/BroadcastController func_152817_A ()Z func_152817_A +MD net/minecraft/client/stream/BroadcastController func_152851_B ()Z func_152851_B +MD net/minecraft/client/stream/BroadcastController statCallback ()V statCallback +MD net/minecraft/client/stream/BroadcastController func_152845_C ()Z func_152845_C +MD net/minecraft/client/stream/BroadcastController requestCommercial ()Z func_152830_D +MD net/minecraft/client/stream/BroadcastController stopBroadcasting ()Z func_152819_E +MD net/minecraft/client/stream/BroadcastController func_152847_F ()Z func_152847_F +MD net/minecraft/client/stream/BroadcastController func_152854_G ()Z func_152854_G +MD net/minecraft/client/stream/BroadcastController func_152821_H ()V func_152821_H +MD net/minecraft/client/stream/BroadcastController func_152835_I ()V func_152835_I +MD net/minecraft/client/stream/BroadcastController func_152838_J ()Lnet/minecraft/client/stream/IngestServerTester; func_152838_J +MD net/minecraft/client/stream/BroadcastController func_152823_L ()Z func_152823_L +MD net/minecraft/client/stream/BroadcastController func_152831_M ()V func_152831_M +MD net/minecraft/client/stream/BroadcastController func_152822_N ()Ltv/twitch/broadcast/FrameBuffer; func_152822_N +MD net/minecraft/client/stream/BroadcastController setRecordingDeviceVolume (F)V func_152829_a +MD net/minecraft/client/stream/BroadcastController func_152834_a (IIFF)Ltv/twitch/broadcast/VideoParams; func_152834_a +MD net/minecraft/client/stream/BroadcastController func_152827_a (Lnet/minecraft/client/stream/BroadcastController$BroadcastState;)V func_152827_a +MD net/minecraft/client/stream/BroadcastController setBroadcastListener (Lnet/minecraft/client/stream/BroadcastController$BroadcastListener;)V func_152841_a +MD net/minecraft/client/stream/BroadcastController func_152842_a (Ljava/lang/String;)V func_152842_a +MD net/minecraft/client/stream/BroadcastController func_177947_a (Ljava/lang/String;JJLjava/lang/String;Ljava/lang/String;)Z func_177947_a +MD net/minecraft/client/stream/BroadcastController func_152840_a (Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Z func_152840_a +MD net/minecraft/client/stream/BroadcastController func_152828_a (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z func_152828_a +MD net/minecraft/client/stream/BroadcastController func_152818_a (Ljava/lang/String;Ltv/twitch/AuthToken;)Z func_152818_a +MD net/minecraft/client/stream/BroadcastController func_152853_a (Ltv/twitch/ErrorCode;)Z func_152853_a +MD net/minecraft/client/stream/BroadcastController captureFramebuffer (Ltv/twitch/broadcast/FrameBuffer;)V func_152846_a +MD net/minecraft/client/stream/BroadcastController setIngestServer (Ltv/twitch/broadcast/IngestServer;)V func_152824_a +MD net/minecraft/client/stream/BroadcastController func_152836_a (Ltv/twitch/broadcast/VideoParams;)Z func_152836_a +MD net/minecraft/client/stream/BroadcastController func_152858_b ()Z func_152858_b +MD net/minecraft/client/stream/BroadcastController setPlaybackDeviceVolume (F)V func_152837_b +MD net/minecraft/client/stream/BroadcastController func_177946_b (Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)J func_177946_b +MD net/minecraft/client/stream/BroadcastController submitStreamFrame (Ltv/twitch/broadcast/FrameBuffer;)Ltv/twitch/ErrorCode; func_152859_b +MD net/minecraft/client/stream/BroadcastController logError (Ljava/lang/String;)V func_152820_d +MD net/minecraft/client/stream/BroadcastController logWarning (Ljava/lang/String;)V func_152832_e +MD net/minecraft/client/stream/BroadcastController getStreamInfo ()Ltv/twitch/broadcast/StreamInfo; func_152816_j +MD net/minecraft/client/stream/BroadcastController getChannelInfo ()Ltv/twitch/broadcast/ChannelInfo; func_152843_l +MD net/minecraft/client/stream/BroadcastController isBroadcasting ()Z func_152850_m +MD net/minecraft/client/stream/BroadcastController isReadyToBroadcast ()Z func_152857_n +MD net/minecraft/client/stream/BroadcastController isIngestTesting ()Z func_152825_o +MD net/minecraft/client/stream/BroadcastController isBroadcastPaused ()Z func_152839_p +MD net/minecraft/client/stream/BroadcastController func_152849_q ()Z func_152849_q +MD net/minecraft/client/stream/BroadcastController getIngestServer ()Ltv/twitch/broadcast/IngestServer; func_152833_s +MD net/minecraft/client/stream/BroadcastController getIngestList ()Ltv/twitch/broadcast/IngestList; func_152855_t +MD net/minecraft/client/stream/BroadcastController isReady ()Lnet/minecraft/client/stream/IngestServerTester; func_152856_w +MD net/minecraft/client/stream/BroadcastController getStreamTime ()J func_152844_x +MD net/minecraft/client/stream/BroadcastController func_152848_y ()Z func_152848_y +MD net/minecraft/client/stream/BroadcastController$1 bufferUnlockCallback (J)V bufferUnlockCallback +MD net/minecraft/client/stream/BroadcastController$1 getArchivingStateCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ArchivingState;)V getArchivingStateCallback +MD net/minecraft/client/stream/BroadcastController$1 getGameNameListCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/GameInfoList;)V getGameNameListCallback +MD net/minecraft/client/stream/BroadcastController$1 getIngestServersCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/IngestList;)V getIngestServersCallback +MD net/minecraft/client/stream/BroadcastController$1 getStreamInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/StreamInfo;)V getStreamInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 getUserInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/UserInfo;)V getUserInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 loginCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ChannelInfo;)V loginCallback +MD net/minecraft/client/stream/BroadcastController$1 requestAuthTokenCallback (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V requestAuthTokenCallback +MD net/minecraft/client/stream/BroadcastController$1 runCommercialCallback (Ltv/twitch/ErrorCode;)V runCommercialCallback +MD net/minecraft/client/stream/BroadcastController$1 sendActionMetaDataCallback (Ltv/twitch/ErrorCode;)V sendActionMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 sendEndSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendEndSpanMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 sendStartSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendStartSpanMetaDataCallback +MD net/minecraft/client/stream/BroadcastController$1 setStreamInfoCallback (Ltv/twitch/ErrorCode;)V setStreamInfoCallback +MD net/minecraft/client/stream/BroadcastController$1 startCallback (Ltv/twitch/ErrorCode;)V startCallback +MD net/minecraft/client/stream/BroadcastController$1 stopCallback (Ltv/twitch/ErrorCode;)V stopCallback +MD net/minecraft/client/stream/BroadcastController$2 statCallback (Ltv/twitch/broadcast/StatType;J)V statCallback +MD net/minecraft/client/stream/BroadcastController$BroadcastState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/BroadcastController$BroadcastState; valueOf +MD net/minecraft/client/stream/BroadcastController$BroadcastState values ()[Lnet/minecraft/client/stream/BroadcastController$BroadcastState; values +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152895_a ()V func_152895_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152891_a (Lnet/minecraft/client/stream/BroadcastController$BroadcastState;)V func_152891_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152897_a (Ltv/twitch/ErrorCode;)V func_152897_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152900_a (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V func_152900_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152898_a (Ltv/twitch/ErrorCode;[Ltv/twitch/broadcast/GameInfo;)V func_152898_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152896_a (Ltv/twitch/broadcast/IngestList;)V func_152896_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152894_a (Ltv/twitch/broadcast/StreamInfo;)V func_152894_a +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152899_b ()V func_152899_b +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152893_b (Ltv/twitch/ErrorCode;)V func_152893_b +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152901_c ()V func_152901_c +MD net/minecraft/client/stream/BroadcastController$BroadcastListener func_152892_c (Ltv/twitch/ErrorCode;)V func_152892_c +MD net/minecraft/client/stream/ChatController func_175985_a (Lnet/minecraft/client/stream/ChatController$ChatState;)V func_175985_a +MD net/minecraft/client/stream/ChatController func_152990_a (Lnet/minecraft/client/stream/ChatController$ChatListener;)V func_152990_a +MD net/minecraft/client/stream/ChatController func_152984_a (Ljava/lang/String;)V func_152984_a +MD net/minecraft/client/stream/ChatController func_175986_a (Ljava/lang/String;Ljava/lang/String;)Z func_175986_a +MD net/minecraft/client/stream/ChatController func_175987_a (Ljava/lang/String;Z)Z func_175987_a +MD net/minecraft/client/stream/ChatController func_152994_a (Ltv/twitch/AuthToken;)V func_152994_a +MD net/minecraft/client/stream/ChatController func_152998_c (Ljava/lang/String;)V func_152998_c +MD net/minecraft/client/stream/ChatController func_175990_d (Ljava/lang/String;)Z func_175990_d +MD net/minecraft/client/stream/ChatController func_175989_e (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumChannelState; func_175989_e +MD net/minecraft/client/stream/ChatController func_153000_j ()Lnet/minecraft/client/stream/ChatController$ChatState; func_153000_j +MD net/minecraft/client/stream/ChatController func_152986_d (Ljava/lang/String;)Z func_152986_d +MD net/minecraft/client/stream/ChatController func_175991_l (Ljava/lang/String;)Z func_175991_l +MD net/minecraft/client/stream/ChatController func_175984_n ()Z func_175984_n +MD net/minecraft/client/stream/ChatController func_152995_h (Ljava/lang/String;)V func_152995_h +MD net/minecraft/client/stream/ChatController func_152993_m ()Z func_152993_m +MD net/minecraft/client/stream/ChatController func_175988_p ()V func_175988_p +MD net/minecraft/client/stream/ChatController func_152997_n ()V func_152997_n +MD net/minecraft/client/stream/ChatController func_153001_r ()V func_153001_r +MD net/minecraft/client/stream/ChatController func_152988_s ()V func_152988_s +MD net/minecraft/client/stream/ChatController func_152996_t ()V func_152996_t +MD net/minecraft/client/stream/ChatController$1 chatEmoticonDataDownloadCallback (Ltv/twitch/ErrorCode;)V chatEmoticonDataDownloadCallback +MD net/minecraft/client/stream/ChatController$1 chatInitializationCallback (Ltv/twitch/ErrorCode;)V chatInitializationCallback +MD net/minecraft/client/stream/ChatController$1 chatShutdownCallback (Ltv/twitch/ErrorCode;)V chatShutdownCallback +MD net/minecraft/client/stream/ChatController$EnumChannelState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumChannelState; valueOf +MD net/minecraft/client/stream/ChatController$EnumChannelState values ()[Lnet/minecraft/client/stream/ChatController$EnumChannelState; values +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176040_a ()Lnet/minecraft/client/stream/ChatController$EnumChannelState; func_176040_a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176035_a (Lnet/minecraft/client/stream/ChatController$EnumChannelState;)V func_176035_a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176032_a (Ljava/lang/String;)V func_176032_a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176038_a (Z)Z func_176038_a +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176037_b (Ljava/lang/String;)Z func_176037_b +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176031_c (Ljava/lang/String;)V func_176031_c +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176036_d (Ljava/lang/String;)V func_176036_d +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176034_g ()Z func_176034_g +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176041_h ()V func_176041_h +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176039_i ()V func_176039_i +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176033_j ()V func_176033_j +MD net/minecraft/client/stream/ChatController$ChatChannelListener func_176030_k ()V func_176030_k +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatBadgeDataDownloadCallback (Ljava/lang/String;Ltv/twitch/ErrorCode;)V chatBadgeDataDownloadCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelMembershipCallback (Ljava/lang/String;Ltv/twitch/chat/ChatEvent;Ltv/twitch/chat/ChatChannelInfo;)V chatChannelMembershipCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelRawMessageCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatRawMessage;)V chatChannelRawMessageCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelTokenizedMessageCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatTokenizedMessage;)V chatChannelTokenizedMessageCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatChannelUserChangeCallback (Ljava/lang/String;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;)V chatChannelUserChangeCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatClearCallback (Ljava/lang/String;Ljava/lang/String;)V chatClearCallback +MD net/minecraft/client/stream/ChatController$ChatChannelListener chatStatusCallback (Ljava/lang/String;Ltv/twitch/ErrorCode;)V chatStatusCallback +MD net/minecraft/client/stream/ChatController$ChatState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$ChatState; valueOf +MD net/minecraft/client/stream/ChatController$ChatState values ()[Lnet/minecraft/client/stream/ChatController$ChatState; values +MD net/minecraft/client/stream/ChatController$EnumEmoticonMode valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/ChatController$EnumEmoticonMode; valueOf +MD net/minecraft/client/stream/ChatController$EnumEmoticonMode values ()[Lnet/minecraft/client/stream/ChatController$EnumEmoticonMode; values +MD net/minecraft/client/stream/ChatController$ChatListener func_176017_a (Lnet/minecraft/client/stream/ChatController$ChatState;)V func_176017_a +MD net/minecraft/client/stream/ChatController$ChatListener func_180606_a (Ljava/lang/String;)V func_180606_a +MD net/minecraft/client/stream/ChatController$ChatListener func_176019_a (Ljava/lang/String;Ljava/lang/String;)V func_176019_a +MD net/minecraft/client/stream/ChatController$ChatListener func_180605_a (Ljava/lang/String;[Ltv/twitch/chat/ChatRawMessage;)V func_180605_a +MD net/minecraft/client/stream/ChatController$ChatListener func_176025_a (Ljava/lang/String;[Ltv/twitch/chat/ChatTokenizedMessage;)V func_176025_a +MD net/minecraft/client/stream/ChatController$ChatListener func_176018_a (Ljava/lang/String;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;[Ltv/twitch/chat/ChatUserInfo;)V func_176018_a +MD net/minecraft/client/stream/ChatController$ChatListener func_180607_b (Ljava/lang/String;)V func_180607_b +MD net/minecraft/client/stream/ChatController$ChatListener func_176016_c (Ljava/lang/String;)V func_176016_c +MD net/minecraft/client/stream/ChatController$ChatListener func_176021_d ()V func_176021_d +MD net/minecraft/client/stream/ChatController$ChatListener func_176020_d (Ljava/lang/String;)V func_176020_d +MD net/minecraft/client/stream/ChatController$ChatListener func_176023_d (Ltv/twitch/ErrorCode;)V func_176023_d +MD net/minecraft/client/stream/ChatController$ChatListener func_176024_e ()V func_176024_e +MD net/minecraft/client/stream/ChatController$ChatListener func_176022_e (Ltv/twitch/ErrorCode;)V func_176022_e +MD net/minecraft/client/stream/IngestServerTester func_153042_a (Lnet/minecraft/client/stream/IngestServerTester$IngestTestListener;)V func_153042_a +MD net/minecraft/client/stream/IngestServerTester func_153034_a (Lnet/minecraft/client/stream/IngestServerTester$IngestTestState;)V func_153034_a +MD net/minecraft/client/stream/IngestServerTester func_153036_a (Ltv/twitch/broadcast/IngestServer;)Z func_153036_a +MD net/minecraft/client/stream/IngestServerTester func_153035_b (Ltv/twitch/broadcast/IngestServer;)V func_153035_b +MD net/minecraft/client/stream/IngestServerTester func_153040_c ()Ltv/twitch/broadcast/IngestServer; func_153040_c +MD net/minecraft/client/stream/IngestServerTester func_153029_c (Ltv/twitch/broadcast/IngestServer;)Z func_153029_c +MD net/minecraft/client/stream/IngestServerTester func_153028_p ()I func_153028_p +MD net/minecraft/client/stream/IngestServerTester func_153032_e ()Z func_153032_e +MD net/minecraft/client/stream/IngestServerTester func_153030_h ()F func_153030_h +MD net/minecraft/client/stream/IngestServerTester func_176004_j ()V func_176004_j +MD net/minecraft/client/stream/IngestServerTester func_153041_j ()V func_153041_j +MD net/minecraft/client/stream/IngestServerTester func_153039_l ()V func_153039_l +MD net/minecraft/client/stream/IngestServerTester func_153037_m ()J func_153037_m +MD net/minecraft/client/stream/IngestServerTester func_153038_n ()V func_153038_n +MD net/minecraft/client/stream/IngestServerTester func_153031_o ()V func_153031_o +MD net/minecraft/client/stream/IngestServerTester$1 bufferUnlockCallback (J)V bufferUnlockCallback +MD net/minecraft/client/stream/IngestServerTester$1 getArchivingStateCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ArchivingState;)V getArchivingStateCallback +MD net/minecraft/client/stream/IngestServerTester$1 getGameNameListCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/GameInfoList;)V getGameNameListCallback +MD net/minecraft/client/stream/IngestServerTester$1 getIngestServersCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/IngestList;)V getIngestServersCallback +MD net/minecraft/client/stream/IngestServerTester$1 getStreamInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/StreamInfo;)V getStreamInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 getUserInfoCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/UserInfo;)V getUserInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 loginCallback (Ltv/twitch/ErrorCode;Ltv/twitch/broadcast/ChannelInfo;)V loginCallback +MD net/minecraft/client/stream/IngestServerTester$1 requestAuthTokenCallback (Ltv/twitch/ErrorCode;Ltv/twitch/AuthToken;)V requestAuthTokenCallback +MD net/minecraft/client/stream/IngestServerTester$1 runCommercialCallback (Ltv/twitch/ErrorCode;)V runCommercialCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendActionMetaDataCallback (Ltv/twitch/ErrorCode;)V sendActionMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendEndSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendEndSpanMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 sendStartSpanMetaDataCallback (Ltv/twitch/ErrorCode;)V sendStartSpanMetaDataCallback +MD net/minecraft/client/stream/IngestServerTester$1 setStreamInfoCallback (Ltv/twitch/ErrorCode;)V setStreamInfoCallback +MD net/minecraft/client/stream/IngestServerTester$1 startCallback (Ltv/twitch/ErrorCode;)V startCallback +MD net/minecraft/client/stream/IngestServerTester$1 stopCallback (Ltv/twitch/ErrorCode;)V stopCallback +MD net/minecraft/client/stream/IngestServerTester$2 statCallback (Ltv/twitch/broadcast/StatType;J)V statCallback +MD net/minecraft/client/stream/IngestServerTester$IngestTestListener func_152907_a (Lnet/minecraft/client/stream/IngestServerTester;Lnet/minecraft/client/stream/IngestServerTester$IngestTestState;)V func_152907_a +MD net/minecraft/client/stream/IngestServerTester$IngestTestState valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/IngestServerTester$IngestTestState; valueOf +MD net/minecraft/client/stream/IngestServerTester$IngestTestState values ()[Lnet/minecraft/client/stream/IngestServerTester$IngestTestState; values +MD net/minecraft/client/stream/IStream func_152928_D ()Z func_152928_D +MD net/minecraft/client/stream/IStream func_152912_E ()Ltv/twitch/ErrorCode; func_152912_E +MD net/minecraft/client/stream/IStream func_152913_F ()Z func_152913_F +MD net/minecraft/client/stream/IStream func_152929_G ()Z func_152929_G +MD net/minecraft/client/stream/IStream func_152918_H ()Lnet/minecraft/client/stream/IStream$AuthFailureReason; func_152918_H +MD net/minecraft/client/stream/IStream func_152911_a (Lnet/minecraft/client/stream/Metadata;J)V func_152911_a +MD net/minecraft/client/stream/IStream func_176026_a (Lnet/minecraft/client/stream/Metadata;JJ)V func_176026_a +MD net/minecraft/client/stream/IStream muteMicrophone (Z)V func_152910_a +MD net/minecraft/client/stream/IStream func_152926_a (Ljava/lang/String;)Ltv/twitch/chat/ChatUserInfo; func_152926_a +MD net/minecraft/client/stream/IStream shutdownStream ()V func_152923_i +MD net/minecraft/client/stream/IStream func_152917_b (Ljava/lang/String;)V func_152917_b +MD net/minecraft/client/stream/IStream func_152935_j ()V func_152935_j +MD net/minecraft/client/stream/IStream func_152922_k ()V func_152922_k +MD net/minecraft/client/stream/IStream func_152936_l ()Z func_152936_l +MD net/minecraft/client/stream/IStream isReadyToBroadcast ()Z func_152924_m +MD net/minecraft/client/stream/IStream isBroadcasting ()Z func_152934_n +MD net/minecraft/client/stream/IStream isPaused ()Z func_152919_o +MD net/minecraft/client/stream/IStream requestCommercial ()V func_152931_p +MD net/minecraft/client/stream/IStream pause ()V func_152916_q +MD net/minecraft/client/stream/IStream unpause ()V func_152933_r +MD net/minecraft/client/stream/IStream updateStreamVolume ()V func_152915_s +MD net/minecraft/client/stream/IStream func_152930_t ()V func_152930_t +MD net/minecraft/client/stream/IStream stopBroadcasting ()V func_152914_u +MD net/minecraft/client/stream/IStream func_152925_v ()[Ltv/twitch/broadcast/IngestServer; func_152925_v +MD net/minecraft/client/stream/IStream func_152909_x ()V func_152909_x +MD net/minecraft/client/stream/IStream func_152932_y ()Lnet/minecraft/client/stream/IngestServerTester; func_152932_y +MD net/minecraft/client/stream/IStream func_152908_z ()Z func_152908_z +MD net/minecraft/client/stream/IStream func_152920_A ()I func_152920_A +MD net/minecraft/client/stream/IStream func_152927_B ()Z func_152927_B +MD net/minecraft/client/stream/IStream func_152921_C ()Ljava/lang/String; func_152921_C +MD net/minecraft/client/stream/IStream$AuthFailureReason valueOf (Ljava/lang/String;)Lnet/minecraft/client/stream/IStream$AuthFailureReason; valueOf +MD net/minecraft/client/stream/IStream$AuthFailureReason values ()[Lnet/minecraft/client/stream/IStream$AuthFailureReason; values +MD net/minecraft/client/stream/TwitchStream func_152942_I ()V func_152942_I +MD net/minecraft/client/stream/TwitchStream access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/client/stream/TwitchStream formatStreamFps (F)I func_152948_a +MD net/minecraft/client/stream/TwitchStream access$100 (Lnet/minecraft/client/stream/TwitchStream;)Lnet/minecraft/client/stream/BroadcastController; access$100 +MD net/minecraft/client/stream/TwitchStream access$302 (Lnet/minecraft/client/stream/TwitchStream;Lnet/minecraft/client/stream/IStream$AuthFailureReason;)Lnet/minecraft/client/stream/IStream$AuthFailureReason; access$302 +MD net/minecraft/client/stream/TwitchStream func_176027_a (Ljava/lang/String;Ltv/twitch/chat/ChatRawMessage;)V func_176027_a +MD net/minecraft/client/stream/TwitchStream func_176028_a (Ljava/util/Set;Ljava/util/Set;I)Z func_176028_a +MD net/minecraft/client/stream/TwitchStream formatStreamKbps (F)I func_152946_b +MD net/minecraft/client/stream/TwitchStream access$200 (Lnet/minecraft/client/stream/TwitchStream;)Lnet/minecraft/client/stream/ChatController; access$200 +MD net/minecraft/client/stream/TwitchStream formatStreamBps (F)F func_152947_c +MD net/minecraft/client/stream/TwitchStream$1 run ()V run +MD net/minecraft/client/stream/TwitchStream$1$1 run ()V run +MD net/minecraft/client/stream/NullStream func_152937_a ()Ljava/lang/Throwable; func_152937_a +MD net/minecraft/client/renderer/OpenGlHelper initializeTextures ()V func_77474_a +MD net/minecraft/client/renderer/OpenGlHelper glDeleteShader (I)V func_153180_a +MD net/minecraft/client/renderer/OpenGlHelper setLightmapTextureCoords (IFF)V func_77475_a +MD net/minecraft/client/renderer/OpenGlHelper glGetProgrami (II)I func_153175_a +MD net/minecraft/client/renderer/OpenGlHelper glRenderbufferStorage (IIII)V func_153186_a +MD net/minecraft/client/renderer/OpenGlHelper glFramebufferTexture2D (IIIII)V func_153188_a +MD net/minecraft/client/renderer/OpenGlHelper glGetUniformLocation (ILjava/lang/CharSequence;)I func_153194_a +MD net/minecraft/client/renderer/OpenGlHelper glShaderSource (ILjava/nio/ByteBuffer;)V func_153169_a +MD net/minecraft/client/renderer/OpenGlHelper glBufferData (ILjava/nio/ByteBuffer;I)V func_176071_a +MD net/minecraft/client/renderer/OpenGlHelper glUniform1 (ILjava/nio/FloatBuffer;)V func_153168_a +MD net/minecraft/client/renderer/OpenGlHelper glUniform1 (ILjava/nio/IntBuffer;)V func_153181_a +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix2 (IZLjava/nio/FloatBuffer;)V func_153173_a +MD net/minecraft/client/renderer/OpenGlHelper areShadersSupported ()Z func_153193_b +MD net/minecraft/client/renderer/OpenGlHelper glCreateShader (I)I func_153195_b +MD net/minecraft/client/renderer/OpenGlHelper glAttachShader (II)V func_153178_b +MD net/minecraft/client/renderer/OpenGlHelper glFramebufferRenderbuffer (IIII)V func_153190_b +MD net/minecraft/client/renderer/OpenGlHelper glGetAttribLocation (ILjava/lang/CharSequence;)I func_153164_b +MD net/minecraft/client/renderer/OpenGlHelper glUniform2 (ILjava/nio/FloatBuffer;)V func_153177_b +MD net/minecraft/client/renderer/OpenGlHelper glUniform2 (ILjava/nio/IntBuffer;)V func_153182_b +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix3 (IZLjava/nio/FloatBuffer;)V func_153189_b +MD net/minecraft/client/renderer/OpenGlHelper getLogText ()Ljava/lang/String; func_153172_c +MD net/minecraft/client/renderer/OpenGlHelper glCompileShader (I)V func_153170_c +MD net/minecraft/client/renderer/OpenGlHelper glGetShaderi (II)I func_153157_c +MD net/minecraft/client/renderer/OpenGlHelper glBlendFunc (IIII)V func_148821_a +MD net/minecraft/client/renderer/OpenGlHelper glUniform3 (ILjava/nio/FloatBuffer;)V func_153191_c +MD net/minecraft/client/renderer/OpenGlHelper glUniform3 (ILjava/nio/IntBuffer;)V func_153192_c +MD net/minecraft/client/renderer/OpenGlHelper glUniformMatrix4 (IZLjava/nio/FloatBuffer;)V func_153160_c +MD net/minecraft/client/renderer/OpenGlHelper glCreateProgram ()I func_153183_d +MD net/minecraft/client/renderer/OpenGlHelper glUseProgram (I)V func_153161_d +MD net/minecraft/client/renderer/OpenGlHelper glGetShaderInfoLog (II)Ljava/lang/String; func_153158_d +MD net/minecraft/client/renderer/OpenGlHelper glUniform4 (ILjava/nio/FloatBuffer;)V func_153159_d +MD net/minecraft/client/renderer/OpenGlHelper glUniform4 (ILjava/nio/IntBuffer;)V func_153162_d +MD net/minecraft/client/renderer/OpenGlHelper glGenBuffers ()I func_176073_e +MD net/minecraft/client/renderer/OpenGlHelper glDeleteProgram (I)V func_153187_e +MD net/minecraft/client/renderer/OpenGlHelper glGetProgramInfoLog (II)Ljava/lang/String; func_153166_e +MD net/minecraft/client/renderer/OpenGlHelper useVbo ()Z func_176075_f +MD net/minecraft/client/renderer/OpenGlHelper glLinkProgram (I)V func_153179_f +MD net/minecraft/client/renderer/OpenGlHelper glUniform1i (II)V func_153163_f +MD net/minecraft/client/renderer/OpenGlHelper glGenFramebuffers ()I func_153165_e +MD net/minecraft/client/renderer/OpenGlHelper glDeleteBuffers (I)V func_176074_g +MD net/minecraft/client/renderer/OpenGlHelper glBindBuffer (II)V func_176072_g +MD net/minecraft/client/renderer/OpenGlHelper glGenRenderbuffers ()I func_153185_f +MD net/minecraft/client/renderer/OpenGlHelper glDeleteRenderbuffers (I)V func_153184_g +MD net/minecraft/client/renderer/OpenGlHelper glBindFramebuffer (II)V func_153171_g +MD net/minecraft/client/renderer/OpenGlHelper isFramebufferEnabled ()Z func_148822_b +MD net/minecraft/client/renderer/OpenGlHelper glDeleteFramebuffers (I)V func_153174_h +MD net/minecraft/client/renderer/OpenGlHelper glBindRenderbuffer (II)V func_153176_h +MD net/minecraft/client/renderer/OpenGlHelper getCpu ()Ljava/lang/String; func_183029_j +MD net/minecraft/client/renderer/OpenGlHelper glCheckFramebufferStatus (I)I func_153167_i +MD net/minecraft/client/renderer/OpenGlHelper setActiveTexture (I)V func_77473_a +MD net/minecraft/client/renderer/OpenGlHelper setClientActiveTexture (I)V func_77472_b +MD net/minecraft/client/main/Main isNullOrEmpty (Ljava/lang/String;)Z func_110121_a +MD net/minecraft/client/main/Main main ([Ljava/lang/String;)V main +MD net/minecraft/client/main/Main$1 getPasswordAuthentication ()Ljava/net/PasswordAuthentication; getPasswordAuthentication +MD net/minecraft/realms/RealmsConnect$1 run ()V run +MD net/minecraft/server/MinecraftServer tick ()V func_71217_p +MD net/minecraft/server/MinecraftServer updateTimeLightAndEntities ()V func_71190_q +MD net/minecraft/server/MinecraftServer getAllowNether ()Z func_71255_r +MD net/minecraft/server/MinecraftServer startServerThread ()V func_71256_s +MD net/minecraft/server/MinecraftServer getHostname ()Ljava/lang/String; func_71277_t +MD net/minecraft/server/MinecraftServer getPort ()I func_71234_u +MD net/minecraft/server/MinecraftServer getMotd ()Ljava/lang/String; func_71274_v +MD net/minecraft/server/MinecraftServer getMinecraftVersion ()Ljava/lang/String; func_71249_w +MD net/minecraft/server/MinecraftServer getCurrentPlayerCount ()I func_71233_x +MD net/minecraft/server/MinecraftServer getMaxPlayers ()I func_71275_y +MD net/minecraft/server/MinecraftServer getAllUsernames ()[Ljava/lang/String; func_71213_z +MD net/minecraft/server/MinecraftServer getGameProfiles ()[Lcom/mojang/authlib/GameProfile; func_152357_F +MD net/minecraft/server/MinecraftServer isDebuggingEnabled ()Z func_71239_B +MD net/minecraft/server/MinecraftServer getServer ()Lnet/minecraft/server/MinecraftServer; func_71276_C +MD net/minecraft/server/MinecraftServer isAnvilFileSet ()Z func_175578_N +MD net/minecraft/server/MinecraftServer getCommandManager ()Lnet/minecraft/command/ICommandManager; func_71187_D +MD net/minecraft/server/MinecraftServer getKeyPair ()Ljava/security/KeyPair; func_71250_E +MD net/minecraft/server/MinecraftServer getServerPort ()I func_71215_F +MD net/minecraft/server/MinecraftServer getServerOwner ()Ljava/lang/String; func_71214_G +MD net/minecraft/server/MinecraftServer isSinglePlayer ()Z func_71264_H +MD net/minecraft/server/MinecraftServer getFolderName ()Ljava/lang/String; func_71270_I +MD net/minecraft/server/MinecraftServer getWorldName ()Ljava/lang/String; func_71221_J +MD net/minecraft/server/MinecraftServer allowSpawnMonsters ()Z func_71193_K +MD net/minecraft/server/MinecraftServer isDemo ()Z func_71242_L +MD net/minecraft/server/MinecraftServer getActiveAnvilConverter ()Lnet/minecraft/world/storage/ISaveFormat; func_71254_M +MD net/minecraft/server/MinecraftServer worldServerForDimension (I)Lnet/minecraft/world/WorldServer; func_71218_a +MD net/minecraft/server/MinecraftServer isBlockProtected (Lnet/minecraft/world/World;Lnet/minecraft/util/BlockPos;Lnet/minecraft/entity/player/EntityPlayer;)Z func_175579_a +MD net/minecraft/server/MinecraftServer setGameType (Lnet/minecraft/world/WorldSettings$GameType;)V func_71235_a +MD net/minecraft/server/MinecraftServer shareToLAN (Lnet/minecraft/world/WorldSettings$GameType;Z)Ljava/lang/String; func_71206_a +MD net/minecraft/server/MinecraftServer finalTick (Lnet/minecraft/crash/CrashReport;)V func_71228_a +MD net/minecraft/server/MinecraftServer convertMapIfNeeded (Ljava/lang/String;)V func_71237_c +MD net/minecraft/server/MinecraftServer setResourcePackFromWorld (Ljava/lang/String;Lnet/minecraft/world/storage/ISaveHandler;)V func_175584_a +MD net/minecraft/server/MinecraftServer loadAllWorlds (Ljava/lang/String;Ljava/lang/String;JLnet/minecraft/world/WorldType;Ljava/lang/String;)V func_71247_a +MD net/minecraft/server/MinecraftServer setKeyPair (Ljava/security/KeyPair;)V func_71253_a +MD net/minecraft/server/MinecraftServer getEntityFromUuid (Ljava/util/UUID;)Lnet/minecraft/entity/Entity; func_175576_a +MD net/minecraft/server/MinecraftServer callFromMainThread (Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/ListenableFuture; func_175586_a +MD net/minecraft/server/MinecraftServer addFaviconToStatusResponse (Lnet/minecraft/network/ServerStatusResponse;)V func_147138_a +MD net/minecraft/server/MinecraftServer registerTickable (Lnet/minecraft/util/ITickable;)V func_82010_a +MD net/minecraft/server/MinecraftServer setConfigManager (Lnet/minecraft/server/management/ServerConfigurationManager;)V func_152361_a +MD net/minecraft/server/MinecraftServer getTabCompletions (Lnet/minecraft/command/ICommandSender;Ljava/lang/String;Lnet/minecraft/util/BlockPos;)Ljava/util/List; func_180506_a +MD net/minecraft/server/MinecraftServer access$100 (Lnet/minecraft/server/MinecraftServer;)Lnet/minecraft/server/management/ServerConfigurationManager; access$100 +MD net/minecraft/server/MinecraftServer setDifficultyForAllWorlds (Lnet/minecraft/world/EnumDifficulty;)V func_147139_a +MD net/minecraft/server/MinecraftServer saveAllWorlds (Z)V func_71267_a +MD net/minecraft/server/MinecraftServer getMaxPlayerIdleMinutes ()I func_143007_ar +MD net/minecraft/server/MinecraftServer isAnnouncingPlayerAchievements ()Z func_147136_ar +MD net/minecraft/server/MinecraftServer getMinecraftSessionService ()Lcom/mojang/authlib/minecraft/MinecraftSessionService; func_147130_as +MD net/minecraft/server/MinecraftServer getGameProfileRepository ()Lcom/mojang/authlib/GameProfileRepository; func_152359_aw +MD net/minecraft/server/MinecraftServer getPlayerProfileCache ()Lnet/minecraft/server/management/PlayerProfileCache; func_152358_ax +MD net/minecraft/server/MinecraftServer getServerStatusResponse ()Lnet/minecraft/network/ServerStatusResponse; func_147134_at +MD net/minecraft/server/MinecraftServer refreshStatusNextTick ()V func_147132_au +MD net/minecraft/server/MinecraftServer getMaxWorldSize ()I func_175580_aG +MD net/minecraft/server/MinecraftServer getNetworkCompressionTreshold ()I func_175577_aI +MD net/minecraft/server/MinecraftServer getCurrentTime ()J func_175587_aJ +MD net/minecraft/server/MinecraftServer getServerThread ()Ljava/lang/Thread; func_175583_aK +MD net/minecraft/server/MinecraftServer access$000 ()Lorg/apache/logging/log4j/Logger; access$000 +MD net/minecraft/server/MinecraftServer outputPercentRemaining (Ljava/lang/String;I)V func_71216_a_ +MD net/minecraft/server/MinecraftServer setResourcePack (Ljava/lang/String;Ljava/lang/String;)V func_180507_a_ +MD net/minecraft/server/MinecraftServer deleteWorldAndStopServer ()V func_71272_O +MD net/minecraft/server/MinecraftServer getResourcePackUrl ()Ljava/lang/String; func_147133_T +MD net/minecraft/server/MinecraftServer getResourcePackHash ()Ljava/lang/String; func_175581_ab +MD net/minecraft/server/MinecraftServer isDedicatedServer ()Z func_71262_S +MD net/minecraft/server/MinecraftServer isServerInOnlineMode ()Z func_71266_T +MD net/minecraft/server/MinecraftServer getCanSpawnAnimals ()Z func_71268_U +MD net/minecraft/server/MinecraftServer getCanSpawnNPCs ()Z func_71220_V +MD net/minecraft/server/MinecraftServer shouldUseNativeTransport ()Z func_181035_ah +MD net/minecraft/server/MinecraftServer isPVPEnabled ()Z func_71219_W +MD net/minecraft/server/MinecraftServer isFlightAllowed ()Z func_71231_X +MD net/minecraft/server/MinecraftServer isCommandBlockEnabled ()Z func_82356_Z +MD net/minecraft/server/MinecraftServer getMOTD ()Ljava/lang/String; func_71273_Y +MD net/minecraft/server/MinecraftServer getBuildLimit ()I func_71207_Z +MD net/minecraft/server/MinecraftServer isServerStopped ()Z func_71241_aa +MD net/minecraft/server/MinecraftServer getConfigurationManager ()Lnet/minecraft/server/management/ServerConfigurationManager; func_71203_ab +MD net/minecraft/server/MinecraftServer getNetworkSystem ()Lnet/minecraft/network/NetworkSystem; func_147137_ag +MD net/minecraft/server/MinecraftServer serverIsInRunLoop ()Z func_71200_ad +MD net/minecraft/server/MinecraftServer getGuiEnabled ()Z func_71279_ae +MD net/minecraft/server/MinecraftServer getTickCounter ()I func_71259_af +MD net/minecraft/server/MinecraftServer enableProfiling ()V func_71223_ag +MD net/minecraft/server/MinecraftServer getPlayerUsageSnooper ()Lnet/minecraft/profiler/PlayerUsageSnooper; func_80003_ah +MD net/minecraft/server/MinecraftServer getSpawnProtectionSize ()I func_82357_ak +MD net/minecraft/server/MinecraftServer getForceGamemode ()Z func_104056_am +MD net/minecraft/server/MinecraftServer getServerProxy ()Ljava/net/Proxy; func_110454_ao +MD net/minecraft/server/MinecraftServer getCurrentTimeMillis ()J func_130071_aq +MD net/minecraft/server/MinecraftServer setServerPort (I)V func_71208_b +MD net/minecraft/server/MinecraftServer addServerInfoToCrashReport (Lnet/minecraft/crash/CrashReport;)Lnet/minecraft/crash/CrashReport; func_71230_b +MD net/minecraft/server/MinecraftServer setUserMessage (Ljava/lang/String;)V func_71192_d +MD net/minecraft/server/MinecraftServer setDemo (Z)V func_71204_b +MD net/minecraft/server/MinecraftServer setBuildLimit (I)V func_71191_d +MD net/minecraft/server/MinecraftServer setHostname (Ljava/lang/String;)V func_71189_e +MD net/minecraft/server/MinecraftServer canCreateBonusChest (Z)V func_71194_c +MD net/minecraft/server/MinecraftServer setPlayerIdleTimeout (I)V func_143006_e +MD net/minecraft/server/MinecraftServer getFile (Ljava/lang/String;)Ljava/io/File; func_71209_f +MD net/minecraft/server/MinecraftServer setOnlineMode (Z)V func_71229_d +MD net/minecraft/server/MinecraftServer logInfo (Ljava/lang/String;)V func_71244_g +MD net/minecraft/server/MinecraftServer setCanSpawnAnimals (Z)V func_71251_e +MD net/minecraft/server/MinecraftServer logWarning (Ljava/lang/String;)V func_71236_h +MD net/minecraft/server/MinecraftServer setCanSpawnNPCs (Z)V func_71257_f +MD net/minecraft/server/MinecraftServer logSevere (Ljava/lang/String;)V func_71201_j +MD net/minecraft/server/MinecraftServer setAllowPvp (Z)V func_71188_g +MD net/minecraft/server/MinecraftServer createNewCommandManager ()Lnet/minecraft/command/ServerCommandManager; func_175582_h +MD net/minecraft/server/MinecraftServer logDebug (Ljava/lang/String;)V func_71198_k +MD net/minecraft/server/MinecraftServer setAllowFlight (Z)V func_71245_h +MD net/minecraft/server/MinecraftServer startServer ()Z func_71197_b +MD net/minecraft/server/MinecraftServer setServerOwner (Ljava/lang/String;)V func_71224_l +MD net/minecraft/server/MinecraftServer setForceGamemode (Z)V func_104055_i +MD net/minecraft/server/MinecraftServer getUserMessage ()Ljava/lang/String; func_71195_b_ +MD net/minecraft/server/MinecraftServer setFolderName (Ljava/lang/String;)V func_71261_m +MD net/minecraft/server/MinecraftServer initialWorldChunkLoad ()V func_71222_d +MD net/minecraft/server/MinecraftServer setWorldName (Ljava/lang/String;)V func_71246_n +MD net/minecraft/server/MinecraftServer canStructuresSpawn ()Z func_71225_e +MD net/minecraft/server/MinecraftServer setMOTD (Ljava/lang/String;)V func_71205_p +MD net/minecraft/server/MinecraftServer getGameType ()Lnet/minecraft/world/WorldSettings$GameType; func_71265_f +MD net/minecraft/server/MinecraftServer getDifficulty ()Lnet/minecraft/world/EnumDifficulty; func_147135_j +MD net/minecraft/server/MinecraftServer isHardcore ()Z func_71199_h +MD net/minecraft/server/MinecraftServer getOpPermissionLevel ()I func_110455_j +MD net/minecraft/server/MinecraftServer shouldBroadcastRconToOps ()Z func_181034_q +MD net/minecraft/server/MinecraftServer shouldBroadcastConsoleToOps ()Z func_183002_r +MD net/minecraft/server/MinecraftServer clearCurrentTask ()V func_71243_i +MD net/minecraft/server/MinecraftServer stopServer ()V func_71260_j +MD net/minecraft/server/MinecraftServer getServerHostname ()Ljava/lang/String; func_71211_k +MD net/minecraft/server/MinecraftServer isServerRunning ()Z func_71278_l +MD net/minecraft/server/MinecraftServer initiateShutdown ()V func_71263_m +MD net/minecraft/server/MinecraftServer setInstance ()V func_175585_v +MD net/minecraft/server/MinecraftServer getDataDirectory ()Ljava/io/File; func_71238_n +MD net/minecraft/server/MinecraftServer systemExitNow ()V func_71240_o +MD net/minecraft/server/MinecraftServer getServerModName ()Ljava/lang/String; getServerModName +MD net/minecraft/server/MinecraftServer main ([Ljava/lang/String;)V main +MD net/minecraft/server/MinecraftServer run ()V run +MD net/minecraft/server/MinecraftServer$2 run ()V run +MD net/minecraft/server/MinecraftServer$3 call ()Ljava/lang/String; call +MD net/minecraft/server/MinecraftServer$3 call ()Ljava/lang/Object; call +MD net/minecraft/server/MinecraftServer$4 call ()Ljava/lang/String; call +MD net/minecraft/server/MinecraftServer$4 call ()Ljava/lang/Object; call diff --git a/SlinkyClient/settings.gradle b/SlinkyClient/settings.gradle new file mode 100644 index 0000000..4dc50a4 --- /dev/null +++ b/SlinkyClient/settings.gradle @@ -0,0 +1,10 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = 'https://maven.wagyourtail.xyz/releases' } + maven { url = 'https://maven.fabricmc.net' } + maven { url = 'https://maven.minecraftforge.net' } + } +} + +rootProject.name = 'Slinky' diff --git a/SlinkyClient/src/main/java/dev/slinky/SlinkyMod.java b/SlinkyClient/src/main/java/dev/slinky/SlinkyMod.java new file mode 100644 index 0000000..ca984b2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/SlinkyMod.java @@ -0,0 +1,91 @@ +package dev.slinky; + +import dev.slinky.client.command.SlinkyCommand; +import dev.slinky.client.event.ClientEventBridge; +import dev.slinky.client.gui.GuiAppearance; +import dev.slinky.client.gui.profile.ProfileServices; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.config.ConfigStore; +import dev.slinky.config.InitialSettings; +import dev.slinky.inject.ReloadState; +import dev.slinky.module.CoreModules; +import dev.slinky.module.ModuleManager; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public final class SlinkyMod { + public static final String MOD_ID = "slinkysemantic"; + public static final String NAME = "Slinky Semantic"; + public static final String VERSION = "0.5.0-settings"; + private ModuleManager modules; + private ConfigStore config; + private final Logger logger = LogManager.getLogger("Slinky Semantic"); + + public void preInitialize() { + this.modules = new ModuleManager(); + CoreModules.register(this.modules); + GuiAppearance.configureMissing(this.modules.find("GUI")); + InitialSettings.applyMissing(this.modules); + GameHooks.install(this.modules); + Path base = slinkyDirectory(); + Path configPath = base.resolve("slinky-semantic.json"); + + try { + Files.createDirectories(base); + } catch (IOException var5) { + this.logger.error("Could not create the configuration directory", var5); + } + + this.config = new ConfigStore(configPath); + this.modules.input().profiles(this.config, new ProfileServices.FilesHost(this.modules, base.resolve("profiles"), this.config)); + this.modules.setPersistence(new Runnable() { + @Override + public void run() { + SlinkyMod.this.saveConfiguration(); + } + }); + + try { + this.config.load(this.modules); + } catch (IOException var4) { + this.logger.error("Could not load Slinky configuration", var4); + } + } + + public void initialize() { + GuiAppearance.configureMissing(this.modules.find("GUI")); + KeyBinding openGui = new KeyBinding("key.slinkysemantic.open", 54, "key.categories.slinkysemantic"); + ClientEventBridge.install(new ClientEventBridge(this.modules, openGui, new SlinkyCommand(this.modules))); + this.modules.persist(); + Thread hook = new Thread(new Runnable() { + @Override + public void run() { + SlinkyMod.this.modules.persistOnExit(); + } + }, "slinky-config-save"); + ReloadState.replaceHook(hook); + } + + public ModuleManager modules() { + return this.modules; + } + + public static Path slinkyDirectory() { + String home = System.getProperty("user.home"); + return home != null && !home.isEmpty() ? Paths.get(home).resolve(".slinky") : Minecraft.getMinecraft().mcDataDir.toPath().resolve("config"); + } + + private void saveConfiguration() { + try { + this.config.save(this.modules); + } catch (IOException var2) { + this.logger.error("Could not save Slinky configuration", var2); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/ClientContext.java b/SlinkyClient/src/main/java/dev/slinky/client/ClientContext.java new file mode 100644 index 0000000..d5e3a11 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/ClientContext.java @@ -0,0 +1,39 @@ +package dev.slinky.client; + +import java.util.function.BooleanSupplier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.multiplayer.WorldClient; + +public final class ClientContext { + private final Minecraft minecraft; + private BooleanSupplier guiEnabled = () -> false; + + public ClientContext(Minecraft minecraft) { + this.minecraft = minecraft; + } + + public Minecraft minecraft() { + return this.minecraft; + } + + public EntityPlayerSP player() { + return this.minecraft.thePlayer; + } + + public WorldClient world() { + return this.minecraft.theWorld; + } + + public boolean ready() { + return this.player() != null && this.world() != null; + } + + public void setGuiEnabled(BooleanSupplier guiEnabled) { + this.guiEnabled = guiEnabled; + } + + public boolean inputReady() { + return this.ready() && this.minecraft.inGameHasFocus && !this.guiEnabled.getAsBoolean(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/MinecraftFields.java b/SlinkyClient/src/main/java/dev/slinky/client/MinecraftFields.java new file mode 100644 index 0000000..b802da2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/MinecraftFields.java @@ -0,0 +1,112 @@ +package dev.slinky.client; + +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.PlayerControllerMP; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Timer; + +public final class MinecraftFields { + private static final Field TIMER = field(Minecraft.class, "timer", "field_71428_T"); + private static final Field JUMP_TICKS = field(EntityLivingBase.class, "jumpTicks", "field_70773_bE"); + private static final Field POTION_DURATION = field(PotionEffect.class, "duration", "field_76460_b"); + private static final Field LEFT_CLICK_COUNTER = field(Minecraft.class, "leftClickCounter", "field_71429_W"); + private static final Field BLOCK_HIT_DELAY = field(PlayerControllerMP.class, "blockHitDelay", "field_78781_i"); + private static final Field BLOCK_DAMAGE = field(PlayerControllerMP.class, "curBlockDamageMP", "field_78770_f"); + private static final Field BREAKING = field(PlayerControllerMP.class, "isHittingBlock", "field_78778_j"); + + public static boolean breaking(PlayerControllerMP controller) { + return (Boolean)get(BREAKING, controller); + } + + public static void setBreaking(PlayerControllerMP controller, boolean value) { + try { + BREAKING.setBoolean(controller, value); + } catch (IllegalAccessException var3) { + throw new IllegalStateException(var3); + } + } + + private MinecraftFields() { + } + + public static Timer timer(Minecraft minecraft) { + return (Timer)get(TIMER, minecraft); + } + + public static void setJumpTicks(EntityLivingBase entity, int ticks) { + setInt(JUMP_TICKS, entity, ticks); + } + + public static int jumpTicks(EntityLivingBase entity) { + return getInt(JUMP_TICKS, entity); + } + + public static void setPotionDuration(PotionEffect effect, int ticks) { + setInt(POTION_DURATION, effect, ticks); + } + + public static int leftClickCounter(Minecraft minecraft) { + return getInt(LEFT_CLICK_COUNTER, minecraft); + } + + public static void setLeftClickCounter(Minecraft minecraft, int ticks) { + setInt(LEFT_CLICK_COUNTER, minecraft, ticks); + } + + public static int blockHitDelay(PlayerControllerMP controller) { + return getInt(BLOCK_HIT_DELAY, controller); + } + + public static void setBlockHitDelay(PlayerControllerMP controller, int ticks) { + setInt(BLOCK_HIT_DELAY, controller, ticks); + } + + public static float blockDamage(PlayerControllerMP controller) { + try { + return BLOCK_DAMAGE.getFloat(controller); + } catch (IllegalAccessException var2) { + throw new IllegalStateException("cannot read " + BLOCK_DAMAGE.getName(), var2); + } + } + + public static void setBlockDamage(PlayerControllerMP controller, float value) { + try { + BLOCK_DAMAGE.setFloat(controller, value); + } catch (IllegalAccessException var3) { + throw new IllegalStateException("cannot write " + BLOCK_DAMAGE.getName(), var3); + } + } + + private static Field field(Class type, String mcpName, String srgName) { + Field field = ReflectionHelper.findField(type, mcpName, srgName); + field.setAccessible(true); + return field; + } + + private static Object get(Field field, Object target) { + try { + return field.get(target); + } catch (IllegalAccessException var3) { + throw new IllegalStateException("cannot read " + field.getName(), var3); + } + } + + private static void setInt(Field field, Object target, int value) { + try { + field.setInt(target, value); + } catch (IllegalAccessException var4) { + throw new IllegalStateException("cannot write " + field.getName(), var4); + } + } + + private static int getInt(Field field, Object target) { + try { + return field.getInt(target); + } catch (IllegalAccessException var3) { + throw new IllegalStateException("cannot read " + field.getName(), var3); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/action/ActionAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/action/ActionAccess.java new file mode 100644 index 0000000..719dd2c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/action/ActionAccess.java @@ -0,0 +1,143 @@ +package dev.slinky.client.action; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import java.util.Objects; +import net.minecraft.block.Block; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +public final class ActionAccess { + private static final Field PRESSES = ReflectionHelper.findField(KeyBinding.class, "pressTime", "field_151474_i"); + private static final Field HOVER = ReflectionHelper.findField(GuiContainer.class, "theSlot", "field_147006_u"); + private static final Field USE_COUNT = ReflectionHelper.findField(EntityPlayer.class, "itemInUseCount", "field_71072_f"); + private static volatile ActionAccess.MouseHost mouse = new ActionAccess.MouseHost() { + @Override + public boolean physical(int button) { + return Mouse.isButtonDown(button == 1 ? 0 : 1); + } + + @Override + public boolean shift() { + return Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54); + } + + @Override + public void emit(ClientContext c, int button, boolean down) { + if (c.minecraft().currentScreen instanceof GuiContainer) { + if (down) { + GuiContainer screen = (GuiContainer)c.minecraft().currentScreen; + Slot slot = ActionAccess.hovered(screen); + if (slot != null) { + InventoryActions.click(screen, slot.slotNumber, button == 1 ? 0 : 1, this.shift() ? 1 : 0); + } + } + } else { + int code = button == 1 ? -100 : -99; + KeyBinding.setKeyBindState(code, down); + if (down) { + KeyBinding.onTick(code); + } + } + } + }; + + private ActionAccess() { + } + + public static int presses(KeyBinding key) { + try { + return PRESSES.getInt(key); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + + public static void increment(KeyBinding key) { + InventoryActions.pressCount(key, presses(key) + 1); + } + + public static Slot hovered(GuiContainer screen) { + try { + return (Slot)HOVER.get(screen); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + + public static void useCount(EntityPlayer p, int value) { + try { + USE_COUNT.setInt(p, value); + } catch (IllegalAccessException var3) { + throw new IllegalStateException(var3); + } + } + + public static boolean canBlock(ItemStack stack) { + int id = InventoryActions.type(stack) - 267; + return Integer.compareUnsigned(id, 16) <= 0 && (66083 >>> (id & 31) & 1) != 0; + } + + public static boolean isBlock(ItemStack stack) { + if (stack == null) { + return false; + } else { + Item item = stack.getItem(); + if (item == null) { + return false; + } else { + Block block = Block.getBlockFromItem(item); + return block != null && Block.getIdFromBlock(block) != 0; + } + } + } + + public static boolean registeredAir(IBlockAccess world, BlockPos position) { + return Block.getIdFromBlock(world.getBlockState(position).getBlock()) == 0; + } + + public static Vec3 adjacentPosition(MovingObjectPosition hit) { + BlockPos block = hit.getBlockPos(); + double x = (double)block.getX(); + double y = (double)block.getY(); + double z = (double)block.getZ(); + EnumFacing face = hit.sideHit; + return new Vec3(x + (double)face.getFrontOffsetX(), y + (double)face.getFrontOffsetY(), (double)face.getFrontOffsetZ() + z); + } + + public static int hitKind(MovingObjectPosition hit) { + return hit != null && hit.typeOfHit != MovingObjectType.MISS ? (hit.typeOfHit == MovingObjectType.BLOCK ? 1 : 2) : 0; + } + + public static ActionAccess.MouseHost mouse() { + return mouse; + } + + public static ActionAccess.MouseHost bindMouse(ActionAccess.MouseHost endpoint) { + ActionAccess.MouseHost previous = mouse; + mouse = Objects.requireNonNull(endpoint); + return previous; + } + + public interface MouseHost { + boolean physical(int var1); + + boolean shift(); + + void emit(ClientContext var1, int var2, boolean var3); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/action/ActionConstants.java b/SlinkyClient/src/main/java/dev/slinky/client/action/ActionConstants.java new file mode 100644 index 0000000..c3050e6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/action/ActionConstants.java @@ -0,0 +1,73 @@ +package dev.slinky.client.action; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.HashMap; +import java.util.Map; + +public final class ActionConstants { + private static final Map BYTES = new HashMap<>(); + + private ActionConstants() { + } + + private static long word(int address, int length) { + long result = 0L; + + for (int i = 0; i < length; i++) { + Byte b = BYTES.get(address + i); + if (b == null) { + throw new IllegalArgumentException("Unrecovered action operand " + Integer.toHexString(address + i)); + } + + result |= (long)(b & 255) << 8 * i; + } + + return result; + } + + public static byte byteAt(int a) { + return (byte)((int)word(a, 1)); + } + + public static int shortAt(int a) { + return (int)word(a, 2); + } + + public static int intAt(int a) { + return (int)word(a, 4); + } + + public static long longAt(int a) { + return word(a, 8); + } + + public static float f(int a) { + return Float.intBitsToFloat(intAt(a)); + } + + public static double d(int a) { + return Double.longBitsToDouble(longAt(a)); + } + + static { + try (Reader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/ActionConstants.json"), "UTF-8")) { + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = element.getAsJsonObject(); + int address = row.get("address").getAsInt(); + String hex = row.get("bytes").getAsString(); + + for (int i = 0; i < hex.length() / 2; i++) { + BYTES.put(address + i, (byte)Integer.parseInt(hex.substring(i * 2, i * 2 + 2), 16)); + } + } + } catch (IOException var18) { + throw new ExceptionInInitializerError(var18); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/action/ModuleActionService.java b/SlinkyClient/src/main/java/dev/slinky/client/action/ModuleActionService.java new file mode 100644 index 0000000..2d9a582 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/action/ModuleActionService.java @@ -0,0 +1,37 @@ +package dev.slinky.client.action; + +public final class ModuleActionService { + private static Object owner; + + private ModuleActionService() { + } + + public static synchronized boolean claim(Object token) { + if (owner == token) { + return true; + } else if (owner != null) { + return false; + } else { + owner = token; + return true; + } + } + + public static synchronized void release(Object token) { + if (owner == token) { + owner = null; + } + } + + public static synchronized Object owner() { + return owner; + } + + public static synchronized boolean busy() { + return owner != null; + } + + public static synchronized void clear() { + owner = null; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/command/GuiMenuCommand.java b/SlinkyClient/src/main/java/dev/slinky/client/command/GuiMenuCommand.java new file mode 100644 index 0000000..7b4e2c8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/command/GuiMenuCommand.java @@ -0,0 +1,38 @@ +package dev.slinky.client.command; + +import dev.slinky.inject.ReflectionHelper; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiChat; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; + +public final class GuiMenuCommand { + public static boolean matches(String text) { + return text != null && text.trim().equals("!gui"); + } + + public static boolean handle(GuiScreen screen, int key, boolean pressed, ModuleManager modules) { + if (screen instanceof GuiChat && pressed && (key == 28 || key == 156)) { + GuiTextField input = ReflectionHelper.getPrivateValue(GuiChat.class, (GuiChat)screen, "inputField", "field_146415_a"); + if (!matches(input.getText())) { + return false; + } else { + Module gui = modules.find("GUI"); + if (gui == null) { + return false; + } else { + Minecraft.getMinecraft().displayGuiScreen(null); + modules.requestEnabled(gui, true); + return true; + } + } + } else { + return false; + } + } + + private GuiMenuCommand() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/command/SlinkyCommand.java b/SlinkyClient/src/main/java/dev/slinky/client/command/SlinkyCommand.java new file mode 100644 index 0000000..788aecc --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/command/SlinkyCommand.java @@ -0,0 +1,189 @@ +package dev.slinky.client.command; + +import dev.slinky.SlinkyMod; +import dev.slinky.config.ConfigStore; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.utility.FriendsModule; +import dev.slinky.setting.Setting; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; + +public final class SlinkyCommand extends CommandBase { + private final ModuleManager modules; + + public SlinkyCommand(ModuleManager modules) { + this.modules = modules; + } + + public String getCommandName() { + return "slinky"; + } + + public String getCommandUsage(ICommandSender sender) { + return "/slinky "; + } + + public int getRequiredPermissionLevel() { + return 0; + } + + public void processCommand(ICommandSender sender, String[] args) { + try { + if (args.length != 0 && !"list".equalsIgnoreCase(args[0])) { + if ("import".equalsIgnoreCase(args[0])) { + this.importConfiguration(sender, args); + } else if ("save".equalsIgnoreCase(args[0])) { + this.modules.setEnabled(this.requireModule(args, 1), this.requireModule(args, 1).isEnabled(), true); + reply(sender, "configuration saved"); + } else { + Module module = this.requireModule(args, 1); + if ("friend".equalsIgnoreCase(args[0]) && module instanceof FriendsModule) { + if (!this.modules.context().ready()) { + throw new IllegalArgumentException("Enter a world first"); + } else if (args.length < 3) { + throw new IllegalArgumentException("usage: /slinky friend friends [name|radius]"); + } else { + reply(sender, ((FriendsModule)module).command(this.modules.context(), args[2], args.length > 3 ? args[3] : "")); + this.modules.setEnabled(module, module.isEnabled(), true); + } + } else if ("toggle".equalsIgnoreCase(args[0])) { + this.modules.toggle(module); + reply(sender, module.getName() + " is " + (module.isEnabled() ? "enabled" : "disabled")); + } else if ("settings".equalsIgnoreCase(args[0])) { + for (Setting setting : module.getSettings()) { + reply(sender, setting.getKey() + " = " + setting.format()); + } + } else if ("set".equalsIgnoreCase(args[0])) { + if (args.length < 4) { + throw new IllegalArgumentException("usage: /slinky set "); + } else { + Setting setting = module.findSetting(args[2]); + if (setting == null) { + throw new IllegalArgumentException("unknown setting " + args[2]); + } else { + setting.parseAndSet(join(args, 3)); + this.modules.setEnabled(module, module.isEnabled(), true); + reply(sender, module.getName() + "." + setting.getKey() + " = " + setting.format()); + } + } + } else { + throw new IllegalArgumentException(this.getCommandUsage(sender)); + } + } + } else { + for (Module module : this.modules.all()) { + reply(sender, (module.isEnabled() ? "[on] " : "[off] ") + module.getId() + " - " + module.getDescription()); + } + } + } catch (IllegalArgumentException var6) { + reply(sender, var6.getMessage()); + } + } + + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, new String[]{"list", "toggle", "settings", "set", "save", "import"}); + } else if (args.length == 2) { + List ids = new ArrayList<>(); + + for (Module module : this.modules.all()) { + ids.add(module.getId()); + } + + return getListOfStringsMatchingLastWord(args, ids.toArray(new String[ids.size()])); + } else { + if (args.length == 3 && "set".equalsIgnoreCase(args[0])) { + Module module = this.modules.find(args[1]); + if (module != null) { + List keys = new ArrayList<>(); + + for (Setting setting : module.getSettings()) { + keys.add(setting.getKey()); + } + + return getListOfStringsMatchingLastWord(args, keys.toArray(new String[keys.size()])); + } + } + + return Collections.emptyList(); + } + } + + private void importConfiguration(ICommandSender sender, String[] args) { + try { + byte[] text; + String source; + if (args.length < 2) { + String clipboard = GuiScreen.getClipboardString(); + if (clipboard == null || clipboard.trim().isEmpty()) { + throw new IllegalArgumentException("the clipboard is empty"); + } + + text = clipboard.trim().getBytes(StandardCharsets.UTF_8); + source = "the clipboard"; + } else { + String name = join(args, 1); + Path file = SlinkyMod.slinkyDirectory().resolve("profiles").resolve(name); + if (!Files.isRegularFile(file)) { + file = Paths.get(name); + } + + if (!Files.isRegularFile(file)) { + throw new IllegalArgumentException("no file " + name); + } + + text = Files.readAllBytes(file); + source = file.getFileName().toString(); + } + + int records = ConfigStore.importText(this.modules, text); + this.modules.persist(); + reply(sender, "imported " + records + " modules from " + source); + } catch (IOException var7) { + throw new IllegalArgumentException("import failed: " + var7.getMessage()); + } + } + + private Module requireModule(String[] args, int index) { + if (args.length <= index) { + throw new IllegalArgumentException("module id is required"); + } else { + Module module = this.modules.find(args[index]); + if (module == null) { + throw new IllegalArgumentException("unknown module " + args[index]); + } else { + return module; + } + } + } + + private static String join(String[] values, int start) { + StringBuilder joined = new StringBuilder(); + + for (int i = start; i < values.length; i++) { + if (joined.length() > 0) { + joined.append(' '); + } + + joined.append(values[i]); + } + + return joined.toString(); + } + + private static void reply(ICommandSender sender, String text) { + sender.addChatMessage(new ChatComponentText("[Slinky] " + text)); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/event/ClientEventBridge.java b/SlinkyClient/src/main/java/dev/slinky/client/event/ClientEventBridge.java new file mode 100644 index 0000000..f967f59 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/event/ClientEventBridge.java @@ -0,0 +1,265 @@ +package dev.slinky.client.event; + +import dev.slinky.client.command.GuiMenuCommand; +import dev.slinky.client.gui.ClickGuiScreen; +import dev.slinky.client.gui.GuiModuleList; +import dev.slinky.client.gui.settings.GuiModuleSettings; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.input.MinecraftInputAdapter; +import dev.slinky.client.packet.PacketPipeline; +import dev.slinky.inject.ReflectionHelper; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.combat.AutoBlockModule; +import dev.slinky.setting.Setting; +import io.netty.channel.Channel; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.Arrays; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.network.NetworkManager; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +public final class ClientEventBridge { + private static ClientEventBridge instance; + private final ModuleManager modules; + private final KeyBinding openGui; + private final CommandBase command; + private boolean keyPending; + private boolean mousePending; + private Channel attachedChannel; + private static Field channelField; + + public ClientEventBridge(ModuleManager modules, KeyBinding openGui, CommandBase command) { + this.modules = modules; + this.openGui = openGui; + this.command = command; + } + + public static void install(ClientEventBridge bridge) { + synchronized (ClientEventBridge.class) { + ClientEventBridge previous = instance; + instance = bridge; + if (previous != null && previous != bridge) { + Channel channel = previous.attachedChannel; + previous.attachedChannel = null; + previous.keyPending = false; + previous.mousePending = false; + if (channel != null && channel.pipeline().get("slinky_semantic_packets") != null) { + channel.pipeline().remove("slinky_semantic_packets"); + } + } + } + } + + public static void clientTick(boolean start) { + ClientEventBridge bridge = instance; + if (bridge != null) { + if (start) { + bridge.attachPipeline(); + } + + bridge.modules.clientTick(start); + } + } + + public static void renderTick(boolean start) { + ClientEventBridge bridge = instance; + if (bridge != null) { + bridge.modules.renderTick(start); + if (!start) { + GameHooks.afterFrameRender(); + } + } + } + + public static boolean keyboardNext() { + ClientEventBridge bridge = instance; + if (bridge != null && bridge.keyPending) { + bridge.keyPending = false; + bridge.onKeyInput(); + } + + boolean next = Keyboard.next(); + if (bridge != null) { + bridge.keyPending = next; + } + + return next; + } + + public static boolean mouseNext() { + ClientEventBridge bridge = instance; + if (bridge != null && bridge.mousePending) { + bridge.mousePending = false; + MinecraftInputAdapter.mouse(bridge.modules); + } + + boolean next = Mouse.next(); + + while (next && bridge != null && bridge.swallowMouseEvent()) { + next = Mouse.next(); + } + + if (bridge != null) { + bridge.mousePending = next; + } + + return next; + } + + private boolean swallowMouseEvent() { + Module module = this.modules.find("autoblock"); + return module instanceof AutoBlockModule && ((AutoBlockModule)module).swallowMouseEvent(this.modules.context()); + } + + private void onKeyInput() { + MinecraftInputAdapter.keyboard(this.modules); + if (this.openGui.isPressed() && this.needsConfiguration()) { + Minecraft.getMinecraft().displayGuiScreen(new GuiModuleList(this.modules)); + } + } + + private boolean needsConfiguration() { + Module gui = this.modules.find("GUI"); + if (gui == null) { + return true; + } else { + for (Setting setting : gui.getSettings()) { + if (!setting.isConfigured()) { + return true; + } + } + + return false; + } + } + + public static void handleKeyboardInput(GuiScreen screen) throws IOException { + ClientEventBridge bridge = instance; + if (bridge == null || !bridge.screenKeyInput(screen)) { + screen.handleKeyboardInput(); + } + } + + public static void handleMouseInput(GuiScreen screen) throws IOException { + ClientEventBridge bridge = instance; + if (bridge == null || !bridge.screenMouseInput(screen)) { + screen.handleMouseInput(); + } + } + + private boolean screenKeyInput(GuiScreen screen) { + if (GuiMenuCommand.handle(screen, Keyboard.getEventKey(), Keyboard.getEventKeyState(), this.modules)) { + return true; + } else { + return isConfigurationScreen(screen) ? false : (MinecraftInputAdapter.keyboard(this.modules) & 0xFF) != 0; + } + } + + private boolean screenMouseInput(GuiScreen screen) { + return isConfigurationScreen(screen) ? false : (MinecraftInputAdapter.mouse(this.modules) & 0xFF) != 0; + } + + private static boolean isConfigurationScreen(GuiScreen screen) { + return screen instanceof ClickGuiScreen || screen instanceof GuiModuleList || screen instanceof GuiModuleSettings; + } + + public static void loadWorld(Minecraft minecraft) { + ClientEventBridge bridge = instance; + if (bridge != null && minecraft.theWorld != null) { + bridge.modules.worldUnload(); + } + } + + public static void disconnect() { + final ClientEventBridge bridge = instance; + if (bridge != null) { + bridge.attachedChannel = null; + Minecraft.getMinecraft().addScheduledTask(new Runnable() { + @Override + public void run() { + bridge.modules.worldUnload(); + } + }); + } + } + + private void attachPipeline() { + NetHandlerPlayClient handler = Minecraft.getMinecraft().getNetHandler(); + final Channel channel = handler == null ? null : channel(handler.getNetworkManager()); + if (channel != null && channel != this.attachedChannel && channel.isOpen()) { + this.attachedChannel = channel; + channel.eventLoop().execute(new Runnable() { + @Override + public void run() { + synchronized (ClientEventBridge.class) { + try { + // Keep the existing Java 8 synthetic accessor schema for live replacement. + Field active = ClientEventBridge.class.getDeclaredField("instance"); + active.setAccessible(true); + if (active.get(null) == ClientEventBridge.this && channel.isOpen() + && channel.pipeline().get("slinky_semantic_packets") == null + && channel.pipeline().get("packet_handler") != null) { + channel.pipeline().addBefore("packet_handler", "slinky_semantic_packets", new PacketPipeline(ClientEventBridge.this.modules)); + } + } catch (ReflectiveOperationException failure) { + throw new IllegalStateException("Could not check the active Slinky session", failure); + } + } + } + }); + } + } + + private static Channel channel(NetworkManager manager) { + if (channelField == null) { + channelField = ReflectionHelper.findField(NetworkManager.class, "channel", "field_150746_k"); + } + + try { + return (Channel)channelField.get(manager); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + + public static boolean sendChatMessage(String message) { + ClientEventBridge bridge = instance; + if (bridge != null && message != null && message.startsWith("/")) { + String[] words = message.substring(1).trim().split(" "); + String name = words[0]; + if (name.equalsIgnoreCase(bridge.command.getCommandName()) + || bridge.command.getCommandAliases() != null && bridge.command.getCommandAliases().contains(name)) { + Minecraft minecraft = Minecraft.getMinecraft(); + + try { + bridge.command.processCommand(minecraft.thePlayer, Arrays.copyOfRange(words, 1, words.length)); + } catch (CommandException var7) { + ChatComponentTranslation error = new ChatComponentTranslation(var7.getMessage(), var7.getErrorObjects()); + error.getChatStyle().setColor(EnumChatFormatting.RED); + minecraft.thePlayer.addChatMessage(error); + } catch (Throwable var8) { + ChatComponentText errorx = new ChatComponentText("Slinky command failed: " + var8); + errorx.getChatStyle().setColor(EnumChatFormatting.RED); + minecraft.thePlayer.addChatMessage(errorx); + } + + return true; + } else { + return false; + } + } else { + return false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/event/SemanticEvent.java b/SlinkyClient/src/main/java/dev/slinky/client/event/SemanticEvent.java new file mode 100644 index 0000000..378b6ce --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/event/SemanticEvent.java @@ -0,0 +1,45 @@ +package dev.slinky.client.event; + +import dev.slinky.module.Module; +import net.minecraft.entity.Entity; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; + +public final class SemanticEvent { + public final int type; + public boolean cancelled; + public boolean active = true; + public boolean enabled; + public boolean jump; + public boolean sneaking; + public boolean overrideRotation; + public boolean remapMovement; + public boolean reducing; + public boolean queryOverride; + public float sideways; + public float forward; + public float factor; + public float scale = 1.0F; + public float yaw; + public float pitch; + public float timerRenderPartialTicks; + public double elapsedSeconds; + public double distance; + public double expand; + public Entity entity; + public Packet packet; + public NetworkManager receiver; + public int dispatchMode; + public long packetAgeMillis; + public int packetSequence; + public Module module; + public double cameraX; + public double cameraY; + public double cameraZ; + public float renderWidth; + public float renderHeight; + + public SemanticEvent(int type) { + this.type = type; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/ClickGuiScreen.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/ClickGuiScreen.java new file mode 100644 index 0000000..dc02558 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/ClickGuiScreen.java @@ -0,0 +1,752 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.profile.ProfileIcons; +import dev.slinky.client.gui.profile.ProfileServices; +import dev.slinky.client.gui.settings.InlineModuleSettings; +import dev.slinky.client.input.MinecraftInputAdapter; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.numeric.NumericServices; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.client.render.hook.RenderHooks; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.render.GuiModule; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ColorSetting; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.client.gui.GuiScreen; +import org.lwjgl.input.Mouse; + +public final class ClickGuiScreen extends GuiScreen implements RenderHooks.GuiFrame { + private final ModuleManager manager; + private final GuiModule module; + private final GuiMath.Runtime state; + private final ProfileServices.Host profiles; + private List profileRows = Collections.emptyList(); + private float profileHeight; + private final Object newProfile = new Object(); + private final Object hexEdit = new Object(); + private final Map heights = new IdentityHashMap<>(); + private final Map toggles = new IdentityHashMap<>(); + private final Map expansions = new IdentityHashMap<>(); + private final Map bindings = new IdentityHashMap<>(); + private final Map profileBindings = new HashMap<>(); + private final GuiPresentation presentation = new GuiPresentation(CanvasFonts::width, true); + private final InlineModuleSettings inline; + private int lastMouseX; + private int lastMouseY; + private float lastPartialTicks; + private final GuiPresentation.Tooltip tooltip = new GuiPresentation.Tooltip(); + private float drawScale; + private float drawOffsetX; + private float drawOffsetY; + private final HoldActivation heldAction = new HoldActivation(); + private final Object unloadAction = new Object(); + private static final float BORDER = 0.33F; + private static final float TRACK_EDGE = 0.2509804F; + private static final float TRACK_RADIUS = 5.0F; + private static final float KNOB_RADIUS = 10.0F; + private static final float EDGE_WIDTH = 2.0F; + private static final float LABEL_ROW = 19.0F; + private static final float LABEL_OFFSET = 9.0F; + + public ClickGuiScreen(ModuleManager manager, GuiModule module) { + this(manager, module, manager.input().profiles()); + } + + public ClickGuiScreen(ModuleManager manager, GuiModule module, ProfileServices.Host profiles) { + this.manager = manager; + this.module = module; + this.state = module.runtime(); + this.profiles = profiles; + this.inline = new InlineModuleSettings(manager, this.presentation, this.tooltip); + } + + private static float c(int at) { + return RenderConstants.f(at); + } + + private static double d(int at) { + return RenderConstants.d(at); + } + + public boolean doesGuiPauseGame() { + return false; + } + + public void drawScreen(int x, int y, float partial) { + this.lastMouseX = x; + this.lastMouseY = y; + this.lastPartialTicks = partial; + } + + public void initGui() { + this.allowUserInput = this.module.findSetting("allow_input").isConfigured() && ((BooleanSetting)this.module.findSetting("allow_input")).isEnabled(); + } + + public void onGuiClosed() { + this.heldAction.reset(); + this.module.screenClosed(); + } + + @Override + public void drawRecoveredFrame(float partial) { + this.allowUserInput = ((BooleanSetting)this.module.findSetting("allow_input")).isEnabled(); + DrawPlan plan = this.framePlan( + this.mc.displayWidth, + this.mc.displayHeight, + this.module.scale(), + (float)Mouse.getX(), + (float)(this.mc.displayHeight - Mouse.getY() - 1), + RenderAccess.now() + ); + RenderAccess.submit(new SemanticEvent(10), plan); + } + + public DrawPlan framePlan(int displayWidth, int displayHeight, float scale, float mouseX, float mouseY, double now) { + DrawPlan var10; + try (CanvasFonts.GuiFaceScope fonts = CanvasFonts.guiFace()) { + var10 = this.buildFramePlan(displayWidth, displayHeight, scale, mouseX, mouseY, now); + } + + return var10; + } + + private DrawPlan buildFramePlan(int displayWidth, int displayHeight, float scale, float mouseX, float mouseY, double now) { + float elapsed = this.state.elapsed(now); + float previousFade = this.state.fade; + this.heldAction.beginFrame(); + this.state.rawX = mouseX; + this.state.rawY = mouseY; + float w = (float)displayWidth / scale; + float h = (float)displayHeight / scale; + RenderMath.Rect panel = this.state.beginFrame(w, h, scale, this.module.wide(), now); + float opacity = fade(previousFade); + this.drawScale = scale; + this.drawOffsetX = 0.0F; + this.drawOffsetY = c(1313236) + opacity * c(1313240) - this.state.scroll; + DrawPlan plan = new DrawPlan() + .canvas() + .push() + .scale(scale, scale, 1.0F) + .opacity(opacity) + .color(c(1313228), c(1313228), c(1313228), c(1313232)) + .rect(0.0F, 0.0F, w, h, 0.0F) + .translate(0.0F, this.drawOffsetY, 0.0F); + GuiMath.Layout layout = this.state.layouts.peek(); + RenderMath.Rect tabs = layout.next(c(1312896)); + plan.color(c(1312900), c(1312900), c(1312900), 1.0F).rect(tabs.x, tabs.y, tabs.width, tabs.height, c(1312904)); + float tabWidth = tabs.width / (float)GuiAppearance.TABS.length; + this.state.selectedAnimation = GuiMath.limited( + this.state.selectedAnimation, (float)GuiAppearance.tab(this.state.selected), (float)((double)elapsed / d(1312912)) + ); + RenderMath.Rect highlight = new RenderMath.Rect(tabs.x + this.state.selectedAnimation * tabWidth, tabs.y, tabWidth, tabs.height).inset(c(1312920)); + plan.color(c(1312924), c(1312924), c(1312924), 1.0F).rect(highlight.x, highlight.y, highlight.width, highlight.height, c(1312928)); + String[] labels = GuiAppearance.TABS; + + for (int i = 0; i < labels.length; i++) { + RenderMath.Rect r = new RenderMath.Rect(tabs.x + (float)i * tabWidth, tabs.y, tabWidth, tabs.height); + if (i == labels.length - 1) { + if (this.heldAction.update(this.unloadAction, this.state.hover(r), this.state.down, this.state.modal == 0, !this.state.consumed, now)) { + this.state.closeRequested = true; + this.manager.shutdown(); + } + + float held = this.heldAction.progress(this.unloadAction); + if (held > 0.0F) { + plan.color(0.8F, 0.25F, 0.27F, 0.25F).rect(r.x + 6.0F, r.y + 6.0F, (r.width - 12.0F) * held, r.height - 12.0F, 14.0F); + } + } else if (this.state.click(r)) { + this.state.selected = GuiAppearance.category(i); + this.state.mode = 0; + } + + RenderMath.Rect inner = r.inset(c(1312920)); + boolean hover = this.state.hover(inner); + int color = i == labels.length - 1 + ? rgb(c(hover ? 1312948 : 1312936), c(hover ? 1312952 : 1312944), c(hover ? 1312952 : 1312944)) + : this.gray(hover ? 1312940 : 1312936); + this.presentation.text(plan, labels[i], inner, 1, 0, c(1312932), color); + } + + float difference = (float)GuiAppearance.tab(this.state.selected) - this.state.selectedAnimation; + plan.push(); + if (difference != 0.0F) { + float magnitude = Float.intBitsToFloat(Float.floatToRawIntBits(difference) & RenderConstants.i(1313024)); + float alpha = c(1312976) - (magnitude + magnitude); + if (magnitude > c(1312972)) { + alpha = 0.0F; + } + + this.drawOffsetX = (float)((double)difference * ((double)w * d(1313040))); + plan.opacity(alpha).translate(this.drawOffsetX, 0.0F, 0.0F); + } + + if (this.state.selected < 5) { + this.renderCategory(plan, layout, now, elapsed, w, h); + } else { + this.renderProfiles(plan, layout, now, w, h); + } + + plan.unclip().pop(); + this.state.pop(); + int categoryBottom = this.state.contentBottom; + this.drawOffsetX = 0.0F; + this.presentation.tooltip(plan, this.tooltip, elapsed); + plan.unclip().pop(); + if (this.state.modal != 0) { + float modalOpacity = fade(this.state.modalProgress); + plan.push().scale(scale, scale, 1.0F).opacity(modalOpacity).color(c(1313228), c(1313228), c(1313228), c(1313232)).rect(0.0F, 0.0F, w, h, 0.0F); + this.drawOffsetY = c(1313236) + modalOpacity * c(1313240); + plan.translate(0.0F, this.drawOffsetY, 0.0F); + this.state.mouseY = this.state.mouseY - this.state.scroll; + this.state.resetLayout(); + RenderMath.Rect modalPanel = panel; + if (panel.width > c(1313172)) { + modalPanel = new RenderMath.Rect((float)((double)panel.x + (double)(panel.width + c(1313176)) * d(1313080)), panel.y, c(1313172), panel.height); + } + + GuiMath.Layout modalLayout = this.state.push(modalPanel, c(1313016), c(1313020), false); + this.renderModal(plan, modalLayout, now); + this.state.pop(); + plan.unclip().pop(); + } + + this.state.contentBottom = categoryBottom; + this.state.endFrame(h, now); + this.heldAction.endFrame(); + return plan; + } + + public void expanded(Module entry, boolean open) { + GuiPresentation.Expansion expansion = new GuiPresentation.Expansion(); + expansion.open = open; + this.expansions.put(entry, expansion); + } + + private static float fade(float progress) { + return c(1313220) - NumericServices.powf(c(1313220) - progress, c(1313224)); + } + + private static int rgb(float r, float g, float b) { + return 0xFF000000 | ((int)(r * 255.0F) & 0xFF) << 16 | ((int)(g * 255.0F) & 0xFF) << 8 | (int)(b * 255.0F) & 0xFF; + } + + private void clip(DrawPlan plan, GuiMath.Layout layout) { + RenderMath.Rect r = layout.clip; + plan.clip((r.x + this.drawOffsetX) * this.drawScale, (r.y + this.drawOffsetY) * this.drawScale, r.width * this.drawScale, r.height * this.drawScale); + } + + private void renderCategory(DrawPlan plan, GuiMath.Layout layout, double now, float elapsed, float width, float height) { + ColorSetting.Value accent = this.module.accent(); + layout.autoColumns(c(1313248)); + + for (Module entry : GuiAppearance.entries(this.manager, this.state.selected)) { + float old = this.heights.containsKey(entry) ? this.heights.get(entry) : 0.0F; + RenderMath.Rect outer = layout.next(old); + if (GuiMath.intersects(new RenderMath.Rect(0.0F, this.state.scroll, width, height), outer)) { + plan.color(c(1313264), c(1313264), c(1313264), 1.0F).rect(outer.x, outer.y, outer.width, outer.height, c(1313268)); + GuiMath.Layout inside = this.state.push(outer, c(1313272), 12.0F, true); + this.clip(plan, inside); + inside.columns(1); + RenderMath.Rect title = inside.next(c(1313268)); + GuiPresentation.Expansion expansion = this.expansions.get(entry); + if (expansion == null) { + expansion = new GuiPresentation.Expansion(); + this.expansions.put(entry, expansion); + } + + float advance; + if (this.module.compact()) { + advance = this.presentation + .moduleText( + this.state, plan, expansion, !entry.getSettings().isEmpty(), entry.getName(), title, 16.0F, this.gray(1313280), this.gray(1313284) + ); + } else { + advance = this.presentation.text(plan, entry.getName(), title, 0, 0, c(1313276), this.gray(1313280)); + } + + int flags = RenderModuleAccess.observedFlags(entry); + if ((flags & 1) == 0) { + GuiPresentation.Binding record = this.bindings.get(entry); + if (record == null) { + record = new GuiPresentation.Binding(entry.getBinding(), entry.isHoldBinding(), entry, key -> { + this.manager.setBinding(entry, key); + this.manager.persist(); + }); + this.bindings.put(entry, record); + } + + if (this.state.mode != 1 || this.state.identity != entry) { + record.key = entry.getBinding(); + record.hold = entry.isHoldBinding(); + } + + this.presentation + .binding( + this.state, + plan, + record, + new RenderMath.Rect(advance + c(1313288), title.y, title.width - advance + title.x, title.height), + new float[]{accent.red, accent.green, accent.blue, 1.0F}, + (flags & 8) == 0 + ); + if (entry.isHoldBinding() != record.hold) { + entry.setHoldBinding(record.hold); + this.manager.persist(); + } + } + + if ((flags & 2) == 0) { + RenderMath.Rect toggle = new RenderMath.Rect(title.x + title.width + c(1313292), title.y, c(1313296), title.height); + GuiMath.Toggle animation = this.toggles.get(entry); + if (animation == null) { + animation = new GuiMath.Toggle(); + this.toggles.put(entry, animation); + } + + boolean enabled = GuiWidgets.toggle( + this.state, plan, animation, toggle, entry.isEnabled(), new float[]{accent.red, accent.green, accent.blue, 1.0F}, now + ); + if (enabled != entry.isEnabled()) { + try { + this.manager.toggle(entry); + } catch (IllegalArgumentException var22) { + expansion.open = true; + this.state.beginPrompt(var22.getMessage(), () -> { + }, now); + } + } + } + + if (!this.module.compact()) { + RenderMath.Rect description = inside.next(c(1313268)); + this.presentation + .moduleText( + this.state, + plan, + expansion, + !entry.getSettings().isEmpty(), + GuiAppearance.description(entry), + description, + 14.0F, + this.gray(1313300), + this.gray(1313304) + ); + } + + if (expansion.open) { + this.inline.render(entry, this.state, plan, inside, new float[]{accent.red, accent.green, accent.blue, 1.0F}, now); + } + + float target = GuiPresentation.categoryHeight(this.state.pop()); + this.heights.put(entry, old == 0.0F ? target : GuiMath.limited(old, target, (float)((double)elapsed / d(1313256)))); + plan.unclip(); + } + } + } + + private void center(DrawPlan p, String text, RenderMath.Rect r, float font, int color) { + float measured = CanvasFonts.width(text, 0, font); + float x = (float)((double)r.width * d(1312824) + (double)r.x) - measured * 0.5F; + float y = (float)((double)r.height * d(1312824) + (double)(r.y + c(1312832))); + p.canvasText(text, x, y, color, font, 17); + } + + public static float[] colorBlend(float[] a, float[] b, float fraction) { + return GuiWidgets.blend(a, b, fraction); + } + + private int gray(int at) { + int g = (int)(c(at) * 255.0F); + return 0xFF000000 | g << 16 | g << 8 | g; + } + + private void actionEvent(int action, String name) { + SemanticEvent event = new SemanticEvent(11); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.action = action; + payload.profileName = name; + + try { + this.manager.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + + this.state.profileStamp = -1.0; + } + + private void error(IOException error) { + SemanticEvent event = new SemanticEvent(12); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.errorCode = error instanceof ProfileServices.Failure ? ((ProfileServices.Failure)error).code : 1; + payload.message = error.getMessage(); + + try { + this.manager.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + } + + private void perform(int action, String name, boolean overwrite) { + try { + if (action == 0) { + this.profiles.load(name); + } else if (action == 1) { + this.profiles.save(name, overwrite); + } else if (action == 2) { + this.profiles.explore(); + } else if (action == 3) { + this.profiles.delete(name); + } + + this.actionEvent(action, name); + } catch (IOException var5) { + this.error(var5); + } + } + + private void profileAction(int action, String name, double now) { + if (action == 1 && name == null) { + this.error(new ProfileServices.Failure(6003, RenderConstants.text(1313671))); + } else if (action == 3 && name == null) { + this.error(new ProfileServices.Failure(6004, RenderConstants.text(1313637))); + } else if (this.state.profileActionsConfirmed) { + this.perform(action, name, true); + } else { + int at = 1313840 + RenderConstants.i(1313840 + action * 4); + this.state.beginPrompt(RenderConstants.text(at).replace("%s", name == null ? RenderConstants.text(1313482) : name), () -> { + this.state.profileActionsConfirmed = true; + this.perform(action, name, true); + }, now); + } + } + + private void renderProfiles(DrawPlan plan, GuiMath.Layout layout, double now, float width, float height) { + if (this.state.mode == 0 && now > this.state.profileStamp + d(1313048)) { + try { + this.profileRows = this.profiles.records(); + } catch (IOException var21) { + this.profileRows = this.profiles.snapshot(); + this.error(var21); + } + + this.state.profileStamp = now; + } + + layout.autoColumns(c(1313056)); + float radius = c(1313064); + float font = c(1313068); + + for (int row = 0; row <= this.profileRows.size(); row++) { + ProfileServices.Record record = row == 0 ? null : this.profileRows.get(row - 1); + RenderMath.Rect outer = layout.next(this.profileHeight); + if (GuiMath.intersects(new RenderMath.Rect(0.0F, this.state.scroll, width, height), outer)) { + plan.color(c(1313060), c(1313060), c(1313060), 1.0F).rect(outer.x, outer.y, outer.width, outer.height, radius); + GuiMath.Layout inside = this.state.push(outer, c(1313016), 12.0F, true); + this.clip(plan, inside); + inside.columns(1); + RenderMath.Rect head = inside.next(radius); + float advance = this.presentation.text(plan, record == null ? RenderConstants.text(1313482) : record.name, head, 0, 0, font, this.gray(1313072)); + if (record != null) { + GuiPresentation.Binding binding = this.profileBindings.get(record.name); + if (binding == null) { + binding = new GuiPresentation.Binding(record.binding, false, record.name, key -> { + record.binding = key; + this.profiles.bind(record.name, key); + }); + this.profileBindings.put(record.name, binding); + } + + if (this.state.mode != 1 || this.state.identity != binding.identity) { + binding.key = record.binding; + } + + ColorSetting.Value accent = this.module.accent(); + this.presentation + .binding( + this.state, + plan, + binding, + new RenderMath.Rect(advance + c(1313076), head.y, head.width - advance + head.x, head.height), + new float[]{accent.red, accent.green, accent.blue, 1.0F}, + false + ); + } + + for (int slot = 0; slot < 4; slot++) { + RenderMath.Rect button = new RenderMath.Rect(head.x + head.width - (float)(80 - 20 * slot) - (float)(36 - 12 * slot), head.y, radius, 20.0F); + boolean enabled = (slot & (record == null ? 1 : 0)) == 0; + int at = 1313492 + RenderConstants.i(1313492 + slot * 4); + String label = RenderConstants.text(at); + ProfileIcons.draw(plan, button, slot, enabled, enabled && this.state.hover(button)); + if (enabled && this.state.hover(button)) { + this.tooltip + .request(label, NumericMath.truncateInt((double)button.x + (double)button.width * d(1313080)), NumericMath.truncateInt(button.y)); + } + + if (enabled && this.state.click(button)) { + this.profileAction(slot, record == null ? null : record.name, now); + } + } + + if (!this.module.compact()) { + RenderMath.Rect date = inside.next(radius); + this.presentation.text(plan, record == null ? RenderConstants.text(1313536) : record.date, date, 0, 0, c(1313088), this.gray(1313092)); + } + + this.profileHeight = this.state.pop(); + plan.unclip(); + } + } + + RenderMath.Rect create = layout.next(this.profileHeight); + plan.color(c(1313060), c(1313060), c(1313060), c(1312972)).rect(create.x, create.y, create.width, create.height, radius); + if (this.state.click(create)) { + this.state.activateText(this.newProfile, GuiMath::profileNameFilter); + } + + if (this.state.textActive(this.newProfile)) { + RenderMath.Rect input = new RenderMath.Rect( + create.x, (float)((double)create.y + (double)create.height * d(1313080) + d(1313104)), create.width, c(1313124) + ); + this.presentation.textEntry(this.state, plan, input, 1, font, now); + String name = this.state.takeText(); + if (name != null) { + this.perform(1, name, false); + } + } else { + this.center(plan, RenderConstants.text(1313821), create, c(1313096), this.gray(this.state.hover(create) ? 1312976 : 1313072)); + } + } + + private void renderModal(DrawPlan plan, GuiMath.Layout parent, double now) { + this.state.modalDrawing = true; + this.state.modalProgress = RenderMath.min(c(1314448), (float)((double)this.state.modalProgress + (now - this.state.modalStamp) / d(1314440))); + parent.columns(1); + RenderMath.Rect outer = parent.next(this.state.modalHeight); + plan.color(c(1314452), c(1314452), c(1314452), 1.0F).rect(outer.x, outer.y, outer.width, outer.height, c(1314456)); + GuiMath.Layout inner = this.state.push(outer, c(1314460), 12.0F, true); + this.clip(plan, inner); + inner.columns(1); + RenderMath.Rect heading = inner.next(c(1314456)); + this.presentation.text(plan, this.state.title, heading, 0, 0, c(1314464), this.gray(1314468)); + RenderMath.Rect close = new RenderMath.Rect(heading.width - heading.height + heading.x, heading.y, heading.height, heading.height); + float inset = (float)((double)close.width * d(1314488)); + boolean hover = this.state.hover(close); + plan.color(c(hover ? 1314476 : 1314472), c(hover ? 1314480 : 1314472), c(hover ? 1314480 : 1314472), 1.0F) + .lineWidth(c(1314484)) + .line(close.x + inset, close.y + inset, close.x + close.width - inset, close.y + close.height - inset) + .line(close.x + close.width - inset, close.y + inset, close.x + inset, close.y + close.height - inset); + boolean closePressed = this.state.click(close); + int mode = this.state.modal; + if (mode == 1 || mode == 4) { + RenderMath.Rect input = inner.next(c(1314496)); + plan.color(c(1314504), c(1314504), c(1314504), 1.0F).lineWidth(c(1314484)).roundedStroke(input.x, input.y, input.width, input.height, c(1314460)); + if (!this.state.textActive(this.state.identity)) { + this.state.finishModal(true); + } else { + this.presentation.textEntry(this.state, plan, input.inset(c(1314508)), 1, c(1314500), now); + if (mode == 1) { + this.state.submitModalText(); + } else { + this.state.filterOptions(now); + RenderMath.Rect pair = null; + Integer chosen = null; + + for (int i = 0; i < this.state.matches.size(); i++) { + if ((i & 1) == 0) { + pair = inner.next(c(1314520)); + } + + RenderMath.Rect button = new RenderMath.Rect(pair.x + (float)(i & 1) * pair.width * c(1314524), pair.y, pair.width * c(1314524), pair.height); + int index = this.state.matches.get(i); + this.presentation + .text(plan, this.state.options.get(index), button, 0, 0, c(1314464), this.gray(this.state.hover(button) ? 1314448 : 1314468)); + if (this.state.click(button)) { + chosen = index; + } + } + + if (this.state.overflow != 0) { + RenderMath.Rect note = inner.next(c(1314520)); + this.presentation + .text( + plan, + RenderConstants.text(1314705).replace("%u", Integer.toString(Math.min(this.state.overflow, 9999))), + note, + 0, + 0, + c(1314500), + this.gray(1314472) + ); + } + + if (chosen != null) { + this.state.choose(chosen); + } + } + } + } else if (mode == 3) { + RenderMath.Rect prompt = inner.next(c(1314496)); + this.presentation.text(plan, this.state.prompt, prompt, 0, 0, c(1314500), this.gray(1314468)); + RenderMath.Rect button = inner.next(c(1314496)); + boolean over = this.state.hover(button); + plan.color(c(over ? 1314476 : 1314468), c(over ? 1314480 : 1314528), c(over ? 1314480 : 1314528), 1.0F) + .rect(button.x, button.y, button.width, button.height, c(1314532)); + this.center(plan, RenderConstants.text(1314696), button, c(1314500), this.gray(1314448)); + if (this.state.click(button)) { + this.state.confirmPrompt(); + } + } else if (mode == 2) { + this.renderColor(plan, inner); + } + + this.state.modalHeight = this.state.pop(); + plan.unclip(); + this.state.modalDrawing = false; + this.state.modalStamp = now; + if (closePressed && this.state.modal != 0) { + this.state.finishModal(true); + } + } + + private static float[] sample(float[][] stops, float t) { + if (stops.length == 1) { + return stops[0]; + } else { + float position = RenderMath.clamp(0.0F, 1.0F, t) * (float)(stops.length - 1); + int index = Math.min(stops.length - 2, (int)position); + float f = position - (float)index; + float[] color = new float[4]; + + for (int c = 0; c < 4; c++) { + color[c] = stops[index][c] + (stops[index + 1][c] - stops[index][c]) * f; + } + + return color; + } + } + + private void renderColor(DrawPlan plan, GuiMath.Layout layout) { + RenderMath.Rect row = layout.next(c(1314536)); + plan.color(this.state.rgb[0], this.state.rgb[1], this.state.rgb[2], 1.0F).rect(row.x, row.y, row.height, row.height, c(1314532)); + plan.color(0.33F, 0.33F, 0.33F, 1.0F).lineWidth(1.0F).roundedStroke(row.x, row.y, row.height, row.height, c(1314532)); + String hex = String.format( + Locale.ROOT, + "%02x%02x%02x", + (int)(NumericMath.truncateLong(this.state.rgb[0] * c(1314540)) & 255L), + (int)(NumericMath.truncateLong(this.state.rgb[1] * c(1314540)) & 255L), + (int)(NumericMath.truncateLong(this.state.rgb[2] * c(1314540)) & 255L) + ); + plan.canvasText( + RenderConstants.text(1314681) + (this.state.textActive(this.hexEdit) ? this.state.text.toString() : hex), + row.x + row.height + c(1314460), + row.y, + this.gray(1314472), + c(1314456), + 9 + ); + if (this.state.click(row)) { + this.state.activateText(this.hexEdit, GuiMath::hexFilter); + } + + if (this.state.textActive(this.hexEdit)) { + String value = this.state.takeText(); + if (value != null) { + this.state.hex(value); + } + } + + for (int component = 0; component < 3; component++) { + RenderMath.Rect label = layout.next(19.0F); + plan.canvasText( + RenderConstants.text(component == 0 ? 1314642 : (component == 1 ? 1314646 : 1314657)), label.x, label.y + 9.0F, this.gray(1314468), c(1314500), 9 + ); + RenderMath.Rect slider = layout.next(c(1314500)); + float edge = 1.0F; + RenderMath.Rect track = new RenderMath.Rect(slider.x + edge, slider.y, slider.width - 2.0F, slider.height); + float[][] stops; + if (component == 0) { + int steps = (int)c(1314560); + stops = new float[steps + 1][]; + + for (int i = 0; i <= steps; i++) { + stops[i] = GuiMath.hsl((float)i / (float)steps, this.state.hsl[1], this.state.hsl[2], 255); + } + } else { + stops = new float[][]{ + GuiMath.hsl(this.state.hsl[0], component == 1 ? 0.0F : this.state.hsl[1], component == 2 ? 0.0F : this.state.hsl[2], 255), + GuiMath.hsl(this.state.hsl[0], component == 1 ? c(1314448) : this.state.hsl[1], component == 2 ? c(1314448) : this.state.hsl[2], 255) + }; + } + + plan.pillGradient(track, 5.0F, stops); + plan.color(0.2509804F, 0.2509804F, 0.2509804F, 1.0F).lineWidth(2.0F).roundedStroke(track.x, track.y, track.width, track.height, 5.0F); + float outer = 10.0F + edge; + float px = (slider.width - 2.0F * outer) * this.state.hsl[component] + slider.x + outer; + float py = (float)((double)slider.height * d(1314616) + (double)slider.y); + float[] under = sample(stops, this.state.hsl[component]); + plan.color(under[0], under[1], under[2], 1.0F).op("circle", px, py, 10.0F); + plan.color(0.2509804F, 0.2509804F, 0.2509804F, 1.0F).lineWidth(2.0F).circleStroke(px, py, 10.0F); + this.state.colorSlider(slider, component, outer); + } + + RenderMath.Rect label = layout.next(19.0F); + plan.canvasText(RenderConstants.text(1314667), label.x, label.y + 9.0F, this.gray(1314468), c(1314500), 9); + row = layout.next(c(1314520)); + float x = row.x; + float width = (row.width + c(1314564)) * c(1314568); + float spacing = c(1314460) + width; + + for (int back = 8; back > 0; back--) { + int index = this.state.historyIndex >= back ? this.state.historyIndex - back : this.state.historyIndex + 8 - back; + float[] color = this.state.history[index]; + RenderMath.Rect button = new RenderMath.Rect(x, row.y, width, row.height); + plan.color(color[0], color[1], color[2], 1.0F).rect(button.x, button.y, button.width, button.height, 5.0F); + boolean over = this.state.hover(button); + float edge = over ? 0.55F : 0.33F; + plan.color(edge, edge, edge, 1.0F).lineWidth(1.0F).roundedStroke(button.x, button.y, button.width, button.height, 5.0F); + if (this.state.click(button)) { + this.state.selectHistory(index); + } + + x += spacing; + } + } + + public void handleMouseInput() throws IOException { + MinecraftInputAdapter.mouse(this.manager); + super.handleMouseInput(); + } + + public void handleKeyboardInput() throws IOException { + if ((MinecraftInputAdapter.keyboard(this.manager) & 0xFF) == 0) { + super.handleKeyboardInput(); + } else { + this.mc.dispatchKeypresses(); + } + } + + protected void keyTyped(char character, int key) throws IOException { + if (key == 1) { + this.manager.requestEnabled(this.module, false); + } else { + super.keyTyped(character, key); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiAppearance.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiAppearance.java new file mode 100644 index 0000000..297a725 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiAppearance.java @@ -0,0 +1,83 @@ +package dev.slinky.client.gui; + +import com.google.gson.JsonArray; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.setting.Setting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public final class GuiAppearance { + public static final String[] TABS = new String[]{"Combat", "Move", "Visual", "Block", "Utility", "Profiles", "Unload"}; + private static final int[] CATEGORIES = new int[]{0, 1, 2, 3, 4, 5}; + + public static int category(int tab) { + return CATEGORIES[tab]; + } + + public static int tab(int category) { + for (int i = 0; i < CATEGORIES.length; i++) { + if (CATEGORIES[i] == category) { + return i; + } + } + + return tab(4); + } + + public static boolean includes(int page, int category) { + return page == category; + } + + public static List entries(ModuleManager manager, int page) { + List entries = new ArrayList<>(); + + for (Module module : manager.all()) { + if (includes(page, module.metadataCategory())) { + entries.add(module); + } + } + + Collections.sort(entries, Comparator.comparing(Module::getName, String.CASE_INSENSITIVE_ORDER)); + return entries; + } + + public static String description(Module module) { + JsonArray observations = ModuleCatalog.module(module.getName()).getAsJsonArray("descriptor_observations"); + return observations.size() == 0 ? module.getDescription() : observations.get(0).getAsJsonObject().get("description").getAsString(); + } + + public static void configureMissing(Module gui) { + if (gui != null) { + boolean fresh = true; + + for (Setting setting : gui.getSettings()) { + fresh &= !setting.isConfigured(); + } + + if (fresh && gui.getBinding() == 0) { + gui.setBinding(99); + } + + configure(gui, "scale", "Medium (100%)"); + configure(gui, "accent_color", "1.0,0.35,0.0"); + configure(gui, "allow_input", "false"); + configure(gui, "compact", "false"); + configure(gui, "wide", "false"); + } + } + + private static void configure(Module gui, String key, String value) { + Setting setting = gui.findSetting(key); + if (!setting.isConfigured()) { + setting.parseAndSet(value); + setting.saveCurrent(); + } + } + + private GuiAppearance() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiMath.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiMath.java new file mode 100644 index 0000000..c2bcfc8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiMath.java @@ -0,0 +1,909 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.nio.charset.StandardCharsets; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Deque; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.IntConsumer; + +public final strictfp class GuiMath { + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + private static strictfp double d(int at) { + return RenderConstants.d(at); + } + + public static strictfp RenderMath.Rect rounded(RenderMath.Rect r) { + return new RenderMath.Rect(FloatNumeric.round(r.x), FloatNumeric.round(r.y), FloatNumeric.round(r.width), FloatNumeric.round(r.height)); + } + + public static strictfp boolean intersects(RenderMath.Rect a, RenderMath.Rect b) { + return !(a.x > b.x + b.width) && !(b.x > a.x + a.width) && !(a.y > b.y + b.height) && !(b.y > a.y + a.height); + } + + public static strictfp float[] range( + GuiMath.Runtime runtime, + Object lowId, + Object highId, + GuiMath.Slider low, + GuiMath.Slider high, + RenderMath.Rect r, + float lower, + float upper, + float min, + float max, + float step, + float displayScale, + double now + ) { + float difference = max - min; + float ratio = (float)((double)((float)(now - low.stamp)) / d(1314080)); + low.animation = limited(low.animation, RenderMath.clamp(0.0F, c(1314076), (lower - min) / difference), ratio); + high.animation = limited(high.animation, RenderMath.clamp(0.0F, c(1314076), (upper - min) / difference), ratio); + low.stamp = high.stamp = now; + float lowX = RenderMath.lerp(r.x, r.x + r.width, low.animation); + float highX = RenderMath.lerp(r.x, r.x + r.width, high.animation); + RenderMath.Rect[] hits = GuiWidgets.rangeHits(r, r, lowX, highX); + float a = low.action(runtime, lowId, r, hits[0], lower, min, max, step, displayScale); + float b = upper; + if (low.active) { + if (a > upper) { + b = a; + } + } else { + b = high.action(runtime, highId, r, hits[1], upper, min, max, step, displayScale); + if (a > b) { + a = b; + } + } + + return new float[]{a, b}; + } + + public static strictfp float limited(float a, float b, float t) { + return RenderMath.lerp(a, b, RenderMath.min(c(1304784), t)); + } + + public static strictfp float parseNumber(String text) { + byte[] input = bytes(text); + int i = 0; + int sign = 1; + int integer = 0; + if (input.length > 0 && input[0] == 45) { + i = 1; + sign = -1; + } + + while (i < input.length && (input[i] & 255) - 48 < 10 && (input[i] & 255) >= 48) { + integer = integer * 10 + (input[i] & 255) - 48; + i++; + } + + if (i < input.length && (input[i] & 255 | 2) == 46) { + float fraction = 0.0F; + float multiplier = c(1314008); + i++; + + while (i < input.length && (input[i] & 255) - 48 < 10 && (input[i] & 255) >= 48) { + fraction += (float)((input[i] & 255) - 48) * multiplier; + multiplier = (float)((double)multiplier * d(1314016)); + i++; + } + + return ((float)integer + fraction) * (float)sign; + } else { + return (float)(integer * sign); + } + } + + public static strictfp void numericFilter(StringBuilder text, int character) { + int b = character & 0xFF; + if (text.length() != 100) { + if (b >= 48 && b <= 57 || b == 45 || b == 46 || b == 44) { + text.append((char)b); + } + } + } + + public static strictfp void catalogFilter(StringBuilder text, int character) { + if (text.length() <= 99 && RenderMath.catalogCharacter(character)) { + text.append((char)(character & 0xFF)); + } + } + + public static strictfp void profileNameFilter(StringBuilder text, int character) { + int b = character & 0xFF; + if (text.length() < 15 && (b - 32 & 0xFF) < 95 && b != 47 && b != 92) { + text.append((char)b); + } + } + + public static strictfp void hexFilter(StringBuilder text, int character) { + if (text.length() <= 5) { + int b = character & 0xFF; + if ((b - 65 & 0xFF) <= 5) { + b |= 32; + } else if ((b - 97 & 0xFF) >= 6 && (b - 48 & 0xFF) >= 10) { + return; + } + + text.append((char)b); + } + } + + private static strictfp byte[] bytes(String s) { + return s.getBytes(StandardCharsets.UTF_8); + } + + private static strictfp String clip(String s, int n) { + byte[] a = bytes(s); + return new String(a, 0, Math.min(n, a.length), StandardCharsets.UTF_8); + } + + public static strictfp boolean substring(byte[] candidate, byte[] search) { + if (search.length == 0) { + return true; + } else { + for (int start = 0; start <= candidate.length - search.length; start++) { + int matched = 0; + + while (lower(candidate[start + matched] & 255) == lower(search[matched] & 255)) { + if (++matched == search.length) { + return true; + } + } + } + + return false; + } + } + + private static strictfp int lower(int b) { + return (b - 65 & 0xFF) < 26 ? b | 32 : b; + } + + public static strictfp float[] rgbToHsl(float[] rgb, boolean history, boolean modal) { + float r = rgb[0]; + float g = rgb[1]; + float b = rgb[2]; + float max = b; + float min = b; + if (!Float.isNaN(g)) { + max = RenderMath.max(b, g); + min = RenderMath.min(b, g); + } + + if (!Float.isNaN(r)) { + max = RenderMath.max(max, r); + min = RenderMath.min(min, r); + } + + float half = c(modal ? 1314524 : 1314400); + float one = c(modal ? 1314484 : 1314404); + float six = c(modal ? 1314560 : 1314412); + float sum = max + min; + float light = half * sum; + float hue = 0.0F; + float saturation = 0.0F; + if (max != min) { + float diff = max - min; + float den = half < light ? one - max - min : sum; + if (max == r) { + hue = (g - b) / diff + (g < b ? six : 0.0F); + } else if (max == g) { + hue = (b - r) / diff + c(modal ? 1314484 : 1314404); + } else if (max == b) { + hue = (r - g) / diff + c(modal ? 1314508 : 1314408); + } else { + hue = light; + } + + saturation = diff / den; + hue /= six; + } + + return new float[]{hue, saturation, light}; + } + + private static strictfp float clamp(float v) { + return v < 0.0F ? 0.0F : RenderMath.min(c(2838936), v); + } + + private static strictfp float wrap(float v) { + float one = c(2838936); + if (v < 0.0F) { + v += one; + } + + if (one < v) { + v += c(2838948); + } + + return v; + } + + private static strictfp float channel(float h, float high, float low) { + if (c(2838952) > h) { + return (high - low) * h * c(2838960) + low; + } else if (c(2838940) > h) { + return high; + } else { + return c(2838956) > h ? (c(2838956) - h) * (high - low) * c(2838960) + low : low; + } + } + + public static strictfp float[] hsl(float hue, float saturation, float light, int alpha) { + hue = FloatNumeric.remainder(hue, c(2838936)); + if (hue < 0.0F) { + hue += c(2838936); + } + + saturation = clamp(saturation); + light = clamp(light); + float high = c(2838940) >= light ? (saturation + c(2838936)) * light : saturation + light - light * saturation; + float low = light + light - high; + return new float[]{ + clamp(channel(wrap(c(2838944) + hue), high, low)), + clamp(channel(wrap(hue), high, low)), + clamp(channel(wrap(hue + c(2838964)), high, low)), + (float)(alpha & 0xFF) / c(2838968) + }; + } + + public static strictfp float floor(float value) { + int bits = Float.floatToRawIntBits(value); + int exponent = bits >>> 23 & 0xFF; + if (exponent >= 150) { + return value; + } else if (exponent >= 127) { + int keep = -1 << (22 - exponent & 31); + int discard = ~keep; + return (bits & discard) == 0 ? value : Float.intBitsToFloat(bits + (-(bits >>> 31) & discard) & keep); + } else if (bits >= 0) { + return 0.0F; + } else { + return value == 0.0F ? value : c(2868916); + } + } + + public interface Filter { + void append(StringBuilder var1, int var2); + } + + public static final strictfp class Layout { + public RenderMath.Rect rect; + public RenderMath.Rect clip; + public float spacing; + public float inset; + public float y; + public float x; + public int columns = 1; + public int count; + public boolean scissor; + final RenderMath.Rect[] cache = new RenderMath.Rect[4]; + + Layout(RenderMath.Rect r, float spacing, float inset) { + this.rect = r; + this.spacing = spacing; + this.inset = inset; + this.x = r.x; + this.y = r.y; + } + + private strictfp void flush(float initial) { + if (this.count != 0) { + int last = this.count - 1; + RenderMath.Rect p = this.cache[last & 3]; + float bottom = p.y + p.height; + float result = initial; + + for (int i = last - last % this.columns; i <= last; i++) { + result = RenderMath.max(bottom, result); + } + + if (result != initial) { + this.y = result + this.spacing; + } + } + } + + public strictfp void columns(int requested) { + this.flush(GuiMath.c(1312804)); + this.columns = requested == 0 ? 1 : Math.min(4, requested); + this.count = 0; + } + + public strictfp void autoColumns(float width) { + this.flush(GuiMath.c(1312808)); + this.columns = NumericMath.truncateInt((this.rect.width + this.spacing) / (width + this.spacing)); + this.columns = this.columns == 0 ? 1 : Math.min(4, this.columns); + this.count = 0; + } + + public strictfp RenderMath.Rect next(float height) { + int current = this.count++; + RenderMath.Rect previous = current >= this.columns ? this.cache[current - this.columns & 3] : null; + float nx; + float ny; + float w; + if (current % this.columns != 0) { + RenderMath.Rect left = this.cache[current - 1 & 3]; + nx = left.x + left.width + this.spacing; + w = left.width; + ny = current >= this.columns ? this.spacing + (previous.y + previous.height) : this.y; + } else { + nx = this.x; + if (current < this.columns) { + ny = this.y; + w = (this.rect.width - (float)(this.columns - 1) * this.spacing) / (float)this.columns; + } else { + ny = previous.y + previous.height + this.spacing; + w = previous.width; + } + } + + RenderMath.Rect raw = new RenderMath.Rect(nx, ny, w, height); + this.cache[current & 3] = raw; + return GuiMath.rounded(raw); + } + + public strictfp float end() { + this.flush(GuiMath.c(1312800)); + return this.spacing + this.spacing + (this.y - this.rect.y); + } + } + + public static final strictfp class Runtime { + public int mode; + public int modal; + public int selected; + public boolean down; + public boolean consumed; + public boolean modifier; + public boolean closeRequested; + public boolean modalDrawing; + public boolean submitted; + public float mouseX; + public float mouseY; + public float rawX; + public float rawY; + public float scroll; + public float scrollMaximum; + public float fade; + public float selectedAnimation; + public float modalProgress; + public float modalHeight; + public float tooltipProgress; + public double stamp; + public double modalStamp; + public double profileStamp; + public Object identity; + public GuiMath.Filter filter; + public IntConsumer binding; + public Consumer textCompletion; + public Runnable completion; + public final StringBuilder text = new StringBuilder(); + public String title; + public String prompt; + public float[] rgb; + public float[] hsl; + public final float[][] history = new float[8][3]; + public int historyIndex; + public List options = Collections.emptyList(); + public final List matches = new ArrayList<>(); + public int overflow; + public double searchStamp; + public final Deque layouts = new ArrayDeque<>(); + public int contentBottom; + public boolean[] sliderActive = new boolean[3]; + public boolean profileActionsConfirmed; + private Consumer selection; + + public strictfp void start(double now) { + this.fade = 0.0F; + this.stamp = now; + } + + public strictfp GuiMath.Layout push(RenderMath.Rect input, float spacing, float inset, boolean scissor) { + RenderMath.Rect r = input; + if (!this.layouts.isEmpty()) { + RenderMath.Rect parent = this.layouts.peek().rect; + float x = parent.x > input.x ? parent.x : input.x; + float y = parent.y > input.y ? parent.y : input.y; + float w = input.width; + float h = input.height; + if (w + x > parent.x + parent.width) { + w = parent.x + parent.width - x; + if (0.0F > w) { + w = 0.0F; + } + } + + if (h + y > parent.y + parent.height) { + h = parent.y + parent.height - y; + if (0.0F > h) { + h = 0.0F; + } + } + + r = new RenderMath.Rect(x, y, w, h); + } + + GuiMath.Layout l = new GuiMath.Layout(r.inset(inset), spacing, inset); + l.scissor = scissor; + if (scissor) { + l.clip = GuiMath.rounded(input).inset(spacing); + } + + this.layouts.push(l); + return l; + } + + public strictfp float pop() { + GuiMath.Layout l = this.layouts.pop(); + float height = l.end(); + if (l.y > (float)this.contentBottom) { + this.contentBottom = NumericMath.truncateInt(l.y); + } + + return height; + } + + public strictfp void resetLayout() { + this.layouts.clear(); + this.contentBottom = 0; + } + + public strictfp boolean hover(RenderMath.Rect r) { + return (this.modal == 0 || this.modalDrawing) && r.contains(this.mouseX, this.mouseY) && (this.mode == 0 || this.mode == 3); + } + + public strictfp boolean click(RenderMath.Rect r) { + if (this.hover(r) && this.down && !this.consumed) { + this.consumed = true; + return true; + } else { + return false; + } + } + + public strictfp void finishFrame() { + if (this.down && !this.consumed) { + this.consumed = true; + } + + this.consumed = this.down; + } + + public strictfp void activateBinding(Object id, IntConsumer callback) { + this.mode = 1; + this.identity = id; + this.binding = callback; + } + + public strictfp void activateText(Object id, GuiMath.Filter callback) { + if ((this.mode & -2) != 2 || this.identity != id) { + this.mode = 2; + this.text.setLength(0); + this.submitted = false; + this.identity = id; + this.filter = callback; + } + } + + public strictfp boolean textActive(Object id) { + return (this.mode & -2) == 2 && this.identity == id; + } + + public strictfp void releaseText() { + if (this.mode == 2) { + this.mode = 3; + } + } + + public strictfp String takeText() { + if ((this.mode & -2) == 2 && this.submitted) { + this.mode = 0; + this.submitted = false; + return this.text.toString(); + } else { + return null; + } + } + + public strictfp void clearInteraction() { + this.mode = 0; + this.down = false; + } + + public strictfp boolean input(int kind, int key, int x, int y, float wheel, boolean pressed, byte[] utf8) { + if (kind == 1) { + this.rawX = (float)x; + this.rawY = (float)y; + return false; + } else if (kind == 3) { + if (this.modal == 0) { + this.scroll = wheel * GuiMath.c(1312880) + this.scroll; + } + + return false; + } else if (kind != 2) { + return false; + } else { + if (pressed) { + if ((this.mode & -2) == 2) { + if (key == 1 && this.mode != 3) { + this.mode = 0; + return true; + } + + if (key == 83) { + if (this.text.length() > 0) { + this.text.setLength(this.text.length() - 1); + } + + return true; + } + + if (key == 85) { + if (this.text.length() > 0) { + this.submitted = true; + } + + return true; + } + + if (key == 87) { + this.mode = 0; + return true; + } + + if (key != 1) { + for (int i = 0; i < Math.min(4, utf8.length) && utf8[i] != 0; i++) { + this.filter.append(this.text, utf8[i] & 255); + } + + return true; + } + } else { + if (this.mode == 1) { + this.binding.accept(key != 1 && key != 87 ? key : 0); + this.mode = 0; + return true; + } + + if (this.mode == 0 && this.modal != 0 && key == 87) { + this.finishModal(true); + return true; + } + } + } + + if (key == 100 || key == 101) { + this.modifier = pressed; + } else if (key == 1) { + this.down = pressed; + } + + return false; + } + } + + public strictfp long inputWord(long incomingSavedRsi, long callerStateWord, int kind, int key, int x, int y, float wheel, boolean pressed, byte[] utf8) { + long saved = incomingSavedRsi; + if (kind == 2 && pressed && Integer.compareUnsigned(this.mode, 1) <= 0) { + saved = callerStateWord; + } + + return this.input(kind, key, x, y, wheel, pressed, utf8) ? saved & 4294967040L | 1L : 0L; + } + + public strictfp void beginText(String title, Object user, GuiMath.Filter filter, Consumer callback, double now) { + this.finishModal(true); + this.modal = 1; + this.title = title; + this.modalStamp = now; + this.modalProgress = this.modalHeight = 0.0F; + this.textCompletion = callback; + this.completion = () -> callback.accept(null); + this.activateText(user, filter); + } + + public strictfp void beginPrompt(String message, Runnable callback, double now) { + this.finishModal(true); + this.modal = 3; + this.title = RenderConstants.text(1314628); + this.prompt = GuiMath.clip(message, 100); + this.completion = callback; + this.modalStamp = now; + this.modalProgress = this.modalHeight = 0.0F; + } + + public strictfp void beginColor(float[] color, Consumer callback, double now) { + this.beginColor("Color", color, callback, now); + } + + public strictfp void beginColor(String label, float[] color, Consumer callback, double now) { + this.finishModal(true); + this.modal = 2; + this.title = label; + this.rgb = (float[])color.clone(); + this.hsl = GuiMath.rgbToHsl(this.rgb, false, false); + this.completion = () -> callback.accept((float[])this.rgb.clone()); + this.modalStamp = now; + this.modalProgress = this.modalHeight = 0.0F; + Arrays.fill(this.sliderActive, false); + } + + public strictfp void beginOptions(String title, List candidates, Consumer callback, double now) { + this.finishModal(true); + this.modal = 4; + this.title = title; + this.options = new ArrayList<>(candidates); + this.completion = () -> callback.accept(null); + this.selection = callback; + this.modalStamp = now; + this.modalProgress = this.modalHeight = 0.0F; + this.matches.clear(); + this.overflow = 0; + this.searchStamp = 0.0; + this.activateText(this, GuiMath::catalogFilter); + this.releaseText(); + } + + public strictfp void choose(int index) { + this.selection.accept(index); + this.finishModal(false); + } + + public strictfp void finishModal(boolean apply) { + this.mode = 0; + int old = this.modal; + if ((old == 1 || old == 2 || old == 4) && apply && this.completion != null) { + this.completion.run(); + } + + if (old == 2 && this.rgb != null) { + boolean found = false; + + for (int back = 8; back > 0; back--) { + int index = this.historyIndex >= back ? this.historyIndex - back : this.historyIndex + 8 - back; + float[] p = this.history[index]; + if (this.rgb[0] == p[0] && this.rgb[1] == p[1] && this.rgb[2] == p[2]) { + found = true; + break; + } + } + + if (!found) { + this.historyIndex = this.historyIndex >= 1 ? this.historyIndex - 1 : 7; + this.history[this.historyIndex] = (float[])this.rgb.clone(); + } + } + + if (old == 4) { + this.matches.clear(); + this.overflow = 0; + } + + if (old != 0) { + this.modal = 0; + } + } + + public strictfp void confirmPrompt() { + if (this.completion != null) { + this.completion.run(); + } + + this.finishModal(false); + } + + public strictfp void submitModalText() { + String s = this.takeText(); + if (s != null) { + this.textCompletion.accept(s); + this.finishModal(false); + } + } + + public strictfp void filterOptions(double now) { + if (!(GuiMath.d(1314512) > now - this.searchStamp)) { + this.matches.clear(); + this.overflow = 0; + byte[] search = GuiMath.bytes(this.text.toString()); + + for (int row = 0; row < this.options.size(); row++) { + byte[] candidate = GuiMath.bytes(this.options.get(row)); + if (candidate.length >= search.length && GuiMath.substring(candidate, search)) { + if (this.matches.size() >= 30) { + this.overflow++; + } else { + this.matches.add(row); + } + } + } + + this.searchStamp = now; + } + } + + public strictfp boolean colorSlider(RenderMath.Rect r, int component, float inset) { + if (this.click(r)) { + this.sliderActive[component] = true; + } else { + if (!this.down) { + this.sliderActive[component] = false; + return false; + } + + if (!this.sliderActive[component]) { + return false; + } + } + + this.hsl[component] = RenderMath.clamp(0.0F, GuiMath.c(1314624), (this.mouseX - r.x - inset) / (r.width - 2.0F * inset)); + this.rgb = GuiMath.hsl(this.hsl[0], this.hsl[1], this.hsl[2], 255); + return true; + } + + public strictfp void hex(String hex) { + if (hex.length() > 5) { + for (int i = 0; i < 3; i++) { + int a = hex.charAt(2 * i) & 255; + int b = hex.charAt(2 * i + 1) & 255; + int high = a + ((byte)a >= 97 ? 169 : 208) & 0xFF; + int low = b + ((byte)b >= 97 ? 169 : 208) & 0xFF; + this.rgb[i] = (float)((double)(high << 4 | low) / GuiMath.d(1314552)); + } + } + + this.hsl = GuiMath.rgbToHsl(this.rgb, false, true); + } + + public strictfp void selectHistory(int index) { + this.rgb = (float[])this.history[index].clone(); + this.hsl = GuiMath.rgbToHsl(this.rgb, true, true); + } + + public strictfp float elapsed(double now) { + return (float)(now - this.stamp); + } + + public strictfp RenderMath.Rect beginFrame(float width, float height, float scale, boolean wide, double now) { + if (0.0F > this.scroll) { + this.scroll = 0.0F; + } else if (this.scroll > this.scrollMaximum) { + this.scroll = this.scrollMaximum; + } + + this.mouseX = this.rawX * (GuiMath.c(1312976) / scale); + this.mouseY = this.rawY * (GuiMath.c(1312976) / scale) + this.scroll; + float elapsed = this.elapsed(now); + this.fade = RenderMath.min(GuiMath.c(1312976), (float)((double)this.fade + (double)elapsed / GuiMath.d(1313008))); + float panelWidth = RenderMath.min(width, GuiMath.c(wide ? 1312964 : 1312968)); + float left = (width - panelWidth) * GuiMath.c(1312972); + this.resetLayout(); + RenderMath.Rect panel = new RenderMath.Rect(left, 0.0F, panelWidth, height); + this.push(panel, GuiMath.c(1313016), GuiMath.c(1313020), false).columns(1); + return panel; + } + + public strictfp void endFrame(float height, double now) { + this.scrollMaximum = RenderMath.max(0.0F, (float)this.contentBottom - height + GuiMath.c(1313020)); + this.finishFrame(); + this.stamp = now; + } + } + + public static final strictfp class Slider { + public boolean active; + public float animation; + public double stamp; + + public strictfp float update( + GuiMath.Runtime runtime, + Object id, + RenderMath.Rect track, + float value, + float min, + float max, + float step, + float displayScale, + boolean decimal, + double now + ) { + return this.update(runtime, id, track, track, value, min, max, step, displayScale, now); + } + + public strictfp float update( + GuiMath.Runtime runtime, + Object id, + RenderMath.Rect track, + RenderMath.Rect hit, + float value, + float min, + float max, + float step, + float displayScale, + double now + ) { + float fraction = RenderMath.clamp(0.0F, GuiMath.c(1313988), (value - min) / (max - min)); + this.animation = GuiMath.limited(this.animation, fraction, (float)((double)((float)(now - this.stamp)) / GuiMath.d(1313992))); + this.stamp = now; + return this.action(runtime, id, track, hit, value, min, max, step, displayScale); + } + + public strictfp float action( + GuiMath.Runtime runtime, Object id, RenderMath.Rect track, RenderMath.Rect hit, float value, float min, float max, float step, float displayScale + ) { + if (runtime.click(hit)) { + this.active = true; + if (runtime.modifier) { + runtime.activateText(id, GuiMath::numericFilter); + } + } else if (!runtime.down && !runtime.textActive(id)) { + this.active = false; + } + + if (!this.active) { + return value; + } else { + if (runtime.textActive(id)) { + String input = runtime.takeText(); + if (input == null) { + return value; + } + + value = GuiMath.parseNumber(input); + if (displayScale != 0.0F) { + value /= displayScale; + } + } else { + value = (max - min) * ((runtime.mouseX - track.x) / track.width) + min; + } + + if (step != 0.0F) { + value = FloatNumeric.round(value / step) * step; + } + + return min >= value ? min : (value >= max ? max : value); + } + } + } + + public static final strictfp class Toggle { + public float progress; + public double stamp; + + public strictfp boolean animate(boolean value, double now) { + double elapsed = (double)((float)(now - this.stamp)); + if (elapsed > GuiMath.d(1313856)) { + this.progress = value ? 1.0F : 0.0F; + } else if (value) { + if (GuiMath.c(1313872) > this.progress) { + this.progress = RenderMath.min((float)((double)this.progress + elapsed / GuiMath.d(1313856)), GuiMath.c(1313872)); + } + } else if (this.progress > 0.0F) { + this.progress = RenderMath.max((float)((double)this.progress + elapsed / GuiMath.d(1313864)), 0.0F); + } + + this.stamp = now; + return value; + } + + public strictfp float smooth() { + return RenderMath.smooth(this.progress); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiModuleList.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiModuleList.java new file mode 100644 index 0000000..89384db --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiModuleList.java @@ -0,0 +1,86 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.gui.settings.GuiModuleSettings; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import java.io.IOException; +import java.util.List; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; + +public final class GuiModuleList extends GuiScreen { + private final ModuleManager modules; + private ModuleCategory selected = ModuleCategory.COMBAT; + + public GuiModuleList(ModuleManager modules) { + this.modules = modules; + } + + public void initGui() { + this.buttonList.clear(); + int categoryWidth = Math.max(62, this.width / ModuleCategory.values().length); + int categoryId = 1000; + + for (ModuleCategory category : ModuleCategory.values()) { + this.buttonList.add(new GuiButton(categoryId++, category.ordinal() * categoryWidth, 20, categoryWidth, 20, category.getDisplayName())); + } + + List visible = this.modules.inCategory(this.selected); + int y = 58; + + for (int index = 0; index < visible.size(); index++) { + Module module = visible.get(index); + String state = module.isEnabled() ? "ON " : "OFF "; + this.buttonList.add(new GuiButton(2000 + index, this.width / 2 - 120, y, 240, 20, state + module.getName())); + y += 24; + } + } + + protected void actionPerformed(GuiButton button) throws IOException { + if (button.id >= 1000 && button.id < 1000 + ModuleCategory.values().length) { + this.selected = ModuleCategory.values()[button.id - 1000]; + this.initGui(); + } else { + if (button.id >= 2000) { + List visible = this.modules.inCategory(this.selected); + int index = button.id - 2000; + if (index >= 0 && index < visible.size()) { + try { + this.modules.toggle(visible.get(index)); + } catch (IllegalArgumentException var5) { + this.mc.displayGuiScreen(new GuiModuleSettings(this.modules, visible.get(index))); + return; + } + + this.initGui(); + } + } + } + } + + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + this.drawDefaultBackground(); + this.drawCenteredString(this.fontRendererObj, "Slinky Semantic 1.8.9", this.width / 2, 6, 16777215); + super.drawScreen(mouseX, mouseY, partialTicks); + this.drawCenteredString(this.fontRendererObj, "Right-click a module to edit its settings", this.width / 2, this.height - 18, 10526880); + } + + public boolean doesGuiPauseGame() { + return false; + } + + protected void mouseClicked(int x, int y, int button) throws IOException { + if (button == 1) { + for (GuiButton entry : this.buttonList) { + if (entry.id >= 2000 && entry.mousePressed(this.mc, x, y)) { + int index = entry.id - 2000; + this.mc.displayGuiScreen(new GuiModuleSettings(this.modules, this.modules.inCategory(this.selected).get(index))); + return; + } + } + } + + super.mouseClicked(x, y, button); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiPresentation.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiPresentation.java new file mode 100644 index 0000000..6af95ea --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiPresentation.java @@ -0,0 +1,284 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.numeric.FloatTrigonometry; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.function.IntConsumer; + +public final strictfp class GuiPresentation { + private final GuiPresentation.Metrics metrics; + private final boolean canvas; + private final Map keyWidths = new HashMap<>(); + + public GuiPresentation(GuiPresentation.Metrics metrics) { + this(metrics, false); + } + + public GuiPresentation(GuiPresentation.Metrics metrics, boolean canvas) { + this.metrics = Objects.requireNonNull(metrics); + this.canvas = canvas; + } + + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + private static strictfp double d(int at) { + return RenderConstants.d(at); + } + + private static strictfp int rgba(float r, float g, float b, float a) { + return (int)(a * 255.0F) << 24 | ((int)(r * 255.0F) & 0xFF) << 16 | ((int)(g * 255.0F) & 0xFF) << 8 | (int)(b * 255.0F) & 0xFF; + } + + private static strictfp int gray(float value) { + return rgba(value, value, value, 1.0F); + } + + public static strictfp float[] alignedAnchor(RenderMath.Rect r, int alignment) { + float x = r.x; + if (alignment == 2) { + x += r.width; + } else if (alignment != 0) { + x = (float)((double)r.width * d(1312824) + (double)x); + } + + float y = r.y + c(1312832); + y = (float)((double)r.height * d(1312824) + (double)y); + return new float[]{x, y}; + } + + public strictfp float text(DrawPlan plan, String text, RenderMath.Rect rect, int alignment, int style, float size, int color) { + float[] anchor = alignedAnchor(rect, alignment); + float advance = this.metrics.width(text, style, size); + float x = anchor[0]; + if (alignment == 2) { + x -= advance; + } else if (alignment != 0) { + x -= advance * (float)d(1312824); + } + + if (this.canvas) { + return plan.canvasText(text, anchor[0], anchor[1], color, size, (alignment == 0 ? 1 : (alignment == 2 ? 4 : 2)) | 16, style); + } else { + plan.text(text, x, anchor[1] - size * 0.5F, color, false, size); + return x + advance; + } + } + + public strictfp float moduleText( + GuiMath.Runtime state, + DrawPlan plan, + GuiPresentation.Expansion expansion, + boolean hasCallback, + String text, + RenderMath.Rect rect, + float font, + int normal, + int highlight + ) { + if (!hasCallback) { + return this.text(plan, text, rect, 0, 0, font, normal); + } else { + RenderMath.Rect expander = new RenderMath.Rect(rect.x, rect.y, rect.height, rect.height); + float spacing = c(1313312); + float textX = expander.x + expander.width + spacing; + float advance = this.metrics.width(text, 0, font); + RenderMath.Rect label = new RenderMath.Rect(textX, rect.y, advance, rect.height); + RenderMath.Rect combined = new RenderMath.Rect(rect.x, rect.y, expander.width + label.width + spacing, rect.height); + if (state.click(combined)) { + expansion.open = !expansion.open; + } + + boolean hovering = state.hover(combined); + this.text(plan, text, label, 0, 0, font, hovering ? highlight : normal); + float background = c(hovering ? 1313320 : 1313316); + plan.color(background, background, background, 1.0F).rect(expander.x, expander.y, expander.width, expander.height, c(1313324)); + RenderMath.Rect indicator = expander.inset(c(1313328)); + float foreground = c(hovering ? 1313336 : 1313332); + float half = c(1313340); + plan.color(foreground, foreground, foreground, 1.0F) + .lineWidth(c(1313344)) + .line(indicator.x, indicator.height * half + indicator.y, indicator.x + indicator.width, indicator.height * half + indicator.y); + if (!expansion.open) { + float cx = half * indicator.width + indicator.x; + plan.line(cx, indicator.y, cx, indicator.y + indicator.height); + } + + return combined.x + combined.width; + } + } + + public strictfp void binding( + GuiMath.Runtime state, DrawPlan plan, GuiPresentation.Binding record, RenderMath.Rect rectangle, float[] accent, boolean modeAllowed + ) { + float font = c(1313348); + boolean active = state.mode == 1 && state.identity == record.identity; + String label = active ? RenderConstants.text(1313462) : RenderModuleAccess.keyName(record.key); + float width; + if (active) { + width = NumericMath.ceiling(this.metrics.width(label, 1, font)); + } else { + Float cached = this.keyWidths.get(record.key); + width = cached == null ? 0.0F : cached; + if (width == 0.0F) { + width = NumericMath.ceiling(this.metrics.width(label, 1, font)); + this.keyWidths.put(record.key, width); + } + } + + RenderMath.Rect button = new RenderMath.Rect(rectangle.x, rectangle.y, width + font, rectangle.height); + float idle = c(1313356); + float[] base = record.key != 0 ? accent : new float[]{idle, idle, idle, 1.0F}; + plan.color(base[0], base[1], base[2], base[3] * c(1313352)).rect(button.x, button.y, button.width, button.height, c(1313360)); + int color = state.hover(button) ? gray(c(1313364)) : rgba(base[0], base[1], base[2], base[3]); + this.text(plan, label, button, 1, 1, font, color); + if (state.click(button)) { + state.activateBinding(record.identity, key -> { + record.key = key; + record.changed.accept(key); + }); + } + + if (record.key == 0) { + if (modeAllowed) { + record.hold = false; + } + } else if (modeAllowed) { + String toggleLabel = RenderConstants.text(1313477); + float toggleWidth = NumericMath.ceiling(this.metrics.width(toggleLabel, 1, font)); + RenderMath.Rect toggle = new RenderMath.Rect(button.x + button.width + c(1313360), button.y, toggleWidth + font, button.height); + if (record.hold || state.hover(rectangle)) { + float value = c(record.hold ? 1313368 : 1313356); + plan.color(value, value, value, c(1313352)).rect(toggle.x, toggle.y, toggle.width, toggle.height, c(1313360)); + this.text(plan, toggleLabel, toggle, 1, 1, font, gray(c(state.hover(toggle) ? 1313368 : 1313356))); + if (state.click(toggle)) { + record.hold = !record.hold; + } + } + } + } + + public static strictfp GuiPresentation.Icon icon(RenderMath.Rect rect, float[] atlasOrigins, int id, float textureWidth, float textureHeight) { + float sx = rect.width / c(1312816); + float sy = rect.height / c(1312816); + return new GuiPresentation.Icon(rect.x - atlasOrigins[id * 2] * sx, rect.y - atlasOrigins[id * 2 + 1] * sy, sx * textureWidth, sy * textureHeight); + } + + public static strictfp float caretAlpha(float frequency, double now) { + float phase = (float)((double)frequency * now); + float half = c(1312856); + return half + FloatTrigonometry.sine(phase) * half; + } + + public strictfp void caret(DrawPlan plan, RenderMath.Rect r, float[] color, float frequency, float width, double now) { + plan.color(color[0], color[1], color[2], color[3] * caretAlpha(frequency, now)).lineWidth(width).line(r.x, r.y, r.x, r.y + r.height); + } + + public strictfp void textEntry(GuiMath.Runtime state, DrawPlan plan, RenderMath.Rect r, int alignment, float font, double now) { + float advance = this.text(plan, state.text.toString(), r, alignment, 0, font, -1) + c(alignment == 1 ? 1314324 : 1314336); + float gray = c(alignment == 1 ? 1314328 : 1314340); + this.caret( + plan, new RenderMath.Rect(advance, r.y, r.width, r.height), new float[]{gray, gray, gray, 1.0F}, c(alignment == 1 ? 1314332 : 1314344), 1.0F, now + ); + } + + public strictfp void tooltip(DrawPlan plan, GuiPresentation.Tooltip state, float elapsed) { + if (!state.requested) { + state.progress = 0.0F; + } else { + state.progress = (float)((double)state.progress + (double)elapsed / d(1313136)); + plan.push().translate(state.x, state.y, 0.0F); + if (state.progress > c(1312976)) { + state.progress = 1.0F; + } else { + float smooth = RenderMath.smooth(state.progress); + plan.opacity(smooth).scale(smooth, smooth, 1.0F); + } + + float font = c(1313088); + float width = this.metrics.width(state.text, 0, font); + RenderMath.Rect toast = new RenderMath.Rect((float)((double)width * d(1313144) + d(1313152)), c(1313164), width + c(1313160), 20.0F); + float bg = c(1313168); + plan.color(bg, bg, bg, 1.0F).rect(toast.x, toast.y, toast.width, toast.height, c(1313076)); + this.text(plan, state.text, toast, 1, 0, font, gray(c(1313072))); + plan.pop(); + state.requested = false; + } + } + + public static strictfp float unsignedFloat(long value) { + if (value >= 0L) { + return (float)value; + } else { + long half = value >>> 1 | value & 1L; + float converted = (float)half; + return converted + converted; + } + } + + public static strictfp float categoryHeight(float height) { + long signed = NumericMath.truncateLong(height); + long adjusted = NumericMath.truncateLong(height - c(1313308)); + long sign = signed >> 63; + return unsignedFloat(signed | adjusted & sign); + } + + public static final strictfp class Binding { + public int key; + public boolean hold; + public final Object identity; + public final IntConsumer changed; + + public Binding(int key, boolean hold, Object identity, IntConsumer changed) { + this.key = key; + this.hold = hold; + this.identity = identity; + this.changed = changed; + } + } + + public static final class Expansion { + public boolean open; + } + + public static final strictfp class Icon { + public final float x; + public final float y; + public final float width; + public final float height; + + public Icon(float x, float y, float width, float height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + } + + public interface Metrics { + float width(String var1, int var2, float var3); + } + + public static final class Tooltip { + public String text; + public float x; + public float y; + public float progress; + public boolean requested; + + public strictfp void request(String text, int x, int y) { + byte[] bytes = text.getBytes(StandardCharsets.UTF_8); + this.text = new String(bytes, 0, Math.min(bytes.length, 100), StandardCharsets.UTF_8); + this.x = (float)x; + this.y = (float)y; + this.requested = true; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiWidgets.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiWidgets.java new file mode 100644 index 0000000..274e5e7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/GuiWidgets.java @@ -0,0 +1,491 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.IntConsumer; + +public final strictfp class GuiWidgets { + private final GuiPresentation view; + private final GuiPresentation.Tooltip tooltip; + private final GuiWidgets.Formatter formatter; + + public GuiWidgets(GuiPresentation view, GuiPresentation.Tooltip tooltip, GuiWidgets.Formatter formatter) { + this.view = Objects.requireNonNull(view); + this.tooltip = Objects.requireNonNull(tooltip); + this.formatter = Objects.requireNonNull(formatter); + } + + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + private static strictfp double d(int at) { + return RenderConstants.d(at); + } + + private static strictfp int gray(float value) { + int v = (int)(value * 255.0F); + return 0xFF000000 | (v & 0xFF) << 16 | (v & 0xFF) << 8 | v & 0xFF; + } + + private static strictfp int rgba(float[] color) { + return (int)(color[3] * 255.0F) << 24 + | ((int)(color[0] * 255.0F) & 0xFF) << 16 + | ((int)(color[1] * 255.0F) & 0xFF) << 8 + | (int)(color[2] * 255.0F) & 0xFF; + } + + private static strictfp RenderMath.Rect height(RenderMath.Rect rect, float h) { + return new RenderMath.Rect(rect.x, rect.y, rect.width, h); + } + + private strictfp void label(DrawPlan plan, String text, RenderMath.Rect rect, int shade, int size) { + this.view.text(plan, text, rect, 0, 0, c(size), gray(c(shade))); + } + + private static strictfp void solid(DrawPlan plan, float[] color) { + plan.color(color[0], color[1], color[2], color[3]); + } + + private static strictfp void stroke(DrawPlan plan, RenderMath.Rect rect, int shade, int width, int radius) { + float v = c(shade); + plan.color(v, v, v, 1.0F).lineWidth(c(width)).roundedStroke(rect.x, rect.y, rect.width, rect.height, c(radius)); + } + + public static strictfp float[] blend(float[] a, float[] b, float fraction) { + float amount = fraction < 0.0F ? 0.0F : RenderMath.min(c(2838932), fraction); + float complement = c(2838932) - amount; + float[] out = new float[4]; + + for (int i = 0; i < 4; i++) { + out[i] = complement * a[i] + amount * b[i]; + } + + return out; + } + + private static strictfp void circle(DrawPlan plan, float x, float y, float radius) { + plan.op("circle", x, y, radius); + } + + private static strictfp void close(DrawPlan plan, RenderMath.Rect rect, boolean hover, float normal, int red, int other, int inset) { + float r = hover ? c(red) : normal; + float g = hover ? c(other) : normal; + float amount = (float)((double)rect.height * d(inset)); + float left = rect.x + amount; + float top = rect.y + amount; + float right = rect.height + rect.x - amount; + float bottom = rect.y + rect.height - amount; + plan.color(r, g, g, 1.0F).line(left, top, right, bottom).line(right, top, left, bottom); + } + + private strictfp String formatted(String format, int defaultAddress, float scale, float... values) { + double[] args = new double[values.length]; + + for (int i = 0; i < args.length; i++) { + args[i] = (double)(scale != 0.0F ? scale * values[i] : values[i]); + } + + return this.formatter.format(format == null ? RenderConstants.text(defaultAddress) : format, args); + } + + private strictfp void tip(String text, float x, float y) { + this.tooltip.request(text, NumericMath.truncateInt(x), NumericMath.truncateInt(y)); + } + + public static strictfp boolean toggle( + GuiMath.Runtime state, DrawPlan plan, GuiMath.Toggle animation, RenderMath.Rect rectangle, boolean value, float[] accent, double now + ) { + animation.animate(value, now); + float amount = animation.smooth(); + float shade = c(state.hover(rectangle) ? 1313880 : 1313876); + float[] color = blend(new float[]{shade, shade, shade, 1.0F}, accent, amount); + solid(plan, color); + plan.rect(rectangle.x, rectangle.y, rectangle.width, rectangle.height, c(1313884)); + if (state.click(rectangle)) { + value = !value; + } + + RenderMath.Rect inset = rectangle.inset(c(1313888)); + float white = c(1313892); + float integerHeight = (float)NumericMath.truncateInt(inset.height); + float half = integerHeight * c(1313896); + float x = RenderMath.lerp(half + inset.x, inset.x + inset.width - half, amount); + float y = half + inset.y; + plan.color(white, white, white, 1.0F); + circle(plan, x, y, integerHeight); + return value; + } + + public strictfp boolean checkbox( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + GuiMath.Toggle animation, + boolean value, + float[] accent, + double now + ) { + RenderMath.Rect rect = layout.next(c(1313900)); + this.label(plan, text, rect, 1313904, 1313908); + return toggle(state, plan, animation, new RenderMath.Rect(rect.x + rect.width + c(1313912), rect.y, c(1313916), rect.height), value, accent, now); + } + + public strictfp void section(DrawPlan plan, GuiMath.Layout layout, String text) { + RenderMath.Rect rect = layout.next(c(1313920)); + this.label(plan, text, new RenderMath.Rect(rect.x, rect.y + c(1313924), rect.width, rect.height), 1313928, 1313932); + } + + public strictfp float number( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + String format, + Object id, + GuiMath.Slider animation, + float minimum, + float maximum, + float step, + float displayScale, + float value, + float[] accent, + double now + ) { + RenderMath.Rect rect = layout.next(c(1313936)); + this.label(plan, text, rect, 1313940, 1313944); + double half = (double)rect.width * d(1313952); + RenderMath.Rect track = new RenderMath.Rect((float)((double)rect.x + half), rect.y + c(1313948) + c(1313960), (float)(half + d(1313968)), 4.0F); + float shade = c(state.hover(rect) ? 1313980 : 1313976); + float radius = c(1313984); + plan.color(shade, shade, shade, 1.0F).rect(track.x, track.y, track.width, track.height, radius); + float fraction = RenderMath.clamp(0.0F, c(1313988), (value - minimum) / (maximum - minimum)); + float ratio = (float)((double)((float)(now - animation.stamp)) / d(1313992)); + animation.animation = GuiMath.limited(animation.animation, fraction, ratio); + animation.stamp = now; + float end = RenderMath.lerp(track.x, track.x + track.width, animation.animation); + solid(plan, accent); + plan.rect(track.x, track.y, end - track.x, 4.0F, radius); + circle(plan, end, radius + track.y, c(1314000)); + value = animation.action(state, id, track, rect, value, minimum, maximum, step, displayScale); + if (animation.active || state.hover(rect) && !state.down) { + this.tip(state.textActive(id) ? state.text.toString() : this.formatted(format, 1314387, displayScale, value), end, track.y); + } + + return value; + } + + public strictfp float[] range( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + String format, + String pairFormat, + Object lowId, + Object highId, + GuiWidgets.Range animation, + float minimum, + float maximum, + float step, + float displayScale, + float lower, + float upper, + float[] accent, + double now + ) { + RenderMath.Rect rect = layout.next(c(1314024)); + this.label(plan, text, rect, 1314028, 1314032); + double half = (double)rect.width * d(1314040); + RenderMath.Rect track = new RenderMath.Rect((float)((double)rect.x + half), rect.y + c(1314036) + c(1314048), (float)(half + d(1314056)), 4.0F); + float shade = c(state.hover(rect) ? 1314068 : 1314064); + float radius = c(1314072); + plan.color(shade, shade, shade, 1.0F).rect(track.x, track.y, track.width, 4.0F, radius); + float ratio = (float)((double)((float)(now - animation.stamp)) / d(1314080)); + float difference = maximum - minimum; + animation.lower.animation = GuiMath.limited(animation.lower.animation, RenderMath.clamp(0.0F, c(1314076), (lower - minimum) / difference), ratio); + animation.upper.animation = GuiMath.limited(animation.upper.animation, RenderMath.clamp(0.0F, c(1314076), (upper - minimum) / difference), ratio); + animation.stamp = now; + float lowX = RenderMath.lerp(track.x, track.x + track.width, animation.lower.animation); + float highX = RenderMath.lerp(track.x, track.x + track.width, animation.upper.animation); + solid(plan, accent); + plan.rect(lowX, track.y, highX - lowX, 4.0F, radius); + circle(plan, lowX, radius + track.y, c(1314088)); + circle(plan, highX, radius + track.y, c(1314088)); + RenderMath.Rect[] hits = rangeHits(track, rect, lowX, highX); + lower = animation.lower.action(state, lowId, track, hits[0], lower, minimum, maximum, step, displayScale); + if (animation.lower.active) { + if (lower > upper) { + upper = lower; + } + + this.tip(state.textActive(lowId) ? state.text.toString() : this.formatted(format, 1314387, displayScale, lower), lowX, track.y); + } else { + upper = animation.upper.action(state, highId, track, hits[1], upper, minimum, maximum, step, displayScale); + if (animation.upper.active) { + if (lower > upper) { + lower = upper; + } + + this.tip(state.textActive(highId) ? state.text.toString() : this.formatted(format, 1314387, displayScale, upper), highX, track.y); + } else if (state.hover(rect) && (!state.down || animation.lower.active || animation.upper.active)) { + float sum = hits[0].x + hits[0].width + hits[1].x; + this.tooltip + .request( + this.formatted(pairFormat, 1314348, displayScale, lower, upper), + NumericMath.truncateInt((double)sum * d(1314040)), + NumericMath.truncateInt(track.y) + ); + } + } + + return new float[]{lower, upper}; + } + + public static strictfp RenderMath.Rect[] rangeHits(RenderMath.Rect track, RenderMath.Rect row, float lowX, float highX) { + float center = (float)NumericMath.truncateInt((double)(lowX + highX) * d(1314040)); + float distance = center - track.x; + float extra = c(1314096); + return new RenderMath.Rect[]{ + new RenderMath.Rect(c(1314092) + track.x, row.y, distance + extra, row.height), + new RenderMath.Rect(center, row.y, track.width - distance + extra, row.height) + }; + } + + public strictfp int choice( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + GuiWidgets.Choice animation, + List options, + int[] current, + int flag, + float[] accent, + double now + ) { + return this.choice(state, plan, layout, text, animation, options, current, flag, accent, now, index -> current[0] = index); + } + + public strictfp int choice( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + GuiWidgets.Choice animation, + List options, + int[] current, + int flag, + float[] accent, + double now, + IntConsumer accept + ) { + int count = options.size(); + float target = animation.open ? (float)Integer.toUnsignedLong(count * 28) : c(1314104); + float ratio = (float)((double)((float)(now - animation.stamp)) / d(1314112)); + animation.height = GuiMath.limited(animation.height, target, ratio); + animation.stamp = now; + RenderMath.Rect rect = layout.next(animation.height); + this.label(plan, text, height(rect, 20.0F), 1314120, 1314124); + RenderMath.Rect selection = new RenderMath.Rect((float)((double)rect.width * d(1314128) + (double)rect.x), rect.y, rect.width * c(1314136), rect.height); + stroke(plan, selection, 1314140, 1314144, 1314148); + float shade = c(1314140); + if (animation.open) { + if (count == 0) { + return 0; + } else { + float rowHeight = selection.height / (float)Integer.toUnsignedLong(count); + boolean selected = false; + + for (int index = 0; index < count; index++) { + RenderMath.Rect row = new RenderMath.Rect(selection.x, (float)index * rowHeight + selection.y, selection.width, rowHeight); + boolean hover = state.hover(row); + int inverted = (flag ^ 1) & 0xFF; + float[] color; + if (index == current[0]) { + color = accent; + } else { + int at = hover ? (((index == 0 ? 1 : 0) | inverted) != 0 ? 1314168 : 1314176) : (((index != 0 ? 1 : 0) | inverted) != 0 ? 1314120 : 1314172); + float value = c(at); + color = new float[]{value, value, value, 1.0F}; + } + + this.view.text(plan, options.get(index), row, 1, 0, c(1314124), rgba(color)); + if (!selected && state.click(row)) { + current[0] = index; + animation.open = false; + selected = true; + } + + if (index != 0) { + plan.color(shade, shade, shade, c(1314136)).line(selection.x, row.y, selection.x + selection.width, row.y); + } + } + + return selected ? 1 : 0; + } + } else { + boolean hoverx = state.hover(selection); + if (((flag ^ 1 | (count < 6 ? 1 : 0)) & 0xFF) == 0 && current[0] != 0) { + RenderMath.Rect clear = new RenderMath.Rect(selection.width - selection.height + selection.x, selection.y, selection.height, selection.height); + boolean clearHover = state.hover(clear); + close(plan, clear, clearHover, shade, 1314152, 1314156, 1314160); + if (state.click(clear)) { + current[0] = 0; + } + + hoverx = hoverx && !clearHover; + } + + int at = flag != 0 && current[0] == 0 ? (hoverx ? 1314176 : 1314172) : (hoverx ? 1314168 : 1314120); + this.view.text(plan, options.get(current[0]), selection, 1, 0, c(1314124), gray(c(at))); + if (state.click(selection)) { + if (count < 6) { + animation.open = true; + } else { + state.beginOptions(RenderConstants.text(1314362), options.subList(1, count), index -> { + if (index != null) { + current[0] = index + 1; + accept.accept(current[0]); + } + }, now); + } + } + + return 0; + } + } + + public strictfp boolean color( + GuiMath.Runtime state, DrawPlan plan, GuiMath.Layout layout, String text, float[] current, Consumer accept, double now + ) { + RenderMath.Rect rect = layout.next(c(1314184)); + this.label(plan, text, height(rect, 20.0F), 1314188, 1314192); + RenderMath.Rect preview = new RenderMath.Rect(rect.x + rect.width + c(1314196), rect.y, c(1314200), 20.0F); + float radius = preview.height * 0.5F; + plan.color(current[0], current[1], current[2], 1.0F).rect(preview.x, preview.y, preview.width, preview.height, radius); + plan.color(0.33F, 0.33F, 0.33F, 1.0F).lineWidth(1.0F).roundedStroke(preview.x, preview.y, preview.width, preview.height, radius); + RenderMath.Rect hit = new RenderMath.Rect((float)((double)rect.width * d(1314216) + (double)rect.x), rect.y, rect.width * c(1314224), rect.height); + boolean clicked = state.click(hit); + if (clicked) { + state.beginColor(text, current, accept, now); + } + + return clicked; + } + + public strictfp boolean list( + GuiMath.Runtime state, + DrawPlan plan, + GuiMath.Layout layout, + String text, + String title, + GuiMath.Filter filter, + int kind, + GuiWidgets.ListData list, + List suggestions, + double now + ) { + long count = list.size(); + long rows = count + 1L; + float rowCount = GuiPresentation.unsignedFloat(rows); + RenderMath.Rect rect = layout.next(GuiPresentation.unsignedFloat(rows * 28L)); + this.label(plan, text, height(rect, 20.0F), 1314232, 1314236); + RenderMath.Rect selection = new RenderMath.Rect((float)((double)rect.width * d(1314240) + (double)rect.x), rect.y, rect.width * c(1314248), rect.height); + stroke(plan, selection, 1314252, 1314256, 1314260); + float rowHeight = selection.height / rowCount; + float shade = c(1314252); + long removed = -1L; + boolean result = false; + + for (long index = 0L; Long.compareUnsigned(index, count) < 0; index++) { + RenderMath.Rect row = new RenderMath.Rect(selection.x, GuiPresentation.unsignedFloat(index) * rowHeight + selection.y, selection.width, rowHeight); + String name = list.name(index); + byte[] bytes = name.getBytes(StandardCharsets.UTF_8); + String shown = new String(bytes, 0, Math.min(bytes.length, 20), StandardCharsets.UTF_8); + this.view.text(plan, shown, row, 1, 0, c(1314236), gray(c(1314232))); + if (kind == 1) { + RenderMath.Rect preview = new RenderMath.Rect(row.x, row.y, row.height, row.height).inset(c(1314264)); + float[] rgb = list.color(index); + plan.color(rgb[0], rgb[1], rgb[2], 1.0F).rect(preview.x, preview.y, preview.width, preview.height, c(1314268)); + if (state.click(preview)) { + long selected = index; + state.beginColor(name, rgb, value -> list.color(selected, value), now); + result = true; + } + } + + RenderMath.Rect remove = new RenderMath.Rect(row.width - row.height + row.x, row.y, row.height, row.height); + close(plan, remove, state.hover(remove), shade, 1314272, 1314276, 1314280); + if (state.click(remove)) { + removed = index; + } + + plan.color(shade, shade, shade, c(1314248)).line(row.x, row.y + row.height, row.x + row.width, row.y + row.height); + } + + if (removed != -1L) { + list.remove(removed); + result = true; + } + + RenderMath.Rect add = new RenderMath.Rect(selection.x, GuiPresentation.unsignedFloat(count) * rowHeight + selection.y, selection.width, rowHeight); + this.view.text(plan, RenderConstants.text(1314374), add, 1, 0, c(1314236), gray(c(state.hover(add) ? 1314292 : 1314288))); + if (state.click(add)) { + if (suggestions != null) { + state.beginOptions(title, suggestions, index -> { + if (index != null) { + list.add(suggestions.get(index), new float[]{c(1314296), 0.0F, 0.0F}); + } + }, now); + } else { + state.beginText(title, list, filter, value -> { + if (value != null) { + list.add(value, new float[]{c(1314300), 0.0F, 0.0F}); + } + }, now); + } + + result = true; + } + + return result; + } + + public static final class Choice { + public boolean open; + public float height; + public double stamp; + } + + public interface Formatter { + String format(String var1, double... var2); + } + + public interface ListData { + long size(); + + String name(long var1); + + float[] color(long var1); + + void color(long var1, float[] var3); + + void add(String var1, float[] var2); + + void remove(long var1); + } + + public static final class Range { + public final GuiMath.Slider lower = new GuiMath.Slider(); + public final GuiMath.Slider upper = new GuiMath.Slider(); + public double stamp; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/HoldActivation.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/HoldActivation.java new file mode 100644 index 0000000..a408df9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/HoldActivation.java @@ -0,0 +1,64 @@ +package dev.slinky.client.gui; + +public final class HoldActivation { + public static final double ACTION_SECONDS = 1.0; + private Object identity; + private double start; + private boolean fired; + private boolean seen; + private float progress; + + public void beginFrame() { + this.seen = false; + } + + public boolean update(Object target, boolean hovering, boolean down, boolean available, boolean canStart, double now) { + if (this.identity != null && this.identity.equals(target)) { + this.seen = true; + } + + if (available && hovering && down) { + if (this.identity == null || !this.identity.equals(target)) { + if (!canStart) { + return false; + } + + this.identity = target; + this.start = now; + this.fired = false; + } + + this.seen = true; + this.progress = (float)Math.max(0.0, Math.min(1.0, (now - this.start) / 1.0)); + if (!(this.progress < 1.0F) && !this.fired) { + this.fired = true; + return true; + } else { + return false; + } + } else { + if (this.identity != null && this.identity.equals(target)) { + this.reset(); + } + + return false; + } + } + + public float progress(Object target) { + return this.identity != null && this.identity.equals(target) ? this.progress : 0.0F; + } + + public void endFrame() { + if (!this.seen) { + this.reset(); + } + } + + public void reset() { + this.identity = null; + this.progress = 0.0F; + this.fired = false; + this.seen = false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/RenderModuleAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/RenderModuleAccess.java new file mode 100644 index 0000000..be3ba38 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/RenderModuleAccess.java @@ -0,0 +1,45 @@ +package dev.slinky.client.gui; + +import dev.slinky.client.input.KeyState; +import dev.slinky.module.Module; +import java.util.Objects; +import java.util.function.BooleanSupplier; +import java.util.function.IntFunction; + +public final class RenderModuleAccess { + private static volatile IntFunction keys = KeyState::displayName; + private static volatile BooleanSupplier guiInteraction = () -> false; + + public static int category(Module module) { + return module.metadataCategory(); + } + + public static int observedFlags(Module module) { + return module.descriptorFlags(); + } + + public static String status(Module module) { + return module.statusText(); + } + + public static String keyName(int key) { + return keys.apply(key); + } + + public static IntFunction bindKeyNames(IntFunction adapter) { + IntFunction previous = keys; + keys = Objects.requireNonNull(adapter); + return previous; + } + + public static boolean guiInteractionRequested() { + return guiInteraction.getAsBoolean(); + } + + public static void bindGuiInteraction(BooleanSupplier query) { + guiInteraction = Objects.requireNonNull(query); + } + + private RenderModuleAccess() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileIcons.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileIcons.java new file mode 100644 index 0000000..b4f12e9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileIcons.java @@ -0,0 +1,67 @@ +package dev.slinky.client.gui.profile; + +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; + +public final class ProfileIcons { + private static final byte[] COVERAGE = coverage(); + private static final int TEXTURE = CanvasFonts.allocateTextureIdentity(); + + private static byte[] coverage() { + byte[] result = new byte[6400]; + + try (InputStream input = Platform.resource("/assets/slinkysemantic/profile-icon-coverage.bin")) { + if (input == null) { + throw new IOException("Profile icon coverage is missing"); + } else { + int position = 0; + + while (position < result.length) { + int count = input.read(result, position, result.length - position); + if (count < 0) { + throw new IOException("Incomplete profile icon atlas"); + } + + position += count; + } + + return result; + } + } catch (IOException var15) { + throw new IllegalStateException("Cannot load profile icons", var15); + } + } + + public static void draw(DrawPlan plan, RenderMath.Rect button, int action, boolean enabled, boolean hover) { + float u0 = (float)action / 4.0F; + float u1 = (float)(action + 1) / 4.0F; + float x = button.x; + float y = button.y; + float right = x + button.width; + float bottom = y + button.height; + int color = action == 3 ? (!enabled ? -8901331 : (hover ? -1089697 : -2275513)) : (!enabled ? -11119018 : (hover ? -2368549 : -6710887)); + plan.alphaSprite( + TEXTURE, + 160, + 40, + COVERAGE, + Arrays.asList( + new float[]{x, y, u0, 0.0F}, + new float[]{right, bottom, u1, 1.0F}, + new float[]{right, y, u1, 0.0F}, + new float[]{x, y, u0, 0.0F}, + new float[]{x, bottom, u0, 1.0F}, + new float[]{right, bottom, u1, 1.0F} + ), + color + ); + } + + private ProfileIcons() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileMath.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileMath.java new file mode 100644 index 0000000..6cb7a0a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileMath.java @@ -0,0 +1,127 @@ +package dev.slinky.client.gui.profile; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.client.numeric.FixedWidth; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +public final class ProfileMath { + private static final Map LABELS = labels(); + private static final ProfileMath.Formatter JAVA_FORMAT = (pattern, value, capacity) -> { + String format = new String(pattern, StandardCharsets.UTF_8).replace("%lld", "%d"); + byte[] result = String.format(Locale.ROOT, format, value).getBytes(StandardCharsets.UTF_8); + return Arrays.copyOf(result, Math.min(result.length, capacity - 1)); + }; + + private ProfileMath() { + } + + private static Map labels() { + Map result = new HashMap<>(); + InputStream stream = Platform.resource("/assets/slinkysemantic/ProfileLabels.json"); + if (stream == null) { + throw new IllegalStateException("Missing immutable profile labels"); + } else { + try (Reader reader = new InputStreamReader(stream, "UTF-8")) { + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = element.getAsJsonObject(); + String hex = row.get("bytes").getAsString(); + byte[] bytes = new byte[hex.length() / 2]; + + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte)Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16); + } + + result.put(row.get("rva").getAsInt(), bytes); + } + + return result; + } catch (IOException var20) { + throw new ExceptionInInitializerError(var20); + } + } + } + + public static long ageSeconds(long nowFileTime, long modifiedFileTime) { + return Long.compareUnsigned(modifiedFileTime - 1L, nowFileTime) >= 0 + ? -1L + : FixedWidth.unsignedMultiplyHigh(nowFileTime - modifiedFileTime, -2972493582642298179L) >>> 23; + } + + public static long days(long ageSeconds) { + long high = FixedWidth.signedMultiplyHigh(ageSeconds, 1749024623285053783L); + return (high >> 13) + (high >>> 63); + } + + public static byte[] dateBytes(long ageSeconds, ProfileMath.Formatter formatter) { + byte[] buffer = new byte[32]; + if (ageSeconds == -1L) { + System.arraycopy(LABELS.get(1310590), 0, buffer, 0, 16); + byte[] end = new byte[]{116, 105, 111, 110, 32, 100, 97, 116}; + System.arraycopy(end, 0, buffer, 16, end.length); + } else { + long day = days(ageSeconds); + if (day == 1L) { + System.arraycopy(LABELS.get(1310641), 0, buffer, 0, 16); + buffer[16] = 103; + buffer[17] = 111; + buffer[18] = 46; + } else if (day == 0L) { + System.arraycopy(LABELS.get(1310665), 0, buffer, 0, 16); + } else { + byte[] text = formatter.format(cString(LABELS.get(1310617)), day, 25); + System.arraycopy(text, 0, buffer, 0, Math.min(text.length, 24)); + } + } + + return buffer; + } + + public static String date(long ageSeconds) { + return new String(cString(dateBytes(ageSeconds, JAVA_FORMAT)), StandardCharsets.UTF_8); + } + + private static byte[] cString(byte[] text) { + int length = 0; + + while (length < text.length && text[length] != 0) { + length++; + } + + return Arrays.copyOf(text, length); + } + + public static int compareNames(String left, String right) { + byte[] a = left.getBytes(StandardCharsets.UTF_8); + byte[] b = right.getBytes(StandardCharsets.UTF_8); + int i = 0; + + while (true) { + int x = i < a.length ? a[i] & 255 : 0; + int y = i < b.length ? b[i] & 255 : 0; + if (x != y) { + return x - y; + } + + if (x == 0) { + return 0; + } + + i++; + } + } + + public interface Formatter { + byte[] format(byte[] var1, long var2, int var4); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileServices.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileServices.java new file mode 100644 index 0000000..5fc1455 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/profile/ProfileServices.java @@ -0,0 +1,342 @@ +package dev.slinky.client.gui.profile; + +import dev.slinky.client.render.RenderConstants; +import dev.slinky.config.ConfigStore; +import dev.slinky.config.ConfigurationFiles; +import dev.slinky.config.ModuleConfiguration; +import dev.slinky.module.ModuleManager; +import java.awt.Desktop; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.DirectoryIteratorException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.InvalidPathException; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; +import java.util.function.LongSupplier; + +public final class ProfileServices { + private ProfileServices() { + } + + public interface DirectoryScanner { + void scan(Path var1, LongSupplier var2, ProfileServices.RecordReceiver var3) throws IOException; + } + + public static final class Failure extends IOException { + public final int code; + + public Failure(int code, String message) { + super(message); + this.code = code; + } + } + + public static final class FilesHost implements ProfileServices.Host { + private static final long FILETIME_EPOCH = 116444736000000000L; + private final ModuleManager manager; + private final Path directory; + private final ConfigStore configuration; + private final LongSupplier fileTime; + private final ProfileServices.DirectoryScanner scanner; + private List rows = Collections.emptyList(); + + public FilesHost(ModuleManager manager, Path directory, ConfigStore configuration) { + this(manager, directory, configuration, () -> System.currentTimeMillis() * 10000L + 116444736000000000L); + } + + public FilesHost(ModuleManager manager, Path directory, ConfigStore configuration, LongSupplier fileTime) { + this(manager, directory, configuration, fileTime, ProfileServices.FilesHost::scanDirectory); + } + + public FilesHost(ModuleManager manager, Path directory, ConfigStore configuration, LongSupplier fileTime, ProfileServices.DirectoryScanner scanner) { + this.manager = Objects.requireNonNull(manager); + this.directory = directory.toAbsolutePath().normalize(); + this.configuration = Objects.requireNonNull(configuration); + this.fileTime = Objects.requireNonNull(fileTime); + this.scanner = Objects.requireNonNull(scanner); + } + + private Path path(String name) throws IOException { + if (name != null && !name.isEmpty()) { + try { + Path target = this.directory.resolve(name).normalize(); + if (!this.directory.equals(target.getParent())) { + throw new ProfileServices.Failure(1012, "Invalid profile name"); + } else { + return target; + } + } catch (InvalidPathException var3) { + throw new ProfileServices.Failure(1006, "Invalid profile filename"); + } + } else { + throw new ProfileServices.Failure(1012, "A profile name is required"); + } + } + + @Override + public synchronized List records() throws IOException { + Map retained = new TreeMap<>(ProfileMath::compareNames); + + for (ModuleConfiguration.ProfileBinding binding : this.configuration.profileBindings()) { + if (binding.binding != 0 && !retained.containsKey(binding.name)) { + retained.put(binding.name, binding.binding); + } + } + + for (ProfileServices.Record row : this.rows) { + if (row.binding != 0) { + retained.put(row.name, row.binding); + } + } + + List next = new ArrayList<>(); + this.rows = next; + + try { + ensure(this.directory.getParent()); + ensure(this.directory); + this.scanner.scan(this.directory, this.fileTime, (name, age) -> { + if (name.getBytes(StandardCharsets.UTF_8).length >= 260) { + throw new ProfileServices.Failure(1006, "Profile filename exceeds the narrow host buffer"); + } else { + Integer bindingx = retained.get(name); + next.add(new ProfileServices.Record(name, age, bindingx == null ? 0 : bindingx)); + } + }); + } finally { + next.sort((left, right) -> { + int order = Long.compare(left.ageSeconds, right.ageSeconds); + return order != 0 ? order : ProfileMath.compareNames(left.name, right.name); + }); + this.saveBindings(); + } + + return this.snapshot(); + } + + @Override + public synchronized List snapshot() { + return Collections.unmodifiableList(new ArrayList<>(this.rows)); + } + + private static void ensure(Path directory) throws IOException { + ConfigurationFiles.WidePath path = new ConfigurationFiles.WidePath(); + path.text = ConfigurationFiles.wide(directory.toString()); + + try (ConfigurationFiles.NioHost host = new ConfigurationFiles.NioHost(null)) { + int code = ConfigurationFiles.ensureDirectory(path, host); + if (code != 0) { + throw new ProfileServices.Failure(code, "Could not create profile directory"); + } + } + } + + private static void scanDirectory(Path directory, LongSupplier fileTime, ProfileServices.RecordReceiver receiver) throws IOException { + DirectoryStream files; + try { + files = Files.newDirectoryStream(directory); + } catch (NoSuchFileException var22) { + return; + } catch (IOException var23) { + throw new ProfileServices.Failure(1013, "Could not begin profile enumeration"); + } + + try { + DirectoryStream opened = files; + Throwable var5 = null; + + try { + long now = fileTime.getAsLong(); + + for (Path file : opened) { + if (!Files.isDirectory(file)) { + long modified = Files.getLastModifiedTime(file).toMillis() * 10000L + 116444736000000000L; + receiver.record(file.getFileName().toString(), ProfileMath.ageSeconds(now, modified)); + } + } + } catch (Throwable var24) { + var5 = var24; + throw var24; + } finally { + if (files != null) { + if (var5 != null) { + try { + opened.close(); + } catch (Throwable var21) { + var5.addSuppressed(var21); + } + } else { + files.close(); + } + } + } + } catch (DirectoryIteratorException var26) { + throw new ProfileServices.Failure(1015, "Could not continue profile enumeration"); + } + } + + @Override + public void load(String name) throws IOException { + if (name == null) { + ModuleConfiguration.resetProfile(this.manager); + } else { + ensure(this.directory.getParent()); + ensure(this.directory); + Path target = this.path(name); + if (!Files.isRegularFile(target)) { + throw new ProfileServices.Failure(1008, "Profile does not exist"); + } + + try { + new ConfigStore(target).loadProfile(this.manager); + } catch (ConfigurationFiles.Failure var4) { + throw new ProfileServices.Failure(var4.code, var4.getMessage()); + } catch (IOException var5) { + throw new ProfileServices.Failure(5001, var5.getMessage()); + } + } + + this.manager.configurationSession().profileApplied(name); + } + + @Override + public void save(String name, boolean overwrite) throws IOException { + Path target = this.path(name); + + try { + new ConfigStore(target).saveProfile(this.manager, overwrite); + } catch (ConfigurationFiles.Failure var5) { + throw new ProfileServices.Failure(var5.code, var5.getMessage()); + } + + this.manager.configurationSession().profileApplied(name); + } + + @Override + public void delete(String name) throws IOException { + if (name == null) { + throw new ProfileServices.Failure(6004, RenderConstants.text(1313637)); + } else { + try { + Files.delete(this.path(name)); + } catch (IOException var3) { + throw new ProfileServices.Failure(1011, "Could not delete profile"); + } + } + } + + @Override + public void explore() throws IOException { + if (!Desktop.isDesktopSupported()) { + throw new ProfileServices.Failure(4000, "Directory opener unavailable"); + } else { + Desktop.getDesktop().open(this.directory.toFile()); + } + } + + @Override + public void saveConfiguration() throws IOException { + try { + this.configuration.save(this.manager); + } catch (ConfigurationFiles.Failure var2) { + throw new ProfileServices.Failure(var2.code, var2.getMessage()); + } + } + + @Override + public synchronized void bind(String name, int key) { + if (key >= 0 && key <= 103) { + ProfileServices.Record found = null; + + for (ProfileServices.Record row : this.rows) { + if (ProfileMath.compareNames(row.name, name) == 0) { + found = row; + break; + } + } + + if (found == null) { + throw new IllegalArgumentException("Profile is absent from the current directory records"); + } else { + found.binding = key; + this.saveBindings(); + this.manager.persist(); + } + } else { + throw new IllegalArgumentException("Binding ID outside the recovered key table"); + } + } + + private void saveBindings() { + List bindings = new ArrayList<>(); + + for (ProfileServices.Record row : this.rows) { + if (row.binding != 0) { + bindings.add(new ModuleConfiguration.ProfileBinding(row.name, row.binding)); + } + } + + this.configuration.profileBindings(bindings); + } + + @Override + public String current() { + return this.manager.configurationSession().currentProfile(); + } + + @Override + public boolean pending() { + return this.manager.configurationSession().pending(); + } + } + + public interface Host { + List records() throws IOException; + + default List snapshot() { + throw new UnsupportedOperationException("Profile snapshot service is required after refresh failure"); + } + + void load(String var1) throws IOException; + + void save(String var1, boolean var2) throws IOException; + + void delete(String var1) throws IOException; + + void explore() throws IOException; + + void saveConfiguration() throws IOException; + + void bind(String var1, int var2); + + String current(); + + boolean pending(); + } + + public static final class Record { + public final String name; + public final String date; + public final long ageSeconds; + public int binding; + + public Record(String name, long ageSeconds, int binding) { + this.name = name; + this.ageSeconds = ageSeconds; + this.date = ProfileMath.date(ageSeconds); + this.binding = binding; + } + } + + public interface RecordReceiver { + void record(String var1, long var2) throws IOException; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/GuiModuleSettings.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/GuiModuleSettings.java new file mode 100644 index 0000000..2d33575 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/GuiModuleSettings.java @@ -0,0 +1,131 @@ +package dev.slinky.client.gui.settings; + +import dev.slinky.client.gui.GuiModuleList; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.Setting; +import java.io.IOException; +import java.util.List; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; + +public final class GuiModuleSettings extends GuiScreen { + private final ModuleManager modules; + private final Module module; + private GuiTextField value; + private int page; + private int selected = -1; + private String message = ""; + + public GuiModuleSettings(ModuleManager modules, Module module) { + this.modules = modules; + this.module = module; + } + + public void initGui() { + this.buttonList.clear(); + List> visible = this.module.visibleSettings(); + int rows = Math.max(1, (this.height - 120) / 24); + this.page = Math.max(0, Math.min(this.page, Math.max(0, (visible.size() - 1) / rows))); + + for (int i = this.page * rows; i < Math.min(visible.size(), (this.page + 1) * rows); i++) { + Setting setting = visible.get(i); + this.buttonList + .add( + new GuiButton( + 100 + i, + this.width / 2 - 170, + 35 + (i - this.page * rows) * 24, + 340, + 20, + setting.getLabel() + " = " + (setting.isConfigured() ? setting.format() : "Choose a value") + ) + ); + } + + this.value = new GuiTextField(1, this.fontRendererObj, this.width / 2 - 170, this.height - 64, 270, 20); + this.value.setMaxStringLength(8192); + if (this.selected >= 0 && this.selected < visible.size()) { + this.value.setText(visible.get(this.selected).format()); + } + + this.buttonList.add(new GuiButton(1, this.width / 2 + 104, this.height - 65, 65, 20, "Save")); + this.buttonList.add(new GuiButton(2, this.width / 2 - 170, this.height - 36, 60, 20, "Back")); + this.buttonList.add(new GuiButton(3, this.width / 2 + 40, this.height - 36, 60, 20, "Previous")); + this.buttonList.add(new GuiButton(4, this.width / 2 + 110, this.height - 36, 60, 20, "Next")); + } + + protected void actionPerformed(GuiButton button) throws IOException { + if (button.id >= 100) { + this.selected = button.id - 100; + this.value.setText(this.module.visibleSettings().get(this.selected).format()); + this.value.setFocused(true); + } else if (button.id == 1 && this.selected >= 0) { + try { + Setting edited = this.module.visibleSettings().get(this.selected); + edited.parseAndSet(this.value.getText()); + this.module.afterSettingControl(edited.getKey(), this.modules.context()); + this.modules.persist(); + this.message = "Saved"; + this.initGui(); + this.modules.configurationSession().controlChanged(); + } catch (IllegalArgumentException var3) { + this.message = var3.getMessage(); + } + } else if (button.id == 2) { + this.mc.displayGuiScreen(new GuiModuleList(this.modules)); + } else if (button.id == 3) { + this.page--; + this.selected = -1; + this.initGui(); + } else if (button.id == 4) { + this.page++; + this.selected = -1; + this.initGui(); + } + } + + protected void keyTyped(char character, int key) throws IOException { + if (!this.value.textboxKeyTyped(character, key)) { + super.keyTyped(character, key); + } + } + + protected void mouseClicked(int x, int y, int button) throws IOException { + super.mouseClicked(x, y, button); + this.value.mouseClicked(x, y, button); + } + + public void drawScreen(int x, int y, float partial) { + this.drawDefaultBackground(); + this.drawCenteredString(this.fontRendererObj, this.module.getName(), this.width / 2, 12, 16777215); + List> visible = this.module.visibleSettings(); + boolean changed = false; + + for (GuiButton button : this.buttonList) { + button.drawButton(this.mc, x, y); + if (button.id >= 100 && button.id - 100 < visible.size()) { + changed = this.module.afterSettingControl(visible.get(button.id - 100).getKey(), this.modules.context()) || changed; + } + } + + if (changed) { + this.modules.persist(); + + for (GuiButton buttonx : this.buttonList) { + if (buttonx.id >= 100 && buttonx.id - 100 < visible.size()) { + Setting setting = visible.get(buttonx.id - 100); + buttonx.displayString = setting.getLabel() + " = " + (setting.isConfigured() ? setting.format() : "Choose a value"); + } + } + } + + this.value.drawTextBox(); + this.drawString(this.fontRendererObj, this.message, 12, this.height - 90, 16777215); + } + + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/InlineModuleSettings.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/InlineModuleSettings.java new file mode 100644 index 0000000..5340309 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/InlineModuleSettings.java @@ -0,0 +1,498 @@ +package dev.slinky.client.gui.settings; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.client.gui.GuiMath; +import dev.slinky.client.gui.GuiPresentation; +import dev.slinky.client.gui.GuiWidgets; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.world.LoadedChunkAccess; +import dev.slinky.inject.Platform; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.module.combat.WeaponsModule; +import dev.slinky.module.world.GhostHandModule; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ChoiceSetting; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NamedColorListSetting; +import dev.slinky.setting.NumberSetting; +import dev.slinky.setting.RangeSetting; +import dev.slinky.setting.Setting; +import dev.slinky.setting.StringListSetting; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.IdentityHashMap; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map.Entry; +import java.util.Map; +import java.util.Set; + +public final class InlineModuleSettings { + private static final JsonObject METADATA = readMetadata(); + private static final Map> ORDER = readOrder(); + private static final List ITEMS = readItems(false); + private static final List BLOCKS = readItems(true); + private final ModuleManager manager; + private final GuiWidgets widgets; + private final Map, InlineModuleSettings.Record> records = new IdentityHashMap<>(); + private final GuiMath.Toggle sticks = new GuiMath.Toggle(); + private final GuiMath.Toggle swordExcluded = new GuiMath.Toggle(); + + public InlineModuleSettings(ModuleManager manager, GuiPresentation presentation, GuiPresentation.Tooltip tooltip) { + this.manager = manager; + this.widgets = new GuiWidgets(presentation, tooltip, (format, values) -> { + Object[] args = new Object[values.length]; + + for (int i = 0; i < values.length; i++) { + args[i] = values[i]; + } + + return String.format(Locale.ROOT, format.replace("%0.", "%."), args); + }); + } + + private static JsonObject readMetadata() { + try (InputStreamReader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/WidgetMetadata.json"), StandardCharsets.UTF_8)) { + return new JsonParser().parse(reader).getAsJsonObject(); + } catch (IOException var14) { + throw new ExceptionInInitializerError(var14); + } + } + + private static Map> readOrder() { + Map> result = new LinkedHashMap<>(); + + try (InputStreamReader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/ModuleUi.json"), StandardCharsets.UTF_8)) { + for (JsonElement element : new JsonParser().parse(reader).getAsJsonObject().getAsJsonArray("modules")) { + JsonObject module = element.getAsJsonObject(); + Map> edges = new LinkedHashMap<>(); + + for (JsonElement variant : module.getAsJsonArray("variants")) { + String previous = null; + Map counts = new HashMap<>(); + + for (JsonElement control : variant.getAsJsonObject().getAsJsonArray("controls")) { + JsonObject row = control.getAsJsonObject(); + String token; + if (row.has("section")) { + String label = row.get("section").getAsString(); + int count = counts.containsKey(label) ? counts.get(label) : 0; + counts.put(label, count + 1); + token = "section:" + count + ":" + label; + } else { + token = row.get("key").getAsString(); + } + + if (!edges.containsKey(token)) { + edges.put(token, new LinkedHashSet<>()); + } + + if (previous != null) { + edges.get(previous).add(token); + } + + previous = token; + } + } + + List order = new ArrayList<>(); + + while (order.size() < edges.size()) { + String next = null; + + for (String tokenx : edges.keySet()) { + if (!order.contains(tokenx)) { + boolean incoming = false; + + for (Entry> edge : edges.entrySet()) { + if (!order.contains(edge.getKey()) && edge.getValue().contains(tokenx)) { + incoming = true; + break; + } + } + + if (!incoming) { + next = tokenx; + break; + } + } + } + + if (next == null) { + throw new IllegalStateException("Contradictory recovered UI order " + module.get("module").getAsString()); + } + + order.add(next); + } + + result.put(module.get("module").getAsString(), Collections.unmodifiableList(order)); + } + + return Collections.unmodifiableMap(result); + } catch (IOException var27) { + throw new ExceptionInInitializerError(var27); + } + } + + private InlineModuleSettings.Record record(Setting setting) { + InlineModuleSettings.Record record = this.records.get(setting); + if (record == null) { + record = new InlineModuleSettings.Record(); + this.records.put(setting, record); + } + + return record; + } + + private static String text(JsonObject row, String key, String fallback) { + JsonElement value = row.get(key); + return value != null && !value.isJsonNull() ? value.getAsString() : fallback; + } + + private static float parameter(JsonObject row, String key) { + JsonElement value = row.get(key); + return value == null ? 0.0F : value.getAsJsonObject().get("value").getAsFloat(); + } + + private static JsonObject schema(Module module, Setting setting) { + for (JsonElement row : ModuleCatalog.module(module.getName()).getAsJsonArray("settings")) { + JsonObject value = row.getAsJsonObject(); + if (value.get("key").getAsString().equals(setting.getKey())) { + return value; + } + } + + throw new IllegalStateException("Missing widget schema"); + } + + private static JsonObject metadata(Module module, Setting setting) { + return METADATA.getAsJsonObject(module.getName()).getAsJsonObject(setting.getKey()); + } + + public List render(Module module, GuiMath.Runtime state, DrawPlan plan, GuiMath.Layout layout, float[] accent, double now) { + List drawn = new ArrayList<>(); + + for (String token : ORDER.get(module.getName())) { + ModuleSettingsLayout.Control next = null; + Map counts = new HashMap<>(); + + for (ModuleSettingsLayout.Control control : ModuleSettingsLayout.controls(module)) { + String candidate; + if (control.setting == null) { + int count = counts.containsKey(control.section) ? counts.get(control.section) : 0; + counts.put(control.section, count + 1); + candidate = "section:" + count + ":" + control.section; + } else { + candidate = control.setting.getKey(); + } + + if (token.equals(candidate)) { + next = control; + break; + } + } + + if (next != null) { + drawn.add(token); + if (next.setting == null) { + this.widgets.section(plan, layout, next.section); + } else { + Setting setting = next.setting; + if (module instanceof WeaponsModule && setting.getKey().equals("extra_items")) { + WeaponsModule weapons = (WeaponsModule)module; + boolean old = weapons.sticksEnabled(); + boolean nextValue = this.widgets.checkbox(state, plan, layout, "Sticks", this.sticks, old, accent, now); + if (nextValue != old) { + weapons.setSticksEnabled(nextValue); + this.changed(module, setting, true); + } + + drawn.add("derived:sticks"); + } + + this.draw(module, setting, state, plan, layout, accent, now); + if (module instanceof GhostHandModule && setting.getKey().equals("require_mouse_pressed")) { + GhostHandModule ghost = (GhostHandModule)module; + boolean old = ghost.swordExcluded(); + boolean nextValue = this.widgets.checkbox(state, plan, layout, "Not holding a sword", this.swordExcluded, old, accent, now); + if (nextValue != old) { + ghost.setSwordExcluded(nextValue); + this.changed(module, module.findSetting("allow_using_sword"), true); + } + + drawn.add("derived:sword_excluded"); + } + } + } + } + + return Collections.unmodifiableList(drawn); + } + + private void changed(Module module, Setting setting, boolean dirty) { + module.afterSettingControl(setting.getKey(), this.manager.context()); + if (dirty) { + this.manager.configurationSession().controlChanged(); + } + + this.manager.persist(); + } + + private void draw(Module module, Setting setting, GuiMath.Runtime state, DrawPlan plan, GuiMath.Layout layout, float[] accent, double now) { + JsonObject info = metadata(module, setting); + JsonObject schema = schema(module, setting); + String label = text(info, "label", setting.getLabel()); + InlineModuleSettings.Record r = this.record(setting); + boolean dirty = false; + boolean mutated = false; + if (setting instanceof BooleanSetting) { + BooleanSetting value = (BooleanSetting)setting; + boolean next = this.widgets.checkbox(state, plan, layout, label, r.toggle, value.isEnabled(), accent, now); + if (next != value.isEnabled()) { + value.set(Boolean.valueOf(next)); + mutated = true; + dirty = true; + } + } else if (setting instanceof NumberSetting) { + NumberSetting value = (NumberSetting)setting; + float next = this.widgets + .number( + state, + plan, + layout, + label, + text(info, "format", null), + r.lower, + r.number, + (float)value.getMinimum(), + (float)value.getMaximum(), + parameter(schema, "step_observation"), + parameter(schema, "extra_ui_parameter_observation"), + value.floatValue(), + accent, + now + ); + dirty = r.number.active; + if (Float.floatToRawIntBits(next) != Float.floatToRawIntBits(value.floatValue())) { + value.set(Double.valueOf((double)next)); + mutated = true; + } + } else if (setting instanceof RangeSetting) { + RangeSetting value = (RangeSetting)setting; + RangeSetting.Value old = value.get(); + JsonObject extra = schema.getAsJsonObject("extra_ui_parameter_observations"); + float step = extra == null ? 0.0F : parameter(extra, "0x30"); + float scale = extra == null ? 0.0F : parameter(extra, "0x34"); + float[] next = this.widgets + .range( + state, + plan, + layout, + label, + text(info, "format", null), + text(info, "pair_format", null), + r.lower, + r.upper, + r.range, + (float)value.minimum(), + (float)value.maximum(), + step, + scale, + (float)old.lower, + (float)old.upper, + accent, + now + ); + dirty = r.range.lower.active || r.range.upper.active; + if (next[0] != (float)old.lower || next[1] != (float)old.upper) { + value.set(new RangeSetting.Value((double)next[0], (double)next[1])); + mutated = true; + } + } else if (setting instanceof ChoiceSetting) { + ChoiceSetting value = (ChoiceSetting)setting; + r.selected[0] = value.index(); + dirty = ( + this.widgets.choice(state, plan, layout, label, r.choice, value.getOptions(), r.selected, info.get("flag").getAsInt(), accent, now, index -> { + value.set(Integer.valueOf(index)); + this.changed(module, setting, false); + }) & 0xFF + ) + != 0; + if (r.selected[0] != value.index()) { + value.set(Integer.valueOf(r.selected[0])); + mutated = true; + } + } else if (setting instanceof ColorSetting) { + ColorSetting value = (ColorSetting)setting; + ColorSetting.Value rgb = value.get(); + dirty = this.widgets.color(state, plan, layout, label, new float[]{rgb.red, rgb.green, rgb.blue}, nextx -> { + value.set(new ColorSetting.Value(nextx[0], nextx[1], nextx[2])); + this.changed(module, setting, false); + }, now); + } else { + dirty = this.widgets + .list( + state, + plan, + layout, + label, + text(info, "title", label), + filter(module, setting), + setting instanceof NamedColorListSetting ? 1 : 0, + this.list(module, setting), + info.get("suggestions_endpoint_present").getAsBoolean() ? suggestions(module) : null, + now + ); + } + + boolean coupled = false; + if (!(setting instanceof NamedColorListSetting) && !(setting instanceof StringListSetting) || dirty || mutated) { + coupled = module.afterSettingControl(setting.getKey(), this.manager.context()); + } + + if (dirty) { + this.manager.configurationSession().controlChanged(); + } + + if (mutated || coupled) { + this.manager.persist(); + } + } + + private static GuiMath.Filter filter(Module module, Setting setting) { + return module.getName().equals("Friends") ? (text, ch) -> { + if (text.length() < 16 && (ch >= 97 && ch <= 122 || ch >= 65 && ch <= 90 || ch >= 48 && ch <= 57 || ch == 95)) { + text.append((char)ch); + } + } : GuiMath::catalogFilter; + } + + private static List readItems(boolean blocks) { + try (InputStreamReader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/ItemCatalog.json"), StandardCharsets.UTF_8)) { + List names = new ArrayList<>(); + + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject item = element.getAsJsonObject(); + if (!blocks || item.get("id").getAsInt() < 256) { + names.add(item.get("name").getAsString()); + } + } + + return Collections.unmodifiableList(names); + } catch (IOException var17) { + throw new ExceptionInInitializerError(var17); + } + } + + private static List suggestions(Module module) { + return module.getName().equals("Block ESP") ? BLOCKS : ITEMS; + } + + private GuiWidgets.ListData list(final Module module, final Setting setting) { + return new GuiWidgets.ListData() { + @Override + public long size() { + return setting instanceof NamedColorListSetting + ? (long)((NamedColorListSetting)setting).get().size() + : (long)((StringListSetting)setting).get().size(); + } + + @Override + public String name(long index) { + return setting instanceof NamedColorListSetting + ? ((NamedColorListSetting)setting).get().get((int)index).name + : ((StringListSetting)setting).get().get((int)index); + } + + @Override + public float[] color(long index) { + ColorSetting.Value value = ((NamedColorListSetting)setting).get().get((int)index).color; + return new float[]{value.red, value.green, value.blue}; + } + + @Override + public void color(long index, float[] rgb) { + NamedColorListSetting value = (NamedColorListSetting)setting; + List rows = new ArrayList<>(value.get()); + rows.set((int)index, new NamedColorListSetting.Entry(rows.get((int)index).name, new ColorSetting.Value(rgb[0], rgb[1], rgb[2]))); + value.set(rows); + InlineModuleSettings.this.changed(module, setting, false); + } + + @Override + public void add(String name, float[] rgb) { + if (setting instanceof NamedColorListSetting) { + int id = module.getName().equals("Block ESP") ? LoadedChunkAccess.blockIdentifier(name) : ItemPolicyService.identifier(name); + if (id < 0) { + return; + } + + NamedColorListSetting value = (NamedColorListSetting)setting; + List rows = new ArrayList<>(value.get()); + + for (NamedColorListSetting.Entry row : rows) { + if (row.name.equals(name)) { + return; + } + } + + rows.add(new NamedColorListSetting.Entry(name, new ColorSetting.Value(rgb[0], rgb[1], rgb[2]))); + rows.sort((a, b) -> Integer.compare(ItemPolicyService.identifier(a.name), ItemPolicyService.identifier(b.name))); + value.set(rows); + } else { + StringListSetting value = (StringListSetting)setting; + List rows = new ArrayList<>(value.get()); + if (rows.contains(name)) { + return; + } + + rows.add(name); + value.set(rows); + } + + InlineModuleSettings.this.changed(module, setting, false); + } + + @Override + public void remove(long index) { + if (setting instanceof NamedColorListSetting) { + NamedColorListSetting value = (NamedColorListSetting)setting; + List rows = new ArrayList<>(value.get()); + rows.remove((int)index); + value.set(rows); + } else { + StringListSetting value = (StringListSetting)setting; + List rows = new ArrayList<>(value.get()); + rows.remove((int)index); + value.set(rows); + } + + InlineModuleSettings.this.changed(module, setting, false); + } + }; + } + + private static final class Record { + final Object lower = new Object(); + final Object upper = new Object(); + final GuiMath.Toggle toggle = new GuiMath.Toggle(); + final GuiMath.Slider number = new GuiMath.Slider(); + final GuiWidgets.Range range = new GuiWidgets.Range(); + final GuiWidgets.Choice choice = new GuiWidgets.Choice(); + final int[] selected = new int[]{0}; + + private Record() { + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/ModuleSettingsLayout.java b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/ModuleSettingsLayout.java new file mode 100644 index 0000000..02c48c7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/gui/settings/ModuleSettingsLayout.java @@ -0,0 +1,120 @@ +package dev.slinky.client.gui.settings; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import dev.slinky.module.Module; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ChoiceSetting; +import dev.slinky.setting.Setting; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public final class ModuleSettingsLayout { + private static final Map LAYOUTS = read(); + + private ModuleSettingsLayout() { + } + + private static Map read() { + InputStream stream = Platform.resource("/assets/slinkysemantic/ModuleUi.json"); + if (stream == null) { + throw new IllegalStateException("Missing recovered UI layouts"); + } else { + try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + Map result = new LinkedHashMap<>(); + + for (JsonElement row : new JsonParser().parse(reader).getAsJsonObject().getAsJsonArray("modules")) { + JsonObject layout = row.getAsJsonObject(); + String name = layout.get("module").getAsString(); + if (result.put(name, layout) != null) { + throw new IllegalStateException("Duplicate UI layout " + name); + } + } + + return Collections.unmodifiableMap(result); + } catch (IOException var18) { + throw new IllegalStateException(var18); + } + } + } + + public static List controls(Module module) { + JsonObject layout = LAYOUTS.get(module.getName()); + if (layout == null) { + throw new IllegalStateException("Missing module UI " + module.getName()); + } else { + JsonArray gates = layout.getAsJsonArray("gates"); + + for (JsonElement row : layout.getAsJsonArray("variants")) { + JsonObject variant = row.getAsJsonObject(); + JsonArray values = variant.getAsJsonArray("values"); + boolean match = true; + + for (int i = 0; i < gates.size(); i++) { + Setting setting = module.findSetting(gates.get(i).getAsString()); + int value; + if (setting instanceof BooleanSetting) { + value = ((BooleanSetting)setting).isEnabled() ? 1 : 0; + } else { + if (!(setting instanceof ChoiceSetting)) { + throw new IllegalStateException("Invalid recovered UI gate"); + } + + value = ((ChoiceSetting)setting).index(); + } + + if (value != values.get(i).getAsInt()) { + match = false; + break; + } + } + + if (match) { + List result = new ArrayList<>(); + + for (JsonElement element : variant.getAsJsonArray("controls")) { + JsonObject control = element.getAsJsonObject(); + if (control.has("section")) { + result.add(new ModuleSettingsLayout.Control(control.get("section").getAsString(), null)); + } else { + String key = control.get("key").getAsString(); + Setting settingx = module.findSetting(key); + if (settingx == null) { + throw new IllegalStateException("Missing recovered UI setting " + module.getName() + "." + key); + } + + if (module.settingVisible(key)) { + result.add(new ModuleSettingsLayout.Control(null, settingx)); + } + } + } + + return Collections.unmodifiableList(result); + } + } + + throw new IllegalStateException("No recovered UI variant for " + module.getName()); + } + } + + public static final class Control { + public final String section; + public final Setting setting; + + private Control(String section, Setting setting) { + this.section = section; + this.setting = setting; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/hook/GameHooks.java b/SlinkyClient/src/main/java/dev/slinky/client/hook/GameHooks.java new file mode 100644 index 0000000..12d90ff --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/hook/GameHooks.java @@ -0,0 +1,362 @@ +package dev.slinky.client.hook; + +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.InvWalkControllerInputAdapter; +import dev.slinky.client.packet.NetworkSendAdapter; +import dev.slinky.client.packet.PacketPipeline; +import dev.slinky.client.placement.PlacementSelection; +import dev.slinky.client.render.hook.RenderHooks; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.client.target.RayQueryAdapter; +import dev.slinky.client.target.TargetCombatStatus; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.movement.SafeWalkModule; +import dev.slinky.module.render.NoHurtCamModule; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.util.MovementInput; +import net.minecraft.world.World; + +public final class GameHooks { + private static ModuleManager modules; + private static SemanticEvent ray; + private static double previousDisplaySeconds; + private static final TargetCombatStatus combat = new TargetCombatStatus(); + private static boolean uiDrawn; + private static boolean baseSwing; + + private GameHooks() { + } + + public static void install(ModuleManager manager) { + modules = manager; + RenderHooks.install(manager); + } + + private static boolean local(Entity entity) { + return modules != null && entity == Minecraft.getMinecraft().thePlayer; + } + + public static boolean mouseAngles(Entity entity, float yaw, float pitch) { + return local(entity) && RotationService.mouseAngles(entity, modules.context(), yaw, pitch); + } + + public static void beginMovement() { + if (modules != null) { + RotationService.beginMovement(modules.context()); + } + } + + public static void endMovement() { + if (modules != null) { + RotationService.endMovement(modules.context()); + } + } + + public static void updateMovement(MovementInput input) { + beginMovement(); + + try { + input.updatePlayerMoveState(); + } finally { + endMovement(); + } + } + + public static void beginCamera() { + if (modules != null) { + RotationService.beginCamera(modules.context()); + } + } + + public static void endCamera() { + RotationService.endCamera(); + } + + public static void endRender() { + RotationService.endRender(); + } + + public static void beginRenderInfo() { + if (modules != null) { + RotationService.beginRenderInfo(modules.context()); + } + } + + public static void endRenderInfo() { + RotationService.endRenderInfo(); + } + + public static float renderViewPitch(float vanilla) { + return RotationService.renderViewPitch(vanilla); + } + + public static float renderViewYaw(float vanilla) { + return RotationService.renderViewYaw(vanilla); + } + + public static void beginTick() { + if (modules != null) { + combat.select(modules.context(), modules); + } else { + combat.reset(); + } + } + + public static EntityPlayer target() { + return combat.target(); + } + + public static double targetDistanceSquared() { + return combat.distanceSquared(); + } + + public static void beforeEntities(World world) { + if (modules != null && world == modules.context().world()) { + modules.dispatch(new SemanticEvent(16)); + beginMovement(); + modules.dispatch(new SemanticEvent(17)); + } + } + + public static void afterEntities(World world) { + if (modules != null && world == modules.context().world()) { + modules.dispatch(new SemanticEvent(18)); + if (!modules.context().ready()) { + endMovement(); + } else { + SemanticEvent event = new SemanticEvent(13); + event.active = false; + event.yaw = RotationService.storedRotationValid() ? RotationService.cameraYaw() : modules.context().player().rotationYaw; + event.pitch = RotationService.storedRotationValid() ? RotationService.cameraPitch() : modules.context().player().rotationPitch; + modules.dispatch(event); + RotationService.finishFrame(modules.context(), event); + RotationService.applyPending(modules.context(), true); + } + } + } + + public static void abortEntities(World world) { + if (modules != null && world == modules.context().world()) { + endMovement(); + } + } + + public static SemanticEvent beforeMoveFlying(Entity player, float sideways, float forward, float friction) { + SemanticEvent event = new SemanticEvent(21); + event.sideways = sideways; + event.forward = forward; + event.factor = friction; + if (!local(player)) { + return event; + } else { + event.jump = MinecraftFields.jumpTicks((EntityPlayerSP)player) > 0 && modules.context().minecraft().gameSettings.keyBindJump.isKeyDown(); + modules.dispatch(event); + return event; + } + } + + public static void afterMoveFlying(Entity player, SemanticEvent before) { + if (local(player)) { + SemanticEvent event = new SemanticEvent(22); + event.sideways = before.sideways; + event.forward = before.forward; + event.factor = before.factor; + event.jump = before.jump; + modules.dispatch(event); + } + } + + public static boolean safeWalk(Entity entity) { + if (local(entity)) { + Module module = modules.find("safewalk"); + if (module instanceof SafeWalkModule && ((SafeWalkModule)module).allowed()) { + return true; + } + } + + return entity.isSneaking(); + } + + public static void beginRay(float partialTicks) { + ray = null; + if (modules != null && modules.context().ready()) { + RotationService.beginFrame(modules.context(), 0.0, partialTicks); + beginTick(); + modules.dispatch(new SemanticEvent(0)); + if (modules.context().minecraft().inGameHasFocus) { + ray = new SemanticEvent(8); + ray.distance = 3.0; + modules.dispatch(ray); + } + } + } + + public static void afterFrameRender() { + if (modules != null) { + uiDrawn = true; + RenderHooks.beforeDisplay(); + } + } + + public static strictfp void beforeDisplay() { + if (modules != null) { + if (!uiDrawn) { + RenderHooks.beforeDisplay(); + } + + uiDrawn = false; + modules.applyPendingChanges(); + beforeDisplay((double)System.nanoTime() / 1.0E9); + } + } + + private static strictfp void beforeDisplay(double now) { + if (previousDisplaySeconds == 0.0) { + previousDisplaySeconds = now; + } + + if (!modules.context().ready()) { + previousDisplaySeconds = now; + } else { + RotationService.beforeDisplay(modules.context()); + double elapsed = now - previousDisplaySeconds; + if (!(0.002 > elapsed)) { + SemanticEvent frame = new SemanticEvent(1); + frame.elapsedSeconds = elapsed; + frame.timerRenderPartialTicks = MinecraftFields.timer(modules.context().minecraft()).renderPartialTicks; + modules.dispatch(frame); + RotationService.applyPending(modules.context(), false); + previousDisplaySeconds = now; + RotationService.afterDisplay(modules.context()); + } + } + } + + public static boolean customRay() { + boolean selected = ray != null && RayQueryAdapter.update(modules, ray); + if (ray != null) { + PlacementSelection.frameReset(); + } + + return selected; + } + + public static double entityReach(double vanilla) { + return ray != null && ray.enabled ? ray.distance : vanilla; + } + + public static float queryReach(float vanilla) { + return ray != null && ray.enabled ? (float)Math.max((double)vanilla, ray.distance) : vanilla; + } + + public static float hitboxBorder(float vanilla) { + return ray == null ? vanilla : (float)((double)vanilla + ray.expand); + } + + public static boolean beforeInteraction(boolean use) { + if (modules == null) { + return false; + } else { + if (!use) { + combat.prepare(modules.context()); + } + + SemanticEvent event = combat.event(14, use); + modules.dispatch(event); + if (use) { + PlacementSelection.capture(modules.context()); + } + + return event.cancelled; + } + } + + public static void afterInteraction(boolean use) { + if (modules != null) { + modules.dispatch(combat.event(15, use)); + if (use) { + PlacementSelection.consume(modules.context()); + } + } + } + + public static void baseSwing(EntityPlayerSP player) { + baseSwing = true; + + try { + player.swingItem(); + } finally { + baseSwing = false; + } + } + + public static boolean baseSwingOnly() { + return baseSwing; + } + + public static void clear() { + ray = null; + combat.clear(); + previousDisplaySeconds = 0.0; + try { + RenderHooks.clear(); + } finally { + try { + PlacementSelection.reset(); + } finally { + try { + RotationService.reset(null); + } finally { + PacketPipeline.releaseAll(false); + } + } + } + } + + public static void shutdown() { + if (modules != null) { + modules.shutdown(); + } + + PacketPipeline.releaseAll(true); + } + + public static boolean beforeSend(NetworkManager receiver, Packet packet) { + if (!NetworkSendAdapter.consumeDirect(receiver, packet) && modules != null) { + SemanticEvent event = new SemanticEvent(23); + event.receiver = receiver; + event.packet = packet; + modules.dispatch(event); + return event.cancelled; + } else { + return false; + } + } + + public static void updateController() { + if (modules != null) { + SemanticEvent event = new SemanticEvent(25); + modules.dispatch(event); + if (event.cancelled) { + InvWalkControllerInputAdapter.drain(); + } + } + } + + public static void preRender() { + if (modules != null) { + RotationService.prepareMouse(modules.context()); + Module module = modules.find("No Hurt Cam"); + if (module != null && module.isEnabled()) { + ((NoHurtCamModule)module).applyPreRender(modules.context()); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/AttackInput.java b/SlinkyClient/src/main/java/dev/slinky/client/input/AttackInput.java new file mode 100644 index 0000000..ceedb4d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/AttackInput.java @@ -0,0 +1,17 @@ +package dev.slinky.client.input; + +import dev.slinky.client.ClientContext; +import org.lwjgl.input.Mouse; + +public final class AttackInput { + private AttackInput() { + } + + public static int button(int attackCode) { + return attackCode == -99 ? 1 : 0; + } + + public static boolean pressed(ClientContext context) { + return Mouse.isButtonDown(button(context.minecraft().gameSettings.keyBindAttack.getKeyCode())); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/BindingInput.java b/SlinkyClient/src/main/java/dev/slinky/client/input/BindingInput.java new file mode 100644 index 0000000..9ffc5be --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/BindingInput.java @@ -0,0 +1,75 @@ +package dev.slinky.client.input; + +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import java.util.Arrays; +import java.util.IdentityHashMap; +import java.util.Map; + +public final class BindingInput { + private final byte[] keyBits = new byte[104]; + private final Map requested = new IdentityHashMap<>(); + + public boolean update(int nativeId, boolean down, boolean toggle) { + return this.update(nativeId, down ? 1 : 0, toggle ? 1 : 0); + } + + public boolean update(int nativeId, int requestedByte, int toggleByte) { + if (nativeId >= 0 && nativeId < this.keyBits.length) { + int old = this.keyBits[nativeId] & 255; + int bit = old & 1; + int requested = requestedByte & 0xFF; + int next = requested; + boolean unchanged = true; + if ((toggleByte & 0xFF) != 1 || bit != requested) { + if ((toggleByte & 0xFF) == 1) { + next = (requested | old & 2) ^ 2; + } + + this.keyBits[nativeId] = (byte)next; + unchanged = bit == requested; + } + + return unchanged; + } else { + throw new IllegalArgumentException("Binding ID outside the recovered key table"); + } + } + + public boolean dispatch(ModuleManager manager, int nativeId, boolean down) { + if (nativeId == 0) { + return false; + } else { + boolean accepted = false; + + for (Module module : manager.all()) { + if (module.getBinding() == nativeId) { + if (module.isHoldBinding()) { + manager.requestEnabled(module, down); + this.requested.put(module, down); + accepted = true; + } else if (down) { + manager.requestEnabled(module, !module.isEnabled()); + } + + accepted = true; + } + } + + return accepted; + } + } + + public boolean lastRequested(Module module) { + return Boolean.TRUE.equals(this.requested.get(module)); + } + + public int bits(int nativeId) { + return this.keyBits[nativeId] & 0xFF; + } + + public void clear() { + Arrays.fill(this.keyBits, (byte)0); + this.requested.clear(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/InputQuery.java b/SlinkyClient/src/main/java/dev/slinky/client/input/InputQuery.java new file mode 100644 index 0000000..806acb8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/InputQuery.java @@ -0,0 +1,74 @@ +package dev.slinky.client.input; + +import java.util.Objects; + +public final class InputQuery { + private final BindingInput keys; + + public InputQuery(BindingInput keys) { + this.keys = Objects.requireNonNull(keys); + } + + public int query(InputQuery.Request request, InputQuery.Host host) { + boolean unchanged = true; + if (request.type == 2) { + unchanged = this.keys.update(request.key, request.requested, request.toggle); + } + + if (!host.environmentAvailable()) { + return 0; + } else { + int result = host.dispatch(request, unchanged); + if ((result & 0xFF) != 0 || request.type != 2 || unchanged || request.key == 0) { + return result; + } else if (host.ready() && !host.guiEnabled()) { + if (host.friendsEnabled() && request.type == 2 && request.requested == 1 && request.key == 3) { + host.friendAction(); + } + + if (!host.moduleBindings(request.key, request.requested)) { + host.profileBindings(request.key, request.requested); + } + + return result; + } else { + return result; + } + } + } + + public interface Host { + boolean environmentAvailable(); + + int dispatch(InputQuery.Request var1, boolean var2); + + boolean ready(); + + boolean guiEnabled(); + + boolean friendsEnabled(); + + void friendAction(); + + boolean moduleBindings(int var1, byte var2); + + void profileBindings(int var1, byte var2); + } + + public static final class Request { + public int type; + public int key; + public int x; + public int y; + public byte requested; + public byte toggle; + public float wheel; + public byte[] utf8 = new byte[0]; + + public Request(int type, int key, boolean down) { + this.type = type; + this.key = key; + this.requested = (byte)(down ? 1 : 0); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/InputRouter.java b/SlinkyClient/src/main/java/dev/slinky/client/input/InputRouter.java new file mode 100644 index 0000000..98c8b5c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/InputRouter.java @@ -0,0 +1,146 @@ +package dev.slinky.client.input; + +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.profile.ProfileServices; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.config.ConfigStore; +import dev.slinky.config.ModuleConfiguration; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.render.GuiModule; +import dev.slinky.module.utility.FriendsModule; +import java.io.IOException; +import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; + +public final class InputRouter implements InputQuery.Host { + private final ModuleManager modules; + private final BindingInput keys = new BindingInput(); + private final InputQuery query = new InputQuery(this.keys); + private ConfigStore configuration; + private ProfileServices.Host profiles; + + public InputRouter(ModuleManager modules) { + this.modules = modules; + } + + public void profiles(ConfigStore configuration, ProfileServices.Host profiles) { + this.configuration = Objects.requireNonNull(configuration); + this.profiles = Objects.requireNonNull(profiles); + } + + public ProfileServices.Host profiles() { + if (this.profiles == null) { + throw new IllegalStateException("Profile file service has not been installed"); + } else { + return this.profiles; + } + } + + public int input(InputQuery.Request request) { + try { + return this.query.query(request, this); + } catch (IllegalArgumentException var3) { + this.report(var3); + return 0; + } + } + + @Override + public boolean environmentAvailable() { + return this.modules.context().minecraft() != null; + } + + @Override + public int dispatch(InputQuery.Request request, boolean unchanged) { + Module candidate = this.modules.find("GUI"); + return !(candidate instanceof GuiModule) + ? 0 + : (int)((GuiModule)candidate) + .dispatchInput(request.type, request.key, request.requested == 1, unchanged ? 1 : 0, request.utf8, request.x, request.y, request.wheel); + } + + @Override + public boolean ready() { + return this.modules.context().minecraft().inGameHasFocus; + } + + @Override + public boolean guiEnabled() { + Module gui = this.modules.find("GUI"); + return gui != null && gui.isEnabled(); + } + + @Override + public boolean friendsEnabled() { + Module friends = this.modules.find("Friends"); + return friends != null && friends.isEnabled(); + } + + @Override + public void friendAction() { + Module friends = this.modules.find("Friends"); + if (friends instanceof FriendsModule) { + ((FriendsModule)friends).middleClickAction(this.modules.context(), this.modules); + } + } + + @Override + public boolean moduleBindings(int key, byte requested) { + boolean accepted = this.keys.dispatch(this.modules, key, requested == 1); + if (accepted) { + this.modules.persist(); + } + + return accepted; + } + + @Override + public void profileBindings(int key, byte requested) { + if (requested == 1) { + if (this.configuration == null) { + throw new IllegalStateException("Configuration service has not been installed"); + } else { + for (ModuleConfiguration.ProfileBinding binding : this.configuration.profileBindings()) { + if (binding.binding == key) { + try { + this.profiles().load(binding.name); + SemanticEvent event = new SemanticEvent(11); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.action = 0; + payload.profileName = binding.name; + + try { + this.modules.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + } catch (IOException var11) { + this.report(var11); + } + } + } + } + } + } + + public void clear() { + this.keys.clear(); + } + + private void report(Exception failure) { + SemanticEvent event = new SemanticEvent(12); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.errorCode = failure instanceof ProfileServices.Failure ? ((ProfileServices.Failure)failure).code : 1; + payload.message = failure.getMessage(); + + try { + this.modules.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + + Logger.getLogger("SlinkySemantic").log(Level.WARNING, "Input action could not be applied", (Throwable)failure); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/KeyState.java b/SlinkyClient/src/main/java/dev/slinky/client/input/KeyState.java new file mode 100644 index 0000000..c215336 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/KeyState.java @@ -0,0 +1,64 @@ +package dev.slinky.client.input; + +import com.google.gson.JsonArray; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import dev.slinky.inject.ReflectionHelper; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.lang.reflect.Field; +import net.minecraft.client.settings.KeyBinding; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +public final class KeyState { + private static final Field PRESSED = ReflectionHelper.findField(KeyBinding.class, "pressed", "field_74513_e"); + private static final String[] NAMES = readNames(); + + private KeyState() { + } + + private static String[] readNames() { + InputStream stream = Platform.resource("/assets/slinkysemantic/KeyNames.json"); + if (stream == null) { + throw new IllegalStateException("Missing recovered key labels"); + } else { + try (Reader reader = new InputStreamReader(stream, "UTF-8")) { + JsonArray rows = new JsonParser().parse(reader).getAsJsonArray(); + String[] result = new String[rows.size()]; + + for (int i = 0; i < result.length; i++) { + result[i] = rows.get(i).getAsString(); + } + + return result; + } catch (IOException var17) { + throw new IllegalStateException(var17); + } + } + } + + public static String displayName(int binding) { + int index = binding - 1; + return Integer.compareUnsigned(index, 102) > 0 ? NAMES[0] : NAMES[binding]; + } + + public static boolean physical(KeyBinding key) { + int code = key.getKeyCode(); + return code < 0 ? Mouse.isButtonDown(code + 100) : code <= 256 && Keyboard.isKeyDown(code); + } + + public static void restore(KeyBinding key) { + set(key, physical(key)); + } + + public static void set(KeyBinding key, boolean value) { + try { + PRESSED.setBoolean(key, value); + } catch (IllegalAccessException var3) { + throw new IllegalStateException("Cannot set key pressed state", var3); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/MinecraftInputAdapter.java b/SlinkyClient/src/main/java/dev/slinky/client/input/MinecraftInputAdapter.java new file mode 100644 index 0000000..c741ea7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/MinecraftInputAdapter.java @@ -0,0 +1,34 @@ +package dev.slinky.client.input; + +import dev.slinky.module.ModuleManager; +import java.nio.charset.StandardCharsets; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +public final class MinecraftInputAdapter { + private MinecraftInputAdapter() { + } + + public static int keyboard(ModuleManager modules) { + InputQuery.Request request = new InputQuery.Request(2, NativeKeyMap.keyboardId(Keyboard.getEventKey()), Keyboard.getEventKeyState()); + request.utf8 = String.valueOf(Keyboard.getEventCharacter()).getBytes(StandardCharsets.UTF_8); + return modules.input().input(request); + } + + public static int mouse(ModuleManager modules) { + int button = Mouse.getEventButton(); + InputQuery.Request request; + if (button >= 0) { + request = new InputQuery.Request(2, NativeKeyMap.mouseId(button), Mouse.getEventButtonState()); + } else if (Mouse.getEventDWheel() != 0) { + request = new InputQuery.Request(3, 0, false); + request.wheel = (float)Mouse.getEventDWheel(); + } else { + request = new InputQuery.Request(1, 0, false); + } + + request.x = Mouse.getEventX(); + request.y = modules.context().minecraft().displayHeight - Mouse.getEventY() - 1; + return modules.input().input(request); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/input/NativeKeyMap.java b/SlinkyClient/src/main/java/dev/slinky/client/input/NativeKeyMap.java new file mode 100644 index 0000000..238dfdc --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/input/NativeKeyMap.java @@ -0,0 +1,107 @@ +package dev.slinky.client.input; + +import org.lwjgl.input.Keyboard; + +public final class NativeKeyMap { + private static final int[] CODES = createCodes(); + + private NativeKeyMap() { + } + + private static int[] createCodes() { + int[] result = new int[104]; + + for (int id = 1; id <= 5; id++) { + result[id] = id - 101; + } + + for (int digit = 0; digit < 10; digit++) { + result[6 + digit] = Keyboard.getKeyIndex(Integer.toString(digit)); + result[16 + digit] = Keyboard.getKeyIndex("NUMPAD" + digit); + } + + for (int letter = 0; letter < 26; letter++) { + result[26 + letter] = Keyboard.getKeyIndex(Character.toString((char)(65 + letter))); + } + + String[] punctuation = new String[]{ + "SEMICOLON", "EQUALS", "COMMA", "MINUS", "PERIOD", "SLASH", "GRAVE", "LBRACKET", "BACKSLASH", "RBRACKET", "APOSTROPHE" + }; + + for (int index = 0; index < punctuation.length; index++) { + result[52 + index] = Keyboard.getKeyIndex(punctuation[index]); + } + + String[] arrows = new String[]{"LEFT", "UP", "RIGHT", "DOWN"}; + + for (int index = 0; index < arrows.length; index++) { + result[63 + index] = Keyboard.getKeyIndex(arrows[index]); + } + + for (int function = 1; function <= 16; function++) { + result[66 + function] = Keyboard.getKeyIndex("F" + function); + } + + String[] controls = new String[]{ + "BACK", + "TAB", + "RETURN", + "CAPITAL", + "ESCAPE", + "SPACE", + "PRIOR", + "NEXT", + "END", + "HOME", + "SYSRQ", + "INSERT", + "DELETE", + "NUMLOCK", + "SCROLL", + "LSHIFT", + "RSHIFT", + "LCONTROL", + "RCONTROL", + "LMENU", + "RMENU" + }; + + for (int index = 0; index < controls.length; index++) { + result[83 + index] = Keyboard.getKeyIndex(controls[index]); + } + + return result; + } + + public static boolean supported(int nativeId) { + return nativeId > 0 && nativeId < CODES.length && CODES[nativeId] != 0; + } + + public static int gameCode(int nativeId) { + return supported(nativeId) ? CODES[nativeId] : 0; + } + + public static int keyboardId(int code) { + if (code <= 0) { + return 0; + } else if (code == 156) { + return 85; + } else { + for (int id = 6; id < CODES.length; id++) { + if (CODES[id] == code) { + return id; + } + } + + return 0; + } + } + + public static int mouseId(int button) { + return button >= 0 && button < 5 ? button + 1 : 0; + } + + public static int capturedId(int nativeId) { + return nativeId != 1 && nativeId != 87 ? nativeId : 0; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableAccess.java new file mode 100644 index 0000000..0031138 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableAccess.java @@ -0,0 +1,140 @@ +package dev.slinky.client.inventory; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; + +public interface ConsumableAccess { + boolean ready(); + + float health(); + + float maximumHealth(); + + boolean usingItem(); + + int current(); + + int type(int var1); + + int damage(int var1); + + void remember(); + + void select(int var1); + + void use(); + + void drop(); + + boolean claim(); + + void release(); + + void disable(); + + public static final class Live implements ConsumableAccess { + private final Module module; + private final ModuleManager manager; + private InventoryPlayer savedInventory; + private int savedSlot; + public ClientContext context; + + public Live(Module module, ModuleManager manager) { + this.module = module; + this.manager = manager; + } + + @Override + public boolean ready() { + return this.context.inputReady(); + } + + @Override + public float health() { + return this.context.player().getHealth(); + } + + @Override + public float maximumHealth() { + return this.context.player().getMaxHealth(); + } + + @Override + public boolean usingItem() { + return this.context.player().isUsingItem(); + } + + @Override + public int current() { + return this.context.player().inventory.currentItem; + } + + @Override + public int type(int slot) { + return InventoryActions.type(this.context.player().inventory.getStackInSlot(slot)); + } + + @Override + public int damage(int slot) { + ItemStack s = this.context.player().inventory.getStackInSlot(slot); + return s == null ? 0 : s.getItemDamage(); + } + + @Override + public void remember() { + this.savedInventory = this.context.player().inventory; + this.savedSlot = this.savedInventory.currentItem; + } + + @Override + public void select(int slot) { + this.context.player().inventory.currentItem = slot; + if (this.context.player().inventory == this.savedInventory && slot == this.savedSlot) { + this.savedInventory = null; + } + } + + @Override + public void use() { + InventoryActions.press(this.context.minecraft().gameSettings.keyBindUseItem); + } + + @Override + public void drop() { + InventoryActions.press(this.context.minecraft().gameSettings.keyBindDrop); + } + + @Override + public boolean claim() { + return ModuleActionService.claim(this.module); + } + + @Override + public void release() { + ModuleActionService.release(this.module); + } + + @Override + public void disable() { + this.manager.requestEnabled(this.module, false); + } + + public void cleanup() { + if (this.savedInventory != null) { + this.savedInventory.currentItem = this.savedSlot; + this.savedInventory = null; + } + + this.release(); + this.context = null; + } + + public void forget() { + this.savedInventory = null; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableDelay.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableDelay.java new file mode 100644 index 0000000..faa4c88 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ConsumableDelay.java @@ -0,0 +1,29 @@ +package dev.slinky.client.inventory; + +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; + +public final strictfp class ConsumableDelay { + private final RotationRandom.Smooth first = new RotationRandom.Smooth(); + private final RotationRandom.Smooth gate = new RotationRandom.Smooth(); + + public strictfp float switching(float base, double now, RotationRandom random) { + float result = RotationMath.max(0.0F, base - this.first.sample(0.0F, 0.5F, 5.0, now, random)); + if (this.gate.gate(0.01F, 0.03F, 30.0, now, random)) { + result += random.interval(0.5F, 1.0F); + } + + return result; + } + + public strictfp float soup(float base, float scale, double now, RotationRandom random) { + float a = this.first.sample(0.0F, 0.5F, 60.0, now, random); + float b = this.first.sample(0.0F, 0.5F, 5.0, now, random); + float sum = b + a; + if (this.gate.gate(0.03F, 0.06F, 60.0, now, random)) { + sum += random.interval(0.5F, 2.5F); + } + + return sum * scale + base; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/InvWalkControllerInputAdapter.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InvWalkControllerInputAdapter.java new file mode 100644 index 0000000..d641e1f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InvWalkControllerInputAdapter.java @@ -0,0 +1,17 @@ +package dev.slinky.client.inventory; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; + +public final class InvWalkControllerInputAdapter { + private InvWalkControllerInputAdapter() { + } + + public static void drain() { + while (Mouse.next()) { + } + + while (Keyboard.next()) { + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventoryActions.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventoryActions.java new file mode 100644 index 0000000..864d6d1 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventoryActions.java @@ -0,0 +1,90 @@ +package dev.slinky.client.inventory; + +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.InventoryBasic; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public final class InventoryActions { + private static final Field PRESS_COUNT = ReflectionHelper.findField(KeyBinding.class, "pressTime", "field_151474_i"); + private static final Method CLICK = ReflectionHelper.findMethod( + GuiContainer.class, null, new String[]{"handleMouseClick", "func_146984_a"}, Slot.class, int.class, int.class, int.class + ); + private static final Method KEY = ReflectionHelper.findMethod(GuiScreen.class, null, new String[]{"keyTyped", "func_73869_a"}, char.class, int.class); + private static final Field CHEST_INVENTORY = ReflectionHelper.findField(GuiChest.class, "lowerChestInventory", "field_147015_w"); + private static final Field INVENTORY_TITLE = ReflectionHelper.findField(InventoryBasic.class, "inventoryTitle", "field_70483_a"); + + private InventoryActions() { + } + + public static int type(ItemStack stack) { + return stack != null && stack.getItem() != null ? Item.getIdFromItem(stack.getItem()) : 0; + } + + public static void press(KeyBinding key) { + try { + PRESS_COUNT.setInt(key, PRESS_COUNT.getInt(key) + 1); + } catch (IllegalAccessException var2) { + throw new IllegalStateException("Cannot increment key press count", var2); + } + } + + public static void pressCount(KeyBinding key, int count) { + try { + PRESS_COUNT.setInt(key, count); + } catch (IllegalAccessException var3) { + throw new IllegalStateException("Cannot set key press count", var3); + } + } + + public static void click(GuiContainer screen, int slot, int button, int mode) { + invoke(CLICK, screen, null, slot, button, mode); + } + + public static void escape(GuiScreen screen) { + invoke(KEY, screen, '\u0000', 1); + } + + public static String chestTitle(GuiChest screen) { + try { + IInventory inventory = (IInventory)CHEST_INVENTORY.get(screen); + return inventory instanceof InventoryBasic ? (String)INVENTORY_TITLE.get(inventory) : null; + } catch (IllegalAccessException var2) { + throw new IllegalStateException("Cannot read chest title", var2); + } + } + + private static void invoke(Method method, Object target, Object... args) { + try { + method.invoke(target, args); + } catch (ReflectiveOperationException var4) { + throw new IllegalStateException("Minecraft inventory action failed", var4); + } + } + + public static int truncateDouble(double value) { + return !Double.isNaN(value) && !(value >= 2.1474836E9F) && !(value < -2.1474836E9F) ? (int)value : Integer.MIN_VALUE; + } + + public static long truncateDoubleLong(double value) { + return !Double.isNaN(value) && !(value >= 9.223372E18F) && !(value < -9.223372E18F) ? (long)value : Long.MIN_VALUE; + } + + public static float[] grid(int slot) { + long index = Integer.toUnsignedLong(slot); + if (index <= 8L) { + return new float[]{(float)Integer.toUnsignedLong(slot - 5), 1.0F}; + } else { + int quotient = (int)(index * 954437177L >>> 33); + return new float[]{(float)Integer.toUnsignedLong(quotient + 3), (float)(slot - quotient * 9)}; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventorySelection.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventorySelection.java new file mode 100644 index 0000000..88cd23f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/InventorySelection.java @@ -0,0 +1,437 @@ +package dev.slinky.client.inventory; + +import dev.slinky.client.numeric.NumericMath; +import java.util.Arrays; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; + +public final strictfp class InventorySelection { + private InventorySelection() { + } + + public static strictfp long material(int type) { + int category = 0; + int tier = 0; + switch (type) { + case 256: + category = 16; + tier = 3; + break; + case 257: + category = 14; + tier = 3; + break; + case 258: + category = 1; + tier = 3; + break; + case 267: + category = 22; + tier = 3; + break; + case 268: + category = 22; + tier = 1; + break; + case 269: + category = 16; + tier = 1; + break; + case 270: + category = 14; + tier = 1; + break; + case 271: + category = 1; + tier = 1; + break; + case 272: + category = 22; + tier = 2; + break; + case 273: + category = 16; + tier = 2; + break; + case 274: + category = 14; + tier = 2; + break; + case 275: + category = 1; + tier = 2; + break; + case 276: + category = 22; + tier = 5; + break; + case 277: + category = 16; + tier = 5; + break; + case 278: + category = 14; + tier = 5; + break; + case 279: + category = 1; + tier = 5; + break; + case 283: + category = 22; + tier = 4; + break; + case 284: + category = 16; + tier = 4; + break; + case 285: + category = 14; + tier = 4; + break; + case 286: + category = 1; + tier = 4; + break; + case 359: + category = 15; + tier = 1; + } + + return (long)tier << 32 | (long)category; + } + + public static strictfp int weighted(int[][] tags, int table) { + int total = 0; + + for (int[] tag : tags) { + int id = tag[0] & 65535; + int level = tag[1]; + int coefficient = 0; + if (table == 0) { + coefficient = id == 16 ? 50 : (id != 19 && id != 20 ? 0 : 1); + } else if (table == 1) { + coefficient = id == 48 ? 100 : (id == 49 ? 10 : (id != 50 && id != 51 ? 0 : 1)); + } else { + coefficient = id == 16 ? 1 : (id == 32 ? 10 : (id == 62 ? 83 : 0)); + } + + if ((short)level >= 0) { + total += coefficient * level; + } + } + + return total; + } + + public static strictfp int category(int category, InventorySelection.Stack s) { + if (s != null && category >= 1 && category <= 26) { + int item = s.type; + int damage = s.damage; + switch (category) { + case 2: + switch (item) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 17: + case 18: + case 20: + case 24: + case 35: + case 45: + case 49: + case 78: + case 87: + case 95: + case 98: + case 121: + case 125: + case 133: + case 155: + case 159: + case 162: + return 1; + default: + return 0; + } + case 3: + return item == 261 ? weighted(s.tags, 1) + 1 & 65535 : 0; + case 4: + return item == 54 ? 1 : 0; + case 5: + return item == 368 ? (s.flag ? 1 : 2) : 0; + case 6: + return item == 385 ? 1 : 0; + case 7: + return item == 346 ? 1 : 0; + case 8: + return item == 259 ? 1 : 0; + case 9: + return item == 322 ? (damage == 1 ? 2 : 1) : 0; + case 10: + case 11: + case 19: + case 21: + if (item != 373) { + return 0; + } else { + int effect = damage & 15; + int score; + if (effect == 1 && category == 10) { + score = 1; + } else if (effect == 5 && category == 10) { + score = 2; + } else { + if ((effect != 2 || category != 19) && (effect != 9 || category != 21) && (effect != 11 || category != 11)) { + return 0; + } + + score = 1; + } + + return score + (damage >>> 6 & 1) + (damage >>> 5 & 1); + } + case 12: + return item == 65 ? 1 : 0; + case 13: + return item == 327 ? 1 : 0; + case 14: + case 15: + case 16: + case 22: + case 25: + default: + long classified = material(item); + int kind = (int)classified; + int tier = (int)(classified >>> 32); + if (category != 22 && category != 25) { + return category == kind ? weighted(s.tags, 2) + tier * 100 & 65535 : 0; + } else { + if (category == 22 && kind != 22) { + return 0; + } + + int preference = category == 22 ? 4 : (kind == 1 ? 3 : (kind == 14 ? 2 : (kind == 16 ? 1 : (kind == 22 ? 4 : 0)))); + int material = new int[]{0, 0, 1, 2, 0, 3}[tier]; + return weighted(s.tags, 0) + (preference + material) * 40 & 65535; + } + case 17: + return item != 332 && item != 344 ? 0 : 1; + case 18: + return item != 413 && item != 282 ? 0 : 1; + case 20: + return item == 280 ? 1 : 0; + case 23: + return item == 46 ? 1 : 0; + case 24: + return item == 326 ? 1 : 0; + case 26: + return item == 35 ? 1 : 0; + } + } else { + return 0; + } + } + + public static strictfp int policy(int category, InventorySelection.Stack s, boolean fallback) { + int score = category(category, s); + if (!fallback) { + return score; + } else if (score != 0) { + return score << 16; + } else { + return category == 22 ? category(25, s) : (category == 17 ? category(7, s) : (category == 7 ? category(17, s) : 0)); + } + } + + public static strictfp int armor(InventorySelection.Stack s, int slot) { + if (s == null) { + return 0; + } else { + int index = s.type - 298; + if (index >= 0 && index < 20 && index % 4 == slot) { + int material = new int[]{0, 2, 3, 4, 1}[index / 4]; + int base = new int[]{1, 3, 2, 1, 2, 5, 3, 1, 2, 5, 4, 1, 2, 6, 5, 2, 3, 8, 6, 3}[material * 4 + slot]; + float other = 0.0F; + float protection = 0.0F; + + for (int[] tag : s.tags) { + int id = tag[0] & 65535; + int level = (short)tag[1]; + if (level >= 0) { + if (id >= 1 && id <= 4) { + other = (float)((double)level * 0.1 + (double)other); + } else if (id == 0) { + int quantized = (int)InventoryActions.truncateDoubleLong((double)(level * level + 6) * 0.75 / 3.0); + if (Integer.compareUnsigned(quantized, 25) >= 0) { + quantized = 25; + } + + protection = (float)((quantized >>> 1) + (quantized + 1 & 62)) * 0.5F; + } + } + } + + double enchantments = (double)(other + protection); + float combined = (float)(1.0 - (1.0 - enchantments * 0.04) * (1.0 - (double)base * 0.04)); + return (int)NumericMath.truncateLong(combined * 1000.0F); + } else { + return 0; + } + } + } + + public static strictfp InventorySelection.Action planArmor(InventorySelection.Stack[] main, InventorySelection.Stack equipped, int armor) { + int bestScore = armor(equipped, armor); + int best = -1; + + for (int slot = 0; slot < 36; slot++) { + int score = armor(main[slot], armor); + if (Integer.compareUnsigned(bestScore, score) < 0) { + bestScore = score; + best = slot; + } + } + + if (best == -1) { + return null; + } else if (equipped == null) { + return new InventorySelection.Action(0, best < 9 ? best + 36 : best, 0); + } else { + return best < 9 ? new InventorySelection.Action(1, armor + 5, best) : new InventorySelection.Action(2, best, armor + 5); + } + } + + public static strictfp InventorySelection.Action planHotbar(InventorySelection.Stack[] main, int destination, int category, boolean fallback, long processed) { + if (category == 0) { + return null; + } else { + InventorySelection.Stack original = main[destination]; + int originalCount = original == null ? 0 : original.count; + int max = original == null ? 0 : original.maximum; + int originalScore = policy(category, original, fallback); + long identity = original == null ? 0L : original.identity(); + boolean empty = false; + + for (int i = 9; i < 36; i++) { + if (main[i] == null) { + empty = true; + break; + } + } + + if (originalCount <= 0) { + originalCount = 0; + } + + int bestScore = originalCount * originalScore; + int best = destination; + int mergeFlag = empty ? 0 : 36; + + for (int slot = 0; slot < 36; slot++) { + InventorySelection.Stack candidate = main[slot]; + if (slot != destination && (processed >>> slot & 1L) == 0L && candidate != null) { + int count = candidate.count; + int merged = 0; + if (originalCount < max && count < max && candidate.identity() == identity && original != null && original.sameTags(candidate)) { + int combined = count + originalCount; + if (combined >= max) { + combined = max; + } + + merged = combined * originalScore; + } + + int score = policy(category, candidate, fallback) * count; + boolean merge = Integer.compareUnsigned(score - 1, merged) < 0; + if (merge) { + score = merged; + } + + if (Integer.compareUnsigned(bestScore, score) < 0) { + if (slot < 9 && !empty && merge) { + mergeFlag &= 255; + } else { + best = slot; + bestScore = score; + mergeFlag = merge ? 1 : 0; + } + } + } + } + + return best == destination ? null : new InventorySelection.Action(~mergeFlag & 1, best < 9 ? best + 36 : best, (mergeFlag & 1) != 0 ? 0 : destination); + } + } + + public static strictfp long processedBit(int scan) { + return (long)(1 << (scan & 31)); + } + + public static final strictfp class Action { + public int kind; + public int source; + public int destination; + + public Action(int kind, int source, int destination) { + this.kind = kind; + this.source = source; + this.destination = destination; + } + } + + public static final strictfp class Stack { + public final int type; + public final int damage; + public final int count; + public final int maximum; + public final boolean flag; + public final int[][] tags; + public final ItemStack source; + + public Stack(int type, int damage, int count, int maximum, boolean flag, int[][] tags) { + this(type, damage, count, maximum, flag, tags, null); + } + + private Stack(int type, int damage, int count, int maximum, boolean flag, int[][] tags, ItemStack source) { + this.type = type; + this.damage = damage; + this.count = count; + this.maximum = maximum; + this.flag = flag; + this.tags = tags; + this.source = source; + } + + public static strictfp InventorySelection.Stack of(ItemStack stack) { + if (stack == null) { + return null; + } else { + NBTTagList nbt = stack.getEnchantmentTagList(); + int[][] tags = new int[nbt == null ? 0 : nbt.tagCount()][2]; + + for (int i = 0; i < tags.length; i++) { + tags[i][0] = nbt.getCompoundTagAt(i).getShort("id") & '\uffff'; + tags[i][1] = nbt.getCompoundTagAt(i).getShort("lvl"); + } + + return new InventorySelection.Stack( + InventoryActions.type(stack), stack.getItemDamage(), stack.stackSize, stack.getMaxStackSize(), stack.hasDisplayName(), tags, stack + ); + } + } + + public strictfp long identity() { + return (long)this.type << 32 | (long)this.damage; + } + + public strictfp boolean sameTags(InventorySelection.Stack other) { + return this.source == null && other.source == null + ? Arrays.deepEquals(this.tags, other.tags) + : ItemStack.areItemStackTagsEqual(this.source, other.source); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/ItemPolicyService.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ItemPolicyService.java new file mode 100644 index 0000000..4abe3af --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/ItemPolicyService.java @@ -0,0 +1,85 @@ +package dev.slinky.client.inventory; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.TreeSet; + +public final class ItemPolicyService { + private static final Map IDENTIFIERS = new LinkedHashMap<>(); + private static final Map NAMES = new LinkedHashMap<>(); + + private ItemPolicyService() { + } + + public static int identifier(String canonicalName) { + Integer id = IDENTIFIERS.get(canonicalName); + return id == null ? -1 : id; + } + + public static String name(int identifier) { + return NAMES.get(identifier); + } + + public static boolean contains(List canonicalNames, int identifier) { + for (String name : canonicalNames) { + int resolved = identifier(name); + if (resolved != -1 && resolved == identifier) { + return true; + } + } + + return false; + } + + public static List canonicalize(List input) { + TreeSet ids = new TreeSet<>(new Comparator() { + public int compare(Integer a, Integer b) { + return a - b; + } + }); + + for (String name : input) { + int id = identifier(name); + if (id != -1) { + ids.add(id); + } + } + + List result = new ArrayList<>(); + + for (Integer id : ids) { + result.add(name(id)); + } + + return Collections.unmodifiableList(result); + } + + static { + try (Reader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/ItemCatalog.json"), "UTF-8")) { + for (JsonElement e : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = e.getAsJsonObject(); + String name = row.get("name").getAsString(); + int id = row.get("id").getAsInt(); + IDENTIFIERS.put(name, id); + NAMES.put(id, name); + } + + if (IDENTIFIERS.size() != 385) { + throw new IllegalStateException("Incomplete recovered item catalog"); + } + } catch (IOException var17) { + throw new ExceptionInInitializerError(var17); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/inventory/RefillSelection.java b/SlinkyClient/src/main/java/dev/slinky/client/inventory/RefillSelection.java new file mode 100644 index 0000000..d50cd3e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/inventory/RefillSelection.java @@ -0,0 +1,103 @@ +package dev.slinky.client.inventory; + +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationMath; + +public final strictfp class RefillSelection { + private RefillSelection() { + } + + public static strictfp int classify(int type, int damage, boolean soups, boolean pots, boolean nonHealth) { + if (type == 0) { + return 0; + } else if (type == 282) { + return soups ? 2 : 1; + } else if (type == 373 && pots && (damage & 16384) != 0) { + return (damage & 15) != 5 && !nonHealth ? 1 : 2; + } else { + return 1; + } + } + + public static strictfp RefillSelection.Result choose(byte[] mask, int previous, float angle, RefillSelection.Gates gates) { + float x = (float)(previous % 9); + float y = (float)(previous / 9); + float bestScore = Float.MAX_VALUE; + float secondScore = Float.MAX_VALUE; + float emptyScore = Float.MAX_VALUE; + float bestBearing = 0.0F; + float secondBearing = 0.0F; + float emptyBearing = 0.0F; + int best = -1; + int second = -1; + int empty = -1; + + for (int slot = 0; slot < 27; slot++) { + int mark = mask[slot] & 255; + if (mark == 2 || mark == 0 && !gates.skipEmpty()) { + float dx = (float)(slot % 9) - x; + float dy = (float)(slot / 9) - y; + float distance = NumericMath.floatDistance(dx, dy); + float bearing = RotationMath.atan2(dy, dx); + float angular = RotationMath.abs(RotationMath.wrap(bearing - angle)) * 0.5F; + float score = distance * 1.2F + angular; + if (mark == 0) { + if (!(emptyScore < score)) { + emptyBearing = bearing; + } + + if (!(score > emptyScore)) { + empty = slot; + } + + emptyScore = RotationMath.min(emptyScore, score); + } else { + boolean replaces = !(score > bestScore); + if (replaces) { + secondScore = bestScore; + second = best; + } + + if (!(bestScore < score)) { + secondBearing = bestBearing; + } + + if (replaces) { + bestBearing = bearing; + best = slot; + } + + bestScore = RotationMath.min(bestScore, score); + } + } + } + + if (bestScore > emptyScore && gates.chooseEmpty()) { + return new RefillSelection.Result(empty, emptyScore, emptyBearing); + } else { + return second != -1 && (double)bestScore * 1.5 > (double)secondScore && gates.chooseSecond() + ? new RefillSelection.Result(second, secondScore, secondBearing) + : new RefillSelection.Result(best, bestScore, bestBearing); + } + } + + public interface Gates { + boolean skipEmpty(); + + boolean chooseEmpty(); + + boolean chooseSecond(); + } + + public static final strictfp class Result { + public final int slot; + public final float score; + public final float bearing; + + Result(int slot, float score, float bearing) { + this.slot = slot; + this.score = score; + this.bearing = bearing; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleNumeric.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleNumeric.java new file mode 100644 index 0000000..6e2fe4d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleNumeric.java @@ -0,0 +1,208 @@ +package dev.slinky.client.numeric; + +public final strictfp class DoubleNumeric { + private DoubleNumeric() { + } + + private static strictfp long c(int address) { + return NumericConstants.longAt(address); + } + + private static strictfp double d(int address) { + return NumericConstants.doubleAt(address); + } + + public static strictfp long upperProduct(long a, long b) { + long al = a & 4294967295L; + long bl = b & 4294967295L; + long ah = a >>> 32; + long bh = b >>> 32; + long low = al * bl; + long left = ah * bl; + long right = al * bh; + long middle = (low >>> 32) + (left & 4294967295L) + (right & 4294967295L); + return ah * bh + (left >>> 32) + (right >>> 32) + (middle >>> 32); + } + + public static strictfp double invalid(double input) { + long bits = Double.doubleToRawLongBits(input); + return Double.longBitsToDouble(Long.compareUnsigned(bits & Long.MAX_VALUE, 9218868437227405312L) > 0 ? bits | 2251799813685248L : -2251799813685248L); + } + + public static strictfp double sqrt(double input) { + long bits = Double.doubleToRawLongBits(input); + long exponent = bits >>> 52; + if (Long.compareUnsigned(exponent - 2047L, -2046L) < 0) { + if (input == 0.0 || bits == 9218868437227405312L) { + return input; + } + + if (Long.compareUnsigned(bits, 9218868437227405312L) > 0) { + return invalid(input); + } + + input *= d(2864952); + bits = Double.doubleToRawLongBits(input); + exponent = (bits >>> 52) - 52L; + } + + long significand = bits << 11 | Long.MIN_VALUE; + if ((exponent & 1L) != 0L) { + significand = bits << 10 & 9223372036854774784L; + } + + long reciprocal = (long)NumericConstants.shortAt(2875200 + 2 * (int)(bits >>> 46 & 127L)) << 16; + long root = (significand >>> 32) * reciprocal >>> 32; + long square = root * reciprocal >>> 32; + int correction = -1073741824 - (int)square; + reciprocal = reciprocal * ((long)correction & 4294967295L) >>> 31 & 4294967294L; + root = root * ((long)correction & 4294967295L) >>> 31 & 4294967294L; + correction = -1073741824 - (int)(root * reciprocal >>> 32); + long inverse = 2L * ((long)correction & 4294967295L) * reciprocal & -8589934592L; + root = upperProduct(inverse, significand); + root = upperProduct(root, -4611686018427387904L - upperProduct(root, inverse)); + root = root - 2L >>> 9; + significand <<= 42; + long residual = root * root - significand + root; + long rounded = root + (residual >>> 63); + long test = root + residual; + long result = 2303591209400008704L + (exponent << 51) & -4503599627370496L | rounded & 4503599627370495L; + double value = Double.longBitsToDouble(result); + if (++test != 0L) { + long adjustment = 4503599627370496L | (test ^ residual) & Long.MIN_VALUE; + value += Double.longBitsToDouble(adjustment); + } + + return value; + } + + public static strictfp double scale(double value, int amount) { + long bits = Double.doubleToRawLongBits(value); + int stored = (int)(bits >>> 52 & 2047L); + if (stored == 2047) { + return value; + } else { + long sign = bits & Long.MIN_VALUE; + long doubled = bits * 2L; + int high = doubled != 0L ? 63 - Long.numberOfLeadingZeros(doubled) : 127; + int effective = stored != 0 ? stored : (doubled != 0L ? high - 52 : -53); + if (amount >= 0) { + if (amount > 2046 - effective) { + return Double.longBitsToDouble(bits & c(2863232) | c(2863248)); + } else { + int adjusted = effective + amount; + if (adjusted <= 0) { + return Double.longBitsToDouble(bits << amount | sign); + } else if (effective > 0) { + return Double.longBitsToDouble(bits + ((long)amount << 52)); + } else { + long fraction = bits << 1 - effective & 4503599627370495L; + return Double.longBitsToDouble(fraction | (long)adjusted << 52 | sign); + } + } + } else { + int positive = -amount; + if (amount > -effective) { + return Double.longBitsToDouble(bits - (((long)positive & 4294967295L) << 52)); + } else if (amount < -52 - effective) { + return Double.longBitsToDouble(sign); + } else { + int sum = amount + effective; + int shift = (Integer.compareUnsigned(positive, 1 - sum) < 0 ? positive : 1 - sum) - 1 & 63; + boolean tie = Long.numberOfTrailingZeros(bits) == shift; + long significand = bits & 4503599627370495L | (effective > 0 ? 4503599627370496L : 0L); + long rounded = (significand >>> shift) + 1L >>> 1; + rounded &= ~(tie ? 1L : 0L); + return Double.longBitsToDouble(bits & c(2863232) | rounded & c(2863216)); + } + } + } + } + + public static strictfp double floor(double value) { + long bits = Double.doubleToRawLongBits(value); + long exponent = bits >>> 52 & 2047L; + if (exponent < 1075L && value != 0.0) { + double positive = d(2868888); + double negative = d(2868896); + double minusOne = d(2868904); + boolean below = bits < 0L; + double correction = below ? positive + (negative + value) - value : positive + value + negative - value; + if (exponent <= 1022L) { + return below ? minusOne : 0.0; + } else { + double integer = value + correction; + return correction > 0.0 ? integer + minusOne : integer; + } + } else { + return value; + } + } + + public static strictfp double remainder(double first, double second) { + long x = Double.doubleToRawLongBits(first); + long y = Double.doubleToRawLongBits(second); + long sign = x & Long.MIN_VALUE; + long dividend = x & Long.MAX_VALUE; + long divisor = y & Long.MAX_VALUE; + int dividendExponent = (int)(dividend >>> 52); + int divisorExponent = (int)(divisor >>> 52); + if (divisor != 0L && divisor <= 9218868437227405312L && dividendExponent != 2047) { + if (dividend <= divisor) { + return dividend == divisor ? Double.longBitsToDouble(sign) : first; + } else { + if (dividendExponent != 0) { + dividend = dividend & 4503599627370495L | 4503599627370496L; + } else { + for (dividendExponent = 1; dividend < 4503599627370496L; dividendExponent--) { + dividend <<= 1; + } + } + + if (divisorExponent != 0) { + divisor = divisor & 4503599627370495L | 4503599627370496L; + } else { + for (divisorExponent = 1; divisor < 4503599627370496L; divisorExponent--) { + divisor <<= 1; + } + } + + while (dividendExponent > divisorExponent) { + if (dividend >= divisor) { + dividend -= divisor; + if (dividend == 0L) { + return Double.longBitsToDouble(sign); + } + } + + dividend <<= 1; + dividendExponent--; + } + + if (dividend >= divisor) { + dividend -= divisor; + if (dividend == 0L) { + return Double.longBitsToDouble(sign); + } + } + + while (dividend < 4503599627370496L) { + dividend <<= 1; + dividendExponent--; + } + + if (dividendExponent > 0) { + dividend = dividend - 4503599627370496L | (long)dividendExponent << 52; + } else { + dividend >>>= 1 - dividendExponent; + } + + return Double.longBitsToDouble(dividend | sign); + } + } else if (dividend > 9218868437227405312L) { + return invalid(first); + } else { + return divisor > 9218868437227405312L ? invalid(second) : Double.longBitsToDouble(-2251799813685248L); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleTrigonometry.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleTrigonometry.java new file mode 100644 index 0000000..e5d65e2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/DoubleTrigonometry.java @@ -0,0 +1,208 @@ +package dev.slinky.client.numeric; + +public final strictfp class DoubleTrigonometry { + private DoubleTrigonometry() { + } + + private static strictfp double c(int address) { + return NumericConstants.doubleAt(address); + } + + private static strictfp int exponent(double value) { + return (int)(Double.doubleToRawLongBits(value) >>> 52 & 2047L); + } + + private static strictfp double negate(double value, int address) { + return Double.longBitsToDouble(Double.doubleToRawLongBits(value) ^ NumericConstants.longAt(address)); + } + + private static strictfp void direct(double value, double[] output, int head, int tail) { + double first = value + c(head); + double correction = c(tail); + output[0] = first + correction; + output[1] = first - output[0] + correction; + } + + public static strictfp int reduce(double value, double[] output) { + long bits = Double.doubleToRawLongBits(value); + int high = (int)(bits >>> 32) & 2147483647; + boolean negative = bits < 0L; + boolean nearbyCancellation = false; + if (high <= 1074752122) { + if (((int)(bits >>> 32) & 1048575) != 598523) { + if (high <= 1073928572) { + direct(value, output, negative ? 2864800 : 2864616, negative ? 2864624 : 2864792); + return negative ? -1 : 1; + } + + direct(value, output, negative ? 2864776 : 2864760, negative ? 2864784 : 2864768); + return negative ? -2 : 2; + } + } else if (high < 1075594812) { + if (high < 1075183037) { + if (high != 1074977148) { + direct(value, output, negative ? 2864744 : 2864728, negative ? 2864752 : 2864736); + return negative ? -3 : 3; + } + } else if (high != 1075388923) { + direct(value, output, negative ? 2864712 : 2864696, negative ? 2864720 : 2864704); + return negative ? -4 : 4; + } + + nearbyCancellation = true; + } else if (high >= 1094263291) { + if (high >= 2146435072) { + output[0] = DoubleNumeric.invalid(value); + output[1] = output[0]; + return 0; + } + + double normalized = Double.longBitsToDouble(bits & 4503599627370495L | 4710765210229538816L); + double[] chunks = new double[]{(double)NumericMath.truncateInt(normalized), 0.0, 0.0}; + double fraction = (normalized - chunks[0]) * c(2864560); + chunks[1] = (double)NumericMath.truncateInt(fraction); + chunks[2] = (fraction - chunks[1]) * c(2864560); + int count = 3; + + while (chunks[count - 1] == 0.0) { + count--; + } + + double[] residual = new double[2]; + int quadrant = LargeReduction.reduce(chunks, residual, (high >>> 20) - 1046, count, 1); + if (negative) { + output[0] = negate(residual[0], 2864576); + output[1] = negate(residual[1], 2864584); + return -quadrant; + } + + output[0] = residual[0]; + output[1] = residual[1]; + return quadrant; + } + + double multiple = c(2864592) * value; + multiple += c(2864600); + multiple += c(2864608); + int quadrant = NumericMath.truncateInt(multiple); + double remainder = c(2864616) * multiple + value; + double tail = c(2864624) * multiple; + double first = remainder - tail; + boolean adjust = false; + if (c(2864632) > first) { + quadrant--; + multiple += c(2864656); + adjust = true; + } else if (first > c(2864640)) { + quadrant++; + multiple += c(2864648); + adjust = true; + } + + if (adjust) { + remainder = value + c(2864616) * multiple; + tail = c(2864624) * multiple; + } + + output[0] = remainder - tail; + int inputExponent = high >>> 20; + boolean secondStage = nearbyCancellation ? exponent(output[0]) < 1009 : inputExponent - exponent(output[0]) > 16; + if (secondStage) { + double second = c(2864664) * multiple; + double reduced = remainder - second; + tail = c(2864672) * multiple - (remainder - reduced - second); + output[0] = reduced - tail; + boolean thirdStage = nearbyCancellation ? (Double.doubleToRawLongBits(output[0]) >>> 56 & 127L) <= 60L : inputExponent - exponent(output[0]) >= 50; + remainder = reduced; + if (thirdStage) { + double third = c(2864680) * multiple; + double reducedThird = reduced - third; + tail = multiple * c(2864688) - (reduced - reducedThird - third); + remainder = reducedThird; + output[0] = reducedThird - tail; + } + } + + output[1] = remainder - output[0] - tail; + return quadrant; + } + + private static strictfp double sineKernel(double x, double y) { + double z = x * x; + double cube = z * z; + double polynomial = c(2866896) * z + c(2866904); + double low = c(2866912) * z + c(2866928); + double high = polynomial * z + c(2866936); + cube *= z; + cube *= low; + double sum = high + cube; + double xz = x * z; + double correction = c(2866864) * y; + sum *= xz; + correction -= sum; + correction *= z; + correction -= y; + xz *= c(2866944); + xz += correction; + return x - xz; + } + + private static strictfp double cosineKernel(double x, double tail) { + double z = x * x; + double fourth = z * z; + double pLow = c(2866800) * z; + double pHigh = c(2866808) * z; + double lower = c(2866816) + pLow; + double upper = c(2866840) - pHigh; + lower = lower * z + c(2866848); + upper = upper * z + c(2866856); + fourth *= fourth; + double lowProduct = z * lower; + double highProduct = fourth * upper; + double polynomial = highProduct + lowProduct; + double halfZ = c(2866864) * z; + double one = c(2866872); + double head = one - halfZ; + double correction = one - head - halfZ; + polynomial *= z; + x *= tail; + polynomial -= x; + polynomial += correction; + return polynomial + head; + } + + public static strictfp double sine(double value) { + int high = (int)(Double.doubleToRawLongBits(value) >>> 32) & 2147483647; + if (high <= 1072243195) { + if (high < 1045430272) { + return value; + } else { + double z = value * value; + double cube = z * z * z; + double low = z * c(2866960) + c(2866976); + double highTerm = z * c(2866968) + c(2866984); + double lowTerm = cube * low; + double upper = z * highTerm; + double sum = upper + c(2866992); + sum += lowTerm; + double xz = value * z; + sum *= z; + sum += c(2867000); + sum *= xz; + return value + sum; + } + } else if (high > 2146435071) { + return DoubleNumeric.invalid(value); + } else { + double[] residual = new double[2]; + int quadrant = reduce(value, residual) & 3; + if ((quadrant & 1) == 0) { + double result = sineKernel(residual[0], residual[1]); + return quadrant == 2 ? negate(result, 2866880) : result; + } else { + double result = cosineKernel(residual[0], residual[1]); + return quadrant == 3 ? negate(result, 2866880) : result; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/FixedWidth.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FixedWidth.java new file mode 100644 index 0000000..10eb5f9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FixedWidth.java @@ -0,0 +1,23 @@ +package dev.slinky.client.numeric; + +import java.math.BigInteger; + +public final class FixedWidth { + private static final BigInteger TWO_64 = BigInteger.ONE.shiftLeft(64); + + private FixedWidth() { + } + + private static BigInteger unsigned(long value) { + BigInteger integer = BigInteger.valueOf(value); + return value < 0L ? integer.add(TWO_64) : integer; + } + + public static long unsignedMultiplyHigh(long left, long right) { + return unsigned(left).multiply(unsigned(right)).shiftRight(64).longValue(); + } + + public static long signedMultiplyHigh(long left, long right) { + return BigInteger.valueOf(left).multiply(BigInteger.valueOf(right)).shiftRight(64).longValue(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatNumeric.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatNumeric.java new file mode 100644 index 0000000..965eb5e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatNumeric.java @@ -0,0 +1,314 @@ +package dev.slinky.client.numeric; + +public final strictfp class FloatNumeric { + private FloatNumeric() { + } + + private static strictfp float c(int address) { + return NumericConstants.floatAt(address); + } + + private static strictfp long unsigned(int value) { + return (long)value & 4294967295L; + } + + public static strictfp float log(float input) { + int bits = Float.floatToRawIntBits(input); + int offset; + if (bits < 8388608) { + if (input == 0.0F) { + return c(2868468) / (input * input); + } + + if (bits < 0) { + return invalid(input); + } + + float value = input * c(2868464); + bits = Float.floatToRawIntBits(value); + offset = -152; + } else { + if (Integer.compareUnsigned(bits, 2139095039) > 0) { + return input; + } + + if (bits == 1065353216) { + return 0.0F; + } + + offset = -127; + } + + bits += 4913933; + int exponent = (bits >>> 23) + offset; + bits = (bits & 8388607) + 1060439283; + float reduced = Float.intBitsToFloat(bits) + c(2868468); + float denominator = c(2868472) + reduced; + float ratio = reduced / denominator; + float square = ratio * ratio; + float fourth = square * square; + float low = fourth * c(2868480); + low += c(2868496); + float high = fourth * c(2868484); + high += c(2868500); + low = square * low; + high = fourth * high; + float sum = high + low; + float halfSquare = c(2868512) * reduced; + halfSquare *= reduced; + sum += halfSquare; + sum *= ratio; + float exponentFloat = (float)exponent; + float correction = c(2868516) * exponentFloat; + correction += sum; + correction -= halfSquare; + correction += reduced; + float result = exponentFloat * c(2868520); + return result + correction; + } + + public static strictfp float invalid(float input) { + int bits = Float.floatToRawIntBits(input); + return Float.intBitsToFloat((bits & 2147483647) > 2139095040 ? bits | 4194304 : -4194304); + } + + public static strictfp float sqrt(float input) { + int bits = Float.floatToRawIntBits(input); + if (Integer.compareUnsigned(bits - 2139095040, -2130706432) < 0) { + if (input == 0.0F || bits == 2139095040) { + return input; + } + + if (Integer.compareUnsigned(bits, 2139095041) >= 0) { + return invalid(input); + } + + input *= c(2864960); + bits = Float.floatToRawIntBits(input) + -192937984; + } + + int significand = bits << 8 | -2147483648; + if ((bits & 8388608) != 0) { + significand = bits << 7 & 2147483520; + } + + int exponent = (bits >>> 1) + 532676608 & 2139095040; + long reciprocal = (long)NumericConstants.shortAt(2875200 + (bits >>> 16 & 254)) << 16; + long root = unsigned(significand) * reciprocal >>> 32; + long square = root * reciprocal >>> 32; + int correction = -1073741824 - (int)square; + reciprocal = unsigned((int)(reciprocal * unsigned(correction) >>> 31) & -2); + root = unsigned((int)(root * unsigned(correction) >>> 31) & -2); + correction = -1073741824 - (int)(reciprocal * root >>> 32); + int integer = (int)(unsigned(correction) * root >>> 32) - 1 >>> 6; + significand <<= 16; + int residual = integer * integer - significand + integer; + int rounded = integer + (residual >>> 31); + int test = integer + residual; + float value = Float.intBitsToFloat(exponent | rounded & 8388607); + test++; + int adjustment = (test == 0 ? 0 : 16777216) | (test ^ residual) & -2147483648; + return value + Float.intBitsToFloat(adjustment); + } + + public static strictfp float scale(float value, int power) { + int bits = Float.floatToRawIntBits(value); + int magnitude = bits & 2147483647; + if (magnitude >= 2139095040) { + return value; + } else { + int sign = bits & -2147483648; + int doubled = bits << 1; + int exponent = doubled >>> 24; + if (Integer.compareUnsigned(doubled, 16777216) < 0) { + int highest = doubled != 0 ? 31 - Integer.numberOfLeadingZeros(doubled) : 63; + exponent = (highest ^ -32) + 9; + } + + if (power >= 0) { + if (power > 254 - exponent) { + return Float.intBitsToFloat(sign | NumericConstants.intAt(2869408)); + } + } else if (power <= -exponent) { + if (power < -23 - exponent) { + return Float.intBitsToFloat(sign); + } + + int shift = Math.min(-power, 1 - (power + exponent)) - 1 & 31; + int tie = Integer.numberOfTrailingZeros(bits) == shift ? 1 : 0; + int significand = bits & 8388607 | (exponent > 0 ? 8388608 : 0); + int rounded = (significand >>> shift) + 1 >>> 1; + return Float.intBitsToFloat(sign | rounded & ~tie & 8388607); + } + + int nextExponent = power + exponent; + if (nextExponent <= 0) { + return Float.intBitsToFloat(bits << power | sign); + } else if (exponent > 0) { + return Float.intBitsToFloat(bits + (power << 23)); + } else { + int fraction = bits << 1 - exponent & 8388607; + return Float.intBitsToFloat(nextExponent << 23 | fraction | sign); + } + } + } + + public static strictfp float exp(float input) { + int bits = Float.floatToRawIntBits(input); + int magnitude = bits & 2147483647; + int negative = bits >>> 31; + if (magnitude > 2139095040) { + return input; + } else { + if (magnitude > 1118743631) { + if (negative == 0 && magnitude >= 1118925336) { + return input * c(2869328); + } + + if (negative != 0 && magnitude > 1120924084) { + return 0.0F; + } + } + + int power = 0; + float high = input; + float low = 0.0F; + float reduced = input; + if (magnitude > 1051816472) { + if (magnitude <= 1065686418) { + power = negative != 0 ? -1 : 1; + } else { + float multiple = c(2869340) * input; + multiple += c(2875456 + negative * 4); + power = NumericMath.truncateInt(multiple); + } + + float converted = (float)power; + high = input + c(2869344) * converted; + low = converted * c(2869348); + reduced = high - low; + } else if (magnitude <= 956301312) { + return input + c(2869332); + } + + float square = reduced * reduced; + float correction = c(2869352) * square; + correction += c(2869356); + correction *= square; + float denominatorCorrection = reduced - correction; + float result = reduced * denominatorCorrection; + result /= c(2869360) - denominatorCorrection; + result -= low; + result += high; + result += c(2869332); + return power != 0 ? scale(result, power) : result; + } + } + + public static strictfp float round(float input) { + int bits = Float.floatToRawIntBits(input); + int exponent = bits >>> 23 & 0xFF; + if (exponent >= 150) { + return input; + } else { + float magnitude = Float.intBitsToFloat(bits & NumericConstants.intAt(2867584)); + float delta = c(2867600) + magnitude; + if (exponent <= 125) { + return input * 0.0F; + } else { + delta += c(2867604); + delta -= magnitude; + if (delta > c(2867608)) { + magnitude += delta; + magnitude += c(2867620); + } else { + magnitude += delta; + if (c(2867612) >= delta) { + magnitude += c(2867616); + } + } + + return Float.intBitsToFloat(Float.floatToRawIntBits(magnitude) ^ (bits < 0 ? NumericConstants.intAt(2867632) : 0)); + } + } + } + + public static strictfp float truncate(float input) { + int bits = Float.floatToRawIntBits(input); + int exponent = bits >>> 23 & 0xFF; + if (exponent >= 150) { + return input; + } else { + int shift = exponent >= 127 ? exponent - 118 : 1; + int mask = -1 >>> (shift & 31); + return Float.intBitsToFloat(bits & ~mask); + } + } + + public static strictfp float remainder(float first, float second) { + int x = Float.floatToRawIntBits(first); + int y = Float.floatToRawIntBits(second); + int sign = x & -2147483648; + int dividend = x & 2147483647; + int divisor = y & 2147483647; + int dividendExponent = dividend >>> 23; + int divisorExponent = divisor >>> 23; + if (divisor != 0 && divisor <= 2139095040 && dividendExponent != 255) { + if (dividend <= divisor) { + return dividend == divisor ? Float.intBitsToFloat(sign) : first; + } else { + if (dividendExponent != 0) { + dividend = dividend & 8388607 | 8388608; + } else { + for (dividendExponent = 1; dividend < 8388608; dividendExponent--) { + dividend <<= 1; + } + } + + if (divisorExponent != 0) { + divisor = divisor & 8388607 | 8388608; + } else { + for (divisorExponent = 1; divisor < 8388608; divisorExponent--) { + divisor <<= 1; + } + } + + while (dividendExponent > divisorExponent) { + if (dividend >= divisor) { + dividend -= divisor; + if (dividend == 0) { + return Float.intBitsToFloat(sign); + } + } + + dividend <<= 1; + dividendExponent--; + } + + if (dividend >= divisor) { + dividend -= divisor; + if (dividend == 0) { + return Float.intBitsToFloat(sign); + } + } + + while (dividend < 8388608) { + dividend <<= 1; + dividendExponent--; + } + + if (dividendExponent > 0) { + dividend = dividend - 8388608 | dividendExponent << 23; + } else { + dividend >>>= 1 - dividendExponent; + } + + return Float.intBitsToFloat(dividend | sign); + } + } else if (dividend > 2139095040) { + return invalid(first); + } else { + return divisor > 2139095040 ? invalid(second) : Float.intBitsToFloat(-4194304); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatTrigonometry.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatTrigonometry.java new file mode 100644 index 0000000..4683882 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/FloatTrigonometry.java @@ -0,0 +1,165 @@ +package dev.slinky.client.numeric; + +public final strictfp class FloatTrigonometry { + private FloatTrigonometry() { + } + + private static strictfp double c(int address) { + return NumericConstants.doubleAt(address); + } + + private static strictfp float sign(float value, int address) { + return Float.intBitsToFloat(Float.floatToRawIntBits(value) ^ NumericConstants.intAt(address)); + } + + private static strictfp float sineKernel(double x, int coefficients, int sign, boolean negative) { + double z = x * x; + double squared = z * z; + double signedX = negative ? Double.longBitsToDouble(Double.doubleToRawLongBits(x) ^ NumericConstants.longAt(sign)) : x; + double cube = negative ? signedX * z : z * x; + double low = z * c(coefficients) + c(coefficients + 16); + double high = z * c(coefficients + 8) + c(coefficients + 24); + double lowTerm = squared * cube * low; + double highTerm = cube * high; + highTerm = negative ? highTerm - x : highTerm + x; + return (float)(highTerm + lowTerm); + } + + private static strictfp float cosineKernel(double x, int coefficients, int sign, boolean negative) { + double z = x * x; + double fourth = z * z; + double first = c(coefficients) * z + c(coefficients + 8); + double second = c(coefficients + 16) * z + c(coefficients + 24); + double sixth = z * fourth; + double fourthTerm = fourth * c(coefficients + 32) + second; + double sixthTerm = sixth * first; + float value = (float)(sixthTerm + fourthTerm); + return negative ? sign(value, sign) : value; + } + + public static strictfp int reduce(float input, double[] output) { + int bits = Float.floatToRawIntBits(input); + int absolute = bits & 2147483647; + if (absolute <= 1305022426) { + double x = (double)input; + double multiple = c(2864832) * x; + multiple += c(2864840); + multiple += c(2864848); + int quadrant = NumericMath.truncateInt(multiple); + double first = c(2864856) * multiple + x; + double remainder = c(2864864) * multiple + first; + output[0] = remainder; + if (c(2864872) > remainder) { + multiple += c(2864896); + quadrant--; + } else { + if (!(remainder > c(2864880))) { + return quadrant; + } + + multiple += c(2864888); + quadrant++; + } + + double correction = c(2864856) * multiple; + x += correction; + multiple *= c(2864864); + output[0] = multiple + x; + return quadrant; + } else if (absolute > 2139095039) { + output[0] = (double)FloatNumeric.invalid(input); + return 0; + } else { + int exponent = (absolute >>> 23) - 150; + int scaledBits = absolute - (exponent << 23); + double[] reduced = new double[1]; + int quadrant = LargeReduction.reduce(new double[]{(double)Float.intBitsToFloat(scaledBits)}, reduced, exponent, 1, 0); + if (bits < 0) { + output[0] = Double.longBitsToDouble(Double.doubleToRawLongBits(reduced[0]) ^ NumericConstants.longAt(2864816)); + quadrant = -quadrant; + } else { + output[0] = reduced[0]; + } + + return quadrant; + } + } + + public static strictfp float sine(float input) { + int bits = Float.floatToRawIntBits(input); + int absolute = bits & 2147483647; + boolean negative = bits < 0; + double x = (double)input; + if (absolute <= 1061752794) { + return absolute < 964689920 ? input : sineKernel(x, 2867120, 2867104, false); + } else if (absolute < 1081824210) { + if (absolute >= 1075235812) { + x += c(negative ? 2867184 : 2867192); + return sineKernel(x, 2867120, 2867104, true); + } else { + x += c(negative ? 2867200 : 2867208); + return cosineKernel(x, 2867040, 2867088, negative); + } + } else if (absolute < 1088565718) { + if (absolute >= 1085271520) { + x += c(negative ? 2867152 : 2867160); + return sineKernel(x, 2867120, 2867104, false); + } else { + x += c(negative ? 2867168 : 2867176); + return cosineKernel(x, 2867040, 2867088, !negative); + } + } else if (absolute > 2139095039) { + return FloatNumeric.invalid(input); + } else { + double[] remainder = new double[1]; + int quadrant = reduce(input, remainder) & 3; + x = remainder[0]; + if (quadrant == 0) { + return sineKernel(x, 2867120, 2867104, false); + } else if (quadrant == 1) { + return cosineKernel(x, 2867040, 2867088, false); + } else { + return quadrant == 2 ? sineKernel(x, 2867120, 2867104, true) : cosineKernel(x, 2867040, 2867088, true); + } + } + } + + public static strictfp float cosine(float input) { + int bits = Float.floatToRawIntBits(input); + int absolute = bits & 2147483647; + boolean negative = bits < 0; + double x = (double)input; + if (absolute <= 1061752794) { + return absolute < 964689920 ? NumericConstants.floatAt(2870084) : cosineKernel(x, 2869952, 2870000, false); + } else if (absolute < 1081824210) { + if (absolute > 1075235811) { + x += c(negative ? 2870064 : 2870072); + return cosineKernel(x, 2869952, 2870000, true); + } else { + x = negative ? x + c(2870056) : c(2870056) - x; + return sineKernel(x, 2869920, 2870016, false); + } + } else if (absolute < 1088565718) { + if (absolute > 1085271519) { + x += c(negative ? 2870040 : 2870048); + return cosineKernel(x, 2869952, 2870000, false); + } else { + x = negative ? c(2870032) - x : x + c(2870032); + return sineKernel(x, 2869920, 2870016, false); + } + } else if (absolute > 2139095039) { + return FloatNumeric.invalid(input); + } else { + double[] remainder = new double[1]; + int quadrant = reduce(input, remainder) & 3; + x = remainder[0]; + if (quadrant == 0) { + return cosineKernel(x, 2869952, 2870000, false); + } else if (quadrant == 1) { + return sineKernel(x, 2869920, 2870016, true); + } else { + return quadrant == 2 ? cosineKernel(x, 2869952, 2870000, true) : sineKernel(x, 2869920, 2870016, false); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/LargeReduction.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/LargeReduction.java new file mode 100644 index 0000000..42a953f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/LargeReduction.java @@ -0,0 +1,217 @@ +package dev.slinky.client.numeric; + +public final strictfp class LargeReduction { + private LargeReduction() { + } + + private static strictfp double c(int address) { + return NumericConstants.doubleAt(address); + } + + private static strictfp double digit(int index) { + return (double)NumericConstants.intAt(2872376 + 4 * index); + } + + private static strictfp double convolution(double[] input, double[] table, int lastInput, int index) { + double sum = 0.0; + + for (int j = 0; j <= lastInput; j++) { + sum += input[j] * table[lastInput + index - j]; + } + + return sum; + } + + private static strictfp double signed(double value, int complement) { + return complement != 0 ? Double.longBitsToDouble(Double.doubleToRawLongBits(value) ^ NumericConstants.longAt(2863200)) : value; + } + + public static strictfp int reduce(double[] input, double[] output, int exponent, int count, int precision) { + int initial = NumericConstants.intAt(2872360 + 4 * precision); + int lastInput = count - 1; + int tableStart = Math.max(0, (short)(exponent - 3) / 24); + int chunkExponent = exponent - 24 * (tableStart + 1); + double[] table = new double[20]; + double[] products = new double[20]; + double[] weighted = new double[20]; + int[] chunks = new int[20]; + double tiny = c(2863136); + double radix = c(2863144); + double negativeRadix = c(2863152); + double one = c(2863184); + double half = c(2863176); + + for (int i = 0; i <= lastInput + initial; i++) { + int index = tableStart - lastInput + i; + table[i] = index < 0 ? 0.0 : digit(index); + } + + for (int i = 0; i <= initial; i++) { + products[i] = convolution(input, table, lastInput, i); + } + + int last = initial; + int quadrant = 0; + int complement = 0; + + double residual; + while (true) { + residual = products[last]; + int i = 0; + + for (int j = last; j > 0; j--) { + double carry = (double)NumericMath.truncateInt(residual * tiny); + chunks[i] = NumericMath.truncateInt(carry * negativeRadix + residual); + residual = products[j - 1] + carry; + i++; + } + + residual = DoubleNumeric.scale(residual, chunkExponent); + double cycles = DoubleNumeric.floor(residual * c(2863160)); + residual = cycles * c(2863168) + residual; + quadrant = NumericMath.truncateInt(residual); + residual -= (double)quadrant; + complement = 0; + if (chunkExponent > 0) { + int high = chunks[last - 1] >> 24 - chunkExponent; + quadrant += high; + chunks[last - 1] = chunks[last - 1] - (high << 24 - chunkExponent); + complement = chunks[last - 1] >> 23 - chunkExponent; + } else if (chunkExponent == 0) { + complement = chunks[last - 1] >> 23; + } else if (!(residual < half)) { + complement = 2; + } + + if (complement > 0) { + quadrant++; + boolean carry = false; + + for (int ix = 0; ix < last; ix++) { + int chunk = chunks[ix]; + if (carry) { + chunks[ix] = 16777215 - chunk; + } else if (chunk != 0) { + carry = true; + chunks[ix] = 16777216 - chunk; + } + } + + if (chunkExponent == 1) { + chunks[last - 1] = chunks[last - 1] & 8388607; + } else if (chunkExponent == 2) { + chunks[last - 1] = chunks[last - 1] & 4194303; + } + + if (complement == 2) { + residual = one - residual; + if (carry) { + residual -= DoubleNumeric.scale(one, chunkExponent); + } + } + } + + if (residual != 0.0) { + break; + } + + int nonzero = 0; + + for (int ixx = last - 1; ixx >= initial; ixx--) { + nonzero |= chunks[ixx]; + } + + if (nonzero != 0) { + break; + } + + int additional = 1; + + while (chunks[initial - additional] == 0) { + additional++; + } + + for (int ixx = last + 1; ixx <= last + additional; ixx++) { + table[lastInput + ixx] = digit(tableStart + ixx); + products[ixx] = convolution(input, table, lastInput, ixx); + } + + last += additional; + } + + if (residual == 0.0) { + last--; + + for (chunkExponent -= 24; chunks[last] == 0; chunkExponent -= 24) { + last--; + } + } else { + residual = DoubleNumeric.scale(residual, -chunkExponent); + if (!(residual < radix)) { + double carry = (double)NumericMath.truncateInt(residual * tiny); + chunks[last] = NumericMath.truncateInt(carry * negativeRadix + residual); + last++; + chunkExponent += 24; + chunks[last] = NumericMath.truncateInt(carry); + } else { + chunks[last] = NumericMath.truncateInt(residual); + } + } + + double factor = DoubleNumeric.scale(one, chunkExponent); + + for (int i = last; i >= 0; i--) { + products[i] = factor * (double)chunks[i]; + factor *= tiny; + } + + for (int i = last; i >= 0; i--) { + double sum = 0.0; + + for (int k = 0; k <= initial && k <= last - i; k++) { + sum += c(2875136 + 8 * k) * products[i + k]; + } + + weighted[last - i] = sum; + } + + if (precision < 3) { + double sum = 0.0; + + for (int i = last; i >= 0; i--) { + sum += weighted[i]; + } + + output[0] = signed(sum, complement); + if (precision == 1 || precision == 2) { + double tail = weighted[0] - sum; + + for (int i = 1; i <= last; i++) { + tail += weighted[i]; + } + + output[1] = signed(tail, complement); + } + } else if (precision == 3) { + for (int pass = 0; pass < 2; pass++) { + for (int i = last; i > pass; i--) { + double sum = weighted[i - 1] + weighted[i]; + weighted[i] += weighted[i - 1] - sum; + weighted[i - 1] = sum; + } + } + + double tail = 0.0; + + for (int i = last; i >= 2; i--) { + tail += weighted[i]; + } + + output[0] = signed(weighted[0], complement); + output[1] = signed(weighted[1], complement); + output[2] = signed(tail, complement); + } + + return quadrant & 7; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericConstants.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericConstants.java new file mode 100644 index 0000000..d182edf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericConstants.java @@ -0,0 +1,69 @@ +package dev.slinky.client.numeric; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.HashMap; +import java.util.Map; + +public final class NumericConstants { + private static final Map BYTES = new HashMap<>(); + + private NumericConstants() { + } + + private static long word(int address, int length) { + long result = 0L; + + for (int offset = 0; offset < length; offset++) { + Byte value = BYTES.get(address + offset); + if (value == null) { + throw new IllegalArgumentException("Unrecovered numerical operand " + Integer.toHexString(address + offset)); + } + + result |= (long)(value & 255) << offset * 8; + } + + return result; + } + + public static int shortAt(int address) { + return (int)word(address, 2); + } + + public static int intAt(int address) { + return (int)word(address, 4); + } + + public static long longAt(int address) { + return word(address, 8); + } + + public static float floatAt(int address) { + return Float.intBitsToFloat(intAt(address)); + } + + public static double doubleAt(int address) { + return Double.longBitsToDouble(longAt(address)); + } + + static { + try (Reader reader = new InputStreamReader(Platform.resource("/assets/slinkysemantic/NumericConstants.json"), "UTF-8")) { + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = element.getAsJsonObject(); + int address = row.get("address").getAsInt(); + String hex = row.get("bytes").getAsString(); + + for (int offset = 0; offset < hex.length() / 2; offset++) { + BYTES.put(address + offset, (byte)Integer.parseInt(hex.substring(offset * 2, offset * 2 + 2), 16)); + } + } + } catch (IOException var18) { + throw new ExceptionInInitializerError(var18); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericMath.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericMath.java new file mode 100644 index 0000000..df8fdcc --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericMath.java @@ -0,0 +1,50 @@ +package dev.slinky.client.numeric; + +public final strictfp class NumericMath { + private NumericMath() { + } + + public static strictfp float floatDistance(float first, float second) { + int a = Float.floatToRawIntBits(first) & 2147483647; + int b = Float.floatToRawIntBits(second) & 2147483647; + if (a == 2139095040 || b == 2139095040) { + return Float.POSITIVE_INFINITY; + } else if (a <= 2139095040 && b <= 2139095040) { + double x = (double)first; + double y = (double)second; + return (float)Math.sqrt(x * x + y * y); + } else { + return Float.NaN; + } + } + + public static strictfp int truncateInt(float value) { + return !Float.isNaN(value) && !(value >= 2.1474836E9F) && !(value < -2.1474836E9F) ? (int)value : Integer.MIN_VALUE; + } + + public static strictfp int truncateInt(double value) { + return !Double.isNaN(value) && !(value >= 2.1474836E9F) && !(value < -2.1474836E9F) ? (int)value : Integer.MIN_VALUE; + } + + public static strictfp long truncateLong(float value) { + return !Float.isNaN(value) && !((double)value >= 9.223372E18F) && !((double)value < -9.223372E18F) ? (long)value : Long.MIN_VALUE; + } + + public static strictfp long truncateLong(double value) { + return !Double.isNaN(value) && !(value >= 9.223372E18F) && !(value < -9.223372E18F) ? (long)value : Long.MIN_VALUE; + } + + public static strictfp float ceiling(float value) { + int bits = Float.floatToRawIntBits(value); + int exponent = bits >>> 23 & 0xFF; + if (exponent >= 150) { + return value; + } else if (exponent >= 127) { + int mask = -1 << (22 - (bits >>> 23) & 31); + int fraction = ~mask; + return (bits & fraction) == 0 ? value : Float.intBitsToFloat(bits + (bits < 0 ? 0 : fraction) & mask); + } else { + return Float.intBitsToFloat(bits < 0 ? Integer.MIN_VALUE : (bits == 0 ? 0 : 1065353216)); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericServices.java b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericServices.java new file mode 100644 index 0000000..99c58bf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/numeric/NumericServices.java @@ -0,0 +1,97 @@ +package dev.slinky.client.numeric; + +import java.util.Objects; + +public final class NumericServices { + public static final String CAPTURED_HYPOT = "0x13cfd0: ucrtbase.dll!hypot"; + public static final String CAPTURED_ATAN2 = "0x13cfb0: ucrtbase.dll!atan2"; + public static final String CAPTURED_ACOS = "0x13cfa0: ucrtbase.dll!acos"; + public static final String CAPTURED_ATAN2F = "0x13cfc0: ucrtbase.dll!atan2f"; + public static final String CAPTURED_ACOSF = "0x13d190: ucrtbase.dll!acosf"; + public static final String CAPTURED_POWF = "0x13cfe0: ucrtbase.dll!powf"; + private static volatile NumericServices.DoublePair pair = StrictMath::hypot; + private static volatile NumericServices.DoublePair direction = StrictMath::atan2; + private static volatile NumericServices.DoubleUnary projection = StrictMath::acos; + private static volatile NumericServices.FloatPair floatDirection = (first, second) -> (float)StrictMath.atan2((double)first, (double)second); + private static volatile NumericServices.FloatUnary floatProjection = value -> (float)StrictMath.acos((double)value); + private static volatile NumericServices.FloatPair scalar = (first, second) -> (float)StrictMath.pow((double)first, (double)second); + + private NumericServices() { + } + + public static double hypot(double first, double second) { + return pair.call(first, second); + } + + public static double atan2(double first, double second) { + return direction.call(first, second); + } + + public static double acos(double value) { + return projection.call(value); + } + + public static float atan2f(float first, float second) { + return floatDirection.call(first, second); + } + + public static float acosf(float value) { + return floatProjection.call(value); + } + + public static float powf(float first, float second) { + return scalar.call(first, second); + } + + public static NumericServices.DoublePair bindHypot(NumericServices.DoublePair endpoint) { + NumericServices.DoublePair previous = pair; + pair = Objects.requireNonNull(endpoint); + return previous; + } + + public static NumericServices.DoublePair bindAtan2(NumericServices.DoublePair endpoint) { + NumericServices.DoublePair previous = direction; + direction = Objects.requireNonNull(endpoint); + return previous; + } + + public static NumericServices.DoubleUnary bindAcos(NumericServices.DoubleUnary endpoint) { + NumericServices.DoubleUnary previous = projection; + projection = Objects.requireNonNull(endpoint); + return previous; + } + + public static NumericServices.FloatPair bindAtan2f(NumericServices.FloatPair endpoint) { + NumericServices.FloatPair previous = floatDirection; + floatDirection = Objects.requireNonNull(endpoint); + return previous; + } + + public static NumericServices.FloatUnary bindAcosf(NumericServices.FloatUnary endpoint) { + NumericServices.FloatUnary previous = floatProjection; + floatProjection = Objects.requireNonNull(endpoint); + return previous; + } + + public static NumericServices.FloatPair bindPowf(NumericServices.FloatPair endpoint) { + NumericServices.FloatPair previous = scalar; + scalar = Objects.requireNonNull(endpoint); + return previous; + } + + public interface DoublePair { + double call(double var1, double var3); + } + + public interface DoubleUnary { + double call(double var1); + } + + public interface FloatPair { + float call(float var1, float var2); + } + + public interface FloatUnary { + float call(float var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/NetworkSendAdapter.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/NetworkSendAdapter.java new file mode 100644 index 0000000..a14f4fe --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/NetworkSendAdapter.java @@ -0,0 +1,51 @@ +package dev.slinky.client.packet; + +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; + +public final class NetworkSendAdapter { + private static final ThreadLocal DIRECT = new ThreadLocal<>(); + + private NetworkSendAdapter() { + } + + public static void sendDirect(NetworkManager receiver, Packet packet) { + if (receiver != null && packet != null) { + NetworkSendAdapter.Invocation previous = DIRECT.get(); + DIRECT.set(new NetworkSendAdapter.Invocation(receiver, packet)); + + try { + receiver.sendPacket(packet); + } finally { + if (previous == null) { + DIRECT.remove(); + } else { + DIRECT.set(previous); + } + } + } else { + throw new IllegalArgumentException("A direct send needs its receiver and packet"); + } + } + + public static boolean consumeDirect(NetworkManager receiver, Packet packet) { + NetworkSendAdapter.Invocation invocation = DIRECT.get(); + if (invocation != null && !invocation.consumed && invocation.receiver == receiver && invocation.packet == packet) { + invocation.consumed = true; + return true; + } else { + return false; + } + } + + private static final class Invocation { + final NetworkManager receiver; + final Packet packet; + boolean consumed; + + Invocation(NetworkManager receiver, Packet packet) { + this.receiver = receiver; + this.packet = packet; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketAccess.java new file mode 100644 index 0000000..f7c207a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketAccess.java @@ -0,0 +1,30 @@ +package dev.slinky.client.packet; + +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import net.minecraft.network.play.server.S14PacketEntity; +import net.minecraft.network.play.server.S19PacketEntityStatus; + +public final class PacketAccess { + private static final Field STATUS_ID = ReflectionHelper.findField(S19PacketEntityStatus.class, "entityId", "field_149164_a"); + private static final Field RELATIVE_ID = ReflectionHelper.findField(S14PacketEntity.class, "entityId", "field_149074_a"); + + private PacketAccess() { + } + + public static int statusId(S19PacketEntityStatus p) { + return integer(STATUS_ID, p); + } + + public static int relativeId(S14PacketEntity p) { + return integer(RELATIVE_ID, p); + } + + private static int integer(Field field, Object p) { + try { + return field.getInt(p); + } catch (IllegalAccessException var3) { + throw new IllegalStateException(var3); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketKinds.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketKinds.java new file mode 100644 index 0000000..bebb429 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketKinds.java @@ -0,0 +1,20 @@ +package dev.slinky.client.packet; + +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S06PacketUpdateHealth; +import net.minecraft.network.play.server.S19PacketEntityStatus; +import net.minecraft.network.play.server.S29PacketSoundEffect; +import net.minecraft.network.play.server.S2APacketParticles; + +public final class PacketKinds { + private PacketKinds() { + } + + public static boolean realtimeDamage(Packet p) { + return p instanceof S19PacketEntityStatus || p instanceof S06PacketUpdateHealth || p instanceof S29PacketSoundEffect; + } + + public static boolean blinkImmediate(Packet p) { + return p instanceof S2APacketParticles; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketPipeline.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketPipeline.java new file mode 100644 index 0000000..b06c37c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/PacketPipeline.java @@ -0,0 +1,231 @@ +package dev.slinky.client.packet; + +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.ModuleManager; +import io.netty.channel.ChannelDuplexHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPromise; +import io.netty.util.ReferenceCountUtil; +import java.nio.channels.ClosedChannelException; +import java.util.ArrayDeque; +import java.util.Collections; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import net.minecraft.network.Packet; + +public final class PacketPipeline extends ChannelDuplexHandler implements Runnable { + private static final AtomicInteger COUNTER = new AtomicInteger(); + private static final Set ACTIVE = Collections.newSetFromMap(new ConcurrentHashMap<>()); + public static final String NAME = "slinky_semantic_packets"; + private final ArrayDeque inbound = new ArrayDeque<>(); + private final ArrayDeque outbound = new ArrayDeque<>(); + private final PacketPipeline.Clock clock; + private final PacketPipeline.Dispatch dispatch; + private final boolean automaticPolling; + private Future polling; + private ChannelHandlerContext owner; + + public PacketPipeline(final ModuleManager modules) { + this(new PacketPipeline.Clock() { + @Override + public long millis() { + return System.currentTimeMillis(); + } + }, new PacketPipeline.Dispatch() { + @Override + public int classify(Object packet, boolean outbound, long age, int sequence) { + if (!(packet instanceof Packet)) { + return 0; + } else { + SemanticEvent e = new SemanticEvent(outbound ? 3 : 2); + e.packet = (Packet)packet; + e.packetAgeMillis = age; + e.packetSequence = sequence; + modules.dispatch(e); + return e.dispatchMode; + } + } + }, true); + } + + public PacketPipeline(PacketPipeline.Clock clock, PacketPipeline.Dispatch dispatch) { + this(clock, dispatch, false); + } + + private PacketPipeline(PacketPipeline.Clock clock, PacketPipeline.Dispatch dispatch, boolean automaticPolling) { + this.clock = clock; + this.dispatch = dispatch; + this.automaticPolling = automaticPolling; + } + + public void handlerAdded(ChannelHandlerContext context) { + this.owner = context; + ACTIVE.add(this); + if (this.automaticPolling) { + this.polling = context.executor().scheduleWithFixedDelay(this, 4L, 4L, TimeUnit.MILLISECONDS); + } + } + + public void write(ChannelHandlerContext context, Object packet, ChannelPromise promise) { + this.accept(context, packet, promise, true); + } + + public void channelRead(ChannelHandlerContext context, Object packet) { + this.accept(context, packet, null, false); + } + + private void accept(ChannelHandlerContext context, Object packet, ChannelPromise promise, boolean out) { + int sequence = COUNTER.getAndIncrement(); + int mode = this.dispatch.classify(packet, out, 0L, sequence); + if (mode == 2) { + discard(packet, promise); + } else { + ArrayDeque queue = out ? this.outbound : this.inbound; + if (mode != 1 && (mode != 0 || queue.isEmpty())) { + if (out) { + context.write(packet, promise); + } else { + context.fireChannelRead(packet); + } + } else { + queue.add(new PacketPipeline.Entry(context, packet, promise, this.clock.millis(), sequence)); + } + } + } + + @Override + public void run() { + long now = this.clock.millis(); + this.poll(this.inbound, false, now); + this.poll(this.outbound, true, now); + } + + private void poll(ArrayDeque queue, boolean out, long now) { + ChannelHandlerContext flushed = null; + + while (!queue.isEmpty()) { + PacketPipeline.Entry entry = queue.peek(); + int mode = this.dispatch.classify(entry.packet, out, now - entry.added, entry.sequence); + if (mode == 1) { + break; + } + + if (mode == 2) { + queue.removeFirst(); + discard(entry.packet, entry.promise); + return; + } + + if (out) { + entry.context.write(entry.packet, entry.promise); + flushed = entry.context; + } else { + entry.context.fireChannelRead(entry.packet); + } + + queue.removeFirst(); + } + + if (flushed != null) { + flushed.flush(); + } + } + + private static void discard(Object packet, ChannelPromise promise) { + ReferenceCountUtil.release(packet); + } + + public void handlerRemoved(ChannelHandlerContext context) { + ACTIVE.remove(this); + if (this.polling != null) { + this.polling.cancel(false); + this.polling = null; + } + + this.drain(context, this.inbound, false); + this.drain(context, this.outbound, true); + context.flush(); + this.owner = null; + } + + private void drain(ChannelHandlerContext context, ArrayDeque queue, boolean out) { + while (!queue.isEmpty()) { + PacketPipeline.Entry entry = queue.removeFirst(); + if (!context.channel().isOpen()) { + ReferenceCountUtil.release(entry.packet); + if (entry.promise != null) { + entry.promise.tryFailure(new ClosedChannelException()); + } + } else if (out) { + context.write(entry.packet, entry.promise); + } else { + context.fireChannelRead(entry.packet); + } + } + } + + public void channelInactive(ChannelHandlerContext context) throws Exception { + ACTIVE.remove(this); + if (this.polling != null) { + this.polling.cancel(false); + this.polling = null; + } + + this.drain(context, this.inbound, false); + this.drain(context, this.outbound, true); + super.channelInactive(context); + } + + public static void releaseAll(final boolean removeHandler) { + for (final PacketPipeline handler : ACTIVE) { + final ChannelHandlerContext context = handler.owner; + if (context != null) { + context.executor().execute(new Runnable() { + @Override + public void run() { + if (removeHandler) { + if (context.pipeline().context(handler) != null) { + context.pipeline().remove(handler); + } + } else { + handler.drain(context, handler.inbound, false); + handler.drain(context, handler.outbound, true); + context.flush(); + } + } + }); + } + } + } + + public int retained(boolean out) { + return (out ? this.outbound : this.inbound).size(); + } + + public interface Clock { + long millis(); + } + + public interface Dispatch { + int classify(Object var1, boolean var2, long var3, int var5); + } + + private static final class Entry { + final ChannelHandlerContext context; + final Object packet; + final ChannelPromise promise; + final long added; + final int sequence; + + Entry(ChannelHandlerContext context, Object packet, ChannelPromise promise, long added, int sequence) { + this.context = context; + this.packet = packet; + this.promise = promise; + this.added = added; + this.sequence = sequence; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/PredictionGeometry.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/PredictionGeometry.java new file mode 100644 index 0000000..dd31f7d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/PredictionGeometry.java @@ -0,0 +1,64 @@ +package dev.slinky.client.packet; + +import dev.slinky.client.rotation.RotationMath; +import net.minecraft.util.Vec3; + +public final strictfp class PredictionGeometry { + private PredictionGeometry() { + } + + private static strictfp double f(double x) { + return (double)((float)x); + } + + private static strictfp double min(double x, double y) { + return x < y ? x : y; + } + + private static strictfp double max(double x, double y) { + return x > y ? x : y; + } + + private static strictfp double minRight(double x, double y) { + return Double.isNaN(y) ? x : min(x, y); + } + + private static strictfp double maxRight(double x, double y) { + return Double.isNaN(y) ? x : max(x, y); + } + + public static strictfp boolean ray(double[] box, Vec3 origin, Vec3 ray) { + return ray(box, new double[]{origin.xCoord, origin.yCoord, origin.zCoord}, new double[]{ray.xCoord, ray.yCoord, ray.zCoord}); + } + + public static strictfp boolean ray(double[] box, double[] origin, double[] ray) { + double x0 = f((box[0] - origin[0]) * (1.0 / ray[0])); + double x1 = f((box[3] - origin[0]) * (1.0 / ray[0])); + double enterX = f(min(max(x0, 0.0), max(x1, 0.0))); + double exitX = f(max(min(x0, Double.POSITIVE_INFINITY), min(x1, Double.POSITIVE_INFINITY))); + double y0 = f((box[1] - origin[1]) * (1.0 / ray[1])); + double y1 = f((box[4] - origin[1]) * (1.0 / ray[1])); + double enterY = f(min(max(y0, enterX), max(y1, enterX))); + double exitY = f(max(min(y0, exitX), min(y1, exitX))); + double z0 = f((box[2] - origin[2]) * (1.0 / ray[2])); + double z1 = f((box[5] - origin[2]) * (1.0 / ray[2])); + float entry = (float)minRight(maxRight(enterY, z1), maxRight(enterY, z0)); + float exit = (float)maxRight(minRight(exitY, z1), minRight(exitY, z0)); + return entry < exit && entry <= 1.0F; + } + + public static strictfp Vec3 clamp(double[] box, Vec3 point) { + return new Vec3( + RotationMath.clamp(box[0], box[3], point.xCoord), RotationMath.clamp(box[1], box[4], point.yCoord), RotationMath.clamp(box[2], box[5], point.zCoord) + ); + } + + public static strictfp Vec3 movement(float yaw, float forward, float lateral, float speed) { + double[] xz = RotationMath.movement(yaw, forward, lateral, speed); + return new Vec3(xz[0], 0.0, xz[1]); + } + + public static strictfp Vec3 scale(Vec3 value, double factor) { + return new Vec3(value.xCoord * factor, value.yCoord * factor, value.zCoord * factor); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/packet/TimingAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/packet/TimingAccess.java new file mode 100644 index 0000000..d9b86f7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/packet/TimingAccess.java @@ -0,0 +1,83 @@ +package dev.slinky.client.packet; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.Vec3; + +public final strictfp class TimingAccess { + private static final Field X = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPX", "field_71185_c"); + private static final Field Y = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPY", "field_71182_d"); + private static final Field Z = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPZ", "field_71183_e"); + private static final Field TICKS = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPPosRotationIncrements", "field_71184_b"); + private static final Field YAW = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPYaw", "field_71180_f"); + + private TimingAccess() { + } + + public static strictfp Vec3 position(Entity p) { + return new Vec3(p.posX, p.posY, p.posZ); + } + + public static strictfp Vec3 server(Entity p) { + if (!(p instanceof EntityOtherPlayerMP)) { + return position(p); + } else { + try { + return new Vec3(X.getDouble(p), Y.getDouble(p), Z.getDouble(p)); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + } + + public static strictfp int interpolationTicks(Entity p) { + if (!(p instanceof EntityOtherPlayerMP)) { + return 0; + } else { + try { + return TICKS.getInt(p); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + } + + public static strictfp double serverYaw(Entity p) { + if (!(p instanceof EntityOtherPlayerMP)) { + return (double)p.rotationYaw; + } else { + try { + return YAW.getDouble(p); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + } + + public static strictfp boolean facingPlayer(ClientContext c) { + Vec3 self = position(c.player()); + + for (EntityPlayer p : c.world().playerEntities) { + if (p != c.player() && !(squared(self, position(p)) > 36.0)) { + float angle = RotationMath.wrap(RotationMath.angles(self, position(p))[0] - c.player().rotationYaw); + if (!(RotationMath.abs(angle) > 90.0F)) { + return true; + } + } + } + + return false; + } + + public static strictfp double squared(Vec3 a, Vec3 b) { + double x = a.xCoord - b.xCoord; + double y = a.yCoord - b.yCoord; + double z = a.zCoord - b.zCoord; + return z * z + (x * x + y * y); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementFrame.java b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementFrame.java new file mode 100644 index 0000000..677f079 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementFrame.java @@ -0,0 +1,226 @@ +package dev.slinky.client.placement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import net.minecraft.block.Block; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public interface PlacementFrame { + boolean ready(); + + boolean ground(); + + int hurt(); + + boolean mounted(); + + boolean jump(); + + Vec3 position(); + + Vec3 eye(); + + AxisAlignedBB box(); + + double[] velocity(); + + float yaw(); + + float pitch(); + + int block(int var1, int var2, int var3); + + MovingObjectPosition ray(Vec3 var1, Vec3 var2); + + MovingObjectPosition hit(); + + boolean heldBlock(); + + void select(boolean var1, boolean var2); + + void press(); + + void disable(); + + boolean claim(int var1); + + boolean rotationAvailable(); + + float storedYaw(); + + float storedPitch(); + + float offsetYaw(); + + float offsetPitch(); + + void publish(float var1, float var2); + + void movement(int var1); + + void restoreMovement(); + + public static final class Game implements PlacementFrame { + private final ClientContext c; + private final ModuleManager modules; + private final Module token; + + public Game(ClientContext c, ModuleManager modules, Module token) { + this.c = c; + this.modules = modules; + this.token = token; + } + + @Override + public boolean ready() { + return this.c.inputReady(); + } + + @Override + public boolean ground() { + return this.c.player().onGround; + } + + @Override + public int hurt() { + return this.c.player().hurtTime; + } + + @Override + public boolean mounted() { + return this.c.player().ridingEntity != null; + } + + @Override + public boolean jump() { + return KeyState.physical(this.c.minecraft().gameSettings.keyBindJump); + } + + @Override + public Vec3 position() { + return new Vec3(this.c.player().posX, this.c.player().posY, this.c.player().posZ); + } + + @Override + public Vec3 eye() { + return this.c.player().getPositionEyes((float)ActionConstants.d(1374064)); + } + + @Override + public AxisAlignedBB box() { + return this.c.player().getEntityBoundingBox(); + } + + @Override + public double[] velocity() { + return new double[]{this.c.player().motionX, this.c.player().motionY, this.c.player().motionZ}; + } + + @Override + public float yaw() { + return this.c.player().rotationYaw; + } + + @Override + public float pitch() { + return this.c.player().rotationPitch; + } + + @Override + public int block(int x, int y, int z) { + return Block.getIdFromBlock(this.c.world().getBlockState(new BlockPos(x, y, z)).getBlock()); + } + + @Override + public MovingObjectPosition ray(Vec3 from, Vec3 to) { + return this.c.world().rayTraceBlocks(from, to, false, true, false); + } + + @Override + public MovingObjectPosition hit() { + return this.c.minecraft().objectMouseOver; + } + + @Override + public boolean heldBlock() { + return ActionAccess.isBlock(this.c.player().getHeldItem()); + } + + @Override + public void select(boolean force, boolean blockIn) { + PlacementSelection.select(this.c, this.token, force, blockIn); + } + + @Override + public void press() { + ActionAccess.increment(this.c.minecraft().gameSettings.keyBindUseItem); + } + + @Override + public void disable() { + this.modules.requestEnabled(this.token, false); + } + + @Override + public boolean claim(int priority) { + return RotationService.claim(priority); + } + + @Override + public boolean rotationAvailable() { + return RotationService.storedRotationValid(); + } + + @Override + public float storedYaw() { + return RotationService.storedYaw(); + } + + @Override + public float storedPitch() { + return RotationService.storedPitch(); + } + + @Override + public float offsetYaw() { + return RotationService.pendingYaw(); + } + + @Override + public float offsetPitch() { + return RotationService.pendingPitch(); + } + + @Override + public void publish(float yaw, float pitch) { + RotationService.add(yaw, pitch); + } + + @Override + public void movement(int mode) { + GameSettings g = this.c.minecraft().gameSettings; + KeyState.set(g.keyBindBack, mode == 1); + KeyState.set(g.keyBindForward, false); + KeyState.set(g.keyBindLeft, false); + KeyState.set(g.keyBindRight, false); + } + + @Override + public void restoreMovement() { + GameSettings g = this.c.minecraft().gameSettings; + KeyState.restore(g.keyBindBack); + KeyState.restore(g.keyBindForward); + KeyState.restore(g.keyBindLeft); + KeyState.restore(g.keyBindRight); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementGeometry.java b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementGeometry.java new file mode 100644 index 0000000..06fe1fe --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementGeometry.java @@ -0,0 +1,77 @@ +package dev.slinky.client.placement; + +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.rotation.RotationMath; +import net.minecraft.util.Vec3; + +public final strictfp class PlacementGeometry { + private PlacementGeometry() { + } + + private static strictfp double narrow(double v) { + return (double)((float)v); + } + + private static strictfp double min(double a, double b) { + return a < b ? a : b; + } + + private static strictfp double max(double a, double b) { + return a > b ? a : b; + } + + private static strictfp double minRight(double a, double b) { + return Double.isNaN(b) ? a : min(a, b); + } + + private static strictfp double maxRight(double a, double b) { + return Double.isNaN(b) ? a : max(a, b); + } + + public static strictfp Vec3 rayPoint(double[] b, Vec3 o, Vec3 v) { + double numerator = ActionConstants.d(1304712); + double limit = ActionConstants.d(1304720); + double x0 = narrow((b[0] - o.xCoord) * (numerator / v.xCoord)); + double x1 = narrow((b[3] - o.xCoord) * (numerator / v.xCoord)); + double entryX = narrow(min(max(x0, 0.0), max(x1, 0.0))); + double exitX = narrow(max(min(x0, limit), min(x1, limit))); + double y0 = narrow((b[1] - o.yCoord) * (numerator / v.yCoord)); + double y1 = narrow((b[4] - o.yCoord) * (numerator / v.yCoord)); + double entryY = narrow(min(max(y0, entryX), max(y1, entryX))); + double exitY = narrow(max(min(y0, exitX), min(y1, exitX))); + double z0 = narrow((b[2] - o.zCoord) * (numerator / v.zCoord)); + double z1 = narrow((b[5] - o.zCoord) * (numerator / v.zCoord)); + float entry = (float)minRight(maxRight(entryY, z1), maxRight(entryY, z0)); + float exit = (float)maxRight(minRight(exitY, z1), minRight(exitY, z0)); + return !(exit <= entry) && !(ActionConstants.f(1304728) < entry) + ? new Vec3(o.xCoord + v.xCoord * (double)entry, o.yCoord + v.yCoord * (double)entry, o.zCoord + v.zCoord * (double)entry) + : null; + } + + public static strictfp Vec3 direction(float yaw, float pitch) { + float yr = (float)((double)yaw * ActionConstants.d(1374032) / ActionConstants.d(1374040) + ActionConstants.d(1374032)); + float pr = (float)((double)pitch * ActionConstants.d(1374032) / ActionConstants.d(1374040)); + float yc = RotationMath.cosine(yr); + float ys = RotationMath.sine(yr); + float pc = RotationMath.cosine(pr); + float ps = RotationMath.sine(pr); + float negative = Float.intBitsToFloat(Float.floatToRawIntBits(pc) ^ ActionConstants.intAt(1374048)); + return new Vec3((double)(ys * negative), (double)ps, (double)(negative * yc)); + } + + public static strictfp double squared(Vec3 a, Vec3 b) { + double x = a.xCoord - b.xCoord; + double y = a.yCoord - b.yCoord; + double z = a.zCoord - b.zCoord; + return z * z + (x * x + y * y); + } + + public static strictfp int magnitude(int value) { + int negated = -value; + return negated < 0 ? value : negated; + } + + public static strictfp long absdiff(int a, int b) { + return Integer.toUnsignedLong(b < a ? a - b : b - a); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementSelection.java b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementSelection.java new file mode 100644 index 0000000..5d1f282 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/placement/PlacementSelection.java @@ -0,0 +1,290 @@ +package dev.slinky.client.placement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.client.inventory.InventoryActions; +import java.util.function.IntUnaryOperator; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; + +public final class PlacementSelection { + private static int preferred; + private static boolean startAfterCurrent; + private static Object selectionOwner; + private static PlacementSelection.Inventory inventoryOwner; + private static Object restorationOwner; + private static int originalSlot; + private static int inactivity; + private static int capturedType; + private static int capturedCount; + private static int lastSlot; + private static int repetitions; + + private PlacementSelection() { + } + + public static synchronized void remember(int type, boolean afterCurrent) { + preferred = type; + startAfterCurrent = afterCurrent; + } + + public static PlacementSelection.Inventory inventory(final InventoryPlayer player) { + return new PlacementSelection.Inventory() { + @Override + public int current() { + return player.currentItem; + } + + @Override + public void current(int slot) { + player.currentItem = slot; + } + + private ItemStack at(int slot) { + return player.getStackInSlot(slot); + } + + @Override + public boolean stack(int slot) { + return this.at(slot) != null; + } + + @Override + public boolean item(int slot) { + return this.at(slot) != null && this.at(slot).getItem() != null; + } + + @Override + public int type(int slot) { + return InventoryActions.type(this.at(slot)); + } + + @Override + public boolean block(int slot) { + return ActionAccess.isBlock(this.at(slot)); + } + + @Override + public int count(int slot) { + return this.at(slot).stackSize; + } + }; + } + + public static synchronized void frameReset() { + if (selectionOwner != null) { + ModuleActionService.release(selectionOwner); + } + + selectionOwner = null; + inactivity++; + preferred = 0; + startAfterCurrent = false; + } + + public static synchronized void capture(PlacementSelection.Inventory i) { + if (capturedType == 0) { + int slot = i.current(); + if (i.stack(slot) && i.block(slot)) { + capturedType = i.type(slot); + capturedCount = i.count(slot); + if (Integer.compareUnsigned(inactivity, 20) > 0 || lastSlot != slot) { + repetitions = capturedCount; + } + + inactivity = 0; + lastSlot = slot; + } + } + } + + public static void capture(ClientContext c) { + if (c.ready()) { + capture(inventory(c.player().inventory)); + } + } + + public static synchronized void consume(PlacementSelection.Inventory i) { + if (capturedType != 0) { + int slot = i.current(); + boolean depleted = !i.stack(slot) || !i.item(slot) || i.type(slot) == 0; + if (!depleted && i.count(slot) < capturedCount) { + depleted = --repetitions == 0; + } + + if (depleted) { + preferred = capturedType; + startAfterCurrent = true; + } + + capturedType = 0; + } + } + + public static void consume(ClientContext c) { + if (c.ready()) { + consume(inventory(c.player().inventory)); + } + } + + public static synchronized int preferred() { + return preferred; + } + + public static synchronized boolean afterCurrent() { + return startAfterCurrent; + } + + public static int bridgeRank(int id) { + switch (id) { + case 1: + case 2: + case 3: + case 35: + case 45: + return 2; + case 5: + case 17: + case 20: + case 24: + case 87: + return 1; + default: + int offset = id - 121; + return Integer.compareUnsigned(offset, 41) <= 0 && (2473901162497L >>> (offset & 63) & 1L) != 0L ? 1 : -1; + } + } + + public static int blockInRank(int id) { + switch (id) { + case 1: + case 2: + case 3: + case 20: + case 24: + case 45: + case 87: + case 159: + return 2; + case 4: + case 5: + case 17: + case 121: + case 162: + return 3; + case 35: + return 1; + case 49: + return 4; + default: + return -1; + } + } + + public static int choose(int[] ids, int current, int preferredId, boolean afterCurrent, IntUnaryOperator rank) { + int first = current + (afterCurrent ? 1 : 0); + int chosen = -1; + int best = -1; + + for (int n = 0; n < 9; n++) { + int slot = (first + n) % 9; + int id = ids[slot]; + if (id != 0) { + if (preferredId != 0 && id == preferredId) { + return slot; + } + + int score = rank.applyAsInt(id); + if (score > best) { + best = score; + chosen = slot; + } + } + } + + return chosen; + } + + public static synchronized boolean select(ClientContext c, Object token, boolean force, boolean blockIn) { + return selectionOwner == null && c.ready() && (force || preferred != 0) ? select(inventory(c.player().inventory), token, force, blockIn) : false; + } + + public static synchronized boolean select(PlacementSelection.Inventory inventory, Object token, boolean force, boolean blockIn) { + if (selectionOwner == null && (force || preferred != 0)) { + int[] ids = new int[9]; + + for (int i = 0; i < 9; i++) { + ids[i] = inventory.type(i); + } + + int chosen = choose(ids, inventory.current(), preferred, startAfterCurrent, blockIn ? PlacementSelection::blockInRank : PlacementSelection::bridgeRank); + if (chosen != -1 && ModuleActionService.claim(token)) { + if (restorationOwner != token) { + originalSlot = inventory.current(); + inventoryOwner = inventory; + restorationOwner = token; + } + + selectionOwner = token; + inventory.current(chosen); + return true; + } else { + return false; + } + } else { + return false; + } + } + + public static synchronized void release(Object token) { + if (restorationOwner == token) { + inventoryOwner.current(originalSlot); + restorationOwner = null; + inventoryOwner = null; + } + + if (selectionOwner == token) { + selectionOwner = null; + } + + ModuleActionService.release(token); + } + + public static synchronized void reset() { + if (inventoryOwner != null) { + inventoryOwner.current(originalSlot); + } + + if (selectionOwner != null) { + ModuleActionService.release(selectionOwner); + } + + restorationOwner = null; + selectionOwner = null; + inventoryOwner = null; + preferred = 0; + startAfterCurrent = false; + repetitions = 0; + lastSlot = 0; + capturedCount = 0; + capturedType = 0; + inactivity = 0; + } + + public interface Inventory { + int current(); + + void current(int var1); + + boolean stack(int var1); + + boolean item(int var1); + + int type(int var1); + + boolean block(int var1); + + int count(int var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/DrawPlan.java b/SlinkyClient/src/main/java/dev/slinky/client/render/DrawPlan.java new file mode 100644 index 0000000..5a2d0f9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/DrawPlan.java @@ -0,0 +1,266 @@ +package dev.slinky.client.render; + +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.setting.ColorSetting; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Deque; +import java.util.List; +import net.minecraft.item.ItemStack; + +public final class DrawPlan { + private final List operations = new ArrayList<>(); + private boolean canvas; + private float[] canvasTransform = new float[]{1.0F, 0.0F, 0.0F, 1.0F, 0.0F, 0.0F}; + private final Deque canvasTransforms = new ArrayDeque<>(); + + public DrawPlan canvas() { + this.canvas = true; + return this; + } + + public List operations() { + return Collections.unmodifiableList(this.operations); + } + + public DrawPlan op(String kind, float... values) { + this.operations.add(new DrawPlan.Op(kind, null, values)); + return this; + } + + public DrawPlan push() { + this.canvasTransforms.push((float[])this.canvasTransform.clone()); + return this.op("push"); + } + + public DrawPlan pop() { + this.canvasTransform = this.canvasTransforms.pop(); + return this.op("pop"); + } + + public DrawPlan translate(float x, float y, float z) { + this.canvasTransform[4] = x * this.canvasTransform[0] + y * this.canvasTransform[2] + this.canvasTransform[4]; + this.canvasTransform[5] = x * this.canvasTransform[1] + y * this.canvasTransform[3] + this.canvasTransform[5]; + return this.op("translate", x, y, z); + } + + public DrawPlan scale(float x, float y, float z) { + this.canvasTransform[0] = this.canvasTransform[0] * x; + this.canvasTransform[1] = this.canvasTransform[1] * x; + this.canvasTransform[2] = this.canvasTransform[2] * y; + this.canvasTransform[3] = this.canvasTransform[3] * y; + return this.op("scale", x, y, z); + } + + public DrawPlan rotate(float angle, float x, float y, float z) { + return this.op("rotate", angle, x, y, z); + } + + public DrawPlan color(ColorSetting.Value c, float alpha) { + return this.op("color", c.red, c.green, c.blue, alpha); + } + + public DrawPlan color(float r, float g, float b, float a) { + return this.op("color", r, g, b, a); + } + + public DrawPlan lineWidth(float width) { + return this.op("lineWidth", width); + } + + public DrawPlan indexed(int mode, int dimensions, int vertices, int indices, int count) { + float[] values = new float[1 + count * dimensions]; + values[0] = (float)mode; + + for (int i = 0; i < count; i++) { + int v = RenderConstants.u16(indices + i * 2); + + for (int j = 0; j < dimensions; j++) { + values[1 + i * dimensions + j] = RenderConstants.f(vertices + (v * dimensions + j) * 4); + } + } + + this.operations.add(new DrawPlan.Op("vertices" + dimensions, null, values)); + return this; + } + + public DrawPlan graphics(int address) { + int mode; + int count; + int vertex; + int index; + int dim; + switch (address) { + case 168960: + mode = 5; + count = 14; + vertex = 1375248; + index = 1375344; + dim = 3; + break; + case 169008: + mode = 1; + count = 24; + vertex = 1375248; + index = 1375360; + dim = 3; + break; + case 169120: + mode = 5; + count = 4; + vertex = 1375392; + index = 1375424; + dim = 2; + break; + case 169168: + mode = 2; + count = 4; + vertex = 1375392; + index = 1375428; + dim = 2; + break; + case 169280: + mode = 6; + count = 4; + vertex = 1375440; + index = 1375472; + dim = 2; + break; + case 169328: + mode = 2; + count = 4; + vertex = 1375440; + index = 1375476; + dim = 2; + break; + default: + throw new IllegalArgumentException("Unknown recovered draw helper"); + } + + float[] values = new float[1 + count * dim]; + values[0] = (float)mode; + + for (int i = 0; i < count; i++) { + int v = RenderConstants.i(index + (i & -4)) >>> (i & 3) * 8 & 0xFF; + + for (int j = 0; j < dim; j++) { + values[1 + i * dim + j] = RenderConstants.f(vertex + (v * dim + j) * 4); + } + } + + this.operations.add(new DrawPlan.Op("vertices" + dim, null, values)); + return this; + } + + public DrawPlan vertices(int mode, int dimensions, float... vertices) { + float[] v = new float[vertices.length + 1]; + v[0] = (float)mode; + System.arraycopy(vertices, 0, v, 1, vertices.length); + this.operations.add(new DrawPlan.Op("vertices" + dimensions, null, v)); + return this; + } + + public DrawPlan line(float x, float y, float ex, float ey) { + if (this.canvas) { + this.operations.add(new DrawPlan.Op("vertices2", Boolean.TRUE, new float[]{1.0F, x, y, ex, ey})); + return this; + } else { + return this.vertices(1, 2, x, y, ex, ey); + } + } + + public DrawPlan text(String text, float x, float y, int color, boolean shadow, float size) { + this.operations.add(new DrawPlan.Op("text", text, new float[]{x, y, Float.intBitsToFloat(color), shadow ? 1.0F : 0.0F, size})); + return this; + } + + public float canvasText(String text, float x, float y, int color, float size, int alignment) { + return this.canvasText(text, x, y, color, size, alignment, 0); + } + + public float canvasText(String text, float x, float y, int color, float size, int alignment, int style) { + CanvasFonts.Text rendered = CanvasFonts.text(text, x, y, size, alignment, this.canvasTransform, style); + this.operations.add(new DrawPlan.Op("text", rendered, new float[]{x, y, Float.intBitsToFloat(color), 0.0F, size})); + return rendered.end; + } + + public DrawPlan alphaSprite(int texture, int atlasWidth, int atlasHeight, byte[] pixels, List vertices, int color) { + CanvasFonts.Batch batch = new CanvasFonts.Batch(texture, atlasWidth, atlasHeight, pixels, vertices); + CanvasFonts.Text sprite = new CanvasFonts.Text("", Collections.singletonList(batch), 0.0F); + this.operations.add(new DrawPlan.Op("text", sprite, new float[]{0.0F, 0.0F, Float.intBitsToFloat(color), 0.0F, 0.0F})); + return this; + } + + public DrawPlan item(ItemStack stack, float x, float y) { + this.operations.add(new DrawPlan.Op("item", stack, new float[]{x, y})); + return this; + } + + public DrawPlan rect(float x, float y, float width, float height, float radius) { + return this.op("roundedRect", x, y, width, height, radius); + } + + public DrawPlan clip(float x, float y, float width, float height) { + return this.op("screenClip", x, y, width, height); + } + + public DrawPlan unclip() { + return this.op("unclip"); + } + + public DrawPlan roundedStroke(float x, float y, float width, float height, float radius) { + return this.op("roundedStroke", x, y, width, height, radius); + } + + public DrawPlan opacity(float alpha) { + return this.op("opacity", alpha); + } + + public DrawPlan gradient(RenderMath.Rect rect, float[] first, float[] second) { + return this.op("gradient", rect.x, rect.y, rect.width, rect.height, first[0], first[1], first[2], first[3], second[0], second[1], second[2], second[3]); + } + + public DrawPlan pillGradient(RenderMath.Rect rect, float radius, float[]... stops) { + float[] values = new float[5 + stops.length * 4]; + values[0] = rect.x; + values[1] = rect.y; + values[2] = rect.width; + values[3] = rect.height; + values[4] = radius; + + for (int i = 0; i < stops.length; i++) { + System.arraycopy(stops[i], 0, values, 5 + i * 4, 4); + } + + return this.op("pillGradient", values); + } + + public DrawPlan circleStroke(float x, float y, float radius) { + return this.op("circleStroke", x, y, radius); + } + + public DrawPlan rectVarying(float x, float y, float width, float height, float topLeft, float topRight, float bottomRight, float bottomLeft) { + return this.op("roundedRectVarying", x, y, width, height, topLeft, topRight, bottomRight, bottomLeft); + } + + public DrawPlan enable(int capability) { + return this.op("enable", (float)capability); + } + + public DrawPlan disable(int capability) { + return this.op("disable", (float)capability); + } + + public static final class Op { + public final String kind; + public final float[] values; + public final Object value; + + private Op(String kind, Object value, float... values) { + this.kind = kind; + this.value = value; + this.values = (float[])values.clone(); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/NotificationQueue.java b/SlinkyClient/src/main/java/dev/slinky/client/render/NotificationQueue.java new file mode 100644 index 0000000..278ba75 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/NotificationQueue.java @@ -0,0 +1,131 @@ +package dev.slinky.client.render; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final strictfp class NotificationQueue { + private final NotificationQueue.Message[] records = new NotificationQueue.Message[10]; + private long start; + private int count; + private String enabledName; + private String disabledName; + private int enabledCount; + private int disabledCount; + + public strictfp void append(int kind, String text) { + byte[] source = text.getBytes(StandardCharsets.UTF_8); + String limited = source.length < 101 ? text : new String(source, 0, 100, StandardCharsets.UTF_8); + this.records[(int)Long.remainderUnsigned(this.start + (long)this.count, 10L)] = new NotificationQueue.Message(kind, limited); + if (this.count == 10) { + this.start++; + } else { + this.count++; + } + } + + public strictfp void state(String name, boolean enabled) { + if (enabled) { + this.enabledName = name; + this.enabledCount++; + } else { + this.disabledName = name; + this.disabledCount++; + } + } + + public strictfp int advance(float elapsed, int oldFlags, boolean hidden) { + if (hidden) { + this.count = 0; + this.enabledCount = this.disabledCount = 0; + return oldFlags; + } else { + float expiry = RenderConstants.f(1384008); + + while (this.count != 0 && this.records[(int)Long.remainderUnsigned(this.start, 10L)].age > expiry) { + this.start++; + this.count--; + } + + if (this.enabledCount != 0) { + this.append( + 1, + this.enabledCount == 1 + ? RenderConstants.text(1384300) + " " + this.enabledName + : RenderConstants.text(1384300) + " " + Integer.toUnsignedString(this.enabledCount) + " mods" + ); + this.enabledCount = 0; + } + + if (this.disabledCount != 0) { + this.append( + 1, + this.disabledCount == 1 + ? RenderConstants.text(1384308) + " " + this.disabledName + : RenderConstants.text(1384308) + " " + Integer.toUnsignedString(this.disabledCount) + " mods" + ); + this.disabledCount = 0; + } + + if (this.count == 0) { + return oldFlags; + } else { + boolean transitioning = false; + double late = RenderConstants.d(1384016); + double early = RenderConstants.d(1384024); + + for (NotificationQueue.Message m : this.messages()) { + m.age += elapsed; + if ((double)m.age > late || (double)m.age < early) { + transitioning = true; + } + } + + return oldFlags | (transitioning ? 3 : 1); + } + } + } + + public strictfp List messages() { + List result = new ArrayList<>(); + + for (int i = 0; i < this.count; i++) { + result.add(this.records[(int)Long.remainderUnsigned(this.start + (long)i, 10L)]); + } + + return Collections.unmodifiableList(result); + } + + public strictfp void clearMessages() { + this.count = 0; + } + + public strictfp void clearAll() { + this.count = this.enabledCount = this.disabledCount = 0; + } + + public static strictfp float opacity(float value) { + double age = (double)value; + double duration = RenderConstants.d(1384040); + float amount = RenderConstants.f(1384048); + if (duration > age) { + amount = RenderMath.smooth((float)(age / duration)); + } else if (age > RenderConstants.d(1384056)) { + amount = RenderMath.smooth((float)((RenderConstants.d(1384064) - age) / duration)); + } + + return RenderMath.min(RenderConstants.f(1384048), amount); + } + + public static final strictfp class Message { + public final int kind; + public final String text; + public float age; + + private Message(int kind, String text) { + this.kind = kind; + this.text = text; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/RenderAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderAccess.java new file mode 100644 index 0000000..0ea4d4b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderAccess.java @@ -0,0 +1,457 @@ +package dev.slinky.client.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.canvas.CanvasPath; +import dev.slinky.client.render.canvas.CanvasState; +import dev.slinky.client.render.canvas.GlCanvasBackend; +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.client.render.hook.GlStateScope; +import dev.slinky.inject.ReflectionHelper; +import dev.slinky.setting.ColorSetting; +import java.lang.reflect.Method; +import java.nio.FloatBuffer; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Objects; +import java.util.TreeSet; +import java.util.function.Consumer; +import java.util.function.DoubleSupplier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.ItemStack; +import net.minecraft.scoreboard.ScorePlayerTeam; +import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.GL11; + +public final class RenderAccess { + private static float[] model; + private static float[] projection; + private static Consumer sink = RenderAccess::execute; + private static DoubleSupplier clock = () -> (double)System.nanoTime() * 1.0E-9; + private static Method fovModifier; + + private RenderAccess() { + } + + public static double now() { + return clock.getAsDouble(); + } + + public static DoubleSupplier bindClock(DoubleSupplier next) { + DoubleSupplier previous = clock; + clock = Objects.requireNonNull(next); + return previous; + } + + public static Consumer bindSink(Consumer next) { + Consumer previous = sink; + sink = Objects.requireNonNull(next); + return previous; + } + + public static void submit(SemanticEvent event, DrawPlan plan) { + if (!event.cancelled) { + sink.accept(plan); + } + } + + public static void captureWorldProjection() { + FloatBuffer m = BufferUtils.createFloatBuffer(16); + FloatBuffer p = BufferUtils.createFloatBuffer(16); + GL11.glGetFloat(2982, m); + GL11.glGetFloat(2983, p); + float[] ma = new float[16]; + float[] pa = new float[16]; + m.get(ma); + p.get(pa); + model = ma; + projection = pa; + } + + public static void setProjection(float[] m, float[] p) { + model = (float[])m.clone(); + projection = (float[])p.clone(); + } + + public static void clearProjection() { + projection = null; + model = null; + } + + public static void releaseCanvasResources() { + CanvasFonts.release(); + } + + public static RenderAccess.Frame frame(ClientContext c, SemanticEvent e) { + return model != null && projection != null && e.renderWidth > 0.0F && e.renderHeight > 0.0F + ? new RenderAccess.Frame(e.renderWidth, e.renderHeight, model, projection, new double[]{e.cameraX, e.cameraY, e.cameraZ}) + : null; + } + + public static RenderAccess.Frame fixtureFrame(float width, float height, float[] m, float[] p, double[] camera) { + return new RenderAccess.Frame(width, height, m, p, camera); + } + + public static double[] position(Entity e) { + return new double[]{e.posX, e.posY, e.posZ}; + } + + public static double[] previous(Entity e) { + return new double[]{e.prevPosX, e.prevPosY, e.prevPosZ}; + } + + public static boolean arrowInGround(EntityArrow arrow) { + try { + return ReflectionHelper.findField(EntityArrow.class, "inGround", "field_70254_i").getBoolean(arrow); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + + public static float width(ClientContext c, String text) { + return (float)c.minecraft().fontRendererObj.getStringWidth(text); + } + + public static float textHeight(ClientContext c) { + return (float)c.minecraft().fontRendererObj.FONT_HEIGHT; + } + + public static float fov(ClientContext c, float partial) { + if (fovModifier == null) { + fovModifier = ReflectionHelper.findMethod(EntityRenderer.class, null, new String[]{"getFOVModifier", "func_78481_a"}, float.class, boolean.class); + } + + try { + return (Float)fovModifier.invoke(c.minecraft().entityRenderer, partial, true); + } catch (ReflectiveOperationException var3) { + throw new IllegalStateException(var3); + } + } + + public static ColorSetting.Value nameColor(EntityPlayer player) { + String prefix = player.getTeam() instanceof ScorePlayerTeam ? ((ScorePlayerTeam)player.getTeam()).getColorPrefix() : ""; + int index = -1; + + for (int i = 0; i + 1 < prefix.length(); i++) { + if (prefix.charAt(i) == 167) { + int code = "0123456789abcdef".indexOf(Character.toLowerCase(prefix.charAt(i + 1))); + if (code >= 0) { + index = code; + } + } + } + + int rgb = index < 0 ? 16777215 : Minecraft.getMinecraft().fontRendererObj.getColorCode("0123456789abcdef".charAt(index)); + return new ColorSetting.Value((float)(rgb >>> 16 & 0xFF) / 255.0F, (float)(rgb >>> 8 & 0xFF) / 255.0F, (float)(rgb & 0xFF) / 255.0F); + } + + private static void execute(DrawPlan plan) { + try (GlStateScope attributes = GlStateScope.open()) { + GL11.glPushMatrix(); + CanvasState canvas = canvas(); + CanvasState.Stats stats = new CanvasState.Stats(); + GlCanvasBackend backend = new GlCanvasBackend(); + int pushes = 0; + float alpha = 1.0F; + float savedItemDepth = Minecraft.getMinecraft().getRenderItem().zLevel; + Deque alphas = new ArrayDeque<>(); + + try { + GlStateManager.enableBlend(); + GlStateManager.tryBlendFuncSeparate(770, 771, 1, 771); + GlStateManager.disableTexture2D(); + + for (DrawPlan.Op op : plan.operations()) { + float[] v = op.values; + if (op.kind.equals("push")) { + GL11.glPushMatrix(); + canvas.save(); + pushes++; + alphas.push(alpha); + } else if (op.kind.equals("pop")) { + if (pushes <= 0) { + throw new IllegalStateException("Unbalanced drawing matrix"); + } + + GL11.glPopMatrix(); + canvas.restore(); + pushes--; + alpha = alphas.pop(); + } else if (op.kind.equals("translate")) { + GL11.glTranslatef(v[0], v[1], v[2]); + canvas.translate(v[0], v[1]); + } else if (op.kind.equals("scale")) { + GL11.glScalef(v[0], v[1], v[2]); + canvas.scale(v[0], v[1]); + } else if (op.kind.equals("rotate")) { + GL11.glRotatef(v[0], v[1], v[2], v[3]); + } else if (op.kind.equals("color")) { + GlStateManager.color(v[0], v[1], v[2], v[3] * alpha); + canvas.fillColor(v); + canvas.strokeColor(v); + } else if (op.kind.equals("opacity")) { + alpha = v[0]; + canvas.selected().alpha = alpha; + } else if (op.kind.equals("screenClip")) { + GL11.glEnable(3089); + GL11.glScissor((int)v[0], Minecraft.getMinecraft().displayHeight - (int)(v[1] + v[3]), Math.max(0, (int)v[2]), Math.max(0, (int)v[3])); + } else if (op.kind.equals("unclip")) { + GL11.glDisable(3089); + } else if (op.kind.equals("gradient")) { + CanvasState.Paint paint = CanvasState.linearGradient( + v[0], v[1], v[0] + v[2], v[1], new float[]{v[4], v[5], v[6], v[7]}, new float[]{v[8], v[9], v[10], v[11]} + ); + canvas.fillPaint(paint); + shape(canvas, new CanvasPath(0.25F, 0.01F, 1.0F).rectangle(v[0], v[1], v[2], v[3]), false, backend, stats); + } else if (op.kind.equals("lineWidth")) { + GL11.glLineWidth(v[0]); + canvas.selected().lineWidth = v[0]; + } else if (op.kind.equals("enable")) { + capability((int)v[0], true); + } else if (op.kind.equals("disable")) { + capability((int)v[0], false); + } else if (op.kind.equals("vertices2") && op.value == Boolean.TRUE) { + shape(canvas, new CanvasPath(0.25F, 0.01F, 1.0F).command(0.0F, v[1], v[2], 1.0F, v[3], v[4]), true, backend, stats); + } else if (op.kind.startsWith("vertices")) { + int dimensions = op.kind.equals("vertices2") ? 2 : 3; + GL11.glBegin((int)v[0]); + + try { + for (int i = 1; i < v.length; i += dimensions) { + GL11.glVertex3f(v[i], v[i + 1], dimensions == 3 ? v[i + 2] : 0.0F); + } + } finally { + GL11.glEnd(); + } + } else if (op.kind.equals("roundedRect") || op.kind.equals("roundedStroke")) { + shape( + canvas, + new CanvasPath(0.25F, 0.01F, 1.0F).rounded(v[0], v[1], v[2], v[3], v[4], v[4], v[4], v[4]), + op.kind.equals("roundedStroke"), + backend, + stats + ); + } else if (op.kind.equals("roundedRectVarying")) { + shape(canvas, new CanvasPath(0.25F, 0.01F, 1.0F).rounded(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]), false, backend, stats); + } else if (op.kind.equals("circle")) { + shape(canvas, new CanvasPath(0.25F, 0.01F, 1.0F).ellipse(v[0], v[1], v[2], v[2]), false, backend, stats); + } else if (op.kind.equals("circleStroke")) { + shape(canvas, new CanvasPath(0.25F, 0.01F, 1.0F).ellipse(v[0], v[1], v[2], v[2]), true, backend, stats); + } else if (op.kind.equals("pillGradient")) { + pillGradient(canvas.selected().transform, v, alpha); + } else if (op.kind.equals("itemDepth")) { + Minecraft.getMinecraft().getRenderItem().zLevel = v[0]; + } else if (op.kind.equals("text") && op.value instanceof CanvasFonts.Text) { + CanvasFonts.render((CanvasFonts.Text)op.value, Float.floatToRawIntBits(v[2]), alpha); + } else if (op.kind.equals("text")) { + GlStateManager.enableTexture2D(); + GL11.glPushMatrix(); + + try { + float factor = v[4] / (float)Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; + GL11.glTranslatef(v[0], v[1], 0.0F); + GL11.glScalef(factor, factor, 1.0F); + int color = Float.floatToRawIntBits(v[2]); + int opacity = (int)((float)(color >>> 24) * alpha); + Minecraft.getMinecraft().fontRendererObj.drawString((String)op.value, 0.0F, 0.0F, opacity << 24 | color & 16777215, v[3] != 0.0F); + } finally { + GL11.glPopMatrix(); + GlStateManager.disableTexture2D(); + } + } else if (op.kind.equals("item")) { + GlStateManager.enableTexture2D(); + RenderHelper.enableGUIStandardItemLighting(); + + try { + Minecraft.getMinecraft().getRenderItem().renderItemAndEffectIntoGUI((ItemStack)op.value, (int)v[0], (int)v[1]); + Minecraft.getMinecraft().getRenderItem().renderItemOverlays(Minecraft.getMinecraft().fontRendererObj, (ItemStack)op.value, (int)v[0], (int)v[1]); + } finally { + RenderHelper.disableStandardItemLighting(); + GlStateManager.disableTexture2D(); + } + } + } + } finally { + Minecraft.getMinecraft().getRenderItem().zLevel = savedItemDepth; + + while (pushes-- > 0) { + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } + } + } + + private static void pillGradient(float[] transform, float[] v, float alpha) { + float x = v[0]; + float y = v[1]; + float width = v[2]; + float height = v[3]; + float radius = Math.max(0.0F, Math.min(v[4], Math.min(height, width) * 0.5F)); + int stops = (v.length - 5) / 4; + if (stops >= 1 && !(width <= 0.0F) && !(height <= 0.0F)) { + TreeSet columns = new TreeSet<>(); + int capSteps = Math.max(4, (int)Math.ceil((double)(radius * 2.0F))); + + for (int i = 0; i <= capSteps; i++) { + float inset = radius - radius * (float)Math.cos((Math.PI / 2) * (double)i / (double)capSteps); + columns.add(x + inset); + columns.add(x + width - inset); + } + + for (int i = 0; i < stops; i++) { + columns.add(x + (stops == 1 ? 0.0F : width * (float)i / (float)(stops - 1))); + } + + float middle = y + height * 0.5F; + float straight = height * 0.5F - radius; + float[] color = new float[4]; + GL11.glShadeModel(7425); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glBegin(5); + + try { + for (float px : columns) { + float dx = px < x + radius ? x + radius - px : (px > x + width - radius ? px - (x + width - radius) : 0.0F); + float half = straight + (float)Math.sqrt((double)Math.max(0.0F, radius * radius - dx * dx)); + if (stops == 1) { + System.arraycopy(v, 5, color, 0, 4); + } else { + float position = Math.max(0.0F, Math.min(1.0F, (px - x) / width)) * (float)(stops - 1); + int index = Math.min(stops - 2, (int)position); + float f = position - (float)index; + + for (int c = 0; c < 4; c++) { + color[c] = v[5 + index * 4 + c] + (v[5 + (index + 1) * 4 + c] - v[5 + index * 4 + c]) * f; + } + } + + GL11.glColor4f(color[0], color[1], color[2], color[3] * alpha); + vertex(transform, px, middle - half); + vertex(transform, px, middle + half); + } + } finally { + GL11.glEnd(); + GL11.glPopMatrix(); + } + } + } + + private static void vertex(float[] m, float x, float y) { + GL11.glVertex2f(m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]); + } + + private static void capability(int value, boolean enable) { + switch (value) { + case 2884: + if (enable) { + GlStateManager.enableCull(); + } else { + GlStateManager.disableCull(); + } + break; + case 2896: + if (enable) { + GlStateManager.enableLighting(); + } else { + GlStateManager.disableLighting(); + } + break; + case 2929: + if (enable) { + GlStateManager.enableDepth(); + } else { + GlStateManager.disableDepth(); + } + break; + case 3008: + if (enable) { + GlStateManager.enableAlpha(); + } else { + GlStateManager.disableAlpha(); + } + break; + case 3042: + if (enable) { + GlStateManager.enableBlend(); + } else { + GlStateManager.disableBlend(); + } + break; + case 3553: + if (enable) { + GlStateManager.enableTexture2D(); + } else { + GlStateManager.disableTexture2D(); + } + break; + default: + if (enable) { + GL11.glEnable(value); + } else { + GL11.glDisable(value); + } + } + } + + public static CanvasState canvas() { + CanvasState.State initial = new CanvasState.State(); + initial.transform[0] = initial.transform[3] = 1.0F; + initial.alpha = 1.0F; + initial.lineWidth = 1.0F; + initial.miter = 10.0F; + initial.cap = 0; + initial.join = 1; + initial.shapeAntialias = 1; + initial.scissorExtent[0] = initial.scissorExtent[1] = -1.0F; + initial.composite[0] = 770; + initial.composite[2] = 1; + initial.composite[1] = initial.composite[3] = 771; + return new CanvasState(initial); + } + + private static void shape(CanvasState canvas, CanvasPath path, boolean stroke, CanvasState.Backend backend, CanvasState.Stats stats) { + path.transform(canvas.selected().transform); + GL11.glPushMatrix(); + + try { + GL11.glLoadIdentity(); + if (stroke) { + canvas.stroke(path, backend, stats, true); + } else { + canvas.fill(path, backend, stats, true); + } + } finally { + GL11.glPopMatrix(); + } + } + + public static final class Frame { + public final float width; + public final float height; + public final float[] model; + public final float[] projection; + public final double[] camera; + + private Frame(float w, float h, float[] m, float[] p, double[] c) { + this.width = w; + this.height = h; + this.model = (float[])m.clone(); + this.projection = (float[])p.clone(); + this.camera = (double[])c.clone(); + } + + public RenderMath.Projection project(double[] relative) { + return RenderMath.project(relative, this.model, this.projection, this.width, this.height); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/RenderConstants.java b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderConstants.java new file mode 100644 index 0000000..b29589d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderConstants.java @@ -0,0 +1,118 @@ +package dev.slinky.client.render; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class RenderConstants { + private static final Map SPANS = new LinkedHashMap<>(); + private static final long CAPTURE_BASE = captureBase(); + private static final ConcurrentHashMap TEXTS; + + private static long captureBase() { + try (Reader r = new InputStreamReader(Platform.resource("/assets/slinkysemantic/MetadataCatalog.json"), "UTF-8")) { + return Long.decode(new JsonParser().parse(r).getAsJsonObject().get("runtime_base").getAsString()); + } catch (IOException var15) { + throw new ExceptionInInitializerError(var15); + } + } + + private RenderConstants() { + } + + private static ByteBuffer at(int address, int count) { + for (Entry row : SPANS.entrySet()) { + int offset = address - row.getKey(); + if (offset >= 0 && offset + count <= row.getValue().length) { + return ByteBuffer.wrap(row.getValue(), offset, count).order(ByteOrder.LITTLE_ENDIAN); + } + } + + throw new IllegalArgumentException("Uncaptured immutable drawing operand 0x" + Integer.toHexString(address)); + } + + public static int i(int address) { + return at(address, 4).getInt(); + } + + public static long l(int address) { + return at(address, 8).getLong(); + } + + public static float f(int address) { + return at(address, 4).getFloat(); + } + + public static double d(int address) { + return at(address, 8).getDouble(); + } + + public static int u16(int address) { + return at(address, 2).getShort() & 65535; + } + + public static String text(int address) { + String cached = TEXTS.get(address); + if (cached == null) { + TEXTS.put(address, cached = decode(address)); + } + + return cached; + } + + private static String decode(int address) { + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + for (int n = 0; n < 256; n++) { + int b = at(address + n, 1).get() & 255; + if (b == 0) { + break; + } + + bytes.write(b); + } + + try { + return new String(bytes.toByteArray(), "UTF-8"); + } catch (UnsupportedEncodingException var4) { + throw new AssertionError(var4); + } + } + + public static String pointerText(int address) { + long p = l(address); + return p == 0L ? null : text((int)(p - CAPTURE_BASE)); + } + + static { + try (Reader r = new InputStreamReader(Platform.resource("/assets/slinkysemantic/RenderConstants.json"), "UTF-8")) { + for (JsonElement e : new JsonParser().parse(r).getAsJsonArray()) { + JsonObject row = e.getAsJsonObject(); + String hex = row.get("bytes").getAsString(); + byte[] bytes = new byte[hex.length() / 2]; + + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte)Integer.parseInt(hex.substring(i * 2, i * 2 + 2), 16); + } + + SPANS.put(row.get("address").getAsInt(), bytes); + } + } catch (IOException var18) { + throw new ExceptionInInitializerError(var18); + } + + TEXTS = new ConcurrentHashMap<>(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/RenderEventPayload.java b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderEventPayload.java new file mode 100644 index 0000000..c801723 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderEventPayload.java @@ -0,0 +1,38 @@ +package dev.slinky.client.render; + +import dev.slinky.client.event.SemanticEvent; +import java.util.Collections; +import java.util.Map; +import java.util.WeakHashMap; +import net.minecraft.world.World; + +public final class RenderEventPayload { + private static final Map ATTACHED = Collections.synchronizedMap(new WeakHashMap<>()); + public int redrawFlags; + public int action; + public int errorCode; + public int regionKind; + public int x; + public int y; + public int z; + public int blockId; + public String profileName; + public String message; + public boolean friendAdded; + public Runnable guiDraw; + public World world; + + public static RenderEventPayload attach(SemanticEvent event) { + RenderEventPayload payload = new RenderEventPayload(); + ATTACHED.put(event, payload); + return payload; + } + + public static RenderEventPayload get(SemanticEvent event) { + return ATTACHED.get(event); + } + + public static void detach(SemanticEvent event) { + ATTACHED.remove(event); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/RenderMath.java b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderMath.java new file mode 100644 index 0000000..4242161 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/RenderMath.java @@ -0,0 +1,137 @@ +package dev.slinky.client.render; + +import dev.slinky.setting.ColorSetting; + +public final strictfp class RenderMath { + private RenderMath() { + } + + private static strictfp float model(float[] m, int i, float x, float y, float z) { + return m[i + 8] * z + (m[i] * x + m[i + 4] * y) + m[i + 12]; + } + + private static strictfp float row(float[] m, int i, float x, float y, float z, float w) { + return m[i + 12] * w + (m[i + 8] * z + (m[i] * x + m[i + 4] * y)); + } + + public static strictfp RenderMath.Projection project(double[] p, float[] model, float[] projection, float width, float height) { + float x = (float)p[0]; + float y = (float)p[1]; + float z = (float)p[2]; + float mx = model(model, 0, x, y, z); + float my = model(model, 1, x, y, z); + float mz = model(model, 2, x, y, z); + float mw = z * model[11] + (x * model[3] + y * model[7]) + model[15]; + float w = row(projection, 3, mx, my, mz, mw); + if (w == 0.0F) { + return null; + } else { + float one = RenderConstants.f(1375232); + float half = RenderConstants.f(1375236); + float reciprocal = one / w * half; + float depth = row(projection, 2, mx, my, mz, mw) * reciprocal + half; + if (!(0.0F >= depth) && !(depth >= one)) { + float py = row(projection, 1, mx, my, mz, mw) * reciprocal + half; + float px = (mw * projection[12] + (mz * projection[8] + (mx * projection[0] + my * projection[4]))) * reciprocal + half; + return new RenderMath.Projection(px * width, height - py * height, reciprocal); + } else { + return null; + } + } + } + + public static strictfp float lerp(float a, float b, float t) { + return a + t * (b - a); + } + + public static strictfp double[] lerp(double[] a, double[] b, double t) { + return new double[]{a[0] + t * (b[0] - a[0]), a[1] + t * (b[1] - a[1]), a[2] + t * (b[2] - a[2])}; + } + + public static strictfp double[] subtract(double[] a, double[] b) { + return new double[]{a[0] - b[0], a[1] - b[1], a[2] - b[2]}; + } + + public static strictfp double[] add(double[] a, double[] b) { + return new double[]{a[0] + b[0], a[1] + b[1], a[2] + b[2]}; + } + + public static strictfp double[] scale(double[] a, double n) { + return new double[]{a[0] * n, a[1] * n, a[2] * n}; + } + + public static strictfp double distanceSquared(double[] a, double[] b) { + double x = a[0] - b[0]; + double y = a[1] - b[1]; + double z = a[2] - b[2]; + return z * z + (x * x + y * y); + } + + public static strictfp float min(float a, float b) { + return a < b ? a : b; + } + + public static strictfp float max(float a, float b) { + return a > b ? a : b; + } + + public static strictfp float clamp(float lo, float hi, float value) { + return value < lo ? lo : min(hi, value); + } + + public static strictfp float smooth(float value) { + float square = value * value; + return (RenderConstants.f(1304788) - (value + value)) * square; + } + + public static strictfp int compareDistance(float a, float b) { + return Float.compare(b, a); + } + + public static strictfp ColorSetting.Value blend(ColorSetting.Value a, ColorSetting.Value b, float t) { + return new ColorSetting.Value(lerp(a.red, b.red, t), lerp(a.green, b.green, t), lerp(a.blue, b.blue, t)); + } + + public static strictfp boolean visibleBounds(float minx, float miny, float maxx, float maxy, float width, float height) { + return !(0.0F > minx) && !(0.0F > miny) && !(minx > width) && !(miny > height) || !(0.0F > maxx) && !(maxx > width) && !(0.0F > maxy) && !(maxy > height); + } + + public static strictfp boolean catalogCharacter(int character) { + int b = character & 0xFF; + return ((b & 223) + 191 & 0xFF) < 26 || b == 32 || (b - 48 & 0xFF) < 10; + } + + public static final strictfp class Projection { + public final float x; + public final float y; + public final float reciprocal; + + public Projection(float x, float y, float reciprocal) { + this.x = x; + this.y = y; + this.reciprocal = reciprocal; + } + } + + public static final strictfp class Rect { + public final float x; + public final float y; + public final float width; + public final float height; + + public Rect(float x, float y, float w, float h) { + this.x = x; + this.y = y; + this.width = w; + this.height = h; + } + + public strictfp boolean contains(float px, float py) { + return px >= this.x && py >= this.y && this.x + this.width > px && this.y + this.height > py; + } + + public strictfp RenderMath.Rect inset(float amount) { + return new RenderMath.Rect(amount + this.x, amount + this.y, this.width - (amount + amount), this.height - (amount + amount)); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasPath.java b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasPath.java new file mode 100644 index 0000000..9ae0f87 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasPath.java @@ -0,0 +1,750 @@ +package dev.slinky.client.render.canvas; + +import dev.slinky.client.numeric.FloatTrigonometry; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.numeric.NumericServices; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final strictfp class CanvasPath { + private final List commands = new ArrayList<>(); + private final List paths = new ArrayList<>(); + public final float[] bounds = new float[4]; + public final float tolerance; + public final float distanceTolerance; + public final float fringe; + + public CanvasPath(float tolerance, float distanceTolerance, float fringe) { + this.tolerance = tolerance; + this.distanceTolerance = distanceTolerance; + this.fringe = fringe; + } + + private static strictfp float c(int r) { + return RenderConstants.f(r); + } + + private static strictfp float neg(float x) { + return Float.intBitsToFloat(Float.floatToRawIntBits(x) ^ Integer.MIN_VALUE); + } + + private static strictfp float abs(float x) { + float n = neg(x); + return n <= x ? x : n; + } + + public strictfp CanvasPath command(float... values) { + for (float f : values) { + this.commands.add(f); + } + + this.paths.clear(); + return this; + } + + public strictfp CanvasPath transform(float[] matrix) { + int i = 0; + + while (i < this.commands.size()) { + int kind = (int)this.commands.get(i).floatValue(); + int pairs = kind != 0 && kind != 1 ? (kind == 2 ? 3 : 0) : 1; + + for (int j = 0; j < pairs; j++) { + int at = i + 1 + j * 2; + float x = this.commands.get(at); + float y = this.commands.get(at + 1); + this.commands.set(at, x * matrix[0] + y * matrix[2] + matrix[4]); + this.commands.set(at + 1, x * matrix[1] + y * matrix[3] + matrix[5]); + } + + i += kind != 0 && kind != 1 ? (kind == 2 ? 7 : (kind == 4 ? 2 : 1)) : 3; + } + + this.paths.clear(); + return this; + } + + public strictfp CanvasPath rectangle(float x, float y, float w, float h) { + return this.command(0.0F, x, y, 1.0F, x, h + y, 1.0F, w + x, h + y, 1.0F, w + x, y, 3.0F); + } + + public strictfp CanvasPath rounded(float x, float y, float w, float h, float tl, float tr, float br, float bl) { + float threshold = c(2839776); + if (threshold > tl && threshold > tr && threshold > br && threshold > bl) { + return this.rectangle(x, y, w, h); + } else { + float nw = neg(w); + float nh = neg(h); + float hw = (w >= nw ? w : nw) * c(2839808); + float hh = (h >= nh ? h : nh) * c(2839808); + float sx = c(nw <= w ? 2839812 : 2839816); + float sy = c(nh <= h ? 2839812 : 2839816); + float xb = RenderMath.min(bl, hw) * sx; + float yb = RenderMath.min(bl, hh) * sy; + float xr = RenderMath.min(br, hw) * sx; + float yr = RenderMath.min(br, hh) * sy; + float xt = RenderMath.min(tr, hw) * sx; + float yt = RenderMath.min(tr, hh) * sy; + float xl = RenderMath.min(tl, hw) * sx; + float yl = RenderMath.min(tl, hh) * sy; + float bottom = h + y; + float right = w + x; + float k = c(2839840); + float k0 = c(2839824); + float k1 = c(2839828); + return this.command( + 0.0F, + x, + y + yl, + 1.0F, + x, + bottom - yb, + 2.0F, + x, + neg(yb) * k0 + bottom, + xb * k1 + x, + bottom, + xb + x, + bottom, + 1.0F, + right - xr, + bottom, + 2.0F, + right - xr * k, + bottom, + right, + bottom - yr * k, + right, + bottom - yr, + 1.0F, + right, + yt + y, + 2.0F, + right, + yt * k0 + y, + neg(xt) * k1 + right, + y, + right - xt, + y, + 1.0F, + x + xl, + y, + 2.0F, + xl * k + x, + y, + x, + yl * k + y, + x, + y + yl, + 3.0F + ); + } + } + + public strictfp CanvasPath ellipse(float x, float y, float rx, float ry) { + float a = c(2839872); + float b = c(2839876); + float left = x - rx; + float right = x + rx; + float bottom = y + ry; + float top = y - ry; + float bc = ry * a + y; + float lc = neg(rx) * b + x; + float tc = neg(ry) * a + y; + float rc = rx * b + x; + return this.command( + 0.0F, + left, + y, + 2.0F, + left, + bc, + lc, + bottom, + x, + bottom, + 2.0F, + rc, + bottom, + right, + bc, + right, + y, + 2.0F, + right, + tc, + rc, + top, + x, + top, + 2.0F, + lc, + top, + left, + tc, + left, + y, + 3.0F + ); + } + + public strictfp List commands() { + return Collections.unmodifiableList(this.commands); + } + + public strictfp List paths() { + this.flatten(); + return Collections.unmodifiableList(this.paths); + } + + private strictfp void point(CanvasPath.Path path, float x, float y, int flags) { + if (!path.points.isEmpty()) { + CanvasPath.Point p = path.points.get(path.points.size() - 1); + float dx = x - p.x; + float dy = y - p.y; + if (this.distanceTolerance * this.distanceTolerance > dx * dx + dy * dy) { + p.flags |= flags; + return; + } + } + + path.points.add(new CanvasPath.Point(x, y, flags)); + } + + private strictfp void bezier(CanvasPath.Path p, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, int level, int flags) { + if (level <= 10) { + float dx = x4 - x1; + float dy = y4 - y1; + float d2 = abs((x2 - x4) * dy - (y2 - y4) * dx); + float d3 = abs((x3 - x4) * dy - (y3 - y4) * dx); + float distance = d3 + d2; + if ((dx * dx + dy * dy) * this.tolerance > distance * distance) { + this.point(p, x4, y4, flags); + } else { + float half = c(2842720); + float x12 = (x1 + x2) * half; + float y12 = (y1 + y2) * half; + float x23 = (x2 + x3) * half; + float y23 = (y2 + y3) * half; + float x34 = (x4 + x3) * half; + float y34 = (y4 + y3) * half; + float x123 = (x23 + x12) * half; + float y123 = (y23 + y12) * half; + float x234 = (x23 + x34) * half; + float y234 = (y23 + y34) * half; + float x = (x234 + x123) * half; + float y = (y234 + y123) * half; + this.bezier(p, x1, y1, x12, y12, x123, y123, x, y, level + 1, 0); + this.bezier(p, x, y, x234, y234, x34, y34, x4, y4, level + 1, flags); + } + } + } + + public strictfp void flatten() { + if (this.paths.isEmpty()) { + CanvasPath.Path p = null; + int i = 0; + + while (i < this.commands.size()) { + int kind = NumericMath.truncateInt(this.commands.get(i)); + if (kind == 0) { + p = new CanvasPath.Path(); + this.paths.add(p); + } + + if (kind != 0 && kind != 1) { + if (kind == 2) { + if (p != null && !p.points.isEmpty()) { + CanvasPath.Point previous = p.points.get(p.points.size() - 1); + this.bezier( + p, + previous.x, + previous.y, + this.commands.get(i + 1), + this.commands.get(i + 2), + this.commands.get(i + 3), + this.commands.get(i + 4), + this.commands.get(i + 5), + this.commands.get(i + 6), + 0, + 1 + ); + } + + i += 7; + } else if (kind == 3) { + if (p != null) { + p.closed = true; + } + + i++; + } else if (kind == 4) { + if (p != null) { + p.winding = NumericMath.truncateInt(this.commands.get(i + 1)); + } + + i += 2; + } else { + i++; + } + } else { + if (p != null) { + this.point(p, this.commands.get(i + 1), this.commands.get(i + 2), 1); + } + + i += 3; + } + } + + for (int j = 0; j < 4; j++) { + this.bounds[j] = c(2839936 + 4 * j); + } + + float half = c(2839952); + float threshold = c(2839956); + float one = c(2839960); + + for (CanvasPath.Path path : this.paths) { + List ps = path.points; + if (!ps.isEmpty()) { + CanvasPath.Point first = ps.get(0); + CanvasPath.Point last = ps.get(ps.size() - 1); + float dx = first.x - last.x; + float dy = first.y - last.y; + if (this.distanceTolerance * this.distanceTolerance > dx * dx + dy * dy) { + ps.remove(ps.size() - 1); + path.closed = true; + } + + if (ps.size() > 2) { + float area = 0.0F; + + for (int ix = 2; ix < ps.size(); ix++) { + CanvasPath.Point a = ps.get(ix - 1); + CanvasPath.Point b = ps.get(ix); + area += (b.x - first.x) * (a.y - first.y) - (b.y - first.y) * (a.x - first.x); + } + + area *= half; + if (path.winding == 1 && 0.0F > area || path.winding == 2 && area > 0.0F) { + Collections.reverse(ps); + } + } + + if (!ps.isEmpty()) { + CanvasPath.Point previous = ps.get(ps.size() - 1); + + for (CanvasPath.Point next : ps) { + dx = next.x - previous.x; + dy = next.y - previous.y; + float length = (float)StrictMath.sqrt((double)(dx * dx + dy * dy)); + if (length > threshold) { + float inverse = one / length; + dx *= inverse; + dy *= inverse; + } + + previous.dx = dx; + previous.dy = dy; + previous.length = length; + this.bounds[0] = RenderMath.min(this.bounds[0], previous.x); + this.bounds[1] = RenderMath.min(this.bounds[1], previous.y); + this.bounds[2] = RenderMath.max(this.bounds[2], previous.x); + this.bounds[3] = RenderMath.max(this.bounds[3], previous.y); + previous = next; + } + } + } + } + } + } + + public strictfp void joins(float width, int join, float miter) { + this.flatten(); + float one = c(2842752); + float half = c(2842784); + float threshold = c(2842788); + float maximum = c(2842792); + float minimum = c(2842796); + float inverse = width > 0.0F ? one / width : 0.0F; + + for (CanvasPath.Path path : this.paths) { + path.bevels = 0; + int left = 0; + if (!path.points.isEmpty()) { + CanvasPath.Point previous = path.points.get(path.points.size() - 1); + + for (CanvasPath.Point p : path.points) { + p.mx = (previous.dy + p.dy) * half; + p.my = (neg(p.dx) - previous.dx) * half; + float square = p.mx * p.mx + p.my * p.my; + if (square > threshold) { + float scale = RenderMath.min(maximum, one / square); + p.mx *= scale; + p.my *= scale; + } + + p.flags &= 1; + float cross = previous.dy * p.dx - previous.dx * p.dy; + if (cross > 0.0F) { + left++; + p.flags |= 2; + } + + float limit = RenderMath.max(minimum, RenderMath.min(previous.length, p.length) * inverse); + if (one > square * limit * limit) { + p.flags |= 8; + } + + if ((p.flags & 1) != 0 && ((join & -3) == 1 || one > square * miter * miter)) { + p.flags |= 4; + } + + if ((p.flags & 12) != 0) { + path.bevels++; + } + + previous = p; + } + + path.convex = left == path.points.size(); + } + } + } + + private static strictfp void vertex(List out, float x, float y, float u) { + vertex(out, x, y, u, 1.0F); + } + + private static strictfp void vertex(List out, float x, float y, float u, float v) { + out.add(new float[]{x, y, u, v}); + } + + private static strictfp float[][] bevel(boolean bevel, CanvasPath.Point p0, CanvasPath.Point p, float width) { + float[] a = bevel ? new float[]{p0.dy * width + p.x, p.y - p0.dx * width} : new float[]{p.mx * width + p.x, p.my * width + p.y}; + float[] b = bevel ? new float[]{p.dy * width + p.x, p.y - p.dx * width} : (float[])a.clone(); + return new float[][]{a, b}; + } + + public static strictfp void bevelJoin(List out, CanvasPath.Point previous, CanvasPath.Point p, float lw, float rw, float lu, float ru) { + boolean left = (p.flags & 2) != 0; + float[][] ab = bevel((p.flags & 8) != 0, previous, p, left ? lw : neg(rw)); + float sign = left ? neg(rw) : lw; + float ax = previous.dy * sign + p.x; + float ay = neg(previous.dx) * sign + p.y; + float bx = p.dy * sign + p.x; + float by = neg(p.dx) * sign + p.y; + float[] a = ab[0]; + float[] b = ab[1]; + if (left) { + vertex(out, a[0], a[1], lu); + vertex(out, ax, ay, ru); + } else { + vertex(out, ax, ay, lu); + vertex(out, a[0], a[1], ru); + } + + if ((p.flags & 4) != 0) { + if (left) { + vertex(out, a[0], a[1], lu); + vertex(out, ax, ay, ru); + vertex(out, b[0], b[1], lu); + vertex(out, bx, by, ru); + } else { + vertex(out, ax, ay, lu); + vertex(out, a[0], a[1], ru); + vertex(out, bx, by, lu); + vertex(out, b[0], b[1], ru); + } + } else { + float cx = p.mx * sign + p.x; + float cy = p.my * sign + p.y; + if (left) { + vertex(out, p.x, p.y, 0.5F); + vertex(out, ax, ay, ru); + vertex(out, cx, cy, ru); + vertex(out, cx, cy, ru); + vertex(out, p.x, p.y, 0.5F); + vertex(out, bx, by, ru); + } else { + vertex(out, ax, ay, lu); + vertex(out, p.x, p.y, 0.5F); + vertex(out, cx, cy, lu); + vertex(out, cx, cy, lu); + vertex(out, bx, by, lu); + vertex(out, p.x, p.y, 0.5F); + } + } + + if (left) { + vertex(out, b[0], b[1], lu); + vertex(out, bx, by, ru); + } else { + vertex(out, bx, by, lu); + vertex(out, b[0], b[1], ru); + } + } + + public strictfp void expandFill(float width) { + this.joins(width, 4, c(2839984)); + boolean convex = this.paths.size() == 1 && this.paths.get(0).convex; + float offset = this.fringe * c(2839988); + float left = convex ? offset : width + offset; + float right = width - offset; + float lu = convex ? c(2839988) : 0.0F; + + for (CanvasPath.Path path : this.paths) { + path.fill.clear(); + path.stroke.clear(); + if (!path.points.isEmpty()) { + CanvasPath.Point previous = path.points.get(path.points.size() - 1); + + for (CanvasPath.Point p : path.points) { + if (width > 0.0F) { + if ((p.flags & 4) != 0 && (p.flags & 2) == 0) { + vertex(path.fill, previous.dy * offset + p.x, neg(previous.dx) * offset + p.y, 0.5F); + vertex(path.fill, p.dy * offset + p.x, p.y - p.dx * offset, 0.5F); + } else { + vertex(path.fill, p.mx * offset + p.x, p.my * offset + p.y, 0.5F); + } + } else { + vertex(path.fill, p.x, p.y, 0.5F); + } + + previous = p; + } + + if (width > 0.0F) { + previous = path.points.get(path.points.size() - 1); + + for (CanvasPath.Point p : path.points) { + if ((p.flags & 12) != 0) { + bevelJoin(path.stroke, previous, p, left, right, lu, 1.0F); + } else { + vertex(path.stroke, p.mx * left + p.x, p.my * left + p.y, lu); + vertex(path.stroke, p.x - p.mx * right, p.y - p.my * right, 1.0F); + } + + previous = p; + } + + float[] a = path.stroke.get(0); + float[] b = path.stroke.get(1); + vertex(path.stroke, a[0], a[1], lu); + vertex(path.stroke, b[0], b[1], 1.0F); + } + } + } + } + + private static strictfp float[] direction(CanvasPath.Point a, CanvasPath.Point b) { + float x = b.x - a.x; + float y = b.y - a.y; + float length = (float)StrictMath.sqrt((double)(x * x + y * y)); + float inverse = c(2840148) / length; + float dx = inverse * x; + float dy = inverse * y; + return length > c(2840144) ? new float[]{dx, dy} : new float[]{x, y}; + } + + private static strictfp void flatCap( + List out, CanvasPath.Point p, float dx, float dy, float width, float distance, float aa, float u0, float u1, boolean end + ) { + float px = end ? dx * distance + p.x : p.x - dx * distance; + float py = end ? dy * distance + p.y : p.y - dy * distance; + float ax = dy * width + px; + float ay = neg(dx) * width + py; + float bx = neg(dy) * width + px; + float by = dx * width + py; + float ex = (end ? dx : neg(dx)) * aa; + float ey = (end ? dy : neg(dy)) * aa; + if (end) { + vertex(out, ax, ay, u0); + vertex(out, bx, by, u1); + } + + vertex(out, ex + ax, ey + ay, u0, 0.0F); + vertex(out, ex + bx, ey + by, u1, 0.0F); + if (!end) { + vertex(out, ax, ay, u0); + vertex(out, bx, by, u1); + } + } + + private static strictfp void roundCap(List out, CanvasPath.Point p, float dx, float dy, float width, int divisions, float u0, float u1, boolean end) { + if (end) { + vertex(out, dy * width + p.x, neg(dx) * width + p.y, u0); + vertex(out, neg(dy) * width + p.x, dx * width + p.y, u1); + } + + float denominator = (float)(divisions - 1); + + for (int i = 0; i < divisions; i++) { + float angle = (float)i / denominator * c(2840096); + float ax = FloatTrigonometry.cosine(angle) * width; + float ay = FloatTrigonometry.sine(angle) * width; + float x = (end ? dx : neg(dx)) * ay + (neg(dy) * ax + p.x); + float y = (end ? dy : neg(dy)) * ay + (dx * ax + p.y); + if (end) { + vertex(out, p.x, p.y, 0.5F); + } + + vertex(out, x, y, u0); + if (!end) { + vertex(out, p.x, p.y, 0.5F); + } + } + + if (!end) { + vertex(out, dy * width + p.x, neg(dx) * width + p.y, u0); + vertex(out, neg(dy) * width + p.x, dx * width + p.y, u1); + } + } + + private static strictfp void roundJoin(List out, CanvasPath.Point previous, CanvasPath.Point p, float width, float lu, float ru, int divisions) { + boolean left = (p.flags & 2) != 0; + float[][] ab = bevel((p.flags & 8) != 0, previous, p, left ? width : neg(width)); + float a0 = NumericServices.atan2f(left ? previous.dx : neg(previous.dx), left ? neg(previous.dy) : previous.dy); + float a1 = NumericServices.atan2f(left ? p.dx : neg(p.dx), left ? neg(p.dy) : p.dy); + if (left ? a0 < a1 : a1 < a0) { + a1 += c(left ? 2840176 : 2840180); + } + + float signed = left ? neg(width) : width; + float px = previous.dy * signed + p.x; + float py = neg(previous.dx) * signed + p.y; + float qx = p.dy * signed + p.x; + float qy = neg(p.dx) * signed + p.y; + float[] a = ab[0]; + float[] b = ab[1]; + if (left) { + vertex(out, a[0], a[1], lu); + vertex(out, px, py, ru); + } else { + vertex(out, px, py, lu); + vertex(out, a[0], a[1], ru); + } + + float arc = left ? a0 - a1 : a1 - a0; + int count = NumericMath.truncateInt(NumericMath.ceiling(arc / c(2840096) * (float)divisions)); + int n = count < 2 ? 2 : (count < divisions ? count : divisions); + + for (int i = 0; i < n; i++) { + float angle = (float)i / (float)(n - 1) * (a1 - a0) + a0; + float x = FloatTrigonometry.cosine(angle) * width + p.x; + float y = FloatTrigonometry.sine(angle) * width + p.y; + if (left) { + vertex(out, p.x, p.y, 0.5F); + } + + vertex(out, x, y, left ? ru : lu); + if (!left) { + vertex(out, p.x, p.y, 0.5F); + } + } + + if (left) { + vertex(out, b[0], b[1], lu); + vertex(out, qx, qy, ru); + } else { + vertex(out, qx, qy, lu); + vertex(out, b[0], b[1], ru); + } + } + + public strictfp void expandStroke(float width, float aa, int cap, int join, float miter) { + this.flatten(); + float arc = NumericServices.acosf(width / (this.tolerance + width)); + arc += arc; + int steps = NumericMath.truncateInt(NumericMath.ceiling(c(2840096) / arc)); + int divisions = steps >= 3 ? steps : 2; + width = aa * c(2840100) + width; + float u0 = aa == 0.0F ? c(2840100) : 0.0F; + float u1 = c(aa == 0.0F ? 2840108 : 2840104); + float butt = aa * c(2840112); + float square = width - aa; + this.joins(width, join, miter); + + for (CanvasPath.Path path : this.paths) { + path.fill.clear(); + path.stroke.clear(); + int count = path.points.size(); + if (count >= 2) { + CanvasPath.Point previous = path.closed ? path.points.get(count - 1) : path.points.get(0); + CanvasPath.Point p = path.closed ? path.points.get(0) : path.points.get(1); + if (!path.closed) { + float[] dir = direction(previous, p); + if (cap == 0 || cap == 2) { + flatCap(path.stroke, previous, dir[0], dir[1], width, cap == 0 ? butt : square, aa, u0, u1, false); + } else if (cap == 1) { + roundCap(path.stroke, previous, dir[0], dir[1], width, divisions, u0, u1, false); + } + } + + int start = path.closed ? 0 : 1; + int end = path.closed ? count : count - 1; + + for (int i = start; i < end; i++) { + p = path.points.get(i); + if ((p.flags & 12) != 0) { + if (join == 1) { + roundJoin(path.stroke, previous, p, width, u0, u1, divisions); + } else { + bevelJoin(path.stroke, previous, p, width, width, u0, u1); + } + } else { + vertex(path.stroke, p.mx * width + p.x, p.my * width + p.y, u0); + vertex(path.stroke, p.x - p.mx * width, p.y - p.my * width, u1); + } + + previous = p; + } + + if (path.closed) { + float[] a = path.stroke.get(0); + float[] b = path.stroke.get(1); + vertex(path.stroke, a[0], a[1], u0); + vertex(path.stroke, b[0], b[1], u1); + } else { + p = path.points.get(count - 1); + float[] dir = direction(previous, p); + if (cap == 0 || cap == 2) { + flatCap(path.stroke, p, dir[0], dir[1], width, cap == 0 ? butt : square, aa, u0, u1, true); + } else if (cap == 1) { + roundCap(path.stroke, p, dir[0], dir[1], width, divisions, u0, u1, true); + } + } + } + } + } + + public static final class Path { + public final List points = new ArrayList<>(); + public boolean closed; + public boolean convex; + public int winding = 1; + public int bevels; + public final List fill = new ArrayList<>(); + public final List stroke = new ArrayList<>(); + } + + public static final strictfp class Point { + public float x; + public float y; + public float dx; + public float dy; + public float length; + public float mx; + public float my; + public int flags; + + Point(float x, float y, int f) { + this.x = x; + this.y = y; + this.flags = f; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasShader.java b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasShader.java new file mode 100644 index 0000000..ba68d4b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasShader.java @@ -0,0 +1,127 @@ +package dev.slinky.client.render.canvas; + +import java.util.List; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL20; +import org.lwjgl.opengl.GLContext; + +final class CanvasShader { + private static final String VERTEX = "#version 110\nvarying vec2 position;\nvarying vec2 coverage;\nvoid main() {\n position = gl_Vertex.xy;\n coverage = gl_MultiTexCoord0.xy;\n gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n}\n"; + private static final String FRAGMENT = "#version 110\nuniform vec4 inner;\nuniform vec4 outer;\nuniform vec3 paintX;\nuniform vec3 paintY;\nuniform vec2 extent;\nuniform float radius;\nuniform float feather;\nuniform float strokeMultiplier;\nuniform float fringe;\nvarying vec2 position;\nvarying vec2 coverage;\nvoid main() {\n float mask = 1.0;\n if (fringe > 0.5)\n mask = clamp((1.0 - abs(coverage.x * 2.0 - 1.0)) * strokeMultiplier, 0.0, 1.0) * min(1.0, coverage.y);\n float amount = 0.0;\n if (feather != 0.0) {\n vec2 p = vec2(dot(paintX, vec3(position, 1.0)), dot(paintY, vec3(position, 1.0)));\n vec2 d = abs(p) - extent + vec2(radius);\n float distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n amount = clamp((distance + feather * 0.5) / feather, 0.0, 1.0);\n }\n vec4 color = mix(inner, outer, amount);\n gl_FragColor = vec4(color.rgb, color.a * mask);\n}\n"; + private static boolean tried; + private static int program; + private static int innerLocation; + private static int outerLocation; + private static int paintXLocation; + private static int paintYLocation; + private static int extentLocation; + private static int radiusLocation; + private static int featherLocation; + private static int multiplierLocation; + private static int fringeLocation; + + private CanvasShader() { + } + + static boolean available() { + if (!tried) { + tried = true; + + try { + if (GLContext.getCapabilities().OpenGL20) { + program = link(); + } + } catch (LinkageError | RuntimeException var1) { + program = 0; + } + } + + return program != 0; + } + + static void reset() { + tried = false; + program = 0; + } + + private static int compile(int type, String source) { + int shader = GL20.glCreateShader(type); + GL20.glShaderSource(shader, source); + GL20.glCompileShader(shader); + if (GL20.glGetShaderi(shader, 35713) == 0) { + GL20.glDeleteShader(shader); + throw new IllegalStateException("canvas shader did not compile"); + } else { + return shader; + } + } + + private static int link() { + int vertex = compile( + 35633, + "#version 110\nvarying vec2 position;\nvarying vec2 coverage;\nvoid main() {\n position = gl_Vertex.xy;\n coverage = gl_MultiTexCoord0.xy;\n gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n}\n" + ); + int fragment = compile( + 35632, + "#version 110\nuniform vec4 inner;\nuniform vec4 outer;\nuniform vec3 paintX;\nuniform vec3 paintY;\nuniform vec2 extent;\nuniform float radius;\nuniform float feather;\nuniform float strokeMultiplier;\nuniform float fringe;\nvarying vec2 position;\nvarying vec2 coverage;\nvoid main() {\n float mask = 1.0;\n if (fringe > 0.5)\n mask = clamp((1.0 - abs(coverage.x * 2.0 - 1.0)) * strokeMultiplier, 0.0, 1.0) * min(1.0, coverage.y);\n float amount = 0.0;\n if (feather != 0.0) {\n vec2 p = vec2(dot(paintX, vec3(position, 1.0)), dot(paintY, vec3(position, 1.0)));\n vec2 d = abs(p) - extent + vec2(radius);\n float distance = min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;\n amount = clamp((distance + feather * 0.5) / feather, 0.0, 1.0);\n }\n vec4 color = mix(inner, outer, amount);\n gl_FragColor = vec4(color.rgb, color.a * mask);\n}\n" + ); + int linked = GL20.glCreateProgram(); + GL20.glAttachShader(linked, vertex); + GL20.glAttachShader(linked, fragment); + GL20.glLinkProgram(linked); + GL20.glDeleteShader(vertex); + GL20.glDeleteShader(fragment); + if (GL20.glGetProgrami(linked, 35714) == 0) { + GL20.glDeleteProgram(linked); + throw new IllegalStateException("canvas shader did not link"); + } else { + innerLocation = GL20.glGetUniformLocation(linked, "inner"); + outerLocation = GL20.glGetUniformLocation(linked, "outer"); + paintXLocation = GL20.glGetUniformLocation(linked, "paintX"); + paintYLocation = GL20.glGetUniformLocation(linked, "paintY"); + extentLocation = GL20.glGetUniformLocation(linked, "extent"); + radiusLocation = GL20.glGetUniformLocation(linked, "radius"); + featherLocation = GL20.glGetUniformLocation(linked, "feather"); + multiplierLocation = GL20.glGetUniformLocation(linked, "strokeMultiplier"); + fringeLocation = GL20.glGetUniformLocation(linked, "fringe"); + return linked; + } + } + + static void draw(int mode, List vertices, CanvasState.Paint paint, float multiplier, boolean fringe) { + int previous = GL11.glGetInteger(35725); + GL20.glUseProgram(program); + + try { + float[] m = paint.transform; + float determinant = m[0] * m[3] - m[1] * m[2]; + float feather = paint.feather; + if (determinant == 0.0F) { + feather = 0.0F; + } else { + GL20.glUniform3f(paintXLocation, m[3] / determinant, -m[2] / determinant, (m[2] * m[5] - m[3] * m[4]) / determinant); + GL20.glUniform3f(paintYLocation, -m[1] / determinant, m[0] / determinant, (m[1] * m[4] - m[0] * m[5]) / determinant); + } + + GL20.glUniform4f(innerLocation, paint.inner[0], paint.inner[1], paint.inner[2], paint.inner[3]); + GL20.glUniform4f(outerLocation, paint.outer[0], paint.outer[1], paint.outer[2], paint.outer[3]); + GL20.glUniform2f(extentLocation, paint.extent[0], paint.extent[1]); + GL20.glUniform1f(radiusLocation, paint.radius); + GL20.glUniform1f(featherLocation, feather); + GL20.glUniform1f(multiplierLocation, multiplier); + GL20.glUniform1f(fringeLocation, fringe ? 1.0F : 0.0F); + GL11.glBegin(mode); + + try { + for (float[] vertex : vertices) { + GL11.glTexCoord2f(vertex.length > 2 ? vertex[2] : 0.5F, vertex.length > 3 ? vertex[3] : 1.0F); + GL11.glVertex2f(vertex[0], vertex[1]); + } + } finally { + GL11.glEnd(); + } + } finally { + GL20.glUseProgram(previous); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasState.java b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasState.java new file mode 100644 index 0000000..40e5cac --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/CanvasState.java @@ -0,0 +1,309 @@ +package dev.slinky.client.render.canvas; + +import dev.slinky.client.numeric.FloatTrigonometry; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.util.List; +import java.util.Objects; + +public final strictfp class CanvasState { + private final CanvasState.State[] states = new CanvasState.State[33]; + private int depth; + + public CanvasState(CanvasState.State initial) { + this.states[0] = Objects.requireNonNull(initial).copy(); + this.depth = 1; + } + + public strictfp CanvasState.State selected() { + return this.states[this.depth - 1]; + } + + public strictfp int depth() { + return this.depth; + } + + public strictfp void save() { + if (this.depth <= 31) { + this.states[this.depth] = this.selected().copy(); + this.depth++; + } + } + + public strictfp void restore() { + if (this.depth >= 2) { + this.depth--; + } + } + + public strictfp void translate(float x, float y) { + float[] m = this.selected().transform; + float a = m[0]; + float b = m[1]; + float c = m[2]; + float d = m[3]; + float tx = m[4]; + float ty = m[5]; + m[0] = c * 0.0F + a; + m[1] = d * 0.0F + b; + m[2] = 0.0F * a + c; + m[3] = 0.0F * b + d; + m[4] = x * a + y * c + tx; + m[5] = x * b + y * d + ty; + } + + public strictfp void scale(float x, float y) { + float[] m = this.selected().transform; + float a = m[0]; + float b = m[1]; + float c = m[2]; + float d = m[3]; + float tx = m[4]; + float ty = m[5]; + float zc = c * 0.0F; + float zd = d * 0.0F; + m[0] = zc + x * a; + m[1] = zd + x * b; + m[2] = y * c + 0.0F * a; + m[3] = y * d + 0.0F * b; + m[4] = a * 0.0F + zc + tx; + m[5] = b * 0.0F + zd + ty; + } + + public strictfp void scissor(float x, float y, float width, float height) { + CanvasState.State s = this.selected(); + float[] m = s.transform; + float[] r = s.scissor; + float w = RenderMath.max(0.0F, width); + float h = RenderMath.max(0.0F, height); + float half = RenderConstants.f(2839408); + float cx = w * half + x; + float cy = h * half + y; + r[0] = m[2] * 0.0F + m[0]; + r[1] = m[3] * 0.0F + m[1]; + r[2] = 0.0F * m[0] + m[2]; + r[3] = 0.0F * m[1] + m[3]; + r[4] = cx * m[0] + cy * m[2] + m[4]; + r[5] = cx * m[1] + cy * m[3] + m[5]; + s.scissorExtent[0] = w * RenderConstants.f(2839432); + s.scissorExtent[1] = h * RenderConstants.f(2839436); + } + + private static strictfp CanvasState.Paint color(float[] rgba, int identity) { + CanvasState.Paint p = new CanvasState.Paint(); + + for (int i = 0; i < 4; i++) { + p.transform[i] = RenderConstants.f(identity + i * 4); + } + + p.feather = 1.0F; + System.arraycopy(rgba, 0, p.inner, 0, 4); + System.arraycopy(rgba, 0, p.outer, 0, 4); + return p; + } + + public strictfp void fillColor(float[] rgba) { + float[] copy = (float[])rgba.clone(); + this.selected().fill = color(copy, 2839184); + } + + public strictfp void strokeColor(float[] rgba) { + float[] copy = (float[])rgba.clone(); + this.selected().stroke = color(copy, 2839168); + } + + public strictfp void fillPaint(CanvasState.Paint incoming) { + CanvasState.Paint p = incoming.copy(); + float[] a = (float[])incoming.transform.clone(); + float[] m = this.selected().transform; + float tx = a[4] * m[0] + a[5] * m[2] + m[4]; + float ty = a[4] * m[1] + a[5] * m[3] + m[5]; + p.transform[0] = a[0] * m[0] + a[1] * m[2]; + p.transform[1] = a[0] * m[1] + a[1] * m[3]; + p.transform[2] = a[2] * m[0] + a[3] * m[2]; + p.transform[3] = a[2] * m[1] + a[3] * m[3]; + p.transform[4] = tx; + p.transform[5] = ty; + this.selected().fill = p; + } + + public static strictfp CanvasState.Paint imagePaint(float x, float y, float width, float height, float rotation, int id, float alpha) { + CanvasState.Paint p = new CanvasState.Paint(); + float cosine = FloatTrigonometry.cosine(rotation); + float sine = FloatTrigonometry.sine(rotation); + p.transform[0] = cosine; + p.transform[1] = sine; + p.transform[2] = Float.intBitsToFloat(Float.floatToRawIntBits(sine) ^ RenderConstants.i(2839376)); + p.transform[3] = cosine; + p.transform[4] = x; + p.transform[5] = y; + p.extent[0] = width; + p.extent[1] = height; + p.image = id; + p.inner[0] = p.outer[0] = RenderConstants.f(2839392); + p.inner[1] = p.outer[1] = RenderConstants.f(2839396); + p.inner[2] = p.outer[2] = 1.0F; + p.inner[3] = p.outer[3] = alpha; + return p; + } + + public static strictfp CanvasState.Paint linearGradient(float sx, float sy, float ex, float ey, float[] inner, float[] outer) { + CanvasState.Paint p = new CanvasState.Paint(); + float x = ex - sx; + float y = ey - sy; + float length = (float)StrictMath.sqrt((double)(x * x + y * y)); + boolean regular = length > RenderConstants.f(2839200); + float extent = RenderConstants.f(2839264) * length; + float feather = RenderMath.max(RenderConstants.f(2839272), length); + float nx = x / length; + float ny = y / length; + if (!regular) { + nx = 0.0F; + ny = 0.0F; + } + + float ox = regular ? nx : RenderConstants.f(2839216); + float oy = regular ? ny : RenderConstants.f(2839220); + p.transform[0] = oy; + p.transform[1] = Float.intBitsToFloat(Float.floatToRawIntBits(nx) ^ RenderConstants.i(2839232)); + p.transform[2] = ox; + p.transform[3] = oy; + p.transform[4] = RenderConstants.f(2839248) * ox + sx; + p.transform[5] = RenderConstants.f(2839252) * oy + sy; + p.extent[0] = Float.intBitsToFloat(1203982336); + p.extent[1] = extent + RenderConstants.f(2839268); + p.feather = feather; + System.arraycopy(inner, 0, p.inner, 0, 4); + System.arraycopy(outer, 0, p.outer, 0, 4); + return p; + } + + public strictfp void fill(CanvasPath path, CanvasState.Backend backend, CanvasState.Stats stats, boolean canvasAntialias) { + CanvasState.State s = this.selected(); + CanvasState.Paint p = s.fill.copy(); + path.flatten(); + path.expandFill(canvasAntialias && s.shapeAntialias != 0 ? path.fringe : 0.0F); + p.inner[3] = p.inner[3] * s.alpha; + p.outer[3] = s.alpha * p.outer[3]; + backend.fill( + p, (int[])s.composite.clone(), (float[])s.scissor.clone(), (float[])s.scissorExtent.clone(), path.fringe, path.paths(), (float[])path.bounds.clone() + ); + + for (CanvasPath.Path item : path.paths()) { + stats.fillTriangles = stats.fillTriangles + (item.fill.size() + item.stroke.size() - 4); + stats.drawCalls += 2; + } + } + + public strictfp void stroke(CanvasPath path, CanvasState.Backend backend, CanvasState.Stats stats, boolean canvasAntialias) { + CanvasState.State s = this.selected(); + float[] m = s.transform; + float x = (float)StrictMath.sqrt((double)(m[0] * m[0] + m[2] * m[2])); + float y = (float)StrictMath.sqrt((double)(m[1] * m[1] + m[3] * m[3])); + float width = (y + x) * RenderConstants.f(2840064) * s.lineWidth; + float clamped = RenderMath.min(RenderConstants.f(2840068), width); + width = width < 0.0F ? 0.0F : clamped; + CanvasState.Paint p = s.stroke.copy(); + float drawn = path.fringe; + if (drawn > width) { + float ratio = width / drawn; + float maximum = RenderMath.min(RenderConstants.f(2840072), ratio); + ratio = ratio < 0.0F ? 0.0F : maximum; + ratio *= ratio; + p.inner[3] = p.inner[3] * ratio; + p.outer[3] = p.outer[3] * ratio; + } else { + drawn = width; + } + + p.inner[3] = p.inner[3] * s.alpha; + p.outer[3] = p.outer[3] * s.alpha; + path.flatten(); + float aa = canvasAntialias && s.shapeAntialias != 0 ? path.fringe : 0.0F; + path.expandStroke(RenderConstants.f(2840064) * drawn, aa, s.cap, s.join, s.miter); + backend.stroke(p, (int[])s.composite.clone(), (float[])s.scissor.clone(), (float[])s.scissorExtent.clone(), path.fringe, drawn, path.paths()); + + for (CanvasPath.Path item : path.paths()) { + stats.strokeTriangles = stats.strokeTriangles + (item.stroke.size() - 2); + stats.drawCalls++; + } + } + + public interface Backend { + void fill(CanvasState.Paint var1, int[] var2, float[] var3, float[] var4, float var5, List var6, float[] var7); + + void stroke(CanvasState.Paint var1, int[] var2, float[] var3, float[] var4, float var5, float var6, List var7); + } + + public static final class Paint { + public final float[] transform = new float[6]; + public final float[] extent = new float[2]; + public final float[] inner = new float[4]; + public final float[] outer = new float[4]; + public float radius; + public float feather; + public int image; + + public strictfp CanvasState.Paint copy() { + CanvasState.Paint p = new CanvasState.Paint(); + System.arraycopy(this.transform, 0, p.transform, 0, 6); + System.arraycopy(this.extent, 0, p.extent, 0, 2); + System.arraycopy(this.inner, 0, p.inner, 0, 4); + System.arraycopy(this.outer, 0, p.outer, 0, 4); + p.radius = this.radius; + p.feather = this.feather; + p.image = this.image; + return p; + } + } + + public static final class State { + public final float[] transform = new float[6]; + public final float[] scissor = new float[6]; + public final float[] scissorExtent = new float[2]; + public CanvasState.Paint fill = new CanvasState.Paint(); + public CanvasState.Paint stroke = new CanvasState.Paint(); + public float alpha; + public float lineWidth; + public float miter; + public float fontSize; + public float blur; + public float spacing; + public float lineHeight; + public int alignment; + public int font; + public int cap; + public int join; + public int shapeAntialias; + public final int[] composite = new int[4]; + + public strictfp CanvasState.State copy() { + CanvasState.State s = new CanvasState.State(); + System.arraycopy(this.transform, 0, s.transform, 0, 6); + System.arraycopy(this.scissor, 0, s.scissor, 0, 6); + System.arraycopy(this.scissorExtent, 0, s.scissorExtent, 0, 2); + System.arraycopy(this.composite, 0, s.composite, 0, 4); + s.fill = this.fill.copy(); + s.stroke = this.stroke.copy(); + s.alpha = this.alpha; + s.lineWidth = this.lineWidth; + s.miter = this.miter; + s.fontSize = this.fontSize; + s.blur = this.blur; + s.spacing = this.spacing; + s.lineHeight = this.lineHeight; + s.alignment = this.alignment; + s.font = this.font; + s.cap = this.cap; + s.join = this.join; + s.shapeAntialias = this.shapeAntialias; + return s; + } + } + + public static final class Stats { + public int drawCalls; + public int fillTriangles; + public int strokeTriangles; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/GlCanvasBackend.java b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/GlCanvasBackend.java new file mode 100644 index 0000000..0b8991a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/canvas/GlCanvasBackend.java @@ -0,0 +1,227 @@ +package dev.slinky.client.render.canvas; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.opengl.GL11; + +public final class GlCanvasBackend implements CanvasState.Backend { + private static final GlCanvasBackend.Driver OPENGL = new GlCanvasBackend.Driver() { + @Override + public void blend(int[] composite) { + GlStateManager.tryBlendFuncSeparate(composite[0], composite[1], composite[2], composite[3]); + } + + @Override + public void draw(int mode, List vertices) { + GlStateManager.disableTexture2D(); + GlStateManager.disableAlpha(); + GlStateManager.shadeModel(7425); + GL11.glBegin(mode); + + try { + for (float[] vertex : vertices) { + GlStateManager.color(vertex[2], vertex[3], vertex[4], vertex[5]); + GL11.glVertex2f(vertex[0], vertex[1]); + } + } finally { + GL11.glEnd(); + } + } + }; + private final GlCanvasBackend.Driver driver; + + public GlCanvasBackend() { + this(OPENGL); + } + + public GlCanvasBackend(GlCanvasBackend.Driver driver) { + this.driver = Objects.requireNonNull(driver); + } + + @Override + public void fill(CanvasState.Paint paint, int[] composite, float[] scissor, float[] extent, float fringe, List paths, float[] bounds) { + this.driver.blend(composite); + + for (CanvasPath.Path path : paths) { + this.draw(6, path.fill, paint, 1.0F, false); + if (!path.stroke.isEmpty()) { + this.draw(5, path.stroke, paint, 1.0F, true); + } + } + } + + @Override + public void stroke(CanvasState.Paint paint, int[] composite, float[] scissor, float[] extent, float fringe, float width, List paths) { + this.driver.blend(composite); + float multiplier = fringe == 0.0F ? 1.0F : (width * 0.5F + fringe * 0.5F) / fringe; + + for (CanvasPath.Path path : paths) { + this.draw(5, path.stroke, paint, multiplier, true); + } + } + + private void draw(int mode, List vertices, CanvasState.Paint paint, float multiplier, boolean fringe) { + if (!vertices.isEmpty()) { + if (this.driver == OPENGL && CanvasShader.available()) { + GlStateManager.disableTexture2D(); + GlStateManager.disableAlpha(); + CanvasShader.draw(mode, vertices, paint, multiplier, fringe); + } else { + List emitted = fringe ? coverageTriangles(mode, vertices, multiplier) : vertices; + List rgba = new ArrayList<>(); + + for (float[] vertex : emitted) { + float coverage = fringe ? vertex[4] : 1.0F; + float[] color = paint(paint, vertex[0], vertex[1]); + rgba.add(new float[]{vertex[0], vertex[1], color[0], color[1], color[2], color[3] * coverage}); + } + + this.driver.draw(fringe ? 4 : mode, rgba); + } + } + } + + public static List coverageTriangles(int mode, List vertices, float multiplier) { + List result = new ArrayList<>(); + float[] bands = multiplier > 1.0F ? new float[]{0.0F, 0.5F / multiplier, 1.0F - 0.5F / multiplier, 1.0F} : new float[]{0.0F, 0.5F, 1.0F}; + + for (int index = 2; index < vertices.size(); index++) { + float[] b = vertices.get(index - 1); + float[] c = vertices.get(index); + float[] a; + if (mode == 6) { + a = vertices.get(0); + } else { + if (mode != 5) { + throw new IllegalArgumentException("Unsupported canvas fringe primitive"); + } + + a = vertices.get(index - 2); + if ((index & 1) != 0) { + float[] swap = a; + a = b; + b = swap; + } + } + + float low = Math.min(a[2], Math.min(b[2], c[2])); + float high = Math.max(a[2], Math.max(b[2], c[2])); + if (low == high) { + triangle(result, a, b, c, multiplier, 0); + } else { + for (int band = 1; band < bands.length; band++) { + List polygon = clip(Arrays.asList(a, b, c), bands[band - 1], true); + polygon = clip(polygon, bands[band], false); + + for (int point = 2; point < polygon.size(); point++) { + triangle(result, polygon.get(0), polygon.get(point - 1), polygon.get(point), multiplier, 0); + } + } + } + } + + return result; + } + + private static List clip(List input, float boundary, boolean above) { + List output = new ArrayList<>(); + if (input.isEmpty()) { + return output; + } else { + float[] previous = input.get(input.size() - 1); + boolean wasInside = above ? previous[2] >= boundary : previous[2] <= boundary; + + for (float[] current : input) { + boolean inside = above ? current[2] >= boundary : current[2] <= boundary; + if (wasInside != inside) { + float fraction = (boundary - previous[2]) / (current[2] - previous[2]); + float[] point = interpolate(previous, current, fraction); + point[2] = boundary; + output.add(point); + } + + if (inside) { + output.add(current); + } + + previous = current; + wasInside = inside; + } + + return output; + } + } + + private static float[] interpolate(float[] a, float[] b, float fraction) { + float[] result = new float[4]; + + for (int index = 0; index < 4; index++) { + result[index] = a[index] + (b[index] - a[index]) * fraction; + } + + return result; + } + + public static float coverage(float u, float v, float multiplier) { + return Math.min(1.0F, Math.max(0.0F, (1.0F - Math.abs(u * 2.0F - 1.0F)) * multiplier)) * Math.min(1.0F, v); + } + + private static void triangle(List output, float[] a, float[] b, float[] c, float multiplier, int depth) { + float area = (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); + if (area != 0.0F) { + float ac = coverage(a[2], a[3], multiplier); + float bc = coverage(b[2], b[3], multiplier); + float cc = coverage(c[2], c[3], multiplier); + float[] ab = interpolate(a, b, 0.5F); + float[] ca = interpolate(c, a, 0.5F); + float[] cb = interpolate(c, b, 0.5F); + float error = Math.max( + Math.abs(coverage(ab[2], ab[3], multiplier) - (ac + bc) * 0.5F), + Math.max(Math.abs(coverage(ca[2], ca[3], multiplier) - (cc + ac) * 0.5F), Math.abs(coverage(cb[2], cb[3], multiplier) - (cc + bc) * 0.5F)) + ); + if (error > 9.765625E-4F && depth < 6) { + triangle(output, a, ab, ca, multiplier, depth + 1); + triangle(output, ab, b, cb, multiplier, depth + 1); + triangle(output, ca, cb, c, multiplier, depth + 1); + triangle(output, ab, cb, ca, multiplier, depth + 1); + } else { + output.add(new float[]{a[0], a[1], a[2], a[3], ac}); + output.add(new float[]{b[0], b[1], b[2], b[3], bc}); + output.add(new float[]{c[0], c[1], c[2], c[3], cc}); + } + } + } + + public static float[] paint(CanvasState.Paint paint, float x, float y) { + float[] m = paint.transform; + float determinant = m[0] * m[3] - m[1] * m[2]; + float amount = 0.0F; + if (determinant != 0.0F && paint.feather != 0.0F) { + float px = ((x - m[4]) * m[3] - (y - m[5]) * m[2]) / determinant; + float py = ((y - m[5]) * m[0] - (x - m[4]) * m[1]) / determinant; + float dx = Math.abs(px) - paint.extent[0] + paint.radius; + float dy = Math.abs(py) - paint.extent[1] + paint.radius; + float distance = Math.min(Math.max(dx, dy), 0.0F) + + (float)StrictMath.sqrt((double)(Math.max(dx, 0.0F) * Math.max(dx, 0.0F) + Math.max(dy, 0.0F) * Math.max(dy, 0.0F))) + - paint.radius; + amount = Math.max(0.0F, Math.min(1.0F, (distance + paint.feather * 0.5F) / paint.feather)); + } + + float[] result = new float[4]; + + for (int i = 0; i < 4; i++) { + result[i] = paint.inner[i] + (paint.outer[i] - paint.inner[i]) * amount; + } + + return result; + } + + public interface Driver { + void blend(int[] var1); + + void draw(int var1, List var2); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/BundledGuiFonts.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/BundledGuiFonts.java new file mode 100644 index 0000000..6d97245 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/BundledGuiFonts.java @@ -0,0 +1,100 @@ +package dev.slinky.client.render.font; + +import dev.slinky.inject.Platform; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; + +public final class BundledGuiFonts { + public static CanvasFonts.Engine load(int style) { + String name = style == 1 ? "InterSemiBold.ttf" : "Inter-Medium.ttf"; + + byte[] bytes; + try (InputStream input = Platform.resource("/assets/slinkysemantic/fonts/" + name)) { + if (input == null) { + throw new IOException("Missing bundled GUI font " + name); + } + + ByteArrayOutputStream output = new ByteArrayOutputStream(); + byte[] buffer = new byte[8192]; + + int count; + while ((count = input.read(buffer)) != -1) { + output.write(buffer, 0, count); + } + + bytes = output.toByteArray(); + } catch (IOException var19) { + throw new IllegalStateException("Cannot load GUI font", var19); + } + + FontTables.Font font = new FontTables.Font(bytes, new FontRasterization.Scratch(() -> { + throw new IllegalStateException("GUI glyph scratch capacity exceeded"); + })); + font.head = table(bytes, "head"); + font.hhea = table(bytes, "hhea"); + font.hmtx = table(bytes, "hmtx"); + font.loca = table(bytes, "loca"); + font.glyf = table(bytes, "glyf"); + font.kern = table(bytes, "kern"); + font.gpos = table(bytes, "GPOS"); + font.glyphCount = FontTables.u16(bytes, required(table(bytes, "maxp")) + 4); + font.locaFormat = FontTables.u16(bytes, required(font.head) + 50); + int map = required(table(bytes, "cmap")); + + for (int i = 0; i < FontTables.u16(bytes, map + 2); i++) { + int record = map + 4 + i * 8; + int candidate = map + FontTables.u32(bytes, record + 4); + int format = FontTables.u16(bytes, candidate); + int platform = FontTables.u16(bytes, record); + int encoding = FontTables.u16(bytes, record + 2); + if ((platform == 0 || platform == 3 && (encoding == 1 || encoding == 10)) && (format == 4 || format == 12) && (font.cmap == 0 || format == 12)) { + font.cmap = candidate; + } + } + + required(font.cmap); + required(font.glyf); + required(font.loca); + required(font.hhea); + required(font.hmtx); + float units = (float)(FontTables.s16(bytes, font.hhea + 4) - FontTables.s16(bytes, font.hhea + 6)); + float ascent = (float)FontTables.s16(bytes, font.hhea + 4) / units; + float descent = (float)FontTables.s16(bytes, font.hhea + 6) / units; + float gap = (float)FontTables.s16(bytes, font.hhea + 8) / units; + int[] buckets = new int[256]; + Arrays.fill(buckets, -1); + return new CanvasFonts.Engine(new FontGlyphCache.Font(font, buckets, ascent, descent, ascent - descent + gap), null, 512, 256); + } + + private static int required(int offset) { + if (offset == 0) { + throw new IllegalStateException("Incomplete bundled TrueType face"); + } else { + return offset; + } + } + + private static int table(byte[] bytes, String tag) { + int count = FontTables.u16(bytes, 4); + + for (int i = 0; i < count; i++) { + int record = 12 + i * 16; + boolean match = true; + + for (int n = 0; n < 4; n++) { + match &= bytes[record + n] == tag.charAt(n); + } + + if (match) { + return FontTables.u32(bytes, record + 8); + } + } + + return 0; + } + + private BundledGuiFonts() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/CanvasFonts.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/CanvasFonts.java new file mode 100644 index 0000000..43e7300 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/CanvasFonts.java @@ -0,0 +1,434 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.hook.GlStateScope; +import dev.slinky.client.render.hook.RenderHooks; +import java.io.IOException; +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.resources.IReloadableResourceManager; +import org.lwjgl.BufferUtils; +import org.lwjgl.LWJGLException; +import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.GL11; + +public final strictfp class CanvasFonts { + private static final float[] IDENTITY = new float[]{1.0F, 0.0F, 0.0F, 1.0F, 0.0F, 0.0F}; + private static CanvasFonts.Engine engine; + private static CanvasFonts.Engine secondary; + private static boolean listener; + private static final Map textures = new HashMap<>(); + private static boolean guiFace; + private static CanvasFonts.Engine guiEngine; + private static CanvasFonts.Engine guiSecondary; + private static final Map uploadedVersions = new HashMap<>(); + + public static strictfp int allocateTextureIdentity() { + return CanvasFonts.Engine.textureSequence++; + } + + private static strictfp CanvasFonts.Engine current() { + return current(0); + } + + public static strictfp CanvasFonts.GuiFaceScope guiFace() { + return new CanvasFonts.GuiFaceScope(); + } + + private static strictfp CanvasFonts.Engine current(int style) { + if (guiFace) { + CanvasFonts.Engine selected = style == 1 ? guiSecondary : guiEngine; + if (selected == null) { + selected = BundledGuiFonts.load(style); + if (style == 1) { + guiSecondary = selected; + } else { + guiEngine = selected; + } + } + + return selected; + } else { + CanvasFonts.Engine selected = style == 1 ? secondary : engine; + if (selected != null && selected.resourceSource != null && !selected.resourceSource.isCurrent()) { + release(); + selected = null; + } + + if (selected == null) { + Minecraft game = Minecraft.getMinecraft(); + if (!listener && game.getResourceManager() instanceof IReloadableResourceManager) { + listener = true; + ((IReloadableResourceManager)game.getResourceManager()).registerReloadListener(resources -> release()); + } + + try { + GameFontProvider source = new GameFontProvider(game, style == 1); + int[] heads = new int[256]; + Arrays.fill(heads, -1); + FontGlyphCache.Font font = new FontGlyphCache.Font(null, heads, 0.8888889F, -0.11111111F, 1.0F); + selected = new CanvasFonts.Engine(font, source, 512, 256); + if (style == 1) { + secondary = selected; + } else { + engine = selected; + } + } catch (IOException var6) { + throw new IllegalStateException("Cannot load game font resources", var6); + } + } + + return selected; + } + } + + public static strictfp CanvasFonts.Engine bindEngine(CanvasFonts.Engine next) { + CanvasFonts.Engine previous = engine; + engine = Objects.requireNonNull(next); + secondary = next; + return previous; + } + + public static strictfp void restoreEngine(CanvasFonts.Engine previous) { + engine = previous; + secondary = null; + } + + public static strictfp void bindGuiEngine(CanvasFonts.Engine next) { + guiSecondary = next; + guiEngine = next; + } + + public static strictfp float bounds(String text, float x, float y, float size, int alignment, float[] output) { + return current().bounds(text, x, y, size, alignment, output); + } + + public static strictfp CanvasFonts.Text text(String text, float x, float y, float size, int alignment, float[] transform) { + return current().text(text, x, y, size, alignment, transform); + } + + public static strictfp CanvasFonts.Text text(String text, float x, float y, float size, int alignment, float[] transform, int style) { + return current(style).text(text, x, y, size, alignment, transform); + } + + public static strictfp float width(String text, int style, float size) { + return current(style).bounds(text, 0.0F, 0.0F, size, 9, null); + } + + public static strictfp void render(CanvasFonts.Text text, int color, float alpha) { + if (GlStateScope.active()) { + draw(text, color, alpha); + } else { + try (GlStateScope attributes = GlStateScope.open()) { + draw(text, color, alpha); + } + } + } + + private static strictfp void draw(CanvasFonts.Text text, int color, float alpha) { + GlStateManager.enableTexture2D(); + GlStateManager.disableAlpha(); + GL11.glShadeModel(7425); + GL11.glTexEnvi(8960, 8704, 8448); + GlStateManager.color( + (float)(color >>> 16 & 0xFF) / 255.0F, (float)(color >>> 8 & 0xFF) / 255.0F, (float)(color & 0xFF) / 255.0F, (float)(color >>> 24) / 255.0F * alpha + ); + + for (CanvasFonts.Batch batch : text.batches) { + Integer texture = textures.get(batch.texture); + if (texture == null) { + texture = GL11.glGenTextures(); + textures.put(batch.texture, texture); + } + + GlStateManager.bindTexture(texture); + Integer uploaded = uploadedVersions.get(batch.texture); + if (uploaded == null || uploaded != batch.version[0]) { + GL11.glTexParameteri(3553, 10241, 9729); + GL11.glTexParameteri(3553, 10240, 9729); + GL11.glTexParameteri(3553, 10242, 10496); + GL11.glTexParameteri(3553, 10243, 10496); + ByteBuffer pixels = BufferUtils.createByteBuffer(batch.pixels.length); + ((Buffer)pixels.put(batch.pixels)).flip(); + GL11.glPixelStorei(3317, 1); + GL11.glTexImage2D(3553, 0, 6406, batch.width, batch.height, 0, 6406, 5121, pixels); + uploadedVersions.put(batch.texture, batch.version[0]); + } + + GL11.glBegin(4); + + try { + for (float[] vertex : batch.vertices) { + GL11.glTexCoord2f(vertex[2], vertex[3]); + GL11.glVertex2f(vertex[0], vertex[1]); + } + } finally { + GL11.glEnd(); + } + } + + GlStateManager.disableTexture2D(); + } + + public static strictfp void release() { + if (!textures.isEmpty() && Display.isCreated()) { + try { + if (Display.isCurrent()) { + for (int texture : textures.values()) { + GlStateManager.deleteTexture(texture); + } + } + } catch (LWJGLException var5) { + throw new IllegalStateException("Cannot release font textures", var5); + } finally { + textures.clear(); + uploadedVersions.clear(); + guiSecondary = null; + guiEngine = null; + secondary = null; + engine = null; + } + } else { + textures.clear(); + uploadedVersions.clear(); + guiSecondary = null; + guiEngine = null; + secondary = null; + engine = null; + } + } + + private CanvasFonts() { + } + + public static final strictfp class Batch { + public final int texture; + public final int width; + public final int height; + public final byte[] pixels; + public final List vertices; + final int[] version; + + public Batch(int texture, int width, int height, byte[] pixels, List vertices) { + this(texture, width, height, pixels, new int[1], vertices); + } + + Batch(int texture, int width, int height, byte[] pixels, int[] version, List vertices) { + this.texture = texture; + this.width = width; + this.height = height; + this.pixels = pixels; + this.version = version; + this.vertices = new ArrayList<>(); + + for (float[] vertex : vertices) { + this.vertices.add((float[])vertex.clone()); + } + } + } + + public static final strictfp class Engine { + private final FontGlyphCache face; + private final FontAtlasService.Canvas atlas; + private final GameFontProvider resourceSource; + private final Map dimensions = new HashMap<>(); + private final Map images = new HashMap<>(); + private final Map versions = new HashMap<>(); + private static int textureSequence = 1; + + public Engine(FontGlyphCache.Font font, FontGlyphCache.Source source, int width, int height) { + this.resourceSource = source instanceof GameFontProvider ? (GameFontProvider)source : null; + FontGlyphCache.Stash cache = new FontGlyphCache.Stash( + new FontServices.Atlas(width, height), new byte[width * height], width, width, height, 0, 0, null + ); + FontAtlasService.Stash stash = new FontAtlasService.Stash(cache, width, height, Arrays.asList(font), (previous, count) -> new byte[(int)count]); + FontAtlasService.Driver driver = new FontAtlasService.Driver() { + @Override + public strictfp void upload(int texture, int x, int y, int w, int h, byte[] pixels) { + int stride = Engine.this.dimensions.get(texture)[0]; + byte[] target = Engine.this.images.get(texture); + + for (int row = 0; row < h; row++) { + System.arraycopy(pixels, (y + row) * stride + x, target, (y + row) * stride + x, w); + } + + Engine.this.versions.get(texture)[0]++; + } + + @Override + public strictfp void dimensions(int texture, int[] output) { + int[] found = Engine.this.dimensions.get(texture); + if (found == null) { + throw new IllegalStateException("Unknown caller atlas"); + } else { + output[0] = found[0]; + output[1] = found[1]; + } + } + + @Override + public strictfp int create(int type, int w, int h, int flags, byte[] pixels) { + int id = CanvasFonts.Engine.textureSequence++; + Engine.this.dimensions.put(id, new int[]{w, h}); + Engine.this.images.put(id, pixels == null ? new byte[w * h] : (byte[])pixels.clone()); + Engine.this.versions.put(id, new int[1]); + return id; + } + }; + int texture = driver.create(1, width, height, 0, null); + this.atlas = new FontAtlasService.Canvas(stash, 0, new int[]{texture, 0, 0, 0}, driver, width, height, 0, 0); + FontAtlasService.reset(stash, width, height, 0, 0); + this.face = new FontGlyphCache(cache, font, source); + } + + public strictfp float bounds(String text, float x, float y, float size, int alignment, float[] output) { + byte[] bytes = text.getBytes(StandardCharsets.UTF_8); + return FontServices.canvasBounds( + this.face, + 0, + x, + y, + bytes, + bytes.length, + size, + 0.0F, + 0.0F, + alignment, + true, + this.atlas.stash.inverseWidth, + this.atlas.stash.inverseHeight, + CanvasFonts.IDENTITY, + (float)RenderHooks.canvasScale(), + output + ); + } + + public strictfp CanvasFonts.Text text(String text, float x, float y, float size, int alignment, float[] transform) { + float scale = FontServices.transformScale( + transform, RenderConstants.f(2840336), RenderConstants.f(2840340), RenderConstants.f(2840344), (float)RenderHooks.canvasScale() + ); + final FontServices.Iterator iterator = new FontServices.Iterator( + this.face, + x * scale, + y * scale, + text.getBytes(StandardCharsets.UTF_8), + size * scale, + 0.0F, + 0.0F, + alignment, + 2, + true, + this.atlas.stash.inverseWidth, + this.atlas.stash.inverseHeight + ); + final List batches = new ArrayList<>(); + float end = FontServices.drawText( + iterator, + x, + scale, + CanvasFonts.IDENTITY, + new FontServices.TextBackend() { + private float[] reserved; + + @Override + public strictfp boolean reserve(int count) { + this.reserved = new float[count * 4]; + return this.reserved.length >= count * 4; + } + + @Override + public strictfp boolean allocateTextAtlas() { + boolean result = FontAtlasService.allocate(Engine.this.atlas); + if (result) { + iterator.inverseWidth = Engine.this.atlas.stash.inverseWidth; + iterator.inverseHeight = Engine.this.atlas.stash.inverseHeight; + } + + return result; + } + + @Override + public strictfp void draw(List vertices) { + if (!vertices.isEmpty()) { + this.uploadDirtyTexture(); + int offset = 0; + + for (float[] vertex : vertices) { + for (float value : vertex) { + this.reserved[offset++] = value; + } + } + + int texture = Engine.this.atlas.textures[Engine.this.atlas.index]; + batches.add( + new CanvasFonts.Batch( + texture, + Engine.this.atlas.stash.width, + Engine.this.atlas.stash.height, + Engine.this.images.get(texture), + Engine.this.versions.get(texture), + vertices + ) + ); + } + } + + @Override + public strictfp void uploadDirtyTexture() { + FontGlyphCache.Stash cache = Engine.this.atlas.stash.cache; + if (Engine.this.atlas.stash.dirty()) { + Engine.this.atlas + .driver + .upload( + Engine.this.atlas.textures[Engine.this.atlas.index], + cache.dirtyX, + cache.dirtyY, + cache.dirtyRight - cache.dirtyX, + cache.dirtyBottom - cache.dirtyY, + cache.pixels + ); + } + + Engine.this.atlas.stash.clean(); + } + }, + new FontServices.TextStats() + ); + return new CanvasFonts.Text(text, batches, end); + } + } + + public static final strictfp class GuiFaceScope implements AutoCloseable { + private final boolean previous = CanvasFonts.guiFace; + + private GuiFaceScope() { + CanvasFonts.guiFace = true; + } + + @Override + public strictfp void close() { + CanvasFonts.guiFace = this.previous; + } + } + + public static final strictfp class Text { + public final String text; + public final List batches; + public final float end; + + public Text(String text, List batches, float end) { + this.text = text; + this.batches = batches; + this.end = end; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontAtlasService.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontAtlasService.java new file mode 100644 index 0000000..3f1f43f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontAtlasService.java @@ -0,0 +1,202 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.render.RenderConstants; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +public final strictfp class FontAtlasService { + public static strictfp boolean allocate(FontAtlasService.Canvas canvas) { + FontAtlasService.Stash stash = canvas.stash; + FontGlyphCache.Stash cache = stash.cache; + if (stash.dirty()) { + int x = cache.dirtyX; + int y = cache.dirtyY; + int width = cache.dirtyRight - x; + int height = cache.dirtyBottom - y; + stash.clean(); + int texture = canvas.textures[canvas.index]; + if (texture != 0) { + canvas.driver.upload(texture, x, y, width, height, cache.pixels); + } + } + + int index = canvas.index; + if (index > 2) { + return false; + } else { + int[] dimensions = new int[]{canvas.queryWidth, canvas.queryHeight}; + int texture = canvas.textures[index + 1]; + if (texture != 0) { + canvas.driver.dimensions(texture, dimensions); + } else { + canvas.driver.dimensions(canvas.textures[index], dimensions); + if (dimensions[0] > dimensions[1]) { + dimensions[1] += dimensions[1]; + } else { + dimensions[0] += dimensions[0]; + } + + if (dimensions[0] >= 2049 || dimensions[1] >= 2049) { + dimensions[0] = dimensions[1] = 2048; + } + + int created = canvas.driver.create(1, dimensions[0], dimensions[1], 0, null); + canvas.textures[canvas.index + 1] = created; + } + + canvas.index++; + reset(canvas.stash, dimensions[0], dimensions[1], canvas.resetX, canvas.resetY); + return true; + } + } + + public static strictfp boolean reset(FontAtlasService.Stash stash, int width, int height, int incomingX, int incomingY) { + if (stash == null) { + return false; + } else { + FontGlyphCache.Stash cache = stash.cache; + if (stash.dirty()) { + if (stash.upload != null) { + stash.upload.upload(new int[]{cache.dirtyX, cache.dirtyY, cache.dirtyRight, cache.dirtyBottom}, cache.pixels); + } + + stash.clean(); + } + + if (stash.vertexCount > 0) { + if (stash.flush != null) { + stash.flush.flush(stash.positions, stash.uv, stash.colors, stash.vertexCount); + } + + stash.vertexCount = 0; + } + + if (stash.resized != null && !stash.resized.resize(width, height)) { + return false; + } else { + cache.atlas = new FontServices.Atlas(width, height); + long size = (long)(height * width); + cache.pixels = stash.allocation.resize(cache.pixels, size); + if (cache.pixels == null) { + return false; + } else { + Arrays.fill(cache.pixels, 0, (int)size, (byte)0); + cache.dirtyX = width; + cache.dirtyY = height; + cache.dirtyRight = cache.dirtyBottom = 0; + + for (FontGlyphCache.Font font : stash.fonts) { + font.glyphs.clear(); + Arrays.fill(font.heads, -1); + } + + stash.width = width; + stash.height = height; + cache.stride = width; + stash.inverseWidth = RenderConstants.f(2838368) / (float)width; + stash.inverseHeight = RenderConstants.f(2838372) / (float)height; + int[] point = cache.atlas.add(2, 2); + if (point != null) { + int x = point[0]; + int y = point[1]; + int offset = width * y + x; + cache.pixels[offset] = cache.pixels[offset + 1] = cache.pixels[offset + width] = cache.pixels[offset + width + 1] = -1; + cache.dirtyX = Math.min(cache.dirtyX, x); + cache.dirtyY = Math.min(cache.dirtyY, y); + cache.dirtyRight = Math.max(cache.dirtyRight, x + 2); + cache.dirtyBottom = Math.max(cache.dirtyBottom, y + 2); + } + + return true; + } + } + } + } + + private FontAtlasService() { + } + + public interface Allocation { + byte[] resize(byte[] var1, long var2); + } + + public static final strictfp class Canvas { + public FontAtlasService.Stash stash; + public int index; + public final int[] textures; + public final FontAtlasService.Driver driver; + public final int queryWidth; + public final int queryHeight; + public final int resetX; + public final int resetY; + + public Canvas( + FontAtlasService.Stash stash, int index, int[] textures, FontAtlasService.Driver driver, int queryWidth, int queryHeight, int resetX, int resetY + ) { + this.stash = stash; + this.index = index; + this.textures = Objects.requireNonNull(textures); + this.driver = Objects.requireNonNull(driver); + this.queryWidth = queryWidth; + this.queryHeight = queryHeight; + this.resetX = resetX; + this.resetY = resetY; + } + } + + public interface DirtyUpload { + void upload(int[] var1, byte[] var2); + } + + public interface Driver { + void upload(int var1, int var2, int var3, int var4, int var5, byte[] var6); + + void dimensions(int var1, int[] var2); + + int create(int var1, int var2, int var3, int var4, byte[] var5); + } + + public interface ResizeNotification { + boolean resize(int var1, int var2); + } + + public static final strictfp class Stash { + public final FontGlyphCache.Stash cache; + public int width; + public int height; + public int vertexCount; + public float inverseWidth; + public float inverseHeight; + public float[] positions; + public float[] uv; + public int[] colors; + public final List fonts; + public FontAtlasService.DirtyUpload upload; + public FontAtlasService.VertexFlush flush; + public FontAtlasService.ResizeNotification resized; + public FontAtlasService.Allocation allocation; + + public Stash(FontGlyphCache.Stash cache, int width, int height, List fonts, FontAtlasService.Allocation allocation) { + this.cache = Objects.requireNonNull(cache); + this.width = width; + this.height = height; + this.fonts = Objects.requireNonNull(fonts); + this.allocation = Objects.requireNonNull(allocation); + } + + public strictfp boolean dirty() { + return this.cache.dirtyX < this.cache.dirtyRight && this.cache.dirtyY < this.cache.dirtyBottom; + } + + public strictfp void clean() { + this.cache.dirtyX = this.width; + this.cache.dirtyY = this.height; + this.cache.dirtyRight = this.cache.dirtyBottom = 0; + } + } + + public interface VertexFlush { + void flush(float[] var1, float[] var2, int[] var3, int var4); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontCff.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontCff.java new file mode 100644 index 0000000..f7d9248 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontCff.java @@ -0,0 +1,576 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.numeric.NumericMath; +import java.util.ArrayList; +import java.util.List; + +public final strictfp class FontCff { + public static strictfp FontCff.Buffer element(FontCff.Buffer index, int element) { + index.seek(0); + int count = index.bytes(2); + int width = index.byteValue(); + index.skip(element * width); + int first = index.bytes(width); + int end = index.bytes(width); + int at = 2 + (count + 1) * width + first; + return index.range(at, end - first); + } + + public static strictfp int integer(FontCff.Buffer b) { + int first = b.byteValue(); + if (first >= 32 && first <= 246) { + return first - 139; + } else if (first >= 247 && first <= 250) { + return (first - 247) * 256 + b.byteValue() + 108; + } else if (first >= 251 && first <= 254) { + return -(first - 251) * 256 - b.byteValue() - 108; + } else if (first == 28) { + return b.bytes(2); + } else { + return first == 29 ? b.bytes(4) : 0; + } + } + + public static strictfp void dictionary(FontCff.Buffer b, int key, int count, int[] output) { + b.seek(0); + + while (b.cursor < b.size) { + int start = b.cursor; + + while (b.cursor < b.size && (b.data[b.offset + b.cursor] & 255) >= 28) { + if ((b.data[b.offset + b.cursor] & 255) == 30) { + b.skip(1); + + while (b.cursor < b.size) { + int n = b.byteValue(); + if ((n & 15) == 15 || n >>> 4 == 15) { + break; + } + } + } else { + integer(b); + } + } + + int end = b.cursor; + int op = b.byteValue(); + if (op == 12) { + op = b.byteValue() | 256; + } + + if (op == key) { + FontCff.Buffer operands = b.range(start, end - start); + if (operands.cursor < operands.size) { + int i = 0; + + do { + output[i++] = integer(operands); + } while (Integer.toUnsignedLong(i) < Integer.toUnsignedLong(count) && operands.cursor < operands.size); + } + + return; + } + } + } + + public static strictfp FontCff.Buffer readIndex(FontCff.Buffer b) { + int start = b.cursor; + int count = b.bytes(2); + if (count != 0) { + int width = b.byteValue(); + b.skip(width * count); + b.skip(b.bytes(width) - 1); + } + + return b.range(start, b.cursor - start); + } + + public static strictfp FontCff.Buffer privateSubroutines(FontCff.Buffer cff, FontCff.Buffer dict) { + int[] location = new int[2]; + int[] subrs = new int[1]; + dictionary(dict, 18, 2, location); + if (location[0] != 0 && location[1] != 0) { + FontCff.Buffer privateDict = cff.range(location[1], location[0]); + dictionary(privateDict, 19, 1, subrs); + if (subrs[0] == 0) { + return new FontCff.Buffer(new byte[0]); + } else { + cff.seek(location[1] + subrs[0]); + return readIndex(cff); + } + } else { + return new FontCff.Buffer(new byte[0]); + } + } + + private static strictfp FontCff.Buffer subroutine(FontCff.Buffer index, int number) { + index = index.copy(); + index.seek(0); + int count = index.bytes(2); + int bias = count >= 33900 ? '耀' : (count >= 1240 ? 1131 : 107); + int element = number + bias; + return Integer.compareUnsigned(element, count) >= 0 ? new FontCff.Buffer(new byte[0]) : element(index, element); + } + + private static strictfp FontCff.Buffer glyphSubroutines(FontCff.Info info, int glyph) { + FontCff.Buffer selector = info.fdSelect.copy(); + selector.seek(0); + int format = selector.byteValue(); + int selected = -1; + if (format == 0) { + selector.skip(glyph); + selected = selector.byteValue(); + } else if (format == 3) { + int count = selector.bytes(2); + int start = selector.bytes(2); + + for (int i = 0; i < count; i++) { + int value = selector.byteValue(); + int end = selector.bytes(2); + if (glyph >= start && glyph < end) { + selected = value; + break; + } + + start = end; + } + } + + FontCff.Buffer dictionary = element(info.fdArray.copy(), selected); + return privateSubroutines(info.cff.copy(), dictionary); + } + + private static strictfp int trunc(float value) { + return NumericMath.truncateInt(value); + } + + private static strictfp float neg(float value) { + return Float.intBitsToFloat(Float.floatToRawIntBits(value) ^ Integer.MIN_VALUE); + } + + public static strictfp void close(FontCff.Context c) { + if (c.firstX != c.x || c.firstY != c.y) { + c.vertex(2, trunc(c.firstX), trunc(c.firstY), 0, 0, 0, 0); + } + } + + public static strictfp void move(FontCff.Context c, float dx, float dy) { + close(c); + c.firstX = c.x += dx; + c.firstY = c.y += dy; + c.vertex(1, trunc(c.x), trunc(c.y), 0, 0, 0, 0); + } + + public static strictfp void line(FontCff.Context c, float dx, float dy) { + c.x += dx; + c.y += dy; + c.vertex(2, trunc(c.x), trunc(c.y), 0, 0, 0, 0); + } + + public static strictfp void curve(FontCff.Context c, float dx1, float dy1, float dx2, float dy2, float dx3, float dy3) { + float x1 = dx1 + c.x; + float y1 = dy1 + c.y; + float x2 = dx2 + x1; + float y2 = dy2 + y1; + c.x = dx3 + x2; + c.y = dy3 + y2; + c.vertex(4, trunc(c.x), trunc(c.y), trunc(x1), trunc(y1), trunc(x2), trunc(y2)); + } + + public static strictfp boolean run(FontCff.Info font, int glyph, FontCff.Context c) { + int header = 1; + int maskBits = 0; + int height = 0; + int sp = 0; + boolean hasSubrs = false; + float[] s = new float[48]; + FontCff.Buffer[] returns = new FontCff.Buffer[10]; + FontCff.Buffer local = font.localSubrs.copy(); + FontCff.Buffer b = element(font.strings.copy(), glyph); + + while (b.cursor < b.size) { + int op = b.byteValue(); + int i = 0; + boolean clear = true; + switch (op) { + case 1: + case 3: + case 18: + case 23: + maskBits += sp / 2; + break; + case 2: + case 9: + case 13: + case 15: + case 16: + case 17: + case 28: + default: + if (op != 255 && op != 28 && op < 32) { + return false; + } + + float value; + if (op == 255) { + value = (float)b.bytes(4) * 1.5258789E-5F; + } else { + b.skip(-1); + value = (float)((short)integer(b)); + } + + if (sp >= 48) { + return false; + } + + s[sp++] = value; + clear = false; + break; + case 4: + if (sp < 1) { + return false; + } + + move(c, 0.0F, s[sp - 1]); + header = 0; + break; + case 5: + if (sp < 2) { + return false; + } + + while (i + 1 < sp) { + line(c, s[i], s[i + 1]); + i += 2; + } + break; + case 6: + case 7: + if (sp < 1) { + return false; + } + + for (boolean horizontal = op == 6; i < sp; i++) { + line(c, horizontal ? s[i] : 0.0F, horizontal ? 0.0F : s[i]); + horizontal = !horizontal; + } + break; + case 8: + if (sp < 6) { + return false; + } + + while (i + 5 < sp) { + curve(c, s[i], s[i + 1], s[i + 2], s[i + 3], s[i + 4], s[i + 5]); + i += 6; + } + break; + case 10: + case 29: + if (op == 10 && !hasSubrs) { + if (font.fdSelect.size != 0) { + local = glyphSubroutines(font, glyph); + } + + hasSubrs = true; + } + + if (sp < 1 || height >= 10) { + return false; + } + + int number = trunc(s[--sp]); + returns[height] = b; + b = subroutine(op == 10 ? local : font.globalSubrs, number); + if (b.size == 0) { + return false; + } + + height++; + b.cursor = 0; + clear = false; + break; + case 11: + if (height <= 0) { + return false; + } + + b = returns[--height]; + clear = false; + break; + case 12: + int escape = b.byteValue(); + if (escape == 34) { + if (sp < 7) { + return false; + } + + curve(c, s[0], 0.0F, s[1], s[2], s[3], 0.0F); + curve(c, s[4], 0.0F, s[5], neg(s[2]), s[6], 0.0F); + } else if (escape == 35) { + if (sp < 13) { + return false; + } + + curve(c, s[0], s[1], s[2], s[3], s[4], s[5]); + curve(c, s[6], s[7], s[8], s[9], s[10], s[11]); + } else if (escape == 36) { + if (sp < 9) { + return false; + } + + curve(c, s[0], s[1], s[2], s[3], s[4], 0.0F); + curve(c, s[5], 0.0F, s[6], s[7], s[8], neg(s[1] + s[3] + s[7])); + } else { + if (escape != 37) { + return false; + } + + if (sp < 11) { + return false; + } + + float dx = s[0] + s[2] + s[4] + s[6] + s[8]; + float dy = s[1] + s[3] + s[5] + s[7] + s[9]; + float absX = Float.intBitsToFloat(Float.floatToRawIntBits(dx) & 2147483647); + float absY = Float.intBitsToFloat(Float.floatToRawIntBits(dy) & 2147483647); + float dx6 = absX > absY ? s[10] : neg(dx); + float dy6 = absX > absY ? neg(dy) : s[10]; + curve(c, s[0], s[1], s[2], s[3], s[4], s[5]); + curve(c, s[6], s[7], s[8], s[9], dx6, dy6); + } + break; + case 14: + close(c); + return true; + case 19: + case 20: + if (header != 0) { + maskBits += sp / 2; + } + + header = 0; + b.skip((maskBits + 7) / 8); + break; + case 21: + if (sp < 2) { + return false; + } + + move(c, s[sp - 2], s[sp - 1]); + header = 0; + break; + case 22: + if (sp < 1) { + return false; + } + + move(c, s[sp - 1], 0.0F); + header = 0; + break; + case 24: + if (sp < 8) { + return false; + } + + while (i + 5 < sp - 2) { + curve(c, s[i], s[i + 1], s[i + 2], s[i + 3], s[i + 4], s[i + 5]); + i += 6; + } + + if (i + 1 >= sp) { + return false; + } + + line(c, s[i], s[i + 1]); + break; + case 25: + if (sp < 8) { + return false; + } + + while (i + 1 < sp - 6) { + line(c, s[i], s[i + 1]); + i += 2; + } + + if (i + 5 >= sp) { + return false; + } + + curve(c, s[i], s[i + 1], s[i + 2], s[i + 3], s[i + 4], s[i + 5]); + break; + case 26: + case 27: + if (sp < 4) { + return false; + } + + float first = 0.0F; + if ((sp & 1) != 0) { + first = s[i++]; + } + + while (i + 3 < sp) { + if (op == 27) { + curve(c, s[i], first, s[i + 1], s[i + 2], s[i + 3], 0.0F); + } else { + curve(c, first, s[i], s[i + 1], s[i + 2], 0.0F, s[i + 3]); + } + + first = 0.0F; + i += 4; + } + break; + case 30: + case 31: + if (sp < 4) { + return false; + } + + for (boolean horizontal = op == 31; i + 3 < sp; i += 4) { + if (horizontal) { + curve(c, s[i], 0.0F, s[i + 1], s[i + 2], sp - i == 5 ? s[i + 4] : 0.0F, s[i + 3]); + } else { + curve(c, 0.0F, s[i], s[i + 1], s[i + 2], s[i + 3], sp - i == 5 ? s[i + 4] : 0.0F); + } + + horizontal = !horizontal; + } + } + + if (clear) { + sp = 0; + } + } + + return false; + } + + private FontCff() { + } + + public static final strictfp class Buffer { + public final byte[] data; + public final int offset; + public final int size; + public int cursor; + + public Buffer(byte[] data) { + this(data, 0, data.length); + } + + public Buffer(byte[] data, int offset, int size) { + this.data = data; + this.offset = offset; + this.size = size; + } + + public strictfp FontCff.Buffer copy() { + FontCff.Buffer b = new FontCff.Buffer(this.data, this.offset, this.size); + b.cursor = this.cursor; + return b; + } + + public strictfp int byteValue() { + return this.cursor >= this.size ? 0 : this.data[this.offset + this.cursor++] & 0xFF; + } + + public strictfp int bytes(int count) { + int v = 0; + + for (int i = 0; i < count; i++) { + v = v << 8 | this.byteValue(); + } + + return v; + } + + public strictfp void seek(int at) { + this.cursor = at >= 0 && at <= this.size ? at : this.size; + } + + public strictfp void skip(int count) { + this.seek(this.cursor + count); + } + + public strictfp FontCff.Buffer range(int at, int count) { + return at >= 0 && count >= 0 && at <= this.size && count <= this.size - at + ? new FontCff.Buffer(this.data, this.offset + at, count) + : new FontCff.Buffer(new byte[0]); + } + } + + public static final strictfp class Context { + public final boolean bounds; + public boolean started; + public float firstX; + public float firstY; + public float x; + public float y; + public int minX; + public int maxX; + public int minY; + public int maxY; + public int count; + public final List vertices = new ArrayList<>(); + + public Context(boolean bounds) { + this.bounds = bounds; + } + + private strictfp void track(int x, int y) { + if (x > this.maxX || !this.started) { + this.maxX = x; + } + + if (y > this.maxY || !this.started) { + this.maxY = y; + } + + if (x < this.minX || !this.started) { + this.minX = x; + } + + if (y < this.minY || !this.started) { + this.minY = y; + } + + this.started = true; + } + + private strictfp void vertex(int type, int x, int y, int cx, int cy, int cx1, int cy1) { + if (this.bounds) { + this.track(x, y); + if (type == 4) { + this.track(cx, cy); + this.track(cx1, cy1); + } + } else { + this.vertices.add(new FontRasterization.Vertex(type, x, y, cx, cy, cx1, cy1)); + } + + this.count++; + } + } + + public static final strictfp class Info { + public FontCff.Buffer cff; + public FontCff.Buffer strings; + public FontCff.Buffer globalSubrs; + public FontCff.Buffer localSubrs; + public FontCff.Buffer fdArray; + public FontCff.Buffer fdSelect; + + public Info( + FontCff.Buffer cff, FontCff.Buffer strings, FontCff.Buffer global, FontCff.Buffer local, FontCff.Buffer dictionaries, FontCff.Buffer selectors + ) { + this.cff = cff; + this.strings = strings; + this.globalSubrs = global; + this.localSubrs = local; + this.fdArray = dictionaries; + this.fdSelect = selectors; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGeometry.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGeometry.java new file mode 100644 index 0000000..9dac47c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGeometry.java @@ -0,0 +1,180 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.render.RenderConstants; +import java.util.List; + +public final strictfp class FontGeometry { + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + public static strictfp void quadratic(List points, float x0, float y0, float x1, float y1, float x2, float y2, float flatness, int depth) { + if (depth <= 16) { + float quarter = c(2841456); + float half = c(2841472); + float packed = c(2841488); + depth++; + + do { + float mx = (x1 + x1 + x0 + x2) * quarter; + float my = (y1 + y1 + y0 + y2) * quarter; + float dx = (x2 + x0) * half - mx; + float dy = (y2 + y0) * half - my; + float distance = dy * dy + dx * dx; + if (!(distance > flatness)) { + points.add(new float[]{x2, y2}); + return; + } + + float lx = (x0 + x1) * half; + float ly = (y1 + y0) * half; + quadratic(points, x0, y0, lx, ly, mx, my, flatness, depth); + x1 = (x1 + x2) * packed; + y1 = (y1 + y2) * packed; + x0 = mx; + y0 = my; + } while (++depth != 18); + } + } + + public static strictfp void cubic( + List points, float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float flatness, int depth + ) { + if (depth <= 16) { + float half = c(2841504); + float packed = c(2841520); + int terminal = depth >= 18 ? depth : 17; + depth++; + + int old; + do { + float dx = x3 - x0; + float dy = y3 - y0; + float longLength = (float)StrictMath.sqrt((double)(dx * dx + dy * dy)); + dx = x3 - x2; + dy = y3 - y2; + double l23 = StrictMath.sqrt((double)(dx * dx + dy * dy)); + float dx01 = x1 - x0; + float dy01 = y1 - y0; + float dx12 = x2 - x1; + float dy12 = y2 - y1; + double l01 = StrictMath.sqrt((double)(dx01 * dx01 + dy01 * dy01)); + double l12 = StrictMath.sqrt((double)(dx12 * dx12 + dy12 * dy12)); + float length = (float)(l01 + l12 + l23); + if (!(length * length - longLength * longLength > flatness)) { + points.add(new float[]{x3, y3}); + return; + } + + float x01 = (x0 + x1) * packed; + float x23 = (x3 + x2) * packed; + float y01 = (y0 + y1) * packed; + float y23 = (y3 + y2) * packed; + float x12 = (x1 + x2) * half; + float y12 = (y1 + y2) * half; + float x012 = (x12 + x01) * packed; + float x123 = (x12 + x23) * packed; + float y012 = (y12 + y01) * packed; + float y123 = (y12 + y23) * packed; + float mx = (x123 + x012) * half; + float my = (y123 + y012) * half; + cubic(points, x0, y0, x01, y01, x012, y012, mx, my, flatness, depth); + x0 = mx; + y0 = my; + x1 = x123; + y1 = y123; + x2 = x23; + y2 = y23; + old = depth++; + } while (old - terminal + 1 != 1); + } + } + + private static strictfp void swap(FontGeometry.Edge[] edges, int a, int b) { + FontGeometry.Edge p = edges[a]; + edges[a] = edges[b]; + edges[b] = p; + } + + public static strictfp void quickSort(FontGeometry.Edge[] edges, int offset, int count) { + while (count > 12) { + int middle = count >>> 1; + float a = edges[offset].y0; + float b = edges[offset + middle].y0; + float c = edges[offset + count - 1].y0; + if (!(a < b) == b < c) { + int pivot = !(a < c) != b < c ? 0 : count - 1; + swap(edges, offset + pivot, offset + middle); + } + + swap(edges, offset, offset + middle); + int i = 1; + int j = count - 1; + + while (true) { + float pivot = edges[offset].y0; + + while (pivot > edges[offset + i].y0) { + i++; + } + + while (edges[offset + j].y0 > pivot) { + j--; + } + + if (i >= j) { + if (count - i <= j) { + quickSort(edges, offset + i, count - i); + count = j; + break; + } + + quickSort(edges, offset, j); + offset += i; + count -= i; + break; + } + + swap(edges, offset + i, offset + j); + i++; + j--; + } + } + } + + public static strictfp void sort(FontGeometry.Edge[] edges) { + quickSort(edges, 0, edges.length); + + for (int i = 1; i < edges.length; i++) { + FontGeometry.Edge value = edges[i]; + + int j; + for (j = i; j > 0 && edges[j - 1].y0 > value.y0; j--) { + edges[j] = edges[j - 1]; + } + + if (j != i) { + edges[j] = value; + } + } + } + + private FontGeometry() { + } + + public static final strictfp class Edge { + public float x0; + public float y0; + public float x1; + public float y1; + public int direction; + + public Edge(float x0, float y0, float x1, float y1, int direction) { + this.x0 = x0; + this.y0 = y0; + this.x1 = x1; + this.y1 = y1; + this.direction = direction; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGlyphCache.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGlyphCache.java new file mode 100644 index 0000000..e4634fc --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontGlyphCache.java @@ -0,0 +1,302 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.gui.GuiMath; +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import java.util.ArrayList; +import java.util.List; + +public final strictfp class FontGlyphCache implements FontServices.Face { + private final FontGlyphCache.Stash stash; + private final FontGlyphCache.Font font; + private final FontGlyphCache.Source source; + + public FontGlyphCache(FontGlyphCache.Stash stash, FontGlyphCache.Font font) { + this(stash, font, null); + } + + public FontGlyphCache(FontGlyphCache.Stash stash, FontGlyphCache.Font font, FontGlyphCache.Source source) { + this.stash = stash; + this.font = font; + this.source = source; + } + + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + @Override + public strictfp int kern(int a, int b) { + return this.source == null ? FontTables.kerning(this.font.tables, a, b) : this.source.kern(a, b); + } + + @Override + public strictfp float ascender() { + return this.font.ascender; + } + + @Override + public strictfp float descender() { + return this.font.descender; + } + + @Override + public strictfp float lineHeight() { + return this.font.lineHeight; + } + + @Override + public strictfp int unitsPerEm() { + return this.source == null ? FontTables.u16(this.font.tables.data, this.font.tables.head + 18) : this.source.unitsPerEm(); + } + + @Override + public strictfp FontServices.Glyph glyph(int cp, int sizeBits, short blur, int bitmap) { + short size = (short)sizeBits; + if (size < 2) { + return null; + } else { + short clamped = (short)Math.min(blur, 20); + (this.source == null ? this.font.tables.scratch : this.source.scratch()).used = 0; + int bucket = FontServices.hash(cp); + int index = this.font.heads[bucket]; + FontGlyphCache.Row row = null; + + while (index != -1) { + FontGlyphCache.Row candidate = this.font.glyphs.get(index); + if (candidate.codepoint == cp && candidate.size == size && candidate.blur == clamped) { + row = candidate; + break; + } + + index = candidate.next; + } + + if (row == null || bitmap != 1 && (row.glyph.x0 < 0 || row.glyph.y0 < 0)) { + float scaleSize = (float)size / c(2838208); + FontGlyphCache.Font render = this.font; + int glyphIndex = this.source == null ? FontTables.map(this.font.tables, cp) : this.source.map(cp); + if (glyphIndex == 0) { + for (FontGlyphCache.Font fallback : this.font.fallbacks) { + int mapped = FontTables.map(fallback.tables, cp); + if (mapped != 0) { + render = fallback; + glyphIndex = mapped; + break; + } + } + } + + FontTables.Font table = render.tables; + float scale = scaleSize / (float)(this.source == null ? FontTables.u16(table.data, table.head + 18) : this.source.unitsPerEm()); + int padding = clamped + 2; + int advance; + if (this.source == null) { + int metricCount = FontTables.u16(table.data, table.hhea + 34); + int metric = table.hmtx + (glyphIndex < metricCount ? glyphIndex : metricCount - 1) * 4; + advance = FontTables.u16(table.data, metric); + } else { + advance = this.source.advance(glyphIndex); + } + + int[] box = this.source == null ? FontTables.box(table, glyphIndex) : this.source.box(glyphIndex); + int x0 = 0; + int y0 = 0; + int x1 = 0; + int y1 = 0; + if (box != null) { + x0 = NumericMath.truncateInt(GuiMath.floor((float)box[0] * scale + 0.0F)); + y0 = NumericMath.truncateInt(GuiMath.floor((float)(-box[3]) * scale + 0.0F)); + x1 = NumericMath.truncateInt(NumericMath.ceiling((float)box[2] * scale + 0.0F)); + y1 = NumericMath.truncateInt(NumericMath.ceiling((float)(-box[1]) * scale + 0.0F)); + } + + int boxWidth = x1 - x0; + int boxHeight = y1 - y0; + int width = boxWidth + padding * 2; + int height = boxHeight + padding * 2; + int atlasX = -1; + int atlasY = -1; + if (bitmap == 2) { + int[] packed = this.stash.atlas.add(width, height); + if (packed == null) { + if (this.stash.atlasError == null) { + return null; + } + + this.stash.atlasError.run(); + packed = this.stash.atlas.add(width, height); + if (packed == null) { + return null; + } + } + + atlasX = packed[0]; + atlasY = packed[1]; + } + + if (row == null) { + row = new FontGlyphCache.Row(); + row.codepoint = cp; + row.size = size; + row.blur = clamped; + row.next = this.font.heads[bucket]; + this.font.heads[bucket] = this.font.glyphs.size(); + this.font.glyphs.add(row); + } + + FontServices.Glyph g = row.glyph; + g.index = glyphIndex; + g.x0 = (short)atlasX; + g.y0 = (short)atlasY; + g.x1 = (short)(atlasX + width); + g.y1 = (short)(atlasY + height); + g.advance = (short)NumericMath.truncateInt((float)((short)advance) * scale * c(2838208)); + g.xOffset = (short)(x0 - padding); + g.yOffset = (short)(y0 - padding); + if (bitmap == 1) { + return g; + } else { + int destination = ((short)atlasY + padding) * this.stash.stride + (short)atlasX + padding; + if (this.source == null) { + makeBitmap(table, this.stash.pixels, destination, boxWidth, boxHeight, this.stash.stride, scale, scale, 0.0F, 0.0F, glyphIndex); + } else if (boxWidth != 0 && boxHeight != 0) { + FontRasterization.rasterize( + this.stash.pixels, + destination, + boxWidth, + boxHeight, + this.stash.stride, + c(2837800), + this.source.shape(glyphIndex), + scale, + scale, + 0.0F, + 0.0F, + x0, + y0, + true, + this.source.scratch() + ); + } + + int border = g.y0 * this.stash.stride + g.x0; + + for (int y = 0; y < height; y++) { + this.stash.pixels[border + this.stash.stride * y] = 0; + this.stash.pixels[border + this.stash.stride * y + width - 1] = 0; + } + + for (int x = 0; x < width; x++) { + this.stash.pixels[border + x] = 0; + this.stash.pixels[border + (height - 1) * this.stash.stride + x] = 0; + } + + if (blur > 0) { + (this.source == null ? this.font.tables.scratch : this.source.scratch()).used = 0; + float sigma = (float)clamped * c(2838212) + c(2838216); + float exponential = FloatNumeric.exp(c(2838220) / sigma); + int coefficient = NumericMath.truncateInt((c(2838216) - exponential) * c(2838224)); + FontServices.blur(this.stash.pixels, border, width, height, this.stash.stride, coefficient); + } + + this.stash.dirtyX = Math.min(this.stash.dirtyX, g.x0); + this.stash.dirtyY = Math.min(this.stash.dirtyY, g.y0); + this.stash.dirtyRight = Math.max(this.stash.dirtyRight, g.x1); + this.stash.dirtyBottom = Math.max(this.stash.dirtyBottom, g.y1); + return g; + } + } else { + return row.glyph; + } + } + } + + public static strictfp void makeBitmap( + FontTables.Font font, byte[] output, int start, int width, int height, int stride, float scaleX, float scaleY, float shiftX, float shiftY, int glyph + ) { + List shape = FontTables.shape(font, glyph); + int[] box = FontTables.box(font, glyph); + int offsetX = 0; + int offsetY = 0; + if (box != null) { + offsetX = NumericMath.truncateInt(GuiMath.floor((float)box[0] * scaleX + shiftX)); + offsetY = NumericMath.truncateInt(GuiMath.floor((float)(-box[3]) * scaleY + shiftY)); + } + + if (width != 0 && height != 0) { + FontRasterization.rasterize( + output, start, width, height, stride, c(2837800), shape, scaleX, scaleY, shiftX, shiftY, offsetX, offsetY, true, font.scratch + ); + } + } + + public static final strictfp class Font { + public final FontTables.Font tables; + public final int[] heads; + public final List glyphs = new ArrayList<>(); + public final List fallbacks = new ArrayList<>(); + public final float ascender; + public final float descender; + public final float lineHeight; + + public Font(FontTables.Font tables, int[] heads, float ascender, float descender, float lineHeight) { + if (heads.length != 256) { + throw new IllegalArgumentException("Font hash table must contain 256 supplied entries"); + } else { + this.tables = tables; + this.heads = heads; + this.ascender = ascender; + this.descender = descender; + this.lineHeight = lineHeight; + } + } + } + + public static final class Row { + public final FontServices.Glyph glyph = new FontServices.Glyph(); + public int codepoint; + public int next; + public short size; + public short blur; + } + + public interface Source { + int unitsPerEm(); + + int map(int var1); + + int advance(int var1); + + int[] box(int var1); + + int kern(int var1, int var2); + + List shape(int var1); + + FontRasterization.Scratch scratch(); + } + + public static final strictfp class Stash { + public FontServices.Atlas atlas; + public byte[] pixels; + public int stride; + public int dirtyX; + public int dirtyY; + public int dirtyRight; + public int dirtyBottom; + public Runnable atlasError; + + public Stash(FontServices.Atlas atlas, byte[] pixels, int stride, int dirtyX, int dirtyY, int dirtyRight, int dirtyBottom, Runnable atlasError) { + this.atlas = atlas; + this.pixels = pixels; + this.stride = stride; + this.dirtyX = dirtyX; + this.dirtyY = dirtyY; + this.dirtyRight = dirtyRight; + this.dirtyBottom = dirtyBottom; + this.atlasError = atlasError; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontRasterization.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontRasterization.java new file mode 100644 index 0000000..e9d5a95 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontRasterization.java @@ -0,0 +1,408 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; + +public final strictfp class FontRasterization { + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + private static strictfp float neg(float value) { + return Float.intBitsToFloat(Float.floatToRawIntBits(value) ^ RenderConstants.i(2837712)); + } + + private static strictfp List> contours(List vertices, float flatness) { + List> result = new ArrayList<>(); + List current = null; + float x = 0.0F; + float y = 0.0F; + + for (FontRasterization.Vertex vertex : vertices) { + if (vertex.type == 1) { + current = new ArrayList<>(); + result.add(current); + x = (float)vertex.x; + y = (float)vertex.y; + current.add(new float[]{x, y}); + } else if (vertex.type == 2) { + x = (float)vertex.x; + y = (float)vertex.y; + current.add(new float[]{x, y}); + } else if (vertex.type == 3) { + FontGeometry.quadratic(current, x, y, (float)vertex.cx, (float)vertex.cy, (float)vertex.x, (float)vertex.y, flatness, 0); + x = (float)vertex.x; + y = (float)vertex.y; + } else if (vertex.type == 4) { + FontGeometry.cubic( + current, x, y, (float)vertex.cx, (float)vertex.cy, (float)vertex.cx1, (float)vertex.cy1, (float)vertex.x, (float)vertex.y, flatness, 0 + ); + x = (float)vertex.x; + y = (float)vertex.y; + } + } + + return result; + } + + private static strictfp void clipped(float[] scan, int x, FontRasterization.Active edge, float x0, float y0, float x1, float y1) { + if (y0 != y1 && !(y0 > edge.end) && !(y1 < edge.start)) { + if (y0 < edge.start) { + x0 += (x1 - x0) * (edge.start - y0) / (y1 - y0); + y0 = edge.start; + } + + if (y1 > edge.end) { + x1 += (x1 - x0) * (edge.end - y1) / (y1 - y0); + y1 = edge.end; + } + + float left = (float)x; + float right = (float)(x + 1); + float height = (y1 - y0) * edge.direction; + if (x0 <= left && x1 <= left) { + scan[x] += height; + } else if (!(x0 >= right) || !(x1 >= right)) { + float fraction = (x1 - left + (x0 - left)) * c(2837740) + c(2837728); + scan[x] += fraction * height; + } + } + } + + private static strictfp void clippedFill(float[] scan, float[] fill, int x, FontRasterization.Active edge, float x0, float y0, float x1, float y1) { + clipped(fill, x, edge, x0, y0, x1, y1); + } + + private static strictfp void fill(float[] scan, float[] values, List active, float top, float bottom) { + int width = scan.length; + float one = c(2837728); + float negativeHalf = c(2837740); + float half = c(2837744); + + for (FontRasterization.Active edge : active) { + float x0 = edge.x; + float dx = edge.dx; + if (dx != 0.0F) { + float unclip = dx + x0; + float xTop = edge.start > top ? (edge.start - top) * dx + x0 : x0; + float xBottom = edge.end < bottom ? (edge.end - top) * dx + x0 : unclip; + if (xTop >= 0.0F && xBottom >= 0.0F && xTop < (float)width && xBottom < (float)width) { + float sy0 = RenderMath.max(edge.start, top); + float sy1 = RenderMath.min(edge.end, bottom); + int first = NumericMath.truncateInt(xTop); + int last = NumericMath.truncateInt(xBottom); + if (first == last) { + float fraction = ((xBottom - (float)first + (xTop - (float)first)) * negativeHalf + one) * edge.direction; + scan[first] += fraction * (sy1 - sy0); + values[first + 1] = (sy1 - sy0) * edge.direction + values[first + 1]; + } else { + float left = xTop; + float right = xBottom; + float dy = edge.dy; + float origin = x0; + if (xTop > xBottom) { + float flipped0 = top - sy0 + bottom; + float flipped1 = top - sy1 + bottom; + sy1 = flipped0; + sy0 = flipped1; + dy = neg(dy); + left = xBottom; + right = xTop; + origin = unclip; + first = NumericMath.truncateInt(xBottom); + last = NumericMath.truncateInt(xTop); + } + + float cross = ((float)(first + 1) - origin) * dy + top; + float area = (cross - sy0) * edge.direction; + float fraction = (left - (float)first + one) * negativeHalf + one; + scan[first] += fraction * area; + int span = last - (first + 1); + if (span > 0) { + float step = dy * edge.direction; + float halfStep = step * half; + + for (int x = first + 1; x < last; x++) { + scan[x] += halfStep + area; + area += step; + } + } + + float finalY = dy * (float)span + cross; + float lastFraction = ((right - (float)last) * negativeHalf + one) * edge.direction; + scan[last] += (sy1 - finalY) * lastFraction + area; + values[last + 1] = (sy1 - sy0) * edge.direction + values[last + 1]; + } + } else { + for (int x = 0; x < width; x++) { + float leftx = (float)x; + float rightx = (float)(x + 1); + float yLeft = (leftx - x0) / dx + top; + float yRight = (rightx - x0) / dx + top; + if (x0 < leftx && unclip > rightx) { + clipped(scan, x, edge, x0, top, leftx, yLeft); + clipped(scan, x, edge, leftx, yLeft, rightx, yRight); + clipped(scan, x, edge, rightx, yRight, unclip, bottom); + } else if (unclip < leftx && x0 > rightx) { + clipped(scan, x, edge, x0, top, rightx, yRight); + clipped(scan, x, edge, rightx, yRight, leftx, yLeft); + clipped(scan, x, edge, leftx, yLeft, unclip, bottom); + } else if ((!(x0 < leftx) || !(unclip > leftx)) && (!(unclip < leftx) || !(x0 > leftx))) { + if ((!(x0 < rightx) || !(unclip > rightx)) && (!(unclip < rightx) || !(x0 > rightx))) { + clipped(scan, x, edge, x0, top, unclip, bottom); + } else { + clipped(scan, x, edge, x0, top, rightx, yRight); + clipped(scan, x, edge, rightx, yRight, unclip, bottom); + } + } else { + clipped(scan, x, edge, x0, top, leftx, yLeft); + clipped(scan, x, edge, leftx, yLeft, unclip, bottom); + } + } + } + } else if (x0 < (float)width) { + if (x0 >= 0.0F) { + int xx = NumericMath.truncateInt(x0); + clipped(scan, xx, edge, x0, top, x0, bottom); + clippedFill(scan, values, xx + 1, edge, x0, top, x0, bottom); + } else { + clippedFill(scan, values, 0, edge, x0, top, x0, bottom); + } + } + } + } + + public static strictfp void rasterize( + byte[] output, + int offset, + int width, + int height, + int stride, + float flatness, + List vertices, + float scaleX, + float scaleY, + float shiftX, + float shiftY, + int offsetX, + int offsetY, + boolean invert, + FontRasterization.Scratch scratch + ) { + if (!vertices.isEmpty()) { + int contourCount = 0; + + for (FontRasterization.Vertex v : vertices) { + if (v.type == 1) { + contourCount++; + } + } + + if (contourCount != 0 && scratch.reserve(contourCount * 4)) { + float tolerance = flatness / RenderMath.min(scaleY, scaleX); + flatness = tolerance * tolerance; + List> curves = contours(vertices, flatness); + int total = 0; + + for (List curve : curves) { + total += curve.size(); + } + + if (scratch.reserve(total * 8)) { + curves = contours(vertices, flatness); + if (invert) { + scaleY = neg(scaleY); + } + + if (scratch.reserve(total * 20 + 20)) { + List edges = new ArrayList<>(); + + for (List curve : curves) { + float[] previous = curve.get(curve.size() - 1); + + for (float[] point : curve) { + if (previous[1] != point[1]) { + boolean forward = invert ? previous[1] > point[1] : point[1] > previous[1]; + float[] first = forward ? previous : point; + float[] last = forward ? point : previous; + edges.add( + new FontGeometry.Edge( + first[0] * scaleX + shiftX, first[1] * scaleY + shiftY, last[0] * scaleX + shiftX, last[1] * scaleY + shiftY, forward ? 1 : 0 + ) + ); + } + + previous = point; + } + } + + FontGeometry.Edge[] sorted = edges.toArray(new FontGeometry.Edge[0]); + FontGeometry.sort(sorted); + if (width < 65 || scratch.reserve(width * 8 + 4)) { + if (height > 0) { + float[] scan = new float[width]; + float[] fill = new float[width + 1]; + List active = new ArrayList<>(); + FontRasterization.Pool pool = new FontRasterization.Pool(scratch); + int edgeIndex = 0; + float one = c(2837728); + int row = 0; + + for (int y = offsetY; row < height; y++) { + float top = (float)y; + float bottom = top + one; + Arrays.fill(scan, 0.0F); + Arrays.fill(fill, 0.0F); + Iterator it = active.iterator(); + + while (it.hasNext()) { + FontRasterization.Active a = it.next(); + if (top >= a.end) { + it.remove(); + pool.release(); + } + } + + while (edgeIndex < sorted.length && bottom >= sorted[edgeIndex].y0) { + FontGeometry.Edge e = sorted[edgeIndex++]; + if (e.y0 != e.y1 && pool.allocate()) { + FontRasterization.Active a = new FontRasterization.Active(); + a.dx = (e.x1 - e.x0) / (e.y1 - e.y0); + a.dy = a.dx == 0.0F ? 0.0F : one / a.dx; + a.x = a.dx * (top - e.y0) + e.x0 - (float)offsetX; + a.direction = c(e.direction != 0 ? 2837732 : 2837736); + a.start = e.y0; + a.end = e.y1; + if (row == 0 && offsetY != 0 && top > a.end) { + a.end = top; + } + + active.add(0, a); + } + } + + fill(scan, fill, active, top, bottom); + float sum = 0.0F; + + for (int x = 0; x < width; x++) { + sum += fill[x]; + float coverage = Float.intBitsToFloat(Float.floatToRawIntBits(scan[x] + sum) & RenderConstants.i(2837760)); + int value = NumericMath.truncateInt(coverage * c(2837776) + c(2837744)); + if (value >= 255) { + value = 255; + } + + output[offset + stride * row + x] = (byte)value; + } + + for (FontRasterization.Active a : active) { + a.x = a.dx + a.x; + } + + row++; + } + } + } + } + } + } + } + } + + private FontRasterization() { + } + + private static final strictfp class Active { + float x; + float dx; + float dy; + float direction; + float start; + float end; + + private Active() { + } + } + + private static final strictfp class Pool { + final FontRasterization.Scratch scratch; + int remaining; + int free; + + Pool(FontRasterization.Scratch s) { + this.scratch = s; + } + + strictfp boolean allocate() { + if (this.free > 0) { + this.free--; + return true; + } else if (this.remaining > 0) { + this.remaining--; + return true; + } else if (this.scratch.used >= 70385) { + this.scratch.error.run(); + return false; + } else { + this.scratch.used += 25616; + if (!this.scratch.available) { + return false; + } else { + this.remaining = 799; + return true; + } + } + } + + strictfp void release() { + this.free++; + } + } + + public static final strictfp class Scratch { + public int used; + public boolean available = true; + public final Runnable error; + + public Scratch(Runnable error) { + this.error = Objects.requireNonNull(error); + } + + public strictfp boolean reserve(int bytes) { + int next = this.used + (bytes + 15 & -16); + if (next >= 96001) { + this.error.run(); + return false; + } else { + this.used = next; + return this.available; + } + } + } + + public static final strictfp class Vertex { + public short x; + public short y; + public short cx; + public short cy; + public short cx1; + public short cy1; + public int type; + + public Vertex(int type, int x, int y, int cx, int cy, int cx1, int cy1) { + this.type = type; + this.x = (short)x; + this.y = (short)y; + this.cx = (short)cx; + this.cy = (short)cy; + this.cx1 = (short)cx1; + this.cy1 = (short)cy1; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontServices.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontServices.java new file mode 100644 index 0000000..c9c3aa0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontServices.java @@ -0,0 +1,647 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.gui.GuiMath; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final strictfp class FontServices { + private static strictfp float c(int at) { + return RenderConstants.f(at); + } + + private static strictfp int byteAt(int address) { + return RenderConstants.i(address & -4) >>> (address & 3) * 8 & 0xFF; + } + + public static strictfp FontServices.Quad quad( + FontServices.Face face, + FontServices.Glyph glyph, + int previous, + float scale, + float spacing, + FontServices.Cursor cursor, + boolean downward, + float inverseWidth, + float inverseHeight + ) { + if (previous != -1) { + int kern = face.kern(previous, glyph.index); + float delta = (float)NumericMath.truncateInt((float)kern * scale + spacing + c(2838228)); + cursor.x += delta; + } + + float xoff = (float)((short)(glyph.xOffset + 1)); + float yoff = (float)((short)(glyph.yOffset + 1)); + float top = (float)(glyph.y0 + 1); + float bottom = (float)(glyph.y1 - 1); + float left = (float)(glyph.x0 + 1); + float right = (float)(glyph.x1 - 1); + FontServices.Quad q = new FontServices.Quad(); + q.x0 = GuiMath.floor(xoff + cursor.x); + q.y0 = GuiMath.floor(downward ? cursor.y + yoff : cursor.y - yoff); + q.x1 = q.x0 + right - left; + q.y1 = downward ? q.y0 + bottom - top : q.y0 - bottom + top; + q.s0 = left * inverseWidth; + q.t0 = top * inverseHeight; + q.s1 = right * inverseWidth; + q.t1 = bottom * inverseHeight; + float advance = (float)NumericMath.truncateInt((float)glyph.advance / c(2838232) + c(2838228)); + cursor.x += advance; + return q; + } + + private static strictfp float vertical( + FontServices.Face face, boolean downward, int alignment, float size, int ten, int half, int negativeTen, int negativeHalf, boolean sizeFirst + ) { + boolean negate = false; + float metric; + if ((alignment & 8) != 0) { + metric = face.ascender(); + negate = !downward; + } else if ((alignment & 16) != 0) { + metric = (face.ascender() + face.descender()) * c(downward ? half : negativeHalf); + } else { + if ((alignment & 96) != 32) { + return 0.0F; + } + + metric = face.descender(); + negate = !downward; + } + + return (sizeFirst ? size * metric : metric * size) / c(negate ? negativeTen : ten); + } + + public static strictfp float bounds( + FontServices.Face face, + float x, + float y, + byte[] text, + int end, + float fontSize, + float blur, + float spacing, + int alignment, + boolean downward, + float inverseWidth, + float inverseHeight, + float[] bounds + ) { + int sizeBits = NumericMath.truncateInt(fontSize * c(2838192)); + float size = (float)((short)sizeBits); + y += vertical(face, downward, alignment, size, 2838192, 2838196, 2838200, 2838204, false); + float minX = x; + float maxX = x; + float minY = y; + float maxY = y; + float scale = size / c(2838192) / (float)face.unitsPerEm(); + FontServices.Cursor cursor = new FontServices.Cursor(x, y); + FontServices.Utf8 utf8 = new FontServices.Utf8(); + int previous = -1; + + for (int i = 0; i < end; i++) { + if (utf8.next(text[i])) { + FontServices.Glyph glyph = face.glyph(utf8.codepoint, sizeBits, (short)NumericMath.truncateInt(blur), 1); + if (glyph == null) { + previous = -1; + } else { + FontServices.Quad q = quad(face, glyph, previous, scale, spacing, cursor, downward, inverseWidth, inverseHeight); + float low = downward ? q.y0 : q.y1; + float high = downward ? q.y1 : q.y0; + minY = RenderMath.min(low, minY); + maxY = high > maxY ? high : maxY; + minX = RenderMath.min(q.x0, minX); + maxX = RenderMath.max(q.x1, maxX); + previous = glyph.index; + } + } + } + + float advance = cursor.x - x; + if ((alignment & 1) == 0) { + if ((alignment & 4) != 0) { + minX -= advance; + maxX -= advance; + } else if ((alignment & 2) != 0) { + float offset = c(2838204) * advance; + minX += offset; + maxX += offset; + } + } + + if (bounds != null) { + bounds[0] = minX; + bounds[1] = minY; + bounds[2] = maxX; + bounds[3] = maxY; + } + + return advance; + } + + public static strictfp float[] lineBounds(FontServices.Face face, float y, float fontSize, int alignment, boolean downward) { + float size = (float)((short)NumericMath.truncateInt(fontSize * c(2838324))); + y += vertical(face, downward, alignment, size, 2838324, 2838328, 2838332, 2838336, false); + if (downward) { + y -= face.ascender() * size / c(2838324); + return new float[]{y, size * face.lineHeight() / c(2838324) + y}; + } else { + y = face.descender() * size / c(2838324) + y; + return new float[]{y - size * face.lineHeight() / c(2838324), y}; + } + } + + public static strictfp int hash(int codepoint) { + int h = ~(codepoint << 15) + codepoint; + h ^= h >>> 10; + h *= 9; + h ^= h >>> 6; + h = ~(h << 11) + h; + h ^= h >>> 16; + return h & 0xFF; + } + + private static strictfp int blurStep(byte[] pixels, int at, int accumulator, int coefficient) { + int difference = ((pixels[at] & 255) << 7) - accumulator; + accumulator += coefficient * difference >> 16; + pixels[at] = (byte)(accumulator >>> 7); + return accumulator; + } + + public static strictfp void blur(byte[] pixels, int offset, int width, int height, int stride, int coefficient) { + for (int pass = 0; pass < 2; pass++) { + for (int x = 0; x < width; x++) { + int base = offset + x; + int a = 0; + + for (int y = 1; y < height; y++) { + a = blurStep(pixels, base + y * stride, a, coefficient); + } + + pixels[base + (height - 1) * stride] = 0; + a = 0; + + for (int y = height - 2; y >= 0; y--) { + a = blurStep(pixels, base + y * stride, a, coefficient); + } + + pixels[base] = 0; + } + + for (int y = 0; y < height; y++) { + int base = offset + y * stride; + int a = 0; + + for (int x = 1; x < width; x++) { + a = blurStep(pixels, base + x, a, coefficient); + } + + pixels[base + width - 1] = 0; + a = 0; + + for (int x = width - 2; x >= 0; x--) { + a = blurStep(pixels, base + x, a, coefficient); + } + + pixels[base] = 0; + } + } + } + + public static strictfp float transformScale(float[] matrix, float bias, float quantum, float max, float deviceRatio) { + float x = (float)StrictMath.sqrt((double)(matrix[0] * matrix[0] + matrix[2] * matrix[2])); + float y = (float)StrictMath.sqrt((double)(matrix[1] * matrix[1] + matrix[3] * matrix[3])); + float average = y + x; + average = average * bias / quantum + bias; + float quantized = (float)NumericMath.truncateInt(average); + return RenderMath.min(quantized * quantum, max) * deviceRatio; + } + + public static strictfp float canvasBounds( + FontServices.Face face, + int font, + float x, + float y, + byte[] text, + int end, + float fontSize, + float blur, + float spacing, + int alignment, + boolean downward, + float inverseWidth, + float inverseHeight, + float[] transform, + float deviceRatio, + float[] output + ) { + if (font == -1) { + return 0.0F; + } else { + float scale = transformScale(transform, c(2840336), c(2840340), c(2840344), deviceRatio); + float inverse = c(2840348) / scale; + float scaledY = y * scale; + float result = bounds( + face, x * scale, scaledY, text, end, fontSize * scale, blur * scale, spacing * scale, alignment, downward, inverseWidth, inverseHeight, output + ); + if (output != null) { + float[] line = lineBounds(face, scaledY, fontSize * scale, alignment, downward); + output[1] = line[0]; + output[3] = line[1]; + + for (int i = 0; i < 4; i++) { + output[i] = inverse * output[i]; + } + } + + return inverse * result; + } + } + + public static strictfp float[][] textVertices(FontServices.Quad q, float inverse, float[] transform) { + float y0 = q.y0; + float y1 = q.y1; + float t0 = q.t0; + float t1 = q.t1; + float determinant = transform[3] * transform[0] - transform[1] * transform[2]; + if (0.0F > determinant) { + float swap = y0; + y0 = y1; + y1 = swap; + swap = t0; + t0 = t1; + t1 = swap; + } + + float x0 = q.x0 * inverse; + float x1 = q.x1 * inverse; + y0 *= inverse; + y1 *= inverse; + float[] p0 = transform(transform, x0, y0); + float[] p1 = transform(transform, x1, y0); + float[] p2 = transform(transform, x1, y1); + float[] p3 = transform(transform, x0, y1); + return new float[][]{ + {p0[0], p0[1], q.s0, t0}, + {p2[0], p2[1], q.s1, t1}, + {p1[0], p1[1], q.s1, t0}, + {p0[0], p0[1], q.s0, t0}, + {p3[0], p3[1], q.s0, t1}, + {p2[0], p2[1], q.s1, t1} + }; + } + + private static strictfp float[] transform(float[] matrix, float x, float y) { + return new float[]{x * matrix[0] + y * matrix[2] + matrix[4], x * matrix[1] + y * matrix[3] + matrix[5]}; + } + + public static strictfp float drawText( + FontServices.Iterator iterator, float originalX, float scale, float[] transform, FontServices.TextBackend backend, FontServices.TextStats stats + ) { + int length = iterator.bytes.length; + int capacity = (length >= 3 ? length : 2) * 6; + if (!backend.reserve(capacity + 255 & 2147483392)) { + return originalX; + } else { + List vertices = new ArrayList<>(); + FontServices.Quad quad = new FontServices.Quad(); + int[] previous = iteratorState(iterator); + float[] previousPosition = new float[]{iterator.cursor.x, iterator.cursor.y}; + float inverse = c(2840212) / scale; + + while (iterator.next(quad)) { + if (iterator.previous == -1) { + if (!vertices.isEmpty()) { + backend.draw(vertices); + stats.drawCalls++; + stats.triangles = stats.triangles + vertices.size() / 3; + } + + if (!backend.allocateTextAtlas()) { + vertices.clear(); + break; + } + + restoreIterator(iterator, previous, previousPosition); + iterator.next(quad); + vertices.clear(); + if (iterator.previous == -1) { + break; + } + } + + previous = iteratorState(iterator); + previousPosition = new float[]{iterator.cursor.x, iterator.cursor.y}; + if (vertices.size() + 6 <= capacity) { + Collections.addAll(vertices, textVertices(quad, inverse, transform)); + } + } + + backend.uploadDirtyTexture(); + backend.draw(vertices); + stats.drawCalls++; + stats.triangles = stats.triangles + vertices.size() / 3; + return iterator.cursor.x / scale; + } + } + + private static strictfp int[] iteratorState(FontServices.Iterator i) { + return new int[]{i.next, i.start, i.previous, i.utf8.state, i.utf8.codepoint, Float.floatToRawIntBits(i.x), Float.floatToRawIntBits(i.y)}; + } + + private static strictfp void restoreIterator(FontServices.Iterator i, int[] state, float[] cursor) { + i.next = state[0]; + i.start = state[1]; + i.previous = state[2]; + i.utf8.state = state[3]; + i.utf8.codepoint = state[4]; + i.x = Float.intBitsToFloat(state[5]); + i.y = Float.intBitsToFloat(state[6]); + i.cursor.x = cursor[0]; + i.cursor.y = cursor[1]; + } + + public static final strictfp class Atlas { + public final int width; + public final int height; + public final List nodes = new ArrayList<>(); + + public Atlas(int width, int height) { + this.width = width; + this.height = height; + this.nodes.add(new FontServices.Atlas.Node(0, 0, width)); + } + + public strictfp int[] add(int w, int h) { + int count = this.nodes.size(); + int best = -1; + int bestX = -1; + int bestY = -1; + int bestHeight = this.height; + int bestWidth = this.width; + + for (int index = 0; index < count; index++) { + FontServices.Atlas.Node first = this.nodes.get(index); + int x = first.x; + if (w + x <= this.width) { + int y = first.y; + int remaining = w; + int scan = index; + boolean fit = true; + + while (remaining > 0) { + if (scan >= count) { + fit = false; + break; + } + + FontServices.Atlas.Node node = this.nodes.get(scan++); + y = Math.max(y, node.y); + if (y + h > this.height) { + fit = false; + break; + } + + remaining -= node.width; + } + + if (fit && y != -1) { + int bottom = y + h; + if (bottom < bestHeight || bottom == bestHeight && first.width < bestWidth) { + best = index; + bestX = x; + bestY = y; + bestHeight = bottom; + bestWidth = first.width; + } + } + } + } + + if (best == -1) { + return null; + } else { + this.nodes.add(best, new FontServices.Atlas.Node(bestX, bestY + h, w)); + int indexx = best + 1; + + while (indexx < this.nodes.size()) { + FontServices.Atlas.Node previous = this.nodes.get(indexx - 1); + FontServices.Atlas.Node current = this.nodes.get(indexx); + int end = previous.x + previous.width; + int x = current.x; + if (end <= x) { + break; + } + + current.x = (short)end; + current.width = (short)(x - end + current.width); + if (current.width > 0) { + break; + } + + this.nodes.remove(indexx); + } + + int i = 0; + + while (i < this.nodes.size() - 1) { + FontServices.Atlas.Node a = this.nodes.get(i); + FontServices.Atlas.Node b = this.nodes.get(i + 1); + if (a.y != b.y) { + i++; + } else { + a.width = (short)(a.width + b.width); + this.nodes.remove(i + 1); + } + } + + return new int[]{bestX, bestY}; + } + } + + public static final strictfp class Node { + public short x; + public short y; + public short width; + + Node(int x, int y, int width) { + this.x = (short)x; + this.y = (short)y; + this.width = (short)width; + } + } + } + + public static final strictfp class Cursor { + public float x; + public float y; + + public Cursor(float x, float y) { + this.x = x; + this.y = y; + } + } + + public interface Face { + FontServices.Glyph glyph(int var1, int var2, short var3, int var4); + + int kern(int var1, int var2); + + float ascender(); + + float descender(); + + float lineHeight(); + + int unitsPerEm(); + } + + public static final strictfp class Glyph { + public int index; + public short x0; + public short y0; + public short x1; + public short y1; + public short advance; + public short xOffset; + public short yOffset; + } + + public static final strictfp class Iterator { + public final FontServices.Face face; + public final FontServices.Cursor cursor; + public final byte[] bytes; + public final FontServices.Utf8 utf8 = new FontServices.Utf8(); + public int next; + public int start; + public int previous = -1; + public short size; + public short blur; + public float scale; + public float spacing; + public final int bitmapRequired; + public float x; + public float y; + public final boolean downward; + public float inverseWidth; + public float inverseHeight; + + public Iterator( + FontServices.Face face, + float x, + float y, + byte[] text, + float fontSize, + float blur, + float spacing, + int alignment, + int bitmapRequired, + boolean downward, + float inverseWidth, + float inverseHeight + ) { + this.face = face; + this.bytes = (byte[])text.clone(); + int raw = NumericMath.truncateInt(fontSize * FontServices.c(2838236)); + this.size = (short)raw; + this.blur = (short)NumericMath.truncateInt(blur); + this.scale = (float)raw / FontServices.c(2838236) / (float)face.unitsPerEm(); + this.spacing = spacing; + this.bitmapRequired = bitmapRequired; + this.downward = downward; + this.inverseWidth = inverseWidth; + this.inverseHeight = inverseHeight; + if ((alignment & 1) == 0) { + if ((alignment & 4) != 0) { + x -= FontServices.bounds(face, x, y, text, text.length, fontSize, blur, spacing, alignment, downward, inverseWidth, inverseHeight, null); + } else if ((alignment & 2) != 0) { + x += FontServices.bounds(face, x, y, text, text.length, fontSize, blur, spacing, alignment, downward, inverseWidth, inverseHeight, null) + * FontServices.c(2838240); + } + } + + y += FontServices.vertical(face, downward, alignment, (float)this.size, 2838236, 2838244, 2838248, 2838240, true); + this.cursor = new FontServices.Cursor(x, y); + this.x = x; + this.y = y; + } + + public strictfp boolean next(FontServices.Quad output) { + this.start = this.next; + if (this.next == this.bytes.length) { + return false; + } else { + do { + int index = this.next++; + if (this.utf8.next(this.bytes[index])) { + this.x = this.cursor.x; + this.y = this.cursor.y; + FontServices.Glyph glyph = this.face.glyph(this.utf8.codepoint, this.size & '\uffff', this.blur, this.bitmapRequired); + if (glyph == null) { + this.previous = -1; + } else { + FontServices.Quad q = FontServices.quad( + this.face, glyph, this.previous, this.scale, this.spacing, this.cursor, this.downward, this.inverseWidth, this.inverseHeight + ); + output.x0 = q.x0; + output.y0 = q.y0; + output.x1 = q.x1; + output.y1 = q.y1; + output.s0 = q.s0; + output.t0 = q.t0; + output.s1 = q.s1; + output.t1 = q.t1; + this.previous = glyph.index; + } + break; + } + } while (this.next != this.bytes.length); + + return true; + } + } + } + + public static final strictfp class Quad { + public float x0; + public float y0; + public float x1; + public float y1; + public float s0; + public float t0; + public float s1; + public float t1; + } + + public interface TextBackend { + boolean reserve(int var1); + + boolean allocateTextAtlas(); + + void draw(List var1); + + void uploadDirtyTexture(); + } + + public static final strictfp class TextStats { + public int drawCalls; + public int triangles; + } + + public static final strictfp class Utf8 { + public int state; + public int codepoint; + + public strictfp boolean next(int b) { + b &= 255; + int type = FontServices.byteAt(2842960 + b); + this.codepoint = this.state != 0 ? this.codepoint << 6 | b & 63 : 255 >>> (type & 31) & b; + this.state = FontServices.byteAt(2843216 + this.state + type); + return this.state == 0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontTables.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontTables.java new file mode 100644 index 0000000..ac11044 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/FontTables.java @@ -0,0 +1,534 @@ +package dev.slinky.client.render.font; + +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +public final strictfp class FontTables { + public static strictfp int u16(byte[] b, int p) { + return (b[p] & 0xFF) << 8 | b[p + 1] & 0xFF; + } + + public static strictfp int s16(byte[] b, int p) { + return (short)u16(b, p); + } + + public static strictfp int u32(byte[] b, int p) { + return (b[p] & 0xFF) << 24 | (b[p + 1] & 0xFF) << 16 | (b[p + 2] & 0xFF) << 8 | b[p + 3] & 0xFF; + } + + public static strictfp int offset(FontTables.Font f, int glyph) { + if (glyph < f.glyphCount && f.locaFormat <= 1) { + int first = f.locaFormat == 0 ? u16(f.data, f.loca + glyph * 2) * 2 : u32(f.data, f.loca + glyph * 4); + int second = f.locaFormat == 0 ? u16(f.data, f.loca + glyph * 2 + 2) * 2 : u32(f.data, f.loca + glyph * 4 + 4); + return first == second ? -1 : f.glyf + first; + } else { + return -1; + } + } + + public static strictfp int map(FontTables.Font f, int cp) { + byte[] b = f.data; + int at = f.cmap; + int format = u16(b, at); + if (format == 0) { + return cp >= u16(b, at + 2) - 6 ? 0 : b[at + 6 + cp] & 0xFF; + } else if (format == 6) { + int first = u16(b, at + 6); + int count = u16(b, at + 8); + return Integer.compareUnsigned(cp, first) >= 0 && Integer.compareUnsigned(cp, first + count) < 0 ? u16(b, at + 10 + (cp - first) * 2) : 0; + } else if (format == 4) { + if (cp > 65535) { + return 0; + } else { + int segments = u16(b, at + 6) >>> 1; + int range = u16(b, at + 8) >>> 1; + int selector = u16(b, at + 10); + int shift = u16(b, at + 12) >>> 1; + int endCounts = at + 14; + int search = endCounts; + if (cp >= u16(b, endCounts + shift * 2)) { + search = endCounts + shift * 2; + } + + for (search -= 2; selector != 0; selector--) { + range >>>= 1; + if (cp > u16(b, search + range * 2)) { + search += range * 2; + } + } + + search += 2; + int item = search - endCounts >>> 1 & 65535; + int first = u16(b, at + 16 + segments * 2 + item * 2); + if (cp < first) { + return 0; + } else { + int word = at + 16 + segments * 6 + item * 2; + int relative = u16(b, word); + return relative == 0 ? cp + u16(b, at + 16 + segments * 4 + item * 2) & 65535 : u16(b, word + relative + (cp - first) * 2); + } + } + } else { + if (format == 12 || format == 13) { + int low = 0; + int high = u32(b, at + 12); + + while (low < high) { + int mid = low + (high - low >>> 1); + int group = at + 16 + mid * 12; + int first = u32(b, group); + int last = u32(b, group + 4); + if (Integer.compareUnsigned(cp, first) < 0) { + high = mid; + } else { + if (Integer.compareUnsigned(cp, last) <= 0) { + return u32(b, group + 8) + (format == 12 ? cp - first : 0); + } + + low = mid + 1; + } + } + } + + return 0; + } + } + + public static strictfp int coverage(byte[] b, int at, int glyph) { + int format = u16(b, at); + int low = 0; + int high = u16(b, at + 2) - 1; + + while (low <= high) { + int mid = low + high >> 1; + if (format == 1) { + int value = u16(b, at + 4 + mid * 2); + if (glyph < value) { + high = mid - 1; + } else { + if (Integer.compareUnsigned(glyph, value) <= 0) { + return mid; + } + + low = mid + 1; + } + } else { + if (format != 2) { + break; + } + + int row = at + 4 + mid * 6; + int first = u16(b, row); + int last = u16(b, row + 2); + if (glyph < first) { + high = mid - 1; + } else { + if (Integer.compareUnsigned(glyph, last) <= 0) { + return glyph - first + u16(b, row + 4); + } + + low = mid + 1; + } + } + } + + return -1; + } + + public static strictfp int glyphClass(byte[] b, int at, int glyph) { + int format = u16(b, at); + if (format == 1) { + int first = u16(b, at + 2); + int count = u16(b, at + 4); + return glyph >= first && Integer.compareUnsigned(glyph, first + count) < 0 ? u16(b, at + 6 + (glyph - first) * 2) : -1; + } else { + if (format == 2) { + int low = 0; + int high = u16(b, at + 2) - 1; + + while (low <= high) { + int mid = low + high >> 1; + int row = at + 4 + mid * 6; + if (glyph < u16(b, row)) { + high = mid - 1; + } else { + if (Integer.compareUnsigned(glyph, u16(b, row + 2)) <= 0) { + return u16(b, row + 4); + } + + low = mid + 1; + } + } + } + + return -1; + } + } + + public static strictfp int kerning(FontTables.Font f, int previous, int current) { + byte[] b = f.data; + if (f.gpos == 0) { + if (f.kern == 0) { + return 0; + } else { + int at = f.kern; + if ((b[at + 2] | b[at + 3]) != 0 && u16(b, at + 8) == 1) { + int key = previous << 16 | current; + int low = 0; + int high = u16(b, at + 10) - 1; + + while (low <= high) { + int mid = low + high >> 1; + int row = at + 18 + mid * 6; + int value = u32(b, row); + if (Integer.compareUnsigned(key, value) < 0) { + high = mid - 1; + } else { + if (Integer.compareUnsigned(key, value) <= 0) { + return s16(b, row + 4); + } + + low = mid + 1; + } + } + + return 0; + } else { + return 0; + } + } + } else { + int table = f.gpos; + if (u16(b, table) == 1 && (b[table + 2] | b[table + 3]) == 0) { + int lookups = table + u16(b, table + 8); + int count = u16(b, lookups); + + for (int i = 0; i < count; i++) { + int lookup = lookups + u16(b, lookups + 2 + i * 2); + if (u16(b, lookup) == 2) { + int subtables = u16(b, lookup + 4); + + for (int j = 0; j < subtables; j++) { + int pair = lookup + u16(b, lookup + 6 + j * 2); + int format = u16(b, pair); + int covered = coverage(b, pair + u16(b, pair + 2), previous); + if (covered != -1) { + if (format == 1) { + if (u16(b, pair + 4) != 4 || (b[pair + 6] | b[pair + 7]) != 0) { + return 0; + } + + int values = pair + u16(b, pair + 10 + covered * 2); + int low = 0; + int high = u16(b, values) - 1; + + while (low <= high) { + int mid = low + high >> 1; + int record = values + 2 + mid * 4; + if (current < u16(b, record)) { + high = mid - 1; + } else { + if (Integer.compareUnsigned(current, u16(b, record)) <= 0) { + return s16(b, record + 2); + } + + low = mid + 1; + } + } + } else if (format == 2) { + int a = glyphClass(b, pair + u16(b, pair + 8), previous); + int c = glyphClass(b, pair + u16(b, pair + 10), current); + if (u16(b, pair + 4) != 4 || (b[pair + 6] | b[pair + 7]) != 0) { + return 0; + } + + int ac = u16(b, pair + 12); + int cc = u16(b, pair + 14); + if (a >= 0 && Integer.compareUnsigned(a, ac) < 0 && c >= 0 && Integer.compareUnsigned(c, cc) < 0) { + return s16(b, pair + 16 + a * cc * 2 + c * 2); + } + } + } + } + } + } + + return 0; + } else { + return 0; + } + } + } + + public static strictfp int[] box(FontTables.Font f, int glyph) { + if (f.cff != null) { + FontCff.Context context = new FontCff.Context(true); + boolean success = FontCff.run(f.cff, glyph, context); + return success ? new int[]{context.minX, context.minY, context.maxX, context.maxY} : new int[4]; + } else { + int p = offset(f, glyph); + return p < 0 ? null : new int[]{s16(f.data, p + 2), s16(f.data, p + 4), s16(f.data, p + 6), s16(f.data, p + 8)}; + } + } + + private static strictfp void vertex(List out, int type, int x, int y, int cx, int cy) { + out.add(new FontRasterization.Vertex(type, x, y, cx, cy, 0, 0)); + } + + private static strictfp void close(List out, boolean off, boolean firstOff, int x, int y, int firstCX, int firstCY, int cx, int cy) { + if (firstOff) { + if (off) { + vertex(out, 3, cx + firstCX >> 1, cy + firstCY >> 1, cx, cy); + } + + vertex(out, 3, x, y, firstCX, firstCY); + } else if (off) { + vertex(out, 3, x, y, cx, cy); + } else { + vertex(out, 2, x, y, 0, 0); + } + } + + private static strictfp short transformed(float value, boolean saturate) { + int i = NumericMath.truncateInt(value); + return (short)(saturate ? (i > 32767 ? 32767 : (i < -32768 ? -32768 : i)) : i); + } + + public static strictfp List shape(FontTables.Font f, int glyph) { + if (f.cff != null) { + FontCff.Context count = new FontCff.Context(true); + if (FontCff.run(f.cff, glyph, count) && f.scratch.reserve(count.count * 14 + 15 & -16)) { + FontCff.Context draw = new FontCff.Context(false); + return FontCff.run(f.cff, glyph, draw) ? draw.vertices : Collections.emptyList(); + } else { + return Collections.emptyList(); + } + } else { + int at = offset(f, glyph); + if (at < 0) { + return Collections.emptyList(); + } else { + byte[] b = f.data; + int contours = s16(b, at); + List output = new ArrayList<>(); + if (contours > 0) { + int ends = at + 10; + int last = u16(b, ends + contours * 2 - 2); + int n = last + 1; + if (!f.scratch.reserve((last + 2 * contours) * 14 + 29 & 2147483632)) { + return output; + } else { + int p = at + 12 + contours * 2 + u16(b, at + 10 + contours * 2); + int[] flags = new int[n]; + int[] xs = new int[n]; + int[] ys = new int[n]; + int flag = 0; + int repeats = 0; + + for (int i = 0; i < n; i++) { + if (repeats == 0) { + flag = b[p++] & 255; + if ((flag & 8) != 0) { + repeats = b[p++] & 255; + } + } else { + repeats--; + } + + flags[i] = flag; + } + + int coordinate = 0; + + for (int i = 0; i < n; i++) { + flag = flags[i]; + if ((flag & 2) != 0) { + int delta = b[p++] & 255; + coordinate += (flag & 16) != 0 ? delta : -delta; + } else if ((flag & 16) == 0) { + coordinate += s16(b, p); + p += 2; + } + + xs[i] = (short)coordinate; + } + + coordinate = 0; + + for (int i = 0; i < n; i++) { + flag = flags[i]; + if ((flag & 4) != 0) { + int delta = b[p++] & 255; + coordinate += (flag & 32) != 0 ? delta : -delta; + } else if ((flag & 32) == 0) { + coordinate += s16(b, p); + p += 2; + } + + ys[i] = (short)coordinate; + } + + int nextMove = 0; + int contour = 0; + int x = 0; + int y = 0; + int cx = 0; + int cy = 0; + int firstCX = 0; + int firstCY = 0; + boolean off = false; + boolean firstOff = false; + + for (int i = 0; i < n; i++) { + int px = xs[i]; + int py = ys[i]; + if (nextMove == i) { + if (i != 0) { + close(output, off, firstOff, x, y, firstCX, firstCY, cx, cy); + } + + firstOff = (flags[i] & 1) == 0; + if (firstOff) { + firstCX = px; + firstCY = py; + if ((flags[i + 1] & 1) == 0) { + x = px + xs[i + 1] >> 1; + y = py + ys[i + 1] >> 1; + } else { + x = xs[i + 1]; + y = ys[i + 1]; + i++; + } + } else { + x = px; + y = py; + } + + vertex(output, 1, x, y, 0, 0); + off = false; + nextMove = 1 + u16(b, ends + contour++ * 2); + } else if ((flags[i] & 1) == 0) { + if (off) { + vertex(output, 3, cx + px >> 1, cy + py >> 1, cx, cy); + } + + cx = px; + cy = py; + off = true; + } else { + vertex(output, off ? 3 : 2, px, py, off ? cx : 0, off ? cy : 0); + off = false; + } + } + + close(output, off, firstOff, x, y, firstCX, firstCY, cx, cy); + return output; + } + } else if (contours == 0) { + return output; + } else { + int p = at + 10; + float unit = RenderConstants.f(2837572); + float fraction = RenderConstants.f(2837568); + + int flags; + do { + flags = u16(b, p); + int childGlyph = u16(b, p + 2); + p += 4; + float a = unit; + float c = 0.0F; + float d = unit; + float bb = 0.0F; + float tx = 0.0F; + float ty = 0.0F; + if ((flags & 2) != 0) { + if ((flags & 1) != 0) { + tx = (float)s16(b, p); + ty = (float)s16(b, p + 2); + p += 4; + } else { + tx = (float)b[p]; + ty = (float)b[p + 1]; + p += 2; + } + } + + if ((flags & 8) != 0) { + a = d = (float)s16(b, p) * fraction; + p += 2; + } else if ((flags & 64) != 0) { + a = (float)s16(b, p) * fraction; + d = (float)s16(b, p + 2) * fraction; + p += 4; + } else if ((flags & 128) != 0) { + a = (float)s16(b, p) * fraction; + bb = (float)s16(b, p + 2) * fraction; + c = (float)s16(b, p + 4) * fraction; + d = (float)s16(b, p + 6) * fraction; + p += 8; + } + + List child = shape(f, childGlyph); + if (!child.isEmpty()) { + float sx = (float)StrictMath.sqrt((double)(a * a + bb * bb)); + float sy = (float)StrictMath.sqrt((double)(c * c + d * d)); + int n = child.size(); + int vectorCount = n >= 9 ? n - (n % 8 != 0 ? n % 8 : 8) : 0; + + for (int ix = 0; ix < n; ix++) { + FontRasterization.Vertex v = child.get(ix); + boolean packed = ix >= vectorCount || ix % 8 >= 1 && ix % 8 <= 3; + boolean packedCX = packed && (ix >= vectorCount || ix % 8 != 2); + float x = (float)v.x; + float y = (float)v.y; + float cx = (float)v.cx; + float cy = (float)v.cy; + v.x = transformed(sx * (c * y + a * x + tx), packed); + v.y = transformed(sy * (bb * x + d * y + ty), packed); + v.cx = transformed(sx * (c * cy + a * cx + tx), packedCX); + v.cy = transformed(sy * (bb * cx + d * cy + ty), packed); + } + + if (!f.scratch.reserve((output.size() + n) * 14)) { + return Collections.emptyList(); + } + + output.addAll(child); + } + } while ((flags & 32) != 0); + + return output; + } + } + } + } + + private FontTables() { + } + + public static final strictfp class Font { + public final byte[] data; + public int glyphCount; + public int loca; + public int head; + public int glyf; + public int hhea; + public int hmtx; + public int kern; + public int gpos; + public int cmap; + public int locaFormat; + public FontCff.Info cff; + public FontRasterization.Scratch scratch; + + public Font(byte[] data, FontRasterization.Scratch scratch) { + this.data = Objects.requireNonNull(data); + this.scratch = Objects.requireNonNull(scratch); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/font/GameFontProvider.java b/SlinkyClient/src/main/java/dev/slinky/client/render/font/GameFontProvider.java new file mode 100644 index 0000000..c6a5108 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/font/GameFontProvider.java @@ -0,0 +1,183 @@ +package dev.slinky.client.render.font; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import javax.imageio.ImageIO; +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; + +public final class GameFontProvider implements FontGlyphCache.Source { + private final Minecraft game; + private final boolean bold; + private final boolean unicode; + private final IResourceManager resources; + private final BufferedImage ascii; + private final byte[] sizes = new byte[65536]; + private final Map pages = new HashMap<>(); + private final Map> outlines = new HashMap<>(); + private final FontRasterization.Scratch scratch = new FontRasterization.Scratch(() -> { + throw new IllegalStateException("Game glyph scratch budget exceeded"); + }); + + public GameFontProvider(Minecraft game) throws IOException { + this(game, false); + } + + public GameFontProvider(Minecraft game, boolean bold) throws IOException { + this.game = game; + this.bold = bold; + this.unicode = game.fontRendererObj.getUnicodeFlag(); + this.resources = game.getResourceManager(); + this.ascii = this.image("textures/font/ascii.png"); + + try (InputStream input = this.resources.getResource(new ResourceLocation("font/glyph_sizes.bin")).getInputStream()) { + int offset = 0; + + while (offset < this.sizes.length) { + int read = input.read(this.sizes, offset, this.sizes.length - offset); + if (read < 0) { + throw new IOException("Incomplete game glyph-size resource"); + } + + offset += read; + } + } + } + + private BufferedImage image(String path) throws IOException { + BufferedImage var5; + try (InputStream input = this.resources.getResource(new ResourceLocation(path)).getInputStream()) { + BufferedImage result = ImageIO.read(input); + if (result == null) { + throw new IOException("Unreadable game font bitmap " + path); + } + + var5 = result; + } + + return var5; + } + + @Override + public int unitsPerEm() { + return 18; + } + + boolean isCurrent() { + return this.unicode == this.game.fontRendererObj.getUnicodeFlag(); + } + + @Override + public int map(int codepoint) { + return codepoint >= 0 && codepoint <= 65535 ? codepoint : 0; + } + + @Override + public int advance(int glyph) { + return (Math.max(0, this.game.fontRendererObj.getCharWidth((char)glyph)) + (this.bold && glyph != 167 ? 1 : 0)) * 2; + } + + @Override + public int kern(int previous, int current) { + return 0; + } + + @Override + public FontRasterization.Scratch scratch() { + return this.scratch; + } + + @Override + public int[] box(int glyph) { + List vertices = this.shape(glyph); + if (vertices.isEmpty()) { + return null; + } else { + int minX = Integer.MAX_VALUE; + int minY = Integer.MAX_VALUE; + int maxX = Integer.MIN_VALUE; + int maxY = Integer.MIN_VALUE; + + for (FontRasterization.Vertex vertex : vertices) { + minX = Math.min(minX, vertex.x); + minY = Math.min(minY, vertex.y); + maxX = Math.max(maxX, vertex.x); + maxY = Math.max(maxY, vertex.y); + } + + return new int[]{minX, minY, maxX, maxY}; + } + } + + @Override + public List shape(int glyph) { + List existing = this.outlines.get(glyph); + if (existing != null) { + return existing; + } else { + List result = new ArrayList<>(); + if (glyph != 32 && glyph != 167) { + boolean basic = glyph >= 33 && glyph <= 126 && !this.unicode; + + BufferedImage bitmap; + try { + if (basic) { + bitmap = this.ascii; + } else { + int page = glyph >>> 8; + bitmap = this.pages.get(page); + if (bitmap == null && this.sizes[glyph] != 0) { + bitmap = this.image(String.format(Locale.ROOT, "textures/font/unicode_page_%02x.png", page)); + this.pages.put(page, bitmap); + } + + if (bitmap == null) { + this.outlines.put(glyph, result); + return result; + } + } + } catch (IOException var20) { + throw new IllegalStateException("Game font resource failed", var20); + } + + int slot = glyph & 0xFF; + int cellWidth = bitmap.getWidth() / 16; + int cellHeight = bitmap.getHeight() / 16; + int left = (slot & 15) * cellWidth; + int top = (slot >>> 4) * cellHeight; + int start = basic ? 0 : (this.sizes[glyph] & 255) >>> 4; + int units = basic ? 2 : 1; + int end = basic ? cellWidth : Math.min(cellWidth, (this.sizes[glyph] & 15) + 1); + + for (int y = 0; y < cellHeight; y++) { + for (int x = start; x < end; x++) { + if (bitmap.getRGB(left + x, top + y) >>> 24 != 0) { + int x0 = (x - start) * units; + int x1 = x0 + units + (this.bold ? 2 : 0); + int y1 = 16 - y * units; + int y0 = y1 - units; + result.add(new FontRasterization.Vertex(1, x0, y0, 0, 0, 0, 0)); + result.add(new FontRasterization.Vertex(2, x1, y0, 0, 0, 0, 0)); + result.add(new FontRasterization.Vertex(2, x1, y1, 0, 0, 0, 0)); + result.add(new FontRasterization.Vertex(2, x0, y1, 0, 0, 0, 0)); + result.add(new FontRasterization.Vertex(2, x0, y0, 0, 0, 0, 0)); + } + } + } + + this.outlines.put(glyph, result); + return result; + } else { + this.outlines.put(glyph, result); + return result; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlCacheResync.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlCacheResync.java new file mode 100644 index 0000000..30f7325 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlCacheResync.java @@ -0,0 +1,75 @@ +package dev.slinky.client.render.hook; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.GL11; + +final class GlCacheResync { + private static final ByteBuffer MASK = BufferUtils.createByteBuffer(16); + private static final FloatBuffer COLOR = BufferUtils.createFloatBuffer(16); + private static final int BLEND_DST_RGB = 32968; + private static final int BLEND_SRC_RGB = 32969; + private static final int BLEND_DST_ALPHA = 32970; + private static final int BLEND_SRC_ALPHA = 32971; + private static int spareTexture; + + private GlCacheResync() { + } + + static void run() { + flag(3042, GlStateManager::enableBlend, GlStateManager::disableBlend); + flag(3553, GlStateManager::enableTexture2D, GlStateManager::disableTexture2D); + flag(3008, GlStateManager::enableAlpha, GlStateManager::disableAlpha); + flag(2929, GlStateManager::enableDepth, GlStateManager::disableDepth); + flag(2884, GlStateManager::enableCull, GlStateManager::disableCull); + flag(2896, GlStateManager::enableLighting, GlStateManager::disableLighting); + int src = GL11.glGetInteger(32969); + int dst = GL11.glGetInteger(32968); + int srcAlpha = GL11.glGetInteger(32971); + int dstAlpha = GL11.glGetInteger(32970); + GlStateManager.tryBlendFuncSeparate(other(src), other(dst), other(srcAlpha), other(dstAlpha)); + GlStateManager.tryBlendFuncSeparate(src, dst, srcAlpha, dstAlpha); + ((Buffer)MASK).clear(); + GL11.glGetBoolean(3107, MASK); + boolean r = MASK.get(0) != 0; + boolean g = MASK.get(1) != 0; + boolean b = MASK.get(2) != 0; + boolean a = MASK.get(3) != 0; + GlStateManager.colorMask(!r, !g, !b, !a); + GlStateManager.colorMask(r, g, b, a); + boolean depthMask = GL11.glGetBoolean(2930); + GlStateManager.depthMask(!depthMask); + GlStateManager.depthMask(depthMask); + int shade = GL11.glGetInteger(2900); + GlStateManager.shadeModel(shade == 7424 ? 7425 : 7424); + GlStateManager.shadeModel(shade); + ((Buffer)COLOR).clear(); + GL11.glGetFloat(2816, COLOR); + GlStateManager.resetColor(); + GlStateManager.color(COLOR.get(0), COLOR.get(1), COLOR.get(2), COLOR.get(3)); + int bound = GL11.glGetInteger(32873); + if (bound == 0 && spareTexture == 0) { + spareTexture = GL11.glGenTextures(); + } + + GlStateManager.bindTexture(bound == 0 ? spareTexture : 0); + GlStateManager.bindTexture(bound); + } + + private static void flag(int capability, Runnable enable, Runnable disable) { + if (GL11.glIsEnabled(capability)) { + disable.run(); + enable.run(); + } else { + enable.run(); + disable.run(); + } + } + + private static int other(int factor) { + return factor == 0 ? 1 : 0; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateCacheSnapshot.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateCacheSnapshot.java new file mode 100644 index 0000000..e8c51dd --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateCacheSnapshot.java @@ -0,0 +1,128 @@ +package dev.slinky.client.render.hook; + +import java.lang.reflect.Array; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Collections; +import java.util.IdentityHashMap; +import java.util.List; +import java.util.Set; +import net.minecraft.client.renderer.GlStateManager; + +public final class GlStateCacheSnapshot { + private final List values = new ArrayList<>(); + private static List layout; + + private GlStateCacheSnapshot() { + } + + public static GlStateCacheSnapshot capture() { + List fields = layout; + if (fields == null) { + layout = fields = discover(); + } + + GlStateCacheSnapshot snapshot = new GlStateCacheSnapshot(); + + try { + for (Object[] entry : fields) { + snapshot.values.add(new GlStateCacheSnapshot.Value((Field)entry[0], entry[1])); + } + + return snapshot; + } catch (ReflectiveOperationException var4) { + throw new IllegalStateException("Cannot snapshot Minecraft's GL state cache", var4); + } + } + + private static List discover() { + GlStateCacheSnapshot found = new GlStateCacheSnapshot(); + Set visited = Collections.newSetFromMap(new IdentityHashMap<>()); + + try { + for (Field field : GlStateManager.class.getDeclaredFields()) { + if (Modifier.isStatic(field.getModifiers())) { + field.setAccessible(true); + if (field.getType().isPrimitive()) { + if (!Modifier.isFinal(field.getModifiers())) { + found.values.add(new GlStateCacheSnapshot.Value(field, null)); + } + } else { + found.captureObject(field.get(null), visited); + } + } + } + } catch (ReflectiveOperationException var6) { + throw new IllegalStateException("Cannot snapshot Minecraft's GL state cache", var6); + } + + if (found.values.isEmpty()) { + throw new IllegalStateException("Minecraft's GL cache layout is unsupported"); + } else { + List result = new ArrayList<>(found.values.size()); + + for (GlStateCacheSnapshot.Value value : found.values) { + result.add(new Object[]{value.field, value.owner}); + } + + return result; + } + } + + private void captureObject(Object object, Set visited) throws IllegalAccessException { + if (object != null && visited.add(object)) { + Class type = object.getClass(); + if (!type.isArray()) { + if (type.getName().startsWith(GlStateManager.class.getName() + "$")) { + for (Field field : type.getDeclaredFields()) { + if (!Modifier.isStatic(field.getModifiers())) { + field.setAccessible(true); + if (field.getType().isPrimitive()) { + if (!Modifier.isFinal(field.getModifiers())) { + this.values.add(new GlStateCacheSnapshot.Value(field, object)); + } + } else { + this.captureObject(field.get(object), visited); + } + } + } + } + } else if (!type.getComponentType().isPrimitive()) { + for (int i = 0; i < Array.getLength(object); i++) { + this.captureObject(Array.get(object, i), visited); + } + } + } + } + + public int valueCount() { + return this.values.size(); + } + + public void restore() { + try { + for (GlStateCacheSnapshot.Value value : this.values) { + value.restore(); + } + } catch (IllegalAccessException var3) { + throw new IllegalStateException("Cannot restore Minecraft's GL state cache", var3); + } + } + + private static final class Value { + final Field field; + final Object owner; + final Object value; + + Value(Field field, Object owner) throws IllegalAccessException { + this.field = field; + this.owner = owner; + this.value = field.get(owner); + } + + void restore() throws IllegalAccessException { + this.field.set(this.owner, this.value); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateScope.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateScope.java new file mode 100644 index 0000000..0043e48 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/GlStateScope.java @@ -0,0 +1,120 @@ +package dev.slinky.client.render.hook; + +import org.lwjgl.opengl.GL11; + +public final class GlStateScope implements AutoCloseable { + private static final GlStateScope.Attributes OPENGL = new GlStateScope.Attributes() { + @Override + public void pushServer() { + GL11.glPushAttrib(1048575); + } + + @Override + public void pushClient() { + GL11.glPushClientAttrib(3); + } + + @Override + public void popClient() { + GL11.glPopClientAttrib(); + } + + @Override + public void popServer() { + GL11.glPopAttrib(); + } + }; + private static int depth; + private final GlStateScope.Attributes attributes; + private final Runnable restoreCache; + private boolean server; + private boolean client; + private boolean closed; + private boolean counted; + + GlStateScope(GlStateScope.Attributes attributes, Runnable restoreCache) { + this.attributes = attributes; + this.restoreCache = restoreCache; + + try { + attributes.pushServer(); + this.server = true; + attributes.pushClient(); + this.client = true; + } catch (Error | RuntimeException var6) { + try { + this.close(); + } catch (Error | RuntimeException var5) { + var6.addSuppressed(var5); + } + + throw var6; + } + } + + public static GlStateScope open() { + GlStateCacheSnapshot cache = GlStateCacheSnapshot.capture(); + GlStateScope scope = new GlStateScope(OPENGL, cache::restore); + depth++; + scope.counted = true; + return scope; + } + + public static boolean active() { + return depth > 0; + } + + @Override + public void close() { + if (!this.closed) { + this.closed = true; + if (this.counted) { + depth--; + } + + Throwable failure = null; + if (this.client) { + failure = restore(this.attributes::popClient, failure); + } + + if (this.server) { + failure = restore(this.attributes::popServer, failure); + } + + failure = restore(this.restoreCache, failure); + if (this.counted && depth == 0 && failure == null) { + failure = restore(GlCacheResync::run, failure); + } + + if (failure instanceof RuntimeException) { + throw (RuntimeException)failure; + } else if (failure instanceof Error) { + throw (Error)failure; + } + } + } + + private static Throwable restore(Runnable action, Throwable failure) { + try { + action.run(); + } catch (Error | RuntimeException var3) { + if (failure == null) { + return var3; + } + + failure.addSuppressed(var3); + } + + return failure; + } + + interface Attributes { + void pushServer(); + + void pushClient(); + + void popClient(); + + void popServer(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/MinecraftUiSurface.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/MinecraftUiSurface.java new file mode 100644 index 0000000..288298b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/MinecraftUiSurface.java @@ -0,0 +1,300 @@ +package dev.slinky.client.render.hook; + +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.module.ModuleManager; +import java.nio.ByteBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.texture.TextureUtil; +import org.lwjgl.LWJGLException; +import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.GL11; + +final class MinecraftUiSurface implements UiFrameDriver.Surface { + private static final int GL_FRAMEBUFFER_BINDING = 36006; + private final ModuleManager modules; + private int framebuffer = -1; + private int texture = -1; + private int width; + private int height; + private int previousMatrix; + private int previousFramebuffer; + private boolean drawing; + private boolean direct; + private double previousDirectDraw = -1.0; + private double canvasScale; + private GlStateScope state; + private boolean projectionPushed; + private boolean modelPushed; + + MinecraftUiSurface(ModuleManager modules) { + this.modules = modules; + } + + @Override + public boolean resize(int width, int height) { + boolean sameSize = this.width == width && this.height == height; + if (!sameSize || this.framebuffer == -1 && !this.direct) { + this.width = width; + this.height = height; + this.deleteBuffer(); + this.direct = !OpenGlHelper.framebufferSupported || !this.createBuffer(); + this.previousDirectDraw = -1.0; + return true; + } else { + return false; + } + } + + private boolean createBuffer() { + int previous = GL11.glGetInteger(36006); + boolean complete = false; + + try (GlStateScope allocation = GlStateScope.open()) { + this.texture = TextureUtil.glGenTextures(); + GlStateManager.bindTexture(this.texture); + GL11.glTexParameteri(3553, 10241, 9728); + GL11.glTexParameteri(3553, 10240, 9728); + GL11.glTexParameteri(3553, 10242, 10496); + GL11.glTexParameteri(3553, 10243, 10496); + GL11.glTexImage2D(3553, 0, 32856, this.width, this.height, 0, 6408, 5121, (ByteBuffer)null); + this.framebuffer = OpenGlHelper.glGenFramebuffers(); + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, this.framebuffer); + OpenGlHelper.glFramebufferTexture2D(OpenGlHelper.GL_FRAMEBUFFER, OpenGlHelper.GL_COLOR_ATTACHMENT0, 3553, this.texture, 0); + complete = OpenGlHelper.glCheckFramebufferStatus(OpenGlHelper.GL_FRAMEBUFFER) == OpenGlHelper.GL_FRAMEBUFFER_COMPLETE; + if (complete) { + this.clearBuffer(); + } + } finally { + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, previous); + if (!complete) { + this.deleteBuffer(); + } + } + + return complete; + } + + private void clearBuffer() { + GL11.glViewport(0, 0, this.width, this.height); + GL11.glClearColor(0.0F, 0.0F, 0.0F, 0.0F); + GL11.glClear(16384); + } + + @Override + public void scale(double value) { + this.canvasScale = value; + } + + @Override + public int update(float elapsed) { + SemanticEvent event = new SemanticEvent(9); + event.elapsedSeconds = (double)elapsed; + RenderEventPayload payload = RenderEventPayload.attach(event); + + int var4; + try { + this.modules.dispatch(event); + var4 = payload.redrawFlags; + } finally { + RenderEventPayload.detach(event); + } + + return var4; + } + + @Override + public void begin(double now) { + if (!this.direct) { + this.open(true); + } + } + + private void open(boolean offscreen) { + this.previousMatrix = GL11.glGetInteger(2976); + this.previousFramebuffer = GL11.glGetInteger(36006); + this.state = GlStateScope.open(); + this.drawing = true; + + try { + GL11.glMatrixMode(5889); + GL11.glPushMatrix(); + this.projectionPushed = true; + GL11.glLoadIdentity(); + GL11.glOrtho(0.0, (double)this.width, (double)this.height, 0.0, -3000.0, 3000.0); + GL11.glMatrixMode(5888); + GL11.glPushMatrix(); + this.modelPushed = true; + GL11.glLoadIdentity(); + if (offscreen) { + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, this.framebuffer); + this.clearBuffer(); + } + + GlStateManager.disableDepth(); + } catch (Error | RuntimeException var5) { + try { + this.end(); + } catch (Error | RuntimeException var4) { + var5.addSuppressed(var4); + } + + throw var5; + } + } + + @Override + public void draw(float elapsed) { + if (this.drawing) { + Minecraft game = this.modules.context().minecraft(); + SemanticEvent event = new SemanticEvent(10); + event.elapsedSeconds = (double)elapsed; + event.renderWidth = (float)this.width; + event.renderHeight = (float)this.height; + event.timerRenderPartialTicks = MinecraftFields.timer(game).renderPartialTicks; + RenderEventPayload payload = RenderEventPayload.attach(event); + if (game.currentScreen instanceof RenderHooks.GuiFrame) { + RenderHooks.GuiFrame screen = (RenderHooks.GuiFrame)game.currentScreen; + payload.guiDraw = () -> screen.drawRecoveredFrame(event.timerRenderPartialTicks); + } + + try { + this.modules.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + } + } + + @Override + public void end() { + if (this.drawing) { + this.drawing = false; + + try { + OpenGlHelper.glBindFramebuffer(OpenGlHelper.GL_FRAMEBUFFER, this.previousFramebuffer); + if (this.modelPushed) { + GL11.glMatrixMode(5888); + GL11.glPopMatrix(); + } + + if (this.projectionPushed) { + GL11.glMatrixMode(5889); + GL11.glPopMatrix(); + } + + GL11.glMatrixMode(this.previousMatrix); + } finally { + this.modelPushed = this.projectionPushed = false; + + try { + this.state.close(); + } finally { + this.state = null; + } + } + } + } + + @Override + public void present(double now) { + if (this.direct) { + this.presentDirect(now); + } else { + int mode = GL11.glGetInteger(2976); + + try (GlStateScope presentation = GlStateScope.open()) { + GL11.glMatrixMode(5889); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glOrtho(0.0, (double)this.width, (double)this.height, 0.0, 1000.0, 3000.0); + GL11.glMatrixMode(5888); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glTranslatef(0.0F, 0.0F, -2000.0F); + + try { + GlStateManager.colorMask(true, true, true, false); + GlStateManager.disableDepth(); + GlStateManager.depthMask(false); + GlStateManager.disableLighting(); + GlStateManager.disableAlpha(); + GlStateManager.enableTexture2D(); + GlStateManager.enableBlend(); + GlStateManager.tryBlendFuncSeparate(1, 771, 1, 771); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.bindTexture(this.texture); + GL11.glViewport(0, 0, this.width, this.height); + GL11.glBegin(7); + GL11.glTexCoord2f(0.0F, 0.0F); + GL11.glVertex3f(0.0F, (float)this.height, 0.0F); + GL11.glTexCoord2f(1.0F, 0.0F); + GL11.glVertex3f((float)this.width, (float)this.height, 0.0F); + GL11.glTexCoord2f(1.0F, 1.0F); + GL11.glVertex3f((float)this.width, 0.0F, 0.0F); + GL11.glTexCoord2f(0.0F, 1.0F); + GL11.glVertex3f(0.0F, 0.0F, 0.0F); + GL11.glEnd(); + } finally { + GL11.glMatrixMode(5888); + GL11.glPopMatrix(); + GL11.glMatrixMode(5889); + GL11.glPopMatrix(); + GL11.glMatrixMode(mode); + } + } + } + } + + private void presentDirect(double now) { + float elapsed = this.previousDirectDraw < 0.0 ? 0.0F : (float)(now - this.previousDirectDraw); + this.previousDirectDraw = now; + this.open(false); + + try { + this.draw(elapsed); + } finally { + this.end(); + } + } + + private void deleteBuffer() { + try { + if (this.framebuffer != -1) { + OpenGlHelper.glDeleteFramebuffers(this.framebuffer); + } + } finally { + this.framebuffer = -1; + + try { + if (this.texture != -1) { + TextureUtil.deleteTexture(this.texture); + } + } finally { + this.texture = -1; + } + } + } + + public double canvasScale() { + return this.canvasScale; + } + + void close() { + this.end(); + if (this.framebuffer != -1 || this.texture != -1) { + try { + if (Display.isCreated() && Display.isCurrent()) { + this.deleteBuffer(); + } + } catch (LWJGLException var5) { + throw new IllegalStateException("Could not release the canvas framebuffer", var5); + } finally { + this.framebuffer = this.texture = -1; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/RenderHooks.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/RenderHooks.java new file mode 100644 index 0000000..b80988e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/RenderHooks.java @@ -0,0 +1,214 @@ +package dev.slinky.client.render.hook; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.render.ChamsModule; +import dev.slinky.module.render.GuiModule; +import dev.slinky.module.render.NameTagsModule; +import java.util.ArrayDeque; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import org.lwjgl.opengl.GL11; + +public final strictfp class RenderHooks { + private static ModuleManager modules; + private static MinecraftUiSurface uiSurface; + private static UiFrameDriver uiFrames; + private static final ArrayDeque livingRenders = new ArrayDeque<>(); + + private RenderHooks() { + } + + public static strictfp void install(ModuleManager manager) { + if (manager != null && modules != manager) { + if (uiSurface != null) { + clear(); + } + livingRenders.clear(); + } + modules = manager; + uiFrames = new UiFrameDriver(-1.0, 0, false, true); + } + + public static strictfp void beforeDisplay() { + if (modules != null) { + initializeGuiBinding(modules); + if (hasListeners(10)) { + Minecraft game = modules.context().minecraft(); + if (uiSurface == null) { + uiSurface = new MinecraftUiSurface(modules); + } + + Module gui = modules.find("gui"); + double scale = gui != null && gui.findSetting("scale").isConfigured() ? (double)((GuiModule)gui).scale() : 1.0; + uiFrames.frame(uiSurface, game.displayWidth, game.displayHeight, scale, RenderAccess.now()); + } + } + } + + public static strictfp void initializeGuiBinding(ModuleManager manager) { + Module gui = manager.find("GUI"); + if (gui != null && gui.getBinding() == 0) { + manager.setBinding(gui, 99); + } + } + + public static strictfp boolean hasListeners(int type) { + if (modules == null) { + return false; + } else { + for (Module module : modules.all()) { + if (module.isEnabled() && module.listens(type)) { + return true; + } + } + + return false; + } + } + + public static strictfp double canvasScale() { + return uiSurface == null ? 1.0 : uiSurface.canvasScale(); + } + + public static strictfp void clearWorld(int mask) { + if (mask == 256 && modules != null && modules.context().ready() && (hasListeners(6) || hasListeners(7))) { + ClientContext context = modules.context(); + Minecraft game = context.minecraft(); + Entity view = game.getRenderViewEntity(); + if (view != null) { + float partial = MinecraftFields.timer(game).renderPartialTicks; + SemanticEvent world = worldEvent(6, view, partial, game.displayWidth, game.displayHeight); + GlStateScope state = GlStateScope.open(); + int previousMatrix = GL11.glGetInteger(2976); + GL11.glMatrixMode(5889); + GL11.glPushMatrix(); + GL11.glMatrixMode(5888); + GL11.glPushMatrix(); + + try { + GlStateManager.disableDepth(); + GlStateManager.disableTexture2D(); + GlStateManager.disableLighting(); + GlStateManager.enableBlend(); + GlStateManager.blendFunc(770, 771); + GL11.glEnable(2848); + if (hasListeners(6)) { + modules.dispatch(world); + } + + if (hasListeners(7)) { + RenderAccess.captureWorldProjection(); + GL11.glMatrixMode(5889); + GL11.glLoadIdentity(); + GL11.glOrtho(0.0, (double)game.displayWidth, (double)game.displayHeight, 0.0, -3000.0, 3000.0); + GL11.glMatrixMode(5888); + GL11.glLoadIdentity(); + modules.dispatch(worldEvent(7, view, partial, game.displayWidth, game.displayHeight)); + } + } finally { + GL11.glMatrixMode(5888); + GL11.glPopMatrix(); + GL11.glMatrixMode(5889); + GL11.glPopMatrix(); + GL11.glMatrixMode(previousMatrix); + state.close(); + } + } + } + + GlStateManager.clear(mask); + } + + public static strictfp SemanticEvent worldEvent(int type, Entity view, float partial, int width, int height) { + SemanticEvent event = new SemanticEvent(type); + double fraction = (double)partial; + event.cameraX = fraction * (view.posX - view.prevPosX) + view.prevPosX; + event.cameraY = fraction * (view.posY - view.prevPosY) + view.prevPosY; + event.cameraZ = (view.posZ - view.prevPosZ) * fraction + view.prevPosZ; + event.timerRenderPartialTicks = partial; + event.renderWidth = (float)width; + event.renderHeight = (float)height; + return event; + } + + public static strictfp boolean suppressVanillaName(Entity entity) { + Module module = modules == null ? null : modules.find("name_tags"); + return module instanceof NameTagsModule && ((NameTagsModule)module).suppressVanilla(entity); + } + + public static strictfp void beginLiving(EntityLivingBase entity) { + Module module = modules == null ? null : modules.find("chams"); + livingRenders.push(module instanceof ChamsModule && ((ChamsModule)module).begin(entity)); + } + + public static strictfp void endLiving() { + Boolean selected = livingRenders.poll(); + Module module = modules == null ? null : modules.find("chams"); + if (selected != null && module instanceof ChamsModule) { + ((ChamsModule)module).end(selected); + } + } + + public static strictfp void beforeSetBlock(World world, BlockPos position, IBlockState state) { + blockEvent(world, 2, position.getX(), position.getY(), position.getZ(), Block.getIdFromBlock(state.getBlock())); + } + + public static strictfp void afterUnloadChunk(int x, int z) { + blockEvent(localWorld(), 0, x, 0, z, 0); + } + + public static strictfp void afterInvalidate(World world, int firstX, int firstZ) { + blockEvent(world, 1, firstX >> 4, 0, firstZ >> 4, 0); + } + + private static strictfp World localWorld() { + return modules == null ? null : modules.context().world(); + } + + private static strictfp void blockEvent(World world, int kind, int x, int y, int z, int identifier) { + if (modules != null) { + SemanticEvent event = new SemanticEvent(20); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.regionKind = kind; + payload.world = world; + payload.x = x; + payload.y = y; + payload.z = z; + payload.blockId = identifier; + + try { + modules.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + } + } + + public static strictfp void clear() { + try { + if (uiSurface != null) { + uiSurface.close(); + } + } finally { + uiSurface = null; + uiFrames = new UiFrameDriver(-1.0, 0, false, true); + RenderAccess.clearProjection(); + } + } + + public interface GuiFrame { + void drawRecoveredFrame(float var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/hook/UiFrameDriver.java b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/UiFrameDriver.java new file mode 100644 index 0000000..f1130e9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/hook/UiFrameDriver.java @@ -0,0 +1,88 @@ +package dev.slinky.client.render.hook; + +public final strictfp class UiFrameDriver { + public static final double INTERVAL = Double.longBitsToDouble(4575957461383581969L); + private double previous; + private int resizeFrames; + private boolean visible; + private boolean previouslyChanging; + + public UiFrameDriver(double previous, int resizeFrames, boolean visible, boolean previouslyChanging) { + this.previous = previous; + this.resizeFrames = resizeFrames; + this.visible = visible; + this.previouslyChanging = previouslyChanging; + } + + public strictfp void frame(UiFrameDriver.Surface surface, int width, int height, double scale, double now) { + if (this.previous < 0.0) { + this.previous = now; + } + + if (surface.resize(width, height)) { + this.resizeFrames = 10; + } else if (this.resizeFrames > 0) { + this.resizeFrames--; + } + + surface.scale(scale); + double elapsed = now - this.previous; + if (elapsed > INTERVAL) { + float frameElapsed = (float)elapsed; + int flags = surface.update(frameElapsed); + this.visible = (flags & 1) != 0; + boolean changing = (flags & 2) != 0; + if (this.visible && (changing || this.previouslyChanging || this.resizeFrames > 0)) { + surface.begin(now); + + try { + surface.draw(frameElapsed); + } finally { + surface.end(); + } + + this.previouslyChanging = changing; + } + + this.previous = now; + } + + if (this.visible) { + surface.present(now); + } else { + this.previouslyChanging = true; + } + } + + public strictfp double previousSeconds() { + return this.previous; + } + + public strictfp int resizeFrames() { + return this.resizeFrames; + } + + public strictfp boolean visible() { + return this.visible; + } + + public strictfp boolean previouslyChanging() { + return this.previouslyChanging; + } + + public interface Surface { + boolean resize(int var1, int var2); + + void scale(double var1); + + int update(float var1); + + void begin(double var1); + + void draw(float var1); + + void end(); + + void present(double var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/text/Utf8Buffer.java b/SlinkyClient/src/main/java/dev/slinky/client/render/text/Utf8Buffer.java new file mode 100644 index 0000000..c2cbcab --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/text/Utf8Buffer.java @@ -0,0 +1,59 @@ +package dev.slinky.client.render.text; + +import java.nio.charset.StandardCharsets; + +public final class Utf8Buffer { + private final byte[] bytes; + private int count; + + public Utf8Buffer(int capacity) { + this.bytes = new byte[capacity]; + } + + public boolean append(String value) { + byte[] source = value.getBytes(StandardCharsets.UTF_8); + if (this.count < this.bytes.length && source.length < this.bytes.length - this.count) { + System.arraycopy(source, 0, this.bytes, this.count, source.length); + this.count += source.length; + return true; + } else { + return false; + } + } + + public boolean formatResult(String value) { + byte[] source = value.getBytes(StandardCharsets.UTF_8); + if (this.count >= this.bytes.length) { + return false; + } else if (source.length >= this.bytes.length - this.count) { + this.count = this.bytes.length; + return false; + } else { + System.arraycopy(source, 0, this.bytes, this.count, source.length); + this.count += source.length; + return true; + } + } + + public boolean appendByte(int value) { + if (this.count >= this.bytes.length) { + return false; + } else { + this.bytes[this.count++] = (byte)value; + return true; + } + } + + public String finish() { + if (this.count >= this.bytes.length) { + return null; + } else { + this.bytes[this.count++] = 0; + return new String(this.bytes, 0, this.count - 1, StandardCharsets.UTF_8); + } + } + + public int count() { + return this.count; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/world/BlockMesh.java b/SlinkyClient/src/main/java/dev/slinky/client/render/world/BlockMesh.java new file mode 100644 index 0000000..2f8796e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/world/BlockMesh.java @@ -0,0 +1,148 @@ +package dev.slinky.client.render.world; + +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.setting.ColorSetting; +import java.util.ArrayList; +import java.util.List; +import java.util.Map.Entry; +import java.util.SortedMap; + +public final strictfp class BlockMesh { + private BlockMesh() { + } + + public static strictfp int compareRegion(int x, int z, int otherX, int otherZ) { + int difference = x - otherX; + return difference == 0 ? z - otherZ : difference; + } + + public static strictfp List scanByte(int section, byte[] ids, SortedMap policy) { + List result = new ArrayList<>(); + + for (Entry entry : policy.entrySet()) { + for (int group = 0; group < 256; group++) { + for (int bit = 0; bit < 16; bit++) { + if (ids[group * 16 + bit] == (byte)entry.getKey().intValue()) { + result.add(new BlockMesh.Position(bit, (group >> 4) + section * 16, group & 15, entry.getKey(), entry.getValue())); + } + } + } + } + + return result; + } + + public static strictfp List scanPacked(int section, char[] ids, SortedMap policy) { + List result = new ArrayList<>(); + + for (Entry entry : policy.entrySet()) { + for (int group = 0; group < 512; group++) { + for (int bit = 0; bit < 8; bit++) { + if ((short)ids[group * 8 + bit] >> 4 == (short)entry.getKey().intValue()) { + result.add(new BlockMesh.Position(((group & 1) << 3) + bit, (group >> 5) + section * 16, group >> 1 & 15, entry.getKey(), entry.getValue())); + } + } + } + } + + return result; + } + + public static strictfp void rebuild(BlockMesh.Region region) { + float scale = RenderConstants.f(1393000); + region.vertices = new float[region.blocks.size() * 8 * 3]; + region.colors = new int[region.blocks.size() * 8]; + region.indices = new short[region.blocks.size() * 24]; + int vertex = 0; + int index = 0; + + for (BlockMesh.Position p : region.blocks) { + int first = vertex; + int red = NumericMath.truncateInt(p.color.red * scale) & 0xFF; + int green = NumericMath.truncateInt(p.color.green * scale) & 0xFF; + int blue = NumericMath.truncateInt(p.color.blue * scale) & 0xFF; + int color = red << 24 | green << 16 | blue << 8 | 0xFF; + + for (int corner = 0; corner < 8; corner++) { + region.vertices[vertex * 3] = RenderConstants.f(1393072 + corner * 12) + (float)p.x; + region.vertices[vertex * 3 + 1] = RenderConstants.f(1393076 + corner * 12) + (float)p.y; + region.vertices[vertex * 3 + 2] = RenderConstants.f(1393080 + corner * 12) + (float)p.z; + region.colors[vertex++] = color; + } + + for (int n = 0; n < 24; n++) { + region.indices[index++] = (short)(RenderConstants.u16(1393168 + n * 2) + (first & 65535)); + } + } + } + + public static strictfp long renderLimit(boolean limited, float value) { + if (!limited) { + return 4096L; + } else { + float amount = value * RenderConstants.f(1392984); + long first = NumericMath.truncateLong(amount); + long second = NumericMath.truncateLong(amount - RenderConstants.f(1392988)); + return first | second & (first < 0L ? -1L : 0L); + } + } + + public static strictfp void change(BlockMesh.Region region, int x, int y, int z, int id, ColorSetting.Value policy) { + for (int i = 0; i < region.blocks.size(); i++) { + BlockMesh.Position p = region.blocks.get(i); + if (p.x == (x & 0xFF) && p.y == (y & 0xFF) && p.z == (z & 0xFF)) { + if (policy == null) { + region.blocks.remove(i); + } else { + region.blocks.set(i, new BlockMesh.Position(x, y, z, id, policy)); + } + + rebuild(region); + return; + } + } + + if (policy != null) { + region.blocks.add(new BlockMesh.Position(x, y, z, id, policy)); + rebuild(region); + } + } + + public static final strictfp class Position { + public final int x; + public final int y; + public final int z; + public final int id; + public ColorSetting.Value color; + + public Position(int x, int y, int z, int id, ColorSetting.Value color) { + this.x = x & 0xFF; + this.y = y & 0xFF; + this.z = z & 0xFF; + this.id = id; + this.color = color; + } + } + + public static final strictfp class Region { + public final int x; + public final int z; + public final List blocks = new ArrayList<>(); + public float[] vertices = new float[0]; + public int[] colors = new int[0]; + public short[] indices = new short[0]; + + public Region(int x, int z) { + this.x = x; + this.z = z; + } + + public strictfp void release() { + this.blocks.clear(); + this.vertices = new float[0]; + this.colors = new int[0]; + this.indices = new short[0]; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/world/LoadedChunkAccess.java b/SlinkyClient/src/main/java/dev/slinky/client/render/world/LoadedChunkAccess.java new file mode 100644 index 0000000..9bf0bd4 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/world/LoadedChunkAccess.java @@ -0,0 +1,36 @@ +package dev.slinky.client.render.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.client.multiplayer.ChunkProviderClient; +import net.minecraft.world.chunk.Chunk; + +public final class LoadedChunkAccess { + private static final Field LIST = ReflectionHelper.findField(ChunkProviderClient.class, "chunkListing", "field_73237_c"); + + private LoadedChunkAccess() { + } + + public static List loaded(ClientContext c) { + try { + return new ArrayList<>((List)LIST.get(c.world().getChunkProvider())); + } catch (IllegalAccessException var2) { + throw new IllegalStateException(var2); + } + } + + public static int blockIdentifier(String name) { + int id = ItemPolicyService.identifier(name); + if (id >= 0 && id < 256 && Block.getBlockById(id) != null) { + return id; + } else { + Block block = Block.getBlockFromName(name); + return block == null ? -1 : Block.getIdFromBlock(block); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/world/RemoteBoxRenderer.java b/SlinkyClient/src/main/java/dev/slinky/client/render/world/RemoteBoxRenderer.java new file mode 100644 index 0000000..0a52009 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/world/RemoteBoxRenderer.java @@ -0,0 +1,65 @@ +package dev.slinky.client.render.world; + +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.setting.ColorSetting; +import net.minecraft.util.Vec3; +import org.lwjgl.opengl.GL11; + +public final class RemoteBoxRenderer { + private static final int[] FILLED = new int[]{3, 7, 1, 5, 4, 7, 6, 3, 2, 1, 0, 4, 2, 6}; + private static final int[] WIRE = new int[]{0, 1, 1, 5, 5, 4, 4, 0, 2, 3, 3, 7, 7, 6, 6, 2, 0, 2, 1, 3, 4, 6, 5, 7}; + + private RemoteBoxRenderer() { + } + + public static void draw( + SemanticEvent e, + Vec3 previous, + Vec3 current, + float previousYaw, + float currentYaw, + boolean rotate, + boolean filled, + float lineWidth, + ColorSetting.Value color + ) { + Vec3 position = RotationMath.interpolate(previous, current, (double)e.timerRenderPartialTicks); + GL11.glPushAttrib(1048575); + GL11.glPushMatrix(); + + try { + GL11.glDisable(3553); + GL11.glDisable(2896); + GL11.glEnable(3042); + GL11.glBlendFunc(770, 771); + GL11.glLineWidth(lineWidth); + GL11.glTranslatef((float)(position.xCoord - e.cameraX), (float)(position.yCoord - e.cameraY + 1.0), (float)(position.zCoord - e.cameraZ)); + GL11.glScalef(0.3F, 1.0F, 0.3F); + if (rotate) { + GL11.glRotatef(180.0F - ((currentYaw - previousYaw) * e.timerRenderPartialTicks + previousYaw), 0.0F, 1.0F, 0.0F); + } + + if (filled) { + GL11.glColor4f(color.red, color.green, color.blue, 0.4F); + vertices(5, FILLED); + } + + GL11.glColor3f(color.red, color.green, color.blue); + vertices(1, WIRE); + } finally { + GL11.glPopMatrix(); + GL11.glPopAttrib(); + } + } + + private static void vertices(int mode, int[] indices) { + GL11.glBegin(mode); + + for (int i : indices) { + GL11.glVertex3f((i & 4) == 0 ? -1.0F : 1.0F, (i & 2) == 0 ? -1.0F : 1.0F, (i & 1) == 0 ? -1.0F : 1.0F); + } + + GL11.glEnd(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/render/world/TrajectoryPrediction.java b/SlinkyClient/src/main/java/dev/slinky/client/render/world/TrajectoryPrediction.java new file mode 100644 index 0000000..4bfa410 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/render/world/TrajectoryPrediction.java @@ -0,0 +1,184 @@ +package dev.slinky.client.render.world; + +import dev.slinky.client.numeric.FloatTrigonometry; +import dev.slinky.client.packet.PredictionGeometry; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import java.util.List; + +public final strictfp class TrajectoryPrediction { + private TrajectoryPrediction() { + } + + public static strictfp float charge(int ticks) { + float t = (float)ticks / RenderConstants.f(1396232); + return (t * t + (t + t)) / RenderConstants.f(1396236); + } + + public static strictfp float speed(float strength) { + double value = (double)RenderMath.min(RenderConstants.f(1396248), strength) * RenderConstants.d(1396256); + return (float)(value + value); + } + + public static strictfp TrajectoryPrediction.Launch launch( + double[] input, float yawDegrees, float pitchDegrees, float fraction, float previousSpeed, float speed, boolean positionModeZero, boolean sneaking + ) { + double radians = RenderConstants.d(1396304); + float yaw = (float)((double)yawDegrees * radians); + float pitch = (float)((double)pitchDegrees * radians); + float cy = FloatTrigonometry.cosine(yaw); + float cp = FloatTrigonometry.cosine(pitch); + float sy = FloatTrigonometry.sine(yaw); + float sp = FloatTrigonometry.sine(pitch); + int sign = RenderConstants.i(1396320); + double[] direction = new double[]{ + (double)(Float.intBitsToFloat(Float.floatToRawIntBits(sy) ^ sign) * cp), + (double)Float.intBitsToFloat(Float.floatToRawIntBits(sp) ^ sign), + (double)(cp * cy) + }; + float currentSpeed = RenderMath.lerp(previousSpeed, speed, fraction); + double[] position = (double[])input.clone(); + if (!positionModeZero) { + position[1] += RenderConstants.d(1304656); + if (sneaking) { + position[1] += RenderConstants.d(1396336); + } + } + + double offset = RenderConstants.d(1396344); + position[0] -= (double)cy * offset; + position[1] += RenderConstants.d(1396352); + position[2] -= (double)sy * offset; + return new TrajectoryPrediction.Launch(position, RenderMath.scale(direction, (double)currentSpeed)); + } + + public static strictfp double[] sortedBox(double[] a, double[] b) { + double[] out = new double[6]; + + for (int i = 0; i < 3; i++) { + out[i] = Double.isNaN(a[i]) ? b[i] : (b[i] < a[i] ? b[i] : a[i]); + out[i + 3] = Double.isNaN(a[i]) ? b[i] : (b[i] > a[i] ? b[i] : a[i]); + } + + return out; + } + + public static strictfp double[] broad(TrajectoryPrediction.Launch launch) { + double h = RenderConstants.d(1396264); + return sortedBox( + new double[]{launch.position[0], -100.0, launch.position[2]}, + new double[]{ + launch.velocity[0] * h + launch.position[0], launch.position[1] + RenderConstants.d(1396272), h * launch.velocity[2] + launch.position[2] + } + ); + } + + public static strictfp boolean intersects(double[] a, double[] b) { + return a[0] < b[3] && b[0] < a[3] && a[1] < b[4] && b[1] < a[4] && a[2] < b[5] && b[2] < a[5]; + } + + public static strictfp TrajectoryPrediction.Result predict( + TrajectoryPrediction.Launch launch, List candidates, TrajectoryPrediction.World world, float gravity, boolean pearl + ) { + double[] position = (double[])launch.position.clone(); + double[] velocity = (double[])launch.velocity.clone(); + double drag = RenderConstants.d(1396296); + double blockSize = RenderConstants.d(1396288); + + for (int step = 0; step < 100; step++) { + double[] old = (double[])position.clone(); + position = RenderMath.add(old, velocity); + TrajectoryPrediction.BlockHit hit = world.trace(old, position); + double[] box = null; + if (hit != null) { + position = (double[])hit.point.clone(); + velocity = RenderMath.subtract(position, old); + box = new double[]{hit.corner[0], hit.corner[1], hit.corner[2], hit.corner[0] + blockSize, hit.corner[1] + blockSize, hit.corner[2] + blockSize}; + } + + for (TrajectoryPrediction.Candidate entity : candidates) { + if (PredictionGeometry.ray(entity.box, old, velocity)) { + return new TrajectoryPrediction.Result(step + 1, true, !pearl, (double[])entity.box.clone(), (double[])entity.motion.clone()); + } + } + + if (hit != null) { + return new TrajectoryPrediction.Result(step + 1, true, pearl, box, new double[3]); + } + + velocity = RenderMath.scale(velocity, drag); + velocity[1] -= (double)gravity; + } + + return new TrajectoryPrediction.Result(100, false, false, null, new double[3]); + } + + public static strictfp float[] renderPoints(TrajectoryPrediction.Launch launch, int steps, float gravity, double[] camera) { + double[] position = (double[])launch.position.clone(); + double[] velocity = (double[])launch.velocity.clone(); + float[] points = new float[steps * 3]; + + for (int i = 0; i < steps; i++) { + position = RenderMath.add(position, velocity); + + for (int lane = 0; lane < 3; lane++) { + points[i * 3 + lane] = (float)(position[lane] - camera[lane]); + } + + velocity = RenderMath.scale(velocity, RenderConstants.d(1396208)); + velocity[1] -= (double)gravity; + } + + return points; + } + + public static final strictfp class BlockHit { + public final double[] point; + public final double[] corner; + + public BlockHit(double[] point, double[] corner) { + this.point = (double[])point.clone(); + this.corner = (double[])corner.clone(); + } + } + + public static final strictfp class Candidate { + public final double[] box; + public final double[] motion; + + public Candidate(double[] box, double[] motion) { + this.box = (double[])box.clone(); + this.motion = (double[])motion.clone(); + } + } + + public static final strictfp class Launch { + public final double[] position; + public final double[] velocity; + + public Launch(double[] p, double[] v) { + this.position = p; + this.velocity = v; + } + } + + public static final strictfp class Result { + public final int steps; + public final boolean marker; + public final boolean hitColor; + public final double[] box; + public final double[] motion; + + public Result(int steps, boolean marker, boolean hitColor, double[] box, double[] motion) { + this.steps = steps; + this.marker = marker; + this.hitColor = hitColor; + this.box = box; + this.motion = motion; + } + } + + public interface World { + TrajectoryPrediction.BlockHit trace(double[] var1, double[] var2); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/rotation/AimNoise.java b/SlinkyClient/src/main/java/dev/slinky/client/rotation/AimNoise.java new file mode 100644 index 0000000..8447da3 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/rotation/AimNoise.java @@ -0,0 +1,286 @@ +package dev.slinky.client.rotation; + +import dev.slinky.client.numeric.NumericMath; + +public final strictfp class AimNoise { + private static final int[] PERMUTATION = new int[]{ + 151, + 160, + 137, + 91, + 90, + 15, + 131, + 13, + 201, + 95, + 96, + 53, + 194, + 233, + 7, + 225, + 140, + 36, + 103, + 30, + 69, + 142, + 8, + 99, + 37, + 240, + 21, + 10, + 23, + 190, + 6, + 148, + 247, + 120, + 234, + 75, + 0, + 26, + 197, + 62, + 94, + 252, + 219, + 203, + 117, + 35, + 11, + 32, + 57, + 177, + 33, + 88, + 237, + 149, + 56, + 87, + 174, + 20, + 125, + 136, + 171, + 168, + 68, + 175, + 74, + 165, + 71, + 134, + 139, + 48, + 27, + 166, + 77, + 146, + 158, + 231, + 83, + 111, + 229, + 122, + 60, + 211, + 133, + 230, + 220, + 105, + 92, + 41, + 55, + 46, + 245, + 40, + 244, + 102, + 143, + 54, + 65, + 25, + 63, + 161, + 1, + 216, + 80, + 73, + 209, + 76, + 132, + 187, + 208, + 89, + 18, + 169, + 200, + 196, + 135, + 130, + 116, + 188, + 159, + 86, + 164, + 100, + 109, + 198, + 173, + 186, + 3, + 64, + 52, + 217, + 226, + 250, + 124, + 123, + 5, + 202, + 38, + 147, + 118, + 126, + 255, + 82, + 85, + 212, + 207, + 206, + 59, + 227, + 47, + 16, + 58, + 17, + 182, + 189, + 28, + 42, + 223, + 183, + 170, + 213, + 119, + 248, + 152, + 2, + 44, + 154, + 163, + 70, + 221, + 153, + 101, + 155, + 167, + 43, + 172, + 9, + 129, + 22, + 39, + 253, + 19, + 98, + 108, + 110, + 79, + 113, + 224, + 232, + 178, + 185, + 112, + 104, + 218, + 246, + 97, + 228, + 251, + 34, + 242, + 193, + 238, + 210, + 144, + 12, + 191, + 179, + 162, + 241, + 81, + 51, + 145, + 235, + 249, + 14, + 239, + 107, + 49, + 192, + 214, + 31, + 181, + 199, + 106, + 157, + 184, + 84, + 204, + 176, + 115, + 121, + 50, + 45, + 127, + 4, + 150, + 254, + 138, + 236, + 205, + 93, + 222, + 114, + 67, + 29, + 24, + 72, + 243, + 141, + 128, + 195, + 78, + 66, + 215, + 61, + 156, + 180 + }; + + private AimNoise() { + } + + private static strictfp float gradient(int index) { + int permutation = PERMUTATION[index & 0xFF]; + float value = (float)((permutation & 7) + 1); + return (permutation & 8) != 0 ? -value : value; + } + + public static strictfp float sample(float input) { + int truncated = NumericMath.truncateInt(input); + int index = truncated - (input > (float)truncated ? 0 : 1); + float phase = input - (float)index; + float cube = phase * phase * phase; + float polynomial = (6.0F * phase + -15.0F) * phase + 10.0F; + float left = gradient(index) * phase; + float rightPhase = -1.0F + phase; + float right = rightPhase * gradient(index + 1); + float weight = cube * polynomial; + return (weight * (right - left) + left) * 0.188F; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationMath.java b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationMath.java new file mode 100644 index 0000000..ca4bc70 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationMath.java @@ -0,0 +1,128 @@ +package dev.slinky.client.rotation; + +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.FloatTrigonometry; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.numeric.NumericServices; +import net.minecraft.util.Vec3; + +public final strictfp class RotationMath { + private RotationMath() { + } + + public static strictfp float sine(float radians) { + return FloatTrigonometry.sine(radians); + } + + public static strictfp float cosine(float radians) { + return FloatTrigonometry.cosine(radians); + } + + public static strictfp double atan2(double first, double second) { + return NumericServices.atan2(first, second); + } + + public static strictfp float atan2(float first, float second) { + return NumericServices.atan2f(first, second); + } + + public static strictfp float atan2f(float first, float second) { + return NumericServices.atan2f(first, second); + } + + public static strictfp double hypot(double first, double second) { + return NumericServices.hypot(first, second); + } + + public static strictfp float abs(float value) { + return Float.intBitsToFloat(Float.floatToRawIntBits(value) & 2147483647); + } + + public static strictfp float min(float a, float b) { + return a < b ? a : b; + } + + public static strictfp float max(float a, float b) { + return a > b ? a : b; + } + + public static strictfp double min(double a, double b) { + return a < b ? a : b; + } + + public static strictfp double max(double a, double b) { + return a > b ? a : b; + } + + public static strictfp float clamp(float low, float high, float value) { + return value < low ? low : min(high, value); + } + + public static strictfp double clamp(double low, double high, double value) { + return value < low ? low : min(high, value); + } + + public static strictfp float wrap(float angle) { + float result = FloatNumeric.remainder(angle, 360.0F); + if (result >= 180.0F) { + result += -360.0F; + } else if (result < -180.0F) { + result += 360.0F; + } + + return result; + } + + public static strictfp float[] angles(Vec3 from, Vec3 to) { + double x = to.xCoord - from.xCoord; + double y = to.yCoord - from.yCoord; + double z = to.zCoord - from.zCoord; + double horizontal = Math.sqrt(x * x + z * z); + float yaw = (float)(atan2(z, x) * 180.0 / Math.PI + -90.0); + float pitch = (float)(atan2(y, horizontal) * -180.0 / Math.PI); + return new float[]{yaw, pitch}; + } + + public static strictfp Vec3 interpolate(Vec3 a, Vec3 b, double fraction) { + return new Vec3(fraction * (b.xCoord - a.xCoord) + a.xCoord, fraction * (b.yCoord - a.yCoord) + a.yCoord, (b.zCoord - a.zCoord) * fraction + a.zCoord); + } + + public static strictfp double distance(Vec3 a, Vec3 b) { + double x = a.xCoord - b.xCoord; + double y = a.yCoord - b.yCoord; + double z = a.zCoord - b.zCoord; + return Math.sqrt(z * z + (x * x + y * y)); + } + + public static strictfp double[] movement(float yaw, float forward, float sideways, float speed) { + float f = forward * 0.98F; + float s = sideways * 0.98F; + float squared = s * s + f * f; + if (1.0E-4F > squared) { + return new double[]{0.0, 0.0}; + } else { + float scale = speed * Float.intBitsToFloat(1065353213); + float length = max(1.0F, (float)Math.sqrt((double)squared)); + scale /= length; + s *= scale; + f *= scale; + float angle = (float)((double)yaw * Math.PI / 180.0); + float sin = sine(angle); + float cos = cosine(angle); + return new double[]{(double)(s * cos - f * sin), (double)(f * cos + s * sin)}; + } + } + + public static strictfp float magnitude(float yaw, float pitch) { + return NumericMath.floatDistance(yaw, pitch); + } + + public static strictfp int tieHash(int entityId, long counter) { + int x = entityId + (int)counter; + x ^= x >>> 16; + x *= 73244475; + x ^= x >>> 16; + x *= 73244475; + return x ^ x >>> 16; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationRandom.java b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationRandom.java new file mode 100644 index 0000000..1f15f23 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationRandom.java @@ -0,0 +1,173 @@ +package dev.slinky.client.rotation; + +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.NumericConstants; +import dev.slinky.client.numeric.NumericMath; +import java.security.SecureRandom; + +public final strictfp class RotationRandom { + public static final RotationRandom SHARED = fresh(); + private int a; + private int b; + private int c; + private int d; + + public RotationRandom(int a, int b, int c, int d) { + if ((a | b | c | d) == 0) { + throw new IllegalArgumentException("zero random state"); + } else { + this.a = a; + this.b = b; + this.c = c; + this.d = d; + } + } + + private static strictfp RotationRandom fresh() { + SecureRandom seed = new SecureRandom(); + int a = seed.nextInt(); + int b = seed.nextInt(); + int c = seed.nextInt(); + int d = seed.nextInt(); + if ((a | b | c | d) == 0) { + d = 1; + } + + return new RotationRandom(a, b, c, d); + } + + public static strictfp double now() { + return (double)System.nanoTime() / 1.0E9; + } + + private strictfp int next() { + int sum = this.d + this.a; + int rotated = Integer.rotateLeft(this.b ^ this.d, 11); + int nextB = this.c ^ this.a ^ this.b; + int nextA = this.a ^ this.b ^ this.d; + int nextC = this.c ^ this.a ^ this.b << 9; + this.a = nextA; + this.b = nextB; + this.c = nextC; + this.d = rotated; + return sum; + } + + public strictfp float interval(float low, float high) { + float width = high - low; + float value = (float)(this.next() >>> 8); + value *= 5.9604645E-8F; + value *= width; + return value + low; + } + + public strictfp boolean chance(float threshold) { + return threshold > this.interval(0.0F, 1.0F); + } + + public strictfp int[] state() { + return new int[]{this.a, this.b, this.c, this.d}; + } + + public static final class Gaussian { + private boolean valid; + private float cached; + + public strictfp float sample(RotationRandom random) { + if (this.valid) { + this.valid = false; + return this.cached; + } else { + float x; + float y; + float radius; + do { + float value = (float)(random.next() >>> 8) * 5.9604645E-8F; + x = value + value + -1.0F; + value = (float)(random.next() >>> 8) * 5.9604645E-8F; + y = value + value + -1.0F; + radius = NumericMath.floatDistance(x, y); + } while (radius >= 1.0F || radius == 0.0F); + + float ratio = FloatNumeric.log(radius) * -2.0F / radius; + float factor = FloatNumeric.sqrt(ratio); + this.cached = y * factor; + this.valid = true; + return x * factor; + } + } + } + + public static final class Segment { + private double elapsed; + private float left; + private float right; + + public strictfp float sample(float low, float high, double duration, double delta, RotationRandom random) { + this.elapsed += delta; + if (this.elapsed > duration) { + this.elapsed = 0.0; + if (this.left == 0.0F && this.right == 0.0F) { + do { + this.left = draw(random, 1304864, 1304868); + this.right = draw(random, 1304864, 1304868); + } while (NumericConstants.doubleAt(1304896) > this.maskedDifference(1304880)); + } else { + this.left = this.right; + + do { + this.right = draw(random, 1304912, 1304916); + } while (NumericConstants.doubleAt(1304944) > this.maskedDifference(1304928)); + } + } + + double phase = this.elapsed / duration; + double curve = (double)(this.right - this.left) * phase + (double)this.left; + return (float)((double)(high - low) * curve + (double)low); + } + + private strictfp double maskedDifference(int mask) { + return (double)Float.intBitsToFloat(Float.floatToRawIntBits(this.left - this.right) & NumericConstants.intAt(mask)); + } + + private static strictfp float draw(RotationRandom random, int upper, int scale) { + float value = (float)(random.next() >>> 8); + value *= NumericConstants.floatAt(scale); + value *= NumericConstants.floatAt(upper); + return value + 0.0F; + } + } + + public static final class Smooth { + private double timestamp; + private float left; + private float right; + + public strictfp float sample(float low, float high, double duration, double now, RotationRandom random) { + if (now > this.timestamp + duration) { + this.timestamp = now; + if (this.left == 0.0F && this.right == 0.0F) { + do { + this.left = random.interval(0.0F, 1.0F); + this.right = random.interval(0.0F, 1.0F); + } while (0.2 > (double)RotationMath.abs(this.left - this.right)); + } else { + this.left = this.right; + + do { + this.right = random.interval(0.0F, 1.0F); + } while (0.2 > (double)RotationMath.abs(this.left - this.right)); + } + } + + double phase = (now - this.timestamp) / duration; + double curve = (double)(this.right - this.left) * phase + (double)this.left; + return (float)((double)(high - low) * curve + (double)low); + } + + public strictfp boolean gate(float low, float high, double duration, double now, RotationRandom random) { + float comparison = random.interval(0.0F, 1.0F); + return this.sample(low, high, duration, now, random) > comparison; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationService.java b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationService.java new file mode 100644 index 0000000..a7f750e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/rotation/RotationService.java @@ -0,0 +1,456 @@ +package dev.slinky.client.rotation; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.inject.ReflectionHelper; +import java.lang.reflect.Field; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.Entity; + +public final strictfp class RotationService { + private static int priority; + private static int deltaAge; + private static float quantum; + private static float pendingYaw; + private static float pendingPitch; + private static float manualYaw; + private static float manualPitch; + private static float cameraYaw; + private static float cameraPitch; + private static float retainedYaw; + private static float retainedPitch; + private static float savedMouseYaw; + private static float savedMousePitch; + private static float displayYaw; + private static float displayPitch; + private static boolean active; + private static boolean useRetained; + private static boolean remap; + private static boolean keysRemapped; + private static boolean restoreCameraPending; + private static boolean mousePending; + private static int savedKeys; + private static KeyBinding[] remappedKeys; + private static Entity mouseEntity; + private static final RotationService.RotationSnapshot camera = new RotationService.RotationSnapshot(); + private static final RotationService.RotationSnapshot renderInfo = new RotationService.RotationSnapshot(); + private static final Field PRESSED = ReflectionHelper.findField(KeyBinding.class, "pressed", "field_74513_e"); + + private RotationService() { + } + + public static strictfp void beginFrame(ClientContext context, double elapsedSeconds, float partialTicks) { + if (!context.ready()) { + reset(context); + } else { + float sensitivity = context.minecraft().gameSettings.mouseSensitivity * 0.6F + 0.2F; + quantum = sensitivity * sensitivity * sensitivity * 8.0F * 0.15F; + int previousAge = deltaAge++; + if (previousAge > 0) { + pendingPitch = 0.0F; + pendingYaw = 0.0F; + } + + priority = 0; + } + } + + public static strictfp boolean claim(int requested) { + if (Integer.compareUnsigned(requested, priority) < 0) { + return false; + } else { + priority = requested; + return true; + } + } + + public static strictfp boolean storedRotationValid() { + return active; + } + + public static strictfp float storedYaw() { + return retainedYaw; + } + + public static strictfp float storedPitch() { + return retainedPitch; + } + + public static strictfp float cameraYaw() { + return cameraYaw; + } + + public static strictfp float cameraPitch() { + return cameraPitch; + } + + public static strictfp float pendingYaw() { + return pendingYaw; + } + + public static strictfp float pendingPitch() { + return pendingPitch; + } + + public static strictfp float manualYaw() { + return manualYaw; + } + + public static strictfp float manualPitch() { + return manualPitch; + } + + public static strictfp void clearManual() { + manualPitch = 0.0F; + manualYaw = 0.0F; + } + + public static strictfp void retain(ClientContext context, boolean retained, float yaw, float pitch) { + endMovement(context); + if (!active && context.player() != null) { + active = true; + cameraYaw = context.player().rotationYaw; + cameraPitch = context.player().rotationPitch; + } + + useRetained = retained; + retainedYaw = yaw; + retainedPitch = pitch; + remap = false; + } + + public static strictfp void applyPending(ClientContext context) { + applyPending(context, false); + } + + public static strictfp void applyPending(ClientContext context, boolean alsoArm) { + if (context.player() != null) { + if (quantum != 0.0F) { + float yawStep = quantize(pendingYaw, quantum); + float pitchStep = quantize(pendingPitch, quantum); + pendingYaw -= yawStep; + pendingPitch -= pitchStep; + if (yawStep != 0.0F || pitchStep != 0.0F) { + float yaw = yawStep + context.player().rotationYaw; + float pitch = pitchStep + context.player().rotationPitch; + setRotation(context.player(), yaw, pitch, true); + if (alsoArm) { + setArms(context, yaw, pitch); + } + } + } + } + } + + public static strictfp void add(float yaw, float pitch) { + pendingYaw += yaw; + pendingPitch += pitch; + deltaAge = 0; + } + + public static strictfp void manualDelta(float yaw, float pitch) { + manualYaw += yaw; + manualPitch += pitch; + } + + public static strictfp boolean mouseAngles(Entity entity, ClientContext context, float yaw, float pitch) { + return false; + } + + public static strictfp void prepareMouse(ClientContext context) { + closeMouse(); + Entity player = context.player(); + if (player != null) { + savedMouseYaw = player.rotationYaw; + savedMousePitch = player.rotationPitch; + if (restoreCameraPending) { + restoreCameraPending = false; + setRotation(player, cameraYaw, cameraPitch, true); + } + + if (active) { + mousePending = true; + mouseEntity = player; + setRotation(player, cameraYaw, cameraPitch, false); + } + } + } + + private static strictfp void finishMouse(Entity player) { + if (mousePending) { + if (player != mouseEntity) { + closeMouse(); + } else { + cameraYaw = player.rotationYaw; + cameraPitch = player.rotationPitch; + closeMouse(); + } + } + } + + private static strictfp void closeMouse() { + Entity player = mousePending ? mouseEntity : null; + mousePending = false; + mouseEntity = null; + if (player != null) { + setRotation(player, savedMouseYaw, savedMousePitch, true); + } + } + + public static strictfp void endRender() { + endRenderInfo(); + endCamera(); + closeMouse(); + } + + public static strictfp void beforeDisplay(ClientContext context) { + if (context.ready()) { + float yaw = context.player().rotationYaw - displayYaw; + float pitch = context.player().rotationPitch - displayPitch; + if (((Float.floatToRawIntBits(yaw) | Float.floatToRawIntBits(pitch)) & 2147483647) != 0) { + manualDelta(yaw, pitch); + } + } + } + + public static strictfp void afterDisplay(ClientContext context) { + if (context.ready()) { + displayYaw = context.player().rotationYaw; + displayPitch = context.player().rotationPitch; + } + } + + public static strictfp void restoreCamera(float yaw, float pitch) { + cameraYaw = RotationMath.wrap(yaw - cameraYaw) + cameraYaw; + cameraPitch = pitch; + restoreCameraPending = true; + } + + public static strictfp float quantize(float value, float quantum) { + if (quantum != 0.0F && (-quantum >= value || value >= quantum)) { + float quotient = value / quantum; + float whole = FloatNumeric.truncate(quotient); + return whole * quantum; + } else { + return 0.0F; + } + } + + public static strictfp void finishFrame(ClientContext context, SemanticEvent event) { + endMovement(context); + if (context.ready()) { + boolean requested = event.active; + if (requested) { + if (!active) { + cameraYaw = context.player().rotationYaw; + cameraPitch = context.player().rotationPitch; + } + + active = true; + useRetained = event.overrideRotation; + retainedYaw = event.yaw; + retainedPitch = event.pitch; + remap = event.remapMovement; + } else if (active) { + active = false; + float yaw = useRetained ? retainedYaw : cameraYaw; + float pitch = useRetained ? retainedPitch : cameraPitch; + yaw = RotationMath.wrap(yaw - context.player().rotationYaw) + context.player().rotationYaw; + setRotation(context.player(), yaw, pitch, true); + setArms(context, yaw, pitch); + } + } + } + + public static strictfp int remapMask(int mask, float yawDifference) { + int forward = (mask & 1) - (mask >>> 1 & 1); + int sideways = (mask >>> 2 & 1) - (mask >>> 3 & 1); + if (forward == 0 && sideways == 0) { + return 0; + } else { + int sector = forward == 0 ? (sideways == 1 ? 2 : 6) : (forward == -1 ? 5 - (sideways + 1) : (sideways == 1 ? 1 : (sideways == -1 ? 7 : 0))); + float divided = RotationMath.wrap(yawDifference) / 45.0F; + float rounded = FloatNumeric.round(divided); + int[] table = new int[]{1, 5, 4, 6, 2, 10, 8, 9}; + return table[NumericMath.truncateInt(rounded) + sector & 7]; + } + } + + private static strictfp KeyBinding[] movementKeys(ClientContext context) { + GameSettings g = context.minecraft().gameSettings; + return new KeyBinding[]{g.keyBindForward, g.keyBindBack, g.keyBindLeft, g.keyBindRight}; + } + + public static strictfp void beginMovement(ClientContext context) { + if (remap && !keysRemapped) { + if (context.inputReady()) { + captureMovement(movementKeys(context), context.player().rotationYaw - retainedYaw); + } + + keysRemapped = true; + } + } + + private static strictfp void captureMovement(KeyBinding[] keys, float yawDifference) { + remappedKeys = keys; + savedKeys = 0; + + for (int i = 0; i < 4; i++) { + if (keys[i].isKeyDown()) { + savedKeys |= 1 << i; + } + } + + int mask = remapMask(savedKeys, yawDifference); + setKeys(keys, mask); + keysRemapped = true; + } + + public static strictfp void endMovement(ClientContext context) { + if (context == null) { + if (remappedKeys != null) { + setKeys(remappedKeys, savedKeys); + } + + remappedKeys = null; + } + + if (keysRemapped) { + if (context != null && context.inputReady()) { + setKeys(movementKeys(context), savedKeys); + remappedKeys = null; + } + + remap = false; + keysRemapped = false; + } + } + + public static strictfp void beginCamera(ClientContext context) { + if (mousePending && mouseEntity != context.player()) { + closeMouse(); + } + + if (active && camera.entity == null && context.player() != null) { + if (context.minecraft().renderGlobal != null) { + context.minecraft().renderGlobal.setDisplayListEntitiesDirty(); + } + + finishMouse(context.player()); + captureCamera(context.player()); + } + } + + private static strictfp void captureCamera(Entity entity) { + camera.capture(entity); + } + + public static strictfp void endCamera() { + camera.restore(); + } + + public static strictfp void beginRenderInfo(ClientContext context) { + if (active && renderInfo.entity == null) { + renderInfo.capture(context.player()); + } + } + + public static strictfp void endRenderInfo() { + renderInfo.restore(); + } + + public static strictfp float renderViewPitch(float vanilla) { + return active ? cameraPitch : vanilla; + } + + public static strictfp float renderViewYaw(float vanilla) { + return active ? cameraYaw : vanilla; + } + + private static strictfp void setRotation(Entity entity, float yaw, float pitch, boolean previous) { + entity.rotationYaw = yaw; + entity.rotationPitch = RotationMath.clamp(-90.0F, 90.0F, pitch); + if (previous) { + entity.prevRotationYaw = yaw; + entity.prevRotationPitch = entity.rotationPitch; + } + } + + private static strictfp void setArms(ClientContext context, float yaw, float pitch) { + context.player().prevRenderArmYaw = yaw; + context.player().prevRenderArmPitch = pitch; + context.player().renderArmYaw = yaw; + context.player().renderArmPitch = pitch; + } + + private static strictfp void setKeys(KeyBinding[] keys, int mask) { + try { + for (int i = 0; i < 4; i++) { + PRESSED.setBoolean(keys[i], (mask & 1 << i) != 0); + } + } catch (IllegalAccessException var3) { + throw new IllegalStateException(var3); + } + } + + public static strictfp void reset(ClientContext context) { + endRender(); + endMovement(null); + remap = false; + useRetained = false; + active = false; + deltaAge = 0; + priority = 0; + quantum = 0.0F; + mousePending = false; + restoreCameraPending = false; + mouseEntity = null; + manualPitch = 0.0F; + manualYaw = 0.0F; + pendingPitch = 0.0F; + pendingYaw = 0.0F; + displayPitch = 0.0F; + displayYaw = 0.0F; + retainedPitch = 0.0F; + retainedYaw = 0.0F; + cameraPitch = 0.0F; + cameraYaw = 0.0F; + savedMousePitch = 0.0F; + savedMouseYaw = 0.0F; + savedKeys = 0; + } + + private static final strictfp class RotationSnapshot { + Entity entity; + float yaw; + float pitch; + float prevYaw; + float prevPitch; + + private RotationSnapshot() { + } + + strictfp void capture(Entity value) { + if (this.entity == null && value != null) { + this.entity = value; + this.yaw = value.rotationYaw; + this.pitch = value.rotationPitch; + this.prevYaw = value.prevRotationYaw; + this.prevPitch = value.prevRotationPitch; + RotationService.setRotation(value, RotationService.cameraYaw, RotationService.cameraPitch, true); + } + } + + strictfp void restore() { + if (this.entity != null) { + RotationService.setRotation(this.entity, this.yaw, this.pitch, false); + this.entity.prevRotationYaw = this.prevYaw; + this.entity.prevRotationPitch = RotationMath.clamp(-90.0F, 90.0F, this.prevPitch); + this.entity = null; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/target/RayQueryAdapter.java b/SlinkyClient/src/main/java/dev/slinky/client/target/RayQueryAdapter.java new file mode 100644 index 0000000..c30544c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/target/RayQueryAdapter.java @@ -0,0 +1,124 @@ +package dev.slinky.client.target; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.combat.PiercingModule; +import dev.slinky.module.world.GhostHandModule; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItemFrame; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class RayQueryAdapter { + private RayQueryAdapter() { + } + + public static strictfp boolean update(ModuleManager modules, SemanticEvent query) { + if (modules != null && query.queryOverride && modules.context().ready()) { + ClientContext context = modules.context(); + Minecraft mc = context.minecraft(); + Entity viewer = mc.getRenderViewEntity(); + if (viewer != context.player()) { + return false; + } else { + PiercingModule piercing = (PiercingModule)modules.find("piercing"); + GhostHandModule ghost = (GhostHandModule)modules.find("ghosthand"); + boolean throughBlocks = piercing != null && piercing.pierceBlocks(context); + double entityDistance = query.distance; + double rayLength = entityDistance + 1.5; + MovingObjectPosition block = viewer.rayTrace(rayLength, 1.0F); + Vec3 origin = viewer.getPositionEyes(1.0F); + if (!throughBlocks && block != null) { + rayLength = origin.distanceTo(block.hitVec); + } + + Vec3 direction = direction(viewer.rotationYaw, viewer.rotationPitch); + Vec3 end = origin.addVector(direction.xCoord * rayLength, direction.yCoord * rayLength, direction.zCoord * rayLength); + Entity selected = null; + Vec3 selectedPoint = null; + double selectedDistance = entityDistance; + boolean insideSeen = false; + boolean allSelectedAllowThrough = block != null && block.typeOfHit == MovingObjectType.BLOCK; + + for (Object item : context.world().loadedEntityList) { + Entity candidate = (Entity)item; + if (candidate != viewer && candidate.canBeCollidedWith()) { + AxisAlignedBB bounds = candidate.getEntityBoundingBox().expand(query.expand, query.expand, query.expand); + MovingObjectPosition hit = bounds.calculateIntercept(origin, end); + if (bounds.isVecInside(origin)) { + insideSeen = true; + if (!(selectedDistance < 0.0)) { + int rank = selected != null && piercing != null ? piercing.rank(context, selected, candidate, true) : 2; + if (rank != 1) { + selected = candidate; + selectedPoint = hit == null ? origin : hit.hitVec; + selectedDistance = 0.0; + } + } + } else { + if (hit == null) { + continue; + } + + double distance = origin.distanceTo(hit.hitVec); + int rank = piercing == null ? 2 : piercing.rank(context, selected, candidate, insideSeen); + if (choose(rank, entityDistance, selectedDistance, distance)) { + selected = candidate; + selectedPoint = hit.hitVec; + selectedDistance = distance; + } + } + + allSelectedAllowThrough = allSelectedAllowThrough && ghost != null && ghost.canInteractThrough(context, selected); + } + } + + mc.pointedEntity = null; + mc.objectMouseOver = block; + if (allSelectedAllowThrough) { + return true; + } else { + if (selected != null && (block == null || !(selectedDistance > rayLength) || throughBlocks)) { + AxisAlignedBB original = selected.getEntityBoundingBox().expand(0.1F, 0.1F, 0.1F); + Vec3 point = new Vec3( + clamp(selectedPoint.xCoord, original.minX, original.maxX), + clamp(selectedPoint.yCoord, original.minY, original.maxY), + clamp(selectedPoint.zCoord, original.minZ, original.maxZ) + ); + mc.objectMouseOver = new MovingObjectPosition(selected, point); + if (selected instanceof EntityLivingBase || selected instanceof EntityItemFrame) { + mc.pointedEntity = selected; + } + } + + return true; + } + } + } else { + return false; + } + } + + public static strictfp boolean choose(int rank, double reach, double previous, double candidate) { + return rank == 2 ? previous == 0.0 || previous > candidate : rank == 0 && reach > candidate; + } + + private static strictfp double clamp(double value, double low, double high) { + return value < low ? low : (value > high ? high : value); + } + + public static strictfp Vec3 direction(float yaw, float pitch) { + float yawRadians = (float)((double)yaw * -Math.PI / 180.0 + -Math.PI); + float pitchRadians = (float)((double)pitch * -Math.PI / 180.0); + float negativeCosine = -RotationMath.cosine(pitchRadians); + float x = RotationMath.sine(yawRadians) * negativeCosine; + float z = negativeCosine * RotationMath.cosine(yawRadians); + return new Vec3((double)x, (double)RotationMath.sine(pitchRadians), (double)z); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/target/RelationshipService.java b/SlinkyClient/src/main/java/dev/slinky/client/target/RelationshipService.java new file mode 100644 index 0000000..20821c6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/target/RelationshipService.java @@ -0,0 +1,41 @@ +package dev.slinky.client.target; + +import java.util.ArrayList; +import java.util.Map; +import java.util.WeakHashMap; +import net.minecraft.entity.Entity; + +public final class RelationshipService { + private static final Map FLAGS = new WeakHashMap<>(); + + private RelationshipService() { + } + + public static int flags(Entity entity) { + Integer value = FLAGS.get(entity); + return value == null ? 0 : value; + } + + public static void set(Entity entity, int mask, boolean value) { + int next = value ? flags(entity) | mask : flags(entity) & ~mask; + if (next == 0) { + FLAGS.remove(entity); + } else { + FLAGS.put(entity, next); + } + } + + public static void clear(int mask) { + for (Entity entity : new ArrayList<>(FLAGS.keySet())) { + set(entity, mask, false); + } + } + + public static void clear() { + FLAGS.clear(); + } + + public static boolean hostile(Entity entity) { + return (flags(entity) & 7) == 0; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/client/target/TargetCombatStatus.java b/SlinkyClient/src/main/java/dev/slinky/client/target/TargetCombatStatus.java new file mode 100644 index 0000000..4685c27 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/client/target/TargetCombatStatus.java @@ -0,0 +1,162 @@ +package dev.slinky.client.target; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.combat.AimAssistModule; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class TargetCombatStatus { + private boolean valid; + private boolean reducing; + private EntityPlayer target; + private double distanceSquared; + + public strictfp EntityPlayer target() { + return this.target; + } + + public strictfp double distanceSquared() { + return this.distanceSquared; + } + + public strictfp void select(ClientContext c, ModuleManager modules) { + this.valid = false; + if (!c.ready()) { + this.target = null; + } else { + Vec3 eye = new Vec3(c.player().posX, c.player().posY + 1.62, c.player().posZ); + EntityPlayer chosen = null; + MovingObjectPosition hit = c.minecraft().objectMouseOver; + if (hit != null && hit.typeOfHit == MovingObjectType.ENTITY && hit.entityHit instanceof EntityOtherPlayerMP) { + EntityPlayer p = (EntityPlayer)hit.entityHit; + if (RelationshipService.hostile(p) && !(0.0F >= p.getHealth())) { + chosen = p; + } + } + + if (chosen == null) { + Module aim = modules.find("aimassist"); + if (aim instanceof AimAssistModule) { + chosen = ((AimAssistModule)aim).currentTarget(); + } + } + + if (chosen != null) { + this.target = chosen; + this.distanceSquared = boxDistance(eye, chosen); + } else { + double best = 225.0; + + for (EntityPlayer p : c.world().playerEntities) { + if (p != c.player() && RelationshipService.hostile(p) && !(0.0F >= p.getHealth()) && !p.isPlayerSleeping()) { + double distance = boxDistance(eye, p); + if (!(distance > best)) { + float[] angle = RotationMath.angles(eye, new Vec3(p.posX, p.posY, p.posZ)); + float yaw = RotationMath.wrap(angle[0] - c.player().rotationYaw); + float pitch = angle[1] - c.player().rotationPitch; + float metric = yaw * yaw; + metric += pitch; + metric += pitch; + if (!(metric > 4900.0F)) { + best = distance; + chosen = p; + } + } + } + } + + this.target = chosen; + if (chosen != null) { + this.distanceSquared = best; + } + } + } + } + + private static strictfp double boxDistance(Vec3 eye, Entity entity) { + AxisAlignedBB box = entity.getEntityBoundingBox().expand(0.1, 0.1, 0.1); + double x = RotationMath.clamp(box.minX, box.maxX, eye.xCoord) - eye.xCoord; + double y = RotationMath.clamp(box.minY, box.maxY, eye.yCoord) - eye.yCoord; + double z = RotationMath.clamp(box.minZ, box.maxZ, eye.zCoord) - eye.zCoord; + return z * z + (x * x + y * y); + } + + public strictfp void clear() { + this.valid = false; + this.target = null; + this.distanceSquared = 0.0; + } + + public strictfp void reset() { + this.valid = false; + } + + public strictfp void prepare(ClientContext context) { + if (!this.valid) { + MovingObjectPosition hit = context.minecraft().objectMouseOver; + if (context.ready() && hit != null && hit.typeOfHit == MovingObjectType.ENTITY) { + this.sample( + true, + new Vec3(context.player().posX, context.player().posY + 1.62, context.player().posZ), + hit.hitVec, + context.player().motionX, + context.player().motionY, + context.player().motionZ, + context.player().rotationYaw, + context.player().moveForward, + context.player().moveStrafing, + context.player().onGround ? context.player().getAIMoveSpeed() : 0.026F + ); + } else { + this.sample(false, null, null, 0.0, 0.0, 0.0, 0.0F, 0.0F, 0.0F, 0.0F); + } + } + } + + public strictfp void sample(boolean entityHit, Vec3 eye, Vec3 hit, double x, double y, double z, float yaw, float forward, float sideways, float speed) { + if (!this.valid) { + this.reducing = true; + if (entityHit) { + double[] movement = RotationMath.movement(yaw, forward, sideways, speed); + double normalX = x + movement[0]; + double normalY = y + 0.0; + double normalZ = movement[1] + z; + double reducedX = x * 0.6 + movement[0]; + double reducedY = y + 0.0; + double reducedZ = movement[1] + 0.6 * z; + double reducedDistance = squared(eye.xCoord + reducedX, eye.yCoord + reducedY, reducedZ + eye.zCoord, hit); + double normalDistance = squared(eye.xCoord + normalX, eye.yCoord + normalY, normalZ + eye.zCoord, hit); + this.reducing = normalDistance > reducedDistance; + } + + this.valid = true; + } + } + + private static strictfp double squared(double x, double y, double z, Vec3 hit) { + x -= hit.xCoord; + y -= hit.yCoord; + z -= hit.zCoord; + return z * z + (x * x + y * y); + } + + public strictfp SemanticEvent event(int type, boolean use) { + if (!this.valid && !use) { + throw new IllegalStateException("Attack status must be prepared before dispatch"); + } else { + SemanticEvent event = new SemanticEvent(type); + event.active = !use; + event.reducing = this.reducing; + return event; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/ConfigStore.java b/SlinkyClient/src/main/java/dev/slinky/config/ConfigStore.java new file mode 100644 index 0000000..357f725 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/ConfigStore.java @@ -0,0 +1,199 @@ +package dev.slinky.config; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.Setting; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class ConfigStore { + private final Path path; + private List profileBindings = new ArrayList<>(); + + public ConfigStore(Path path) { + this.path = path; + } + + public synchronized void load(ModuleManager manager) throws IOException { + if (Files.isRegularFile(this.path)) { + JsonObject root = read(this.path); + JsonObject modules = object(root, "modules"); + if (modules == null) { + try { + ModuleConfiguration.apply(manager, root, ModuleConfiguration.Scope.GLOBAL); + this.profileBindings = ModuleConfiguration.profileBindings(root); + Path checkpoint = this.checkpointPath(); + if (ModuleConfiguration.hasRecords(manager, root, ModuleConfiguration.Scope.PROFILE)) { + ModuleConfiguration.apply(manager, root, ModuleConfiguration.Scope.PROFILE); + } else if (Files.isRegularFile(checkpoint)) { + ModuleConfiguration.apply(manager, read(checkpoint), ModuleConfiguration.Scope.PROFILE); + } + } catch (RuntimeException var12) { + throw new IOException("Could not apply configuration", var12); + } + } else { + for (Module module : manager.all()) { + JsonObject record = object(modules, module.getId()); + if (record != null) { + JsonObject settings = object(record, "settings"); + if (settings != null) { + for (Setting setting : module.getSettings()) { + JsonElement value = settings.get(setting.getKey()); + if (value != null) { + try { + SettingCodec.decode(setting, value); + } catch (RuntimeException var13) { + } + } + } + } + + JsonElement enabled = record.get("enabled"); + JsonElement hold = record.get("__hold"); + module.setHoldBinding(hold != null && hold.isJsonPrimitive() && hold.getAsJsonPrimitive().isBoolean() && hold.getAsBoolean()); + JsonElement binding = record.get("__bind"); + if (binding != null && binding.isJsonPrimitive() && binding.getAsJsonPrimitive().isNumber()) { + manager.setBinding(module, binding.getAsInt()); + } + + if (enabled != null && enabled.isJsonPrimitive()) { + try { + manager.setEnabled(module, enabled.getAsBoolean(), false); + } catch (IllegalArgumentException var14) { + throw new IOException("Incomplete configuration for " + module.getName(), var14); + } + } + } + } + } + } + } + + public synchronized void save(ModuleManager manager) throws IOException { + this.write(this.path, ModuleConfiguration.serialize(manager, ModuleConfiguration.Scope.GLOBAL, this.profileBindings)); + this.write(this.checkpointPath(), ModuleConfiguration.serialize(manager, ModuleConfiguration.Scope.PROFILE, Collections.emptyList())); + } + + public synchronized List profileBindings() { + return Collections.unmodifiableList(new ArrayList<>(this.profileBindings)); + } + + public synchronized void profileBindings(List bindings) { + this.profileBindings = new ArrayList<>(bindings); + } + + public synchronized void loadProfile(ModuleManager manager) throws IOException { + try { + ModuleConfiguration.apply(manager, read(this.path), ModuleConfiguration.Scope.PROFILE); + } catch (RuntimeException var3) { + throw new IOException("Could not apply profile", var3); + } + } + + public static int importText(ModuleManager manager, byte[] text) throws IOException { + JsonObject root = ConfigurationJson.parse(text); + int records = 0; + + for (Module module : manager.all()) { + if (object(root, module.getName()) != null) { + records++; + } + } + + if (records == 0) { + throw new IOException("No module records in the configuration"); + } else { + try { + if (ModuleConfiguration.hasRecords(manager, root, ModuleConfiguration.Scope.GLOBAL)) { + ModuleConfiguration.apply(manager, root, ModuleConfiguration.Scope.GLOBAL); + } + + ModuleConfiguration.apply(manager, root, ModuleConfiguration.Scope.PROFILE); + return records; + } catch (RuntimeException var6) { + throw new IOException("Could not apply configuration", var6); + } + } + } + + public synchronized void saveProfile(ModuleManager manager) throws IOException { + this.saveProfile(manager, true); + } + + public synchronized void saveProfile(ModuleManager manager, boolean replace) throws IOException { + Path parent = this.path.toAbsolutePath().getParent(); + if (parent != null && parent.getParent() != null) { + ensure(parent.getParent()); + } + + writeBytes( + this.path, ConfigurationJson.print(ModuleConfiguration.serialize(manager, ModuleConfiguration.Scope.PROFILE, Collections.emptyList())), replace + ); + } + + private Path checkpointPath() { + return this.path.resolveSibling(this.path.getFileName().toString() + ".active"); + } + + private static JsonObject read(Path target) throws IOException { + ConfigurationFiles.WidePath file = new ConfigurationFiles.WidePath(); + file.text = ConfigurationFiles.wide(target.toString()); + ConfigurationFiles.Text text = new ConfigurationFiles.Text(); + + JsonObject var6; + try (ConfigurationFiles.NioHost host = new ConfigurationFiles.NioHost(null)) { + int status = ConfigurationFiles.readText(file, text, host); + if (status != 0) { + throw new ConfigurationFiles.Failure(status); + } + + try { + var6 = ConfigurationJson.parse(text.bytes); + } finally { + host.release(text.bytes); + } + } + + return var6; + } + + private void write(Path target, JsonObject root) throws IOException { + ensure(target.toAbsolutePath().getParent()); + writeBytes(target, ConfigurationJson.print(root), true); + } + + private static void ensure(Path directory) throws IOException { + ConfigurationFiles.WidePath path = new ConfigurationFiles.WidePath(); + path.text = ConfigurationFiles.wide(directory.toString()); + + try (ConfigurationFiles.NioHost host = new ConfigurationFiles.NioHost(null)) { + int status = ConfigurationFiles.ensureDirectory(path, host); + if (status != 0) { + throw new ConfigurationFiles.Failure(status); + } + } + } + + private static void writeBytes(Path target, byte[] text, boolean replace) throws IOException { + ConfigurationFiles.WidePath path = new ConfigurationFiles.WidePath(); + path.text = ConfigurationFiles.wide(target.toString()); + + try (ConfigurationFiles.NioHost host = new ConfigurationFiles.NioHost(null)) { + int status = ConfigurationFiles.writeText(path, text, replace ? 1 : 0, 0, host); + if (status != 0) { + throw new ConfigurationFiles.Failure(status); + } + } + } + + private static JsonObject object(JsonObject parent, String key) { + JsonElement element = parent.get(key); + return element != null && element.isJsonObject() ? element.getAsJsonObject() : null; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationFiles.java b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationFiles.java new file mode 100644 index 0000000..115fa61 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationFiles.java @@ -0,0 +1,393 @@ +package dev.slinky.config; + +import dev.slinky.config.json.JsonRuntime; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.InvalidPathException; +import java.nio.file.NoSuchFileException; +import java.nio.file.OpenOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Set; + +public final class ConfigurationFiles { + private ConfigurationFiles() { + } + + public static int initializePath(ConfigurationFiles.WidePath path, ConfigurationFiles.Host host) { + char[] base = host.environment(); + if (base != null && base[0] != 0) { + int length = length(base); + char[] copy = host.allocateWide((long)length + 1L); + if (copy == null) { + return 1005; + } else { + System.arraycopy(base, 0, copy, 0, length); + path.text = copy; + return 0; + } + } else { + return 1004; + } + } + + public static int appendPath(ConfigurationFiles.WidePath path, byte[] component, ConfigurationFiles.Host host) { + int oldLength = length(path.text); + int componentLength = JsonRuntime.stringLength(component, 0); + char[] next = host.allocateWide(261L); + if (next == null) { + return 1005; + } else { + long capacity = (long)(oldLength + componentLength + 2); + host.formatPath(next, capacity, path.text, component); + host.release(path.text); + path.text = next; + return 0; + } + } + + public static void parentPath(ConfigurationFiles.WidePath path) { + int offset = length(path.text); + int destination = 0; + + do { + if (path.text[offset] == '\\') { + destination = offset; + break; + } + } while (--offset != 0); + + path.text[destination] = 0; + } + + public static int ensureDirectory(ConfigurationFiles.WidePath path, ConfigurationFiles.Host host) { + return host.createDirectory(path.text) == 0 && host.lastError() != 183 ? 1014 : 0; + } + + public static int deletePath(ConfigurationFiles.WidePath path, ConfigurationFiles.Host host) { + return host.deleteFile(path.text) != 0 ? 0 : 1011; + } + + public static int readText(ConfigurationFiles.WidePath path, ConfigurationFiles.Text output, ConfigurationFiles.Host host) { + Object handle = host.open(path.text, Integer.MIN_VALUE, 1, 3); + if (handle == null) { + return 1008; + } else { + int size = host.size(handle); + if (size == -1) { + host.close(handle); + return 1007; + } else { + byte[] buffer = host.allocateBytes(Integer.toUnsignedLong(size + 1)); + if (buffer == null) { + return 1005; + } else { + long length; + int result; + length = Integer.toUnsignedLong(size); + long total = 0L; + result = 0; + label39: + if (size != 0) { + ConfigurationFiles.Count read = new ConfigurationFiles.Count(); + + while (host.read(handle, buffer, total, size - (int)total, read)) { + if (read.value == 0) { + result = 1018; + break label39; + } + + total += Integer.toUnsignedLong(read.value); + if (Long.compareUnsigned(total, length) >= 0) { + break label39; + } + } + + result = 1009; + } + + if (result != 0) { + host.release(buffer); + } else { + if (length >= (long)buffer.length) { + throw new IllegalArgumentException("File service returned unbacked storage"); + } + + buffer[(int)length] = 0; + output.bytes = buffer; + } + + host.close(handle); + return result; + } + } + } + } + + public static int writeText(ConfigurationFiles.WidePath path, byte[] text, int replaceByte, int incomingCount, ConfigurationFiles.Host host) { + Object handle = host.open(path.text, 1073741824, 0, (replaceByte & 0xFF) + 1); + if (handle == null) { + return host.lastError() == 80 ? 1012 : 1008; + } else { + long length = (long)JsonRuntime.stringLength(text, 0); + long total = 0L; + ConfigurationFiles.Count written = new ConfigurationFiles.Count(); + written.value = incomingCount; + int result = 0; + + while (Long.compareUnsigned(total, length) < 0) { + boolean success = host.write(handle, text, total, (int)length - (int)total, written); + total += Integer.toUnsignedLong(written.value); + if (!success) { + result = 1010; + break; + } + } + + host.close(handle); + return result; + } + } + + public static void releasePath(ConfigurationFiles.WidePath path, ConfigurationFiles.Host host) { + host.release(path.text); + path.text = null; + } + + public static int length(char[] text) { + for (int index = 0; index < text.length; index++) { + if (text[index] == 0) { + return index; + } + } + + throw new IllegalArgumentException("Wide path lacks terminator"); + } + + public static char[] wide(String text) { + return Arrays.copyOf(text.toCharArray(), text.length() + 1); + } + + public static final class Count { + public int value; + } + + public static final class Failure extends IOException { + public final int code; + + public Failure(int code) { + super("Configuration file service returned " + code); + this.code = code; + } + } + + public interface Host { + char[] environment(); + + char[] allocateWide(long var1); + + byte[] allocateBytes(long var1); + + void release(Object var1); + + int formatPath(char[] var1, long var2, char[] var4, byte[] var5); + + int createDirectory(char[] var1); + + int deleteFile(char[] var1); + + int lastError(); + + Object open(char[] var1, int var2, int var3, int var4); + + int size(Object var1); + + boolean read(Object var1, byte[] var2, long var3, int var5, ConfigurationFiles.Count var6); + + boolean write(Object var1, byte[] var2, long var3, int var5, ConfigurationFiles.Count var6); + + void close(Object var1); + } + + public static final class NioHost implements ConfigurationFiles.Host, AutoCloseable { + private final Path environment; + private final Set opened = Collections.newSetFromMap(new IdentityHashMap<>()); + private int error; + + public NioHost(Path environment) { + this.environment = environment; + } + + @Override + public char[] environment() { + return this.environment == null ? null : ConfigurationFiles.wide(this.environment.toString()); + } + + @Override + public char[] allocateWide(long count) { + return count >= 0L && count <= 2147483639L ? new char[(int)count] : null; + } + + @Override + public byte[] allocateBytes(long count) { + return count >= 0L && count <= 2147483639L ? new byte[(int)count] : null; + } + + @Override + public void release(Object allocation) { + } + + @Override + public int formatPath(char[] destination, long capacity, char[] base, byte[] component) { + String result = new String(base, 0, ConfigurationFiles.length(base)) + "\\" + JsonRuntime.utf8CString(component); + if (capacity > 0L && capacity <= (long)destination.length && (long)result.length() < capacity) { + result.getChars(0, result.length(), destination, 0); + destination[result.length()] = 0; + return result.length(); + } else { + destination[0] = 0; + return -1; + } + } + + private Path path(char[] text) { + return Paths.get(new String(text, 0, ConfigurationFiles.length(text))); + } + + @Override + public int lastError() { + return this.error; + } + + private void failure(Exception failed) { + this.error = failed instanceof FileAlreadyExistsException ? 80 : (failed instanceof NoSuchFileException ? 2 : 5); + } + + @Override + public int createDirectory(char[] path) { + try { + Files.createDirectory(this.path(path)); + return 1; + } catch (FileAlreadyExistsException var3) { + this.error = 183; + return 0; + } catch (InvalidPathException | IOException var4) { + this.failure(var4); + return 0; + } + } + + @Override + public int deleteFile(char[] path) { + try { + Files.delete(this.path(path)); + return 1; + } catch (InvalidPathException | IOException var3) { + this.failure(var3); + return 0; + } + } + + @Override + public Object open(char[] path, int access, int sharing, int creation) { + try { + Set options = new HashSet<>(); + options.add(access == Integer.MIN_VALUE ? StandardOpenOption.READ : StandardOpenOption.WRITE); + if (creation == 1) { + options.add(StandardOpenOption.CREATE_NEW); + } else if (creation == 2) { + options.add(StandardOpenOption.CREATE); + options.add(StandardOpenOption.TRUNCATE_EXISTING); + } else if (creation != 3) { + throw new IOException("Unsupported file creation disposition"); + } + + FileChannel channel = FileChannel.open(this.path(path), options); + this.opened.add(channel); + return channel; + } catch (InvalidPathException | IOException var7) { + this.failure(var7); + return null; + } + } + + @Override + public int size(Object handle) { + try { + return (int)((FileChannel)handle).size(); + } catch (IOException var3) { + this.failure(var3); + return -1; + } + } + + private ByteBuffer buffer(byte[] bytes, long offset, int requested) { + long count = Integer.toUnsignedLong(requested); + if (offset >= 0L && offset <= (long)bytes.length && count <= (long)bytes.length - offset) { + return ByteBuffer.wrap(bytes, (int)offset, (int)count); + } else { + throw new IllegalArgumentException("Unbacked file transfer range"); + } + } + + @Override + public boolean read(Object handle, byte[] destination, long offset, int requested, ConfigurationFiles.Count count) { + try { + int read = ((FileChannel)handle).read(this.buffer(destination, offset, requested)); + count.value = Math.max(read, 0); + return true; + } catch (IOException var8) { + this.failure(var8); + return false; + } + } + + @Override + public boolean write(Object handle, byte[] source, long offset, int requested, ConfigurationFiles.Count count) { + try { + count.value = ((FileChannel)handle).write(this.buffer(source, offset, requested)); + return true; + } catch (IOException var8) { + this.failure(var8); + return false; + } + } + + @Override + public void close(Object handle) { + FileChannel channel = (FileChannel)handle; + + try { + channel.close(); + } catch (IOException var7) { + this.failure(var7); + } finally { + this.opened.remove(channel); + } + } + + @Override + public void close() { + for (FileChannel channel : new ArrayList<>(this.opened)) { + this.close(channel); + } + } + } + + public static final class Text { + public byte[] bytes; + } + + public static final class WidePath { + public char[] text; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationJson.java b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationJson.java new file mode 100644 index 0000000..51a87e0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationJson.java @@ -0,0 +1,165 @@ +package dev.slinky.config; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import dev.slinky.config.json.ConfigJsonParser; +import dev.slinky.config.json.JsonJvmServices; +import dev.slinky.config.json.JsonRuntime; +import java.io.IOException; +import java.util.Map.Entry; + +public final class ConfigurationJson { + private ConfigurationJson() { + } + + public static JsonObject parse(byte[] bytes) throws IOException { + JsonElement value = parseValue(bytes); + return value.isJsonObject() ? value.getAsJsonObject() : new JsonObject(); + } + + public static JsonElement parseValue(byte[] bytes) throws IOException { + JsonRuntime.Context context = new JsonJvmServices().context(); + JsonRuntime.Node root = ConfigJsonParser.parse_4da70(bytes, context); + if (root == null) { + throw new IOException("Invalid configuration bytes at " + context.errorOffset); + } else { + JsonElement var3; + try { + var3 = value(root); + } finally { + JsonRuntime.deleteTree_4d240(root, context); + } + + return var3; + } + } + + private static JsonElement value(JsonRuntime.Node node) { + switch (node.type & 0xFF) { + case 1: + return new JsonPrimitive(false); + case 2: + return new JsonPrimitive(true); + case 8: + return new JsonPrimitive(node.valueNumber); + case 16: + return new JsonPrimitive(JsonRuntime.utf8CString(node.valueString)); + case 32: + JsonArray array = new JsonArray(); + + for (JsonRuntime.Node child = node.child; child != null; child = child.next) { + array.add(value(child)); + } + + return array; + case 64: + JsonObject object = new JsonObject(); + + for (JsonRuntime.Node child = node.child; child != null && child.name != null; child = child.next) { + String name = JsonRuntime.utf8CString(child.name); + if (!object.has(name)) { + object.add(name, value(child)); + } + } + + return object; + default: + return JsonNull.INSTANCE; + } + } + + public static byte[] print(JsonObject value) throws IOException { + JsonRuntime.Context context = new JsonJvmServices().context(); + JsonRuntime.Node root = JsonRuntime.createObject_4f590(context); + if (root == null) { + throw new ConfigurationFiles.Failure(5000); + } else { + byte[] var4; + try { + fill(root, value, context); + byte[] text = JsonRuntime.printCompact_4dbe0(root, context); + if (text == null) { + throw new ConfigurationFiles.Failure(5000); + } + + var4 = text; + } finally { + JsonRuntime.deleteTree_4d240(root, context); + } + + return var4; + } + } + + private static void fill(JsonRuntime.Node node, JsonElement value, JsonRuntime.Context context) throws IOException { + if (value.isJsonObject()) { + for (Entry member : value.getAsJsonObject().entrySet()) { + add(node, JsonRuntime.cString(member.getKey()), member.getValue(), context); + } + } else if (value.isJsonArray()) { + for (JsonElement child : value.getAsJsonArray()) { + add(node, null, child, context); + } + } + } + + private static void add(JsonRuntime.Node parent, byte[] name, JsonElement value, JsonRuntime.Context context) throws IOException { + JsonRuntime.Node holder = name == null ? JsonRuntime.createObject_4f590(context) : parent; + byte[] key = name == null ? new byte[]{0} : name; + if (holder == null) { + throw new ConfigurationFiles.Failure(5000); + } else { + JsonRuntime.Node child = null; + + try { + if (value.isJsonObject()) { + child = JsonRuntime.writeObject_4f480(holder, key, context); + } else if (value.isJsonArray()) { + child = JsonRuntime.writeArray_4f5d0(holder, key, context); + } else if (value.isJsonPrimitive()) { + JsonPrimitive primitive = value.getAsJsonPrimitive(); + if (primitive.isBoolean()) { + child = JsonRuntime.writeBoolean_4ed40(holder, key, primitive.getAsBoolean() ? 1 : 0, context); + } else if (primitive.isNumber()) { + child = JsonRuntime.writeNumber_4eeb0(holder, key, primitive.getAsDouble(), context); + } else { + child = JsonRuntime.writeString_4f080(holder, key, JsonRuntime.cString(primitive.getAsString()), context); + } + } else { + child = JsonRuntime.createObject_4f590(context); + if (child != null) { + child.type = 4; + if (JsonRuntime.attachName_4e5b0(holder, key, child, context) == 0) { + JsonRuntime.deleteTree_4d240(child, context); + child = null; + } + } + } + + if (child == null) { + throw new ConfigurationFiles.Failure(5000); + } + + if (name == null) { + holder.child = null; + context.allocator.release(child.name); + child.name = null; + child.next = child.previous = null; + if (JsonRuntime.append_4e560(parent, child) == 0) { + JsonRuntime.deleteTree_4d240(child, context); + throw new ConfigurationFiles.Failure(5000); + } + } + + fill(child, value, context); + } finally { + if (name == null) { + JsonRuntime.deleteTree_4d240(holder, context); + } + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationSession.java b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationSession.java new file mode 100644 index 0000000..18f3684 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/ConfigurationSession.java @@ -0,0 +1,23 @@ +package dev.slinky.config; + +public final class ConfigurationSession { + private volatile String currentProfile; + private volatile boolean pending; + + public String currentProfile() { + return this.currentProfile; + } + + public boolean pending() { + return this.pending; + } + + public void controlChanged() { + this.pending = true; + } + + public void profileApplied(String name) { + this.currentProfile = name; + this.pending = false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/InitialSettings.java b/SlinkyClient/src/main/java/dev/slinky/config/InitialSettings.java new file mode 100644 index 0000000..98bffd6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/InitialSettings.java @@ -0,0 +1,61 @@ +package dev.slinky.config; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.Setting; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; + +public final class InitialSettings { + private static final JsonObject MODULES = read(); + + private static JsonObject read() { + InputStream stream = Platform.resource("/assets/slinkysemantic/InitialSettings.json"); + if (stream == null) { + throw new IllegalStateException("Missing initial configuration"); + } else { + try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + return new JsonParser().parse(reader).getAsJsonObject().getAsJsonObject("modules"); + } catch (IOException var15) { + throw new IllegalStateException(var15); + } + } + } + + public static int applyMissing(ModuleManager manager) { + int applied = 0; + + for (Module module : manager.all()) { + JsonObject values = MODULES.getAsJsonObject(module.getName()); + if (values != null) { + for (Setting setting : module.getSettings()) { + if (!setting.isConfigured()) { + JsonObject row = values.getAsJsonObject(setting.getKey()); + if (row == null) { + throw new IllegalStateException("Missing initial value: " + module.getName() + "." + setting.getKey()); + } + + SettingCodec.decode(setting, row.get("value")); + if (!setting.isConfigured()) { + throw new IllegalStateException("Invalid initial value: " + module.getName() + "." + setting.getKey()); + } + + setting.saveCurrent(); + applied++; + } + } + } + } + + return applied; + } + + private InitialSettings() { + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/ModuleConfiguration.java b/SlinkyClient/src/main/java/dev/slinky/config/ModuleConfiguration.java new file mode 100644 index 0000000..2e6fd3a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/ModuleConfiguration.java @@ -0,0 +1,176 @@ +package dev.slinky.config; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.Setting; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public final class ModuleConfiguration { + private ModuleConfiguration() { + } + + private static boolean included(Module module, ModuleConfiguration.Scope scope) { + boolean global = (module.descriptorFlags() & 16) != 0; + return global == (scope == ModuleConfiguration.Scope.GLOBAL); + } + + public static JsonObject serialize( + ModuleManager manager, ModuleConfiguration.Scope scope, Iterable profileBindings + ) { + JsonObject root = new JsonObject(); + + for (Module module : manager.all()) { + if (included(module, scope)) { + JsonObject record = new JsonObject(); + int flags = module.descriptorFlags(); + if ((flags & 2) == 0 && module.isEnabled()) { + record.addProperty("__on", true); + } + + if ((flags & 1) == 0) { + if (module.getBinding() != 0) { + record.addProperty("__bind", (double)Integer.toUnsignedLong(module.getBinding())); + } + + if ((flags & 8) == 0 && module.isHoldBinding()) { + record.addProperty("__hold", true); + } + } + + for (Setting setting : module.getSettings()) { + if (setting.isConfigured()) { + record.add(setting.getKey(), SettingCodec.encode(setting)); + } + } + + root.add(module.getName(), record); + } + } + + if (scope == ModuleConfiguration.Scope.GLOBAL) { + JsonArray bindings = new JsonArray(); + + for (ModuleConfiguration.ProfileBinding profile : profileBindings) { + if (profile.binding != 0) { + JsonObject recordx = new JsonObject(); + recordx.addProperty("name", profile.name); + recordx.addProperty("bind", (double)Integer.toUnsignedLong(profile.binding)); + bindings.add(recordx); + } + } + + root.add("profile_binds", bindings); + } + + return root; + } + + public static List profileBindings(JsonObject root) { + List result = new ArrayList<>(); + JsonElement rows = root.get("profile_binds"); + if (rows != null && rows.isJsonArray()) { + for (JsonElement element : rows.getAsJsonArray()) { + if (element.isJsonObject()) { + JsonObject row = element.getAsJsonObject(); + JsonElement name = row.get("name"); + if (name != null && name.isJsonPrimitive() && name.getAsJsonPrimitive().isString()) { + result.add(new ModuleConfiguration.ProfileBinding(name.getAsString(), binding(row.get("bind")))); + } + } + } + + return result; + } else { + return result; + } + } + + public static int binding(JsonElement node) { + if (node != null && node.isJsonPrimitive() && node.getAsJsonPrimitive().isNumber()) { + int converted = (int)NumericMath.truncateLong(node.getAsDouble() + 0.5); + return Integer.compareUnsigned(converted - 104, -103) >= 0 ? converted : 0; + } else { + return 0; + } + } + + private static boolean enabled(JsonElement node) { + return node != null && node.isJsonPrimitive() && node.getAsJsonPrimitive().isBoolean() && node.getAsBoolean(); + } + + public static boolean hasRecords(ModuleManager manager, JsonObject root, ModuleConfiguration.Scope scope) { + for (Module module : manager.all()) { + JsonElement node = root.get(module.getName()); + if (included(module, scope) && node != null && node.isJsonObject()) { + return true; + } + } + + return false; + } + + public static void apply(ModuleManager manager, JsonObject root, ModuleConfiguration.Scope scope) { + for (Module module : manager.all()) { + if (included(module, scope)) { + JsonElement node = root.get(module.getName()); + JsonObject record = node != null && node.isJsonObject() ? node.getAsJsonObject() : new JsonObject(); + int flags = module.descriptorFlags(); + if ((flags & 1) == 0) { + manager.setBinding(module, binding(record.get("__bind"))); + module.setHoldBinding((flags & 8) == 0 && enabled(record.get("__hold"))); + } + + for (Setting setting : module.getSettings()) { + JsonElement value = record.get(setting.getKey()); + if (value == null) { + setting.restoreSaved(); + } else { + setting.restoreSaved(); + SettingCodec.decode(setting, value); + } + } + + if ((flags & 2) == 0) { + manager.requestEnabled(module, enabled(record.get("__on"))); + } + } + } + } + + public static void resetProfile(ModuleManager manager) { + for (Module module : manager.all()) { + if (included(module, ModuleConfiguration.Scope.PROFILE)) { + manager.setBinding(module, 0); + module.setHoldBinding(false); + if ((module.descriptorFlags() & 2) == 0) { + manager.requestEnabled(module, false); + } + + for (Setting setting : module.getSettings()) { + setting.restoreSaved(); + } + } + } + } + + public static final class ProfileBinding { + public final String name; + public final int binding; + + public ProfileBinding(String name, int binding) { + this.name = Objects.requireNonNull(name); + this.binding = binding; + } + } + + public static enum Scope { + GLOBAL, + PROFILE; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/SettingCodec.java b/SlinkyClient/src/main/java/dev/slinky/config/SettingCodec.java new file mode 100644 index 0000000..c43a2c6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/SettingCodec.java @@ -0,0 +1,129 @@ +package dev.slinky.config; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ChoiceSetting; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NamedColorListSetting; +import dev.slinky.setting.NumberSetting; +import dev.slinky.setting.RangeSetting; +import dev.slinky.setting.Setting; +import dev.slinky.setting.StringListSetting; +import java.util.ArrayList; +import java.util.List; + +public final class SettingCodec { + private SettingCodec() { + } + + public static JsonElement encode(Setting setting) { + if (setting instanceof BooleanSetting) { + return new JsonPrimitive(((BooleanSetting)setting).isEnabled()); + } else if (setting instanceof NumberSetting) { + return new JsonPrimitive((double)((NumberSetting)setting).floatValue()); + } else if (setting instanceof RangeSetting) { + RangeSetting.Value v = ((RangeSetting)setting).get(); + JsonObject range = new JsonObject(); + range.addProperty("min", v.lower); + range.addProperty("max", v.upper); + return range; + } else if (setting instanceof ColorSetting) { + ColorSetting.Value c = ((ColorSetting)setting).get(); + JsonObject rgb = new JsonObject(); + rgb.addProperty("r", (double)c.red); + rgb.addProperty("g", (double)c.green); + rgb.addProperty("b", (double)c.blue); + return rgb; + } else if (setting instanceof NamedColorListSetting) { + return ((NamedColorListSetting)setting).encode(); + } else if (!(setting instanceof StringListSetting)) { + return new JsonPrimitive(setting.format()); + } else { + JsonArray rows = new JsonArray(); + + for (String name : ((StringListSetting)setting).get()) { + rows.add(new JsonPrimitive(name)); + } + + return rows; + } + } + + public static void decode(Setting setting, JsonElement value) { + if (setting instanceof BooleanSetting) { + if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isBoolean()) { + ((BooleanSetting)setting).set(Boolean.valueOf(value.getAsBoolean())); + } + } else if (!(setting instanceof ChoiceSetting)) { + if (setting instanceof NumberSetting) { + if (numeric(value)) { + ((NumberSetting)setting).loadNumber(value.getAsDouble()); + } + } else if (setting instanceof RangeSetting && value.isJsonObject()) { + RangeSetting range = (RangeSetting)setting; + JsonObject row = value.getAsJsonObject(); + float low = numeric(row.get("min")) ? row.get("min").getAsFloat() : Float.NaN; + float high = numeric(row.get("max")) ? row.get("max").getAsFloat() : Float.NaN; + if (!Float.isNaN(low) && !Float.isNaN(high)) { + if (high < low) { + low = high; + } + + if ((float)range.minimum() > low) { + low = (float)range.minimum(); + } else if (low > (float)range.maximum()) { + low = (float)range.maximum(); + } + + if ((float)range.minimum() > high) { + high = (float)range.minimum(); + } else if (high > (float)range.maximum()) { + high = (float)range.maximum(); + } + + range.set(new RangeSetting.Value((double)low, (double)high)); + } + } else if (setting instanceof ColorSetting && value.isJsonObject()) { + JsonObject row = value.getAsJsonObject(); + if (numeric(row.get("r")) && numeric(row.get("g")) && numeric(row.get("b"))) { + float r = row.get("r").getAsFloat(); + float g = row.get("g").getAsFloat(); + float b = row.get("b").getAsFloat(); + if (r >= 0.0F && r <= 1.0F && g >= 0.0F && g <= 1.0F && b >= 0.0F && b <= 1.0F) { + ((ColorSetting)setting).set(new ColorSetting.Value(r, g, b)); + } + } + } else if (setting instanceof NamedColorListSetting && value.isJsonArray()) { + ((NamedColorListSetting)setting).loadRows(value.getAsJsonArray()); + } else if (setting instanceof StringListSetting && value.isJsonArray()) { + List list = new ArrayList<>(); + + for (JsonElement element : value.getAsJsonArray()) { + if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isString()) { + list.add(element.getAsString()); + } + } + + ((StringListSetting)setting).set(list); + } + } else { + if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) { + ChoiceSetting choice = (ChoiceSetting)setting; + + for (int index = 0; index < choice.getOptions().size(); index++) { + if (choice.getOptions().get(index).equals(value.getAsString())) { + choice.set(Integer.valueOf(index)); + break; + } + } + } + } + } + + private static boolean numeric(JsonElement node) { + return node != null && node.isJsonPrimitive() && node.getAsJsonPrimitive().isNumber(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/json/ConfigJsonParser.java b/SlinkyClient/src/main/java/dev/slinky/config/json/ConfigJsonParser.java new file mode 100644 index 0000000..de926b7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/json/ConfigJsonParser.java @@ -0,0 +1,495 @@ +package dev.slinky.config.json; + +public final class ConfigJsonParser { + private static final byte[] NULL_BYTES = JsonRuntime.cString("null"); + private static final byte[] FALSE_BYTES = JsonRuntime.cString("false"); + private static final byte[] TRUE_BYTES = JsonRuntime.cString("true"); + + private ConfigJsonParser() { + } + + private static boolean accessible(ConfigJsonParser.ParseBuffer buffer) { + return Long.compareUnsigned(buffer.offset, buffer.length) < 0; + } + + public static void skipWhitespace_4da00(ConfigJsonParser.ParseBuffer buffer) { + if (buffer != null && buffer.content != null && accessible(buffer)) { + while (accessible(buffer) && (buffer.content[(int)buffer.offset] & 255) <= 32) { + buffer.offset++; + } + + if (buffer.offset == buffer.length) { + buffer.offset--; + } + } + } + + public static JsonRuntime.Node parse_4da70(byte[] text, JsonRuntime.Context context) { + return text == null ? null : parseLength_4d410(text, (long)JsonRuntime.stringLength(text, 0) + 1L, 0, context).node; + } + + public static ConfigJsonParser.ParseResult parseLength_4d410(byte[] text, long length, int requireTerminator, JsonRuntime.Context context) { + context.errorContent = null; + context.errorOffset = 0L; + ConfigJsonParser.ParseBuffer buffer = new ConfigJsonParser.ParseBuffer(null, 0L, context); + JsonRuntime.Node item = null; + if (text != null && length != 0L) { + buffer = new ConfigJsonParser.ParseBuffer(text, length, context); + item = JsonRuntime.newItem(context.allocator); + if (item != null) { + if (length >= 5L && (text[0] & 255) == 239 && (text[1] & 255) == 187 && (text[2] & 255) == 191) { + buffer.offset = 3L; + } + + skipWhitespace_4da00(buffer); + if (parseValue_4d600(item, buffer, context) != 0) { + if (requireTerminator != 0) { + skipWhitespace_4da00(buffer); + } + + if (requireTerminator == 0 || accessible(buffer) && buffer.content[(int)buffer.offset] == 0) { + return new ConfigJsonParser.ParseResult(item, buffer.offset); + } + } + + JsonRuntime.deleteTree_4d240(item, context); + } + } + + if (text != null) { + long position = accessible(buffer) ? buffer.offset : (buffer.length != 0L ? buffer.length - 1L : 0L); + context.errorContent = text; + context.errorOffset = position; + return new ConfigJsonParser.ParseResult(null, position); + } else { + return new ConfigJsonParser.ParseResult(null, 0L); + } + } + + public static JsonRuntime.Node parseLength_4d410( + byte[] text, long length, ConfigJsonParser.ParseEnd end, int requireTerminator, JsonRuntime.Context context + ) { + ConfigJsonParser.ParseResult result = parseLength_4d410(text, length, requireTerminator, context); + if (end != null && text != null) { + end.content = text; + end.offset = result.endOffset; + } + + return result.node; + } + + public static int parseHex_51310(byte[] content, int offset) { + int value = 0; + + for (int i = 0; i < 4; i++) { + int ch = content[offset + i] & 255; + int digit; + if ((ch - 48 & 0xFF) < 10) { + digit = ch - 48; + } else if ((ch - 65 & 0xFF) < 6) { + digit = ch - 65 + 10; + } else { + if ((ch - 97 & 0xFF) >= 6) { + return 0; + } + + digit = ch - 97 + 10; + } + + value = (value << 4) + digit; + } + + return value; + } + + private static int stringFailure(ConfigJsonParser.ParseBuffer buffer, long input, byte[] output) { + if (output != null) { + buffer.release.release(output); + } + + buffer.offset = input; + return 0; + } + + public static int parseString_50b60(JsonRuntime.Node item, ConfigJsonParser.ParseBuffer buffer, JsonRuntime.Context context) { + long quote = buffer.offset; + long input = quote + 1L; + if (quote >= 0L && quote < (long)buffer.content.length && buffer.content[(int)quote] == 34 && input < buffer.length) { + long end = input; + + long skipped; + for (skipped = 0L; end < buffer.length && buffer.content[(int)end] != 34; end++) { + if (buffer.content[(int)end] == 92) { + if (end + 1L >= buffer.length) { + return stringFailure(buffer, input, null); + } + + end++; + skipped++; + } + } + + if (end >= buffer.length) { + return stringFailure(buffer, input, null); + } else { + byte[] output = buffer.allocate.allocateBytes(end - quote - skipped + 1L); + if (output == null) { + return stringFailure(buffer, input, null); + } else { + int cursor = 0; + + while (input < end) { + if (buffer.content[(int)input] == 92) { + int consumed = 2; + switch (buffer.content[(int)input + 1] & 0xFF) { + case 34: + case 47: + case 92: + output[cursor++] = buffer.content[(int)input + 1]; + break; + case 98: + output[cursor++] = 8; + break; + case 102: + output[cursor++] = 12; + break; + case 110: + output[cursor++] = 10; + break; + case 114: + output[cursor++] = 13; + break; + case 116: + output[cursor++] = 9; + break; + case 117: + if (end - input < 6L) { + return stringFailure(buffer, input, output); + } + + int code = parseHex_51310(buffer.content, (int)input + 2); + consumed = 6; + if ((code & 64512) == 56320) { + return stringFailure(buffer, input, output); + } + + if ((code & 64512) == 55296) { + if (end - input < 12L || buffer.content[(int)input + 6] != 92 || buffer.content[(int)input + 7] != 117) { + return stringFailure(buffer, input, output); + } + + int second = parseHex_51310(buffer.content, (int)input + 8); + if (Integer.compareUnsigned(second - 57344, -1024) < 0) { + return stringFailure(buffer, input, output); + } + + code = ((code & 1023) << 10) + (second & 1023) + 65536; + consumed = 12; + } + + if (code < 128) { + output[cursor++] = (byte)code; + } else { + int width = code < 2048 ? 2 : (code < 65536 ? 3 : 4); + if (code > 1114111) { + return stringFailure(buffer, input, output); + } + + int rest = code; + + for (int index = width - 1; index != 0; index--) { + output[cursor + index] = (byte)(rest & 63 | 128); + rest >>>= 6; + } + + output[cursor] = (byte)(rest | (width == 2 ? 192 : (width == 3 ? 224 : 240))); + cursor += width; + } + break; + default: + return stringFailure(buffer, input, output); + } + + input += (long)consumed; + } else { + output[cursor++] = buffer.content[(int)(input++)]; + } + } + + output[cursor] = 0; + item.type = 16; + item.valueString = output; + buffer.offset = end + 1L; + return 1; + } + } + } else { + return stringFailure(buffer, input, null); + } + } + + public static int parseObject_51000(JsonRuntime.Node item, ConfigJsonParser.ParseBuffer buffer, JsonRuntime.Context context) { + if (Long.compareUnsigned(buffer.depth, 999L) > 0) { + return 0; + } else { + buffer.depth++; + if (accessible(buffer) && buffer.content[(int)buffer.offset] == 123) { + buffer.offset++; + skipWhitespace_4da00(buffer); + if (!accessible(buffer)) { + buffer.offset--; + return 0; + } else if (buffer.content[(int)buffer.offset] == 125) { + buffer.depth--; + item.type = 64; + item.child = null; + buffer.offset++; + return 1; + } else { + buffer.offset--; + JsonRuntime.Node head = null; + JsonRuntime.Node tail = null; + + while (true) { + JsonRuntime.Node next = JsonRuntime.newItem(buffer.allocate); + if (next == null) { + if (head != null) { + JsonRuntime.deleteTree_4d240(head, context); + } + + return 0; + } + + if (tail != null) { + tail.next = next; + next.previous = tail; + } else { + head = next; + } + + tail = next; + buffer.offset++; + skipWhitespace_4da00(buffer); + if (parseString_50b60(next, buffer, context) != 0) { + skipWhitespace_4da00(buffer); + next.name = next.valueString; + next.valueString = null; + if (accessible(buffer) && buffer.content[(int)buffer.offset] == 58) { + buffer.offset++; + skipWhitespace_4da00(buffer); + if (parseValue_4d600(next, buffer, context) != 0) { + skipWhitespace_4da00(buffer); + if (accessible(buffer)) { + int current = buffer.content[(int)buffer.offset] & 255; + if (current == 44) { + continue; + } + + if (current == 125) { + buffer.depth--; + head.previous = next; + item.type = 64; + item.child = head; + buffer.offset++; + return 1; + } + } + } + } + } + + JsonRuntime.deleteTree_4d240(head, context); + return 0; + } + } + } else { + return 0; + } + } + } + + private static int parseArray(JsonRuntime.Node item, ConfigJsonParser.ParseBuffer buffer, JsonRuntime.Context context) { + if (Long.compareUnsigned(buffer.depth, 999L) > 0) { + return 0; + } else { + buffer.depth++; + if (buffer.content[(int)buffer.offset] != 91) { + return 0; + } else { + buffer.offset++; + skipWhitespace_4da00(buffer); + if (!accessible(buffer)) { + buffer.offset--; + return 0; + } else if (buffer.content[(int)buffer.offset] == 93) { + buffer.depth--; + item.type = 32; + item.child = null; + buffer.offset++; + return 1; + } else { + buffer.offset--; + JsonRuntime.Node head = null; + JsonRuntime.Node tail = null; + + while (true) { + JsonRuntime.Node next = JsonRuntime.newItem(buffer.allocate); + if (next == null) { + if (head != null) { + JsonRuntime.deleteTree_4d240(head, context); + } + + return 0; + } + + if (tail != null) { + tail.next = next; + next.previous = tail; + } else { + head = next; + } + + tail = next; + buffer.offset++; + skipWhitespace_4da00(buffer); + if (parseValue_4d600(next, buffer, context) != 0) { + skipWhitespace_4da00(buffer); + if (accessible(buffer)) { + int current = buffer.content[(int)buffer.offset] & 255; + if (current == 44) { + continue; + } + + if (current == 93) { + buffer.depth--; + head.previous = next; + item.type = 32; + item.child = head; + buffer.offset++; + return 1; + } + } + } + + JsonRuntime.deleteTree_4d240(head, context); + return 0; + } + } + } + } + } + + private static boolean literal(byte[] content, long length, long offset, byte[] expected, int width, JsonRuntime.Context context) { + return Long.compareUnsigned(offset + (long)width, length) <= 0 && context.comparisons.compareBytes(content, (int)offset, expected, width) == 0; + } + + public static int parseValue_4d600(JsonRuntime.Node item, ConfigJsonParser.ParseBuffer buffer, JsonRuntime.Context context) { + if (buffer != null && buffer.content != null) { + byte[] content = buffer.content; + long length = buffer.length; + long offset = buffer.offset; + if (literal(content, length, offset, NULL_BYTES, 4, context)) { + item.type = 4; + buffer.offset = offset + 4L; + return 1; + } else if (literal(content, length, offset, FALSE_BYTES, 5, context)) { + item.type = 1; + buffer.offset = offset + 5L; + return 1; + } else if (literal(content, length, offset, TRUE_BYTES, 4, context)) { + item.type = 2; + item.valueInteger = 1; + buffer.offset = offset + 4L; + return 1; + } else if (Long.compareUnsigned(offset, length) >= 0) { + return 0; + } else { + int ch = content[(int)offset] & 255; + if (ch == 34) { + return parseString_50b60(item, buffer, context); + } else if (ch == 123) { + return parseObject_51000(item, buffer, context); + } else if (ch == 91) { + return parseArray(item, buffer, context); + } else if (ch != 45 && (ch - 48 & 0xFF) >= 10) { + return 0; + } else { + int decimal = context.numbers.decimalPoint(); + if (buffer.content == null) { + return 0; + } else { + byte[] number = new byte[64]; + + for (int count = 0; count < 63 && buffer.offset + (long)count < buffer.length; count++) { + int current = buffer.content[(int)buffer.offset + count] & 255; + if (current >= 48 && current <= 57) { + number[count] = (byte)current; + } else if (current != 43 && current != 45 && current != 101 && current != 69) { + if (current != 46) { + break; + } + + number[count] = (byte)decimal; + } else { + number[count] = (byte)current; + } + } + + JsonRuntime.ParsedNumber parsed = context.numbers.parse(number); + if (parsed.consumed == 0) { + return 0; + } else { + item.valueNumber = parsed.value; + item.valueInteger = JsonRuntime.saturatedInteger(parsed.value); + item.type = 8; + buffer.offset = buffer.offset + (long)parsed.consumed; + return 1; + } + } + } + } + } else { + return 0; + } + } + + public static final class ParseBuffer { + public byte[] content; + public long length; + public long offset; + public long depth; + public JsonRuntime.Allocator allocate; + public JsonRuntime.Allocator release; + public JsonRuntime.Resizer resize; + + public ParseBuffer(byte[] content, long length, JsonRuntime.Context context) { + if (length >= 0L && (content == null || length <= (long)content.length)) { + this.content = content; + this.length = length; + this.allocate = this.release = context.allocator; + this.resize = context.resizer; + } else { + throw new IllegalArgumentException("JSON byte length exceeds supplied storage"); + } + } + } + + public static final class ParseEnd { + public byte[] content; + public long offset; + } + + public static final class ParseResult { + public final JsonRuntime.Node node; + public final long endOffset; + + private ParseResult(JsonRuntime.Node node, long endOffset) { + this.node = node; + this.endOffset = endOffset; + } + + public boolean succeeded() { + return this.node != null; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/json/JsonJvmServices.java b/SlinkyClient/src/main/java/dev/slinky/config/json/JsonJvmServices.java new file mode 100644 index 0000000..c56f269 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/json/JsonJvmServices.java @@ -0,0 +1,217 @@ +package dev.slinky.config.json; + +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +public final class JsonJvmServices + implements JsonRuntime.Allocator, + JsonRuntime.Resizer, + JsonRuntime.NumberServices, + JsonRuntime.ByteComparisons { + private final int decimal; + private final long allocationLimit; + + public JsonJvmServices() { + this(46, 2147483639L); + } + + public JsonJvmServices(int decimal, long allocationLimit) { + if (decimal >= 1 && decimal <= 127 && allocationLimit >= 0L) { + this.decimal = decimal; + this.allocationLimit = allocationLimit; + } else { + throw new IllegalArgumentException("JVM JSON services"); + } + } + + public JsonRuntime.Context context() { + return new JsonRuntime.Context(this, this, this, this); + } + + @Override + public JsonRuntime.Node allocateNode() { + return new JsonRuntime.Node(); + } + + @Override + public byte[] allocateBytes(long size) { + return size >= 0L && size <= this.allocationLimit && size <= 2147483639L ? new byte[(int)size] : null; + } + + @Override + public void release(Object allocation) { + } + + @Override + public byte[] resize(byte[] old, long size) { + byte[] next = this.allocateBytes(size); + if (next != null) { + System.arraycopy(old, 0, next, 0, Math.min(old.length, next.length)); + } + + return next; + } + + @Override + public int decimalPoint() { + return this.decimal; + } + + @Override + public int compareCString(byte[] left, byte[] right) { + int i = 0; + + while (true) { + int a = left[i] & 255; + int b = right[i] & 255; + if (a != b) { + return a - b; + } + + if (a == 0) { + return 0; + } + + i++; + } + } + + @Override + public int compareBytes(byte[] left, int offset, byte[] right, int width) { + for (int i = 0; i < width; i++) { + int difference = (left[offset + i] & 255) - (right[i] & 255); + if (difference != 0) { + return difference; + } + } + + return 0; + } + + @Override + public JsonRuntime.FormattedNumber format(String format, long bits) { + String text; + if ("%d".equals(format)) { + text = Integer.toString((int)bits); + } else if ("u%04x".equals(format)) { + String hex = Long.toHexString(bits & 4294967295L); + StringBuilder value = new StringBuilder("u"); + + for (int i = hex.length(); i < 4; i++) { + value.append('0'); + } + + text = value.append(hex).toString(); + } else { + if (!"%1.15g".equals(format) && !"%1.17g".equals(format)) { + throw new IllegalArgumentException("Unbound JSON format " + format); + } + + text = significant(Double.longBitsToDouble(bits), "%1.15g".equals(format) ? 15 : 17); + if (this.decimal != 46) { + text = text.replace('.', (char)this.decimal); + } + } + + return new JsonRuntime.FormattedNumber(JsonRuntime.cString(text), text.length()); + } + + private static String significant(double value, int precision) { + if (Double.isNaN(value)) { + return "nan"; + } else if (Double.isInfinite(value)) { + return value < 0.0 ? "-inf" : "inf"; + } else if (value == 0.0) { + return Double.doubleToRawLongBits(value) < 0L ? "-0" : "0"; + } else { + BigDecimal rounded = new BigDecimal(value).round(new MathContext(precision, RoundingMode.HALF_EVEN)).stripTrailingZeros(); + int exponent = rounded.precision() - rounded.scale() - 1; + if (exponent >= -4 && exponent < precision) { + return rounded.toPlainString(); + } else { + String mantissa = rounded.movePointLeft(exponent).stripTrailingZeros().toPlainString(); + String digits = Integer.toString(Math.abs(exponent)); + if (digits.length() < 2) { + digits = "0" + digits; + } + + return mantissa + "e" + (exponent < 0 ? "-" : "+") + digits; + } + } + } + + @Override + public JsonRuntime.ScannedNumber scan(byte[] text, String format) { + if (!"%lg".equals(format)) { + throw new IllegalArgumentException("Unbound JSON scan " + format); + } else { + JsonRuntime.ParsedNumber parsed = this.parse(text); + return new JsonRuntime.ScannedNumber(parsed.consumed == 0 ? 0 : 1, parsed.value); + } + } + + @Override + public JsonRuntime.ParsedNumber parse(byte[] text) { + int length = JsonRuntime.stringLength(text, 0); + int offset = 0; + if (offset < length && (text[offset] == 43 || text[offset] == 45)) { + offset++; + } + + int first = offset; + + while (offset < length && digit(text[offset])) { + offset++; + } + + int digits = offset - first; + if (offset < length && (text[offset] & 255) == this.decimal) { + int fraction = ++offset; + + while (offset < length && digit(text[offset])) { + offset++; + } + + digits += offset - fraction; + } + + if (digits == 0) { + return new JsonRuntime.ParsedNumber(0.0, 0); + } else { + int consumed = offset; + if (offset < length && (text[offset] == 101 || text[offset] == 69)) { + offset++; + if (offset < length && (text[offset] == 43 || text[offset] == 45)) { + offset++; + } + + int exponent = offset; + + while (offset < length && digit(text[offset])) { + offset++; + } + + if (offset != exponent) { + consumed = offset; + } + } + + byte[] prefix = Arrays.copyOf(text, consumed); + + for (int i = 0; i < prefix.length; i++) { + if ((prefix[i] & 255) == this.decimal) { + prefix[i] = 46; + } + } + + return new JsonRuntime.ParsedNumber(Double.parseDouble(new String(prefix, StandardCharsets.US_ASCII)), consumed); + } + } + + private static boolean digit(byte value) { + return value >= 48 && value <= 57; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/config/json/JsonRuntime.java b/SlinkyClient/src/main/java/dev/slinky/config/json/JsonRuntime.java new file mode 100644 index 0000000..5c1e318 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/config/json/JsonRuntime.java @@ -0,0 +1,860 @@ +package dev.slinky.config.json; + +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +public final strictfp class JsonRuntime { + public static final int FALSE = 1; + public static final int TRUE = 2; + public static final int NULL = 4; + public static final int NUMBER = 8; + public static final int STRING = 16; + public static final int ARRAY = 32; + public static final int OBJECT = 64; + public static final int RAW = 128; + public static final int REFERENCE = 256; + public static final int CONSTANT_NAME = 512; + + private JsonRuntime() { + } + + public static strictfp byte[] cString(String text) { + if (text == null) { + return null; + } else { + byte[] bytes = text.getBytes(StandardCharsets.UTF_8); + return Arrays.copyOf(bytes, bytes.length + 1); + } + } + + public static strictfp int stringLength(byte[] text, int offset) { + int end = offset; + + while (end < text.length && text[end] != 0) { + end++; + } + + if (end == text.length) { + throw new IllegalArgumentException("C string lacks terminator"); + } else { + return end - offset; + } + } + + public static strictfp String utf8CString(byte[] text) { + return text == null ? null : new String(text, 0, stringLength(text, 0), StandardCharsets.UTF_8); + } + + static strictfp JsonRuntime.Node newItem(JsonRuntime.Allocator allocator) { + JsonRuntime.Node item = allocator.allocateNode(); + if (item != null) { + item.next = item.previous = item.child = null; + item.type = item.typePadding = item.valueInteger = item.integerPadding = 0; + item.valueString = item.name = null; + item.valueNumber = 0.0; + } + + return item; + } + + private static strictfp JsonRuntime.Node create(int type, JsonRuntime.Context context) { + JsonRuntime.Node item = newItem(context.allocator); + if (item != null) { + item.type = type; + } + + return item; + } + + private static strictfp byte[] duplicate(byte[] text, JsonRuntime.Context context) { + int size = stringLength(text, 0) + 1; + byte[] copy = context.allocator.allocateBytes((long)size); + if (copy != null) { + System.arraycopy(text, 0, copy, 0, size); + } + + return copy; + } + + private static strictfp JsonRuntime.Node finishNamed( + JsonRuntime.Node parent, byte[] name, JsonRuntime.Node item, JsonRuntime.Context context + ) { + if (attachName_4e5b0(parent, name, item, context) != 0) { + return item; + } else { + deleteTree_4d240(item, context); + return null; + } + } + + public static strictfp void deleteTree_4d240(JsonRuntime.Node item, JsonRuntime.Context context) { + while (item != null) { + JsonRuntime.Node current = item; + item = item.next; + int flags = current.type; + if ((flags & 256) == 0 && current.child != null) { + deleteTree_4d240(current.child, context); + flags = current.type; + } + + if ((flags & 256) == 0 && current.valueString != null) { + context.allocator.release(current.valueString); + flags = current.type; + } + + if ((flags & 512) == 0 && current.name != null) { + context.allocator.release(current.name); + } + + context.allocator.release(current); + } + } + + public static strictfp void releaseText_4d3b0(Object text, JsonRuntime.Context context) { + context.allocator.release(text); + } + + public static strictfp int append_4e560(JsonRuntime.Node parent, JsonRuntime.Node item) { + if (parent != item && parent != null && item != null) { + JsonRuntime.Node head = parent.child; + if (head == null) { + parent.child = item; + item.previous = item; + item.next = null; + } else if (head.previous != null) { + JsonRuntime.Node tail = head.previous; + tail.next = item; + item.previous = tail; + head.previous = item; + } + + return 1; + } else { + return 0; + } + } + + public static strictfp int attachName_4e5b0( + JsonRuntime.Node parent, byte[] name, JsonRuntime.Node item, JsonRuntime.Context context + ) { + if (parent != item && parent != null && name != null && item != null) { + byte[] copy = duplicate(name, context); + if (copy == null) { + return 0; + } else { + int flags = item.type & -513; + if ((item.type & 512) == 0 && item.name != null) { + context.allocator.release(item.name); + } + + item.name = copy; + item.type = flags; + return append_4e560(parent, item); + } + } else { + return 0; + } + } + + public static strictfp JsonRuntime.Node createObject_4f590(JsonRuntime.Context context) { + return create(64, context); + } + + public static strictfp JsonRuntime.Node writeObject_4f480(JsonRuntime.Node parent, byte[] name, JsonRuntime.Context context) { + return finishNamed(parent, name, create(64, context), context); + } + + public static strictfp JsonRuntime.Node writeArray_4f5d0(JsonRuntime.Node parent, byte[] name, JsonRuntime.Context context) { + return finishNamed(parent, name, create(32, context), context); + } + + public static strictfp JsonRuntime.Node writeBoolean_4ed40( + JsonRuntime.Node parent, byte[] name, int value, JsonRuntime.Context context + ) { + return finishNamed(parent, name, create(value == 0 ? 1 : 2, context), context); + } + + public static strictfp JsonRuntime.Node writeNumber_4eeb0( + JsonRuntime.Node parent, byte[] name, double value, JsonRuntime.Context context + ) { + JsonRuntime.Node item = create(8, context); + if (item != null) { + item.valueNumber = value; + item.valueInteger = saturatedInteger(value); + } + + return finishNamed(parent, name, item, context); + } + + public static strictfp JsonRuntime.Node writeString_4f080( + JsonRuntime.Node parent, byte[] name, byte[] value, JsonRuntime.Context context + ) { + JsonRuntime.Node item = create(16, context); + if (item != null) { + item.valueString = value == null ? null : duplicate(value, context); + if (item.valueString == null) { + deleteTree_4d240(item, context); + item = null; + } + } + + return finishNamed(parent, name, item, context); + } + + static strictfp int saturatedInteger(double value) { + if (value >= 2.147483647E9) { + return Integer.MAX_VALUE; + } else if (-2.1474836E9F >= value) { + return Integer.MIN_VALUE; + } else { + return Double.isNaN(value) ? Integer.MIN_VALUE : (int)value; + } + } + + public static strictfp JsonRuntime.Node lookup_4e4d0(JsonRuntime.Node parent, byte[] name, JsonRuntime.Context context) { + if (parent != null && name != null) { + for (JsonRuntime.Node child = parent.child; child != null; child = child.next) { + if (child.name == null) { + return null; + } + + if (context.comparisons.compareCString(name, child.name) == 0) { + return child; + } + } + + return null; + } else { + return null; + } + } + + public static strictfp int isNumber_4d150(JsonRuntime.Node item) { + return item != null && (item.type & 0xFF) == 8 ? 1 : 0; + } + + public static strictfp int isTrue_508c0(JsonRuntime.Node item) { + return item != null && (item.type & 0xFF) == 2 ? 1 : 0; + } + + public static strictfp byte[] printCompact_4dbe0(JsonRuntime.Node root, JsonRuntime.Context context) { + return printAllocated_4dad0(root, 0, context); + } + + public static strictfp byte[] printAllocated_4dad0(JsonRuntime.Node root, int formatted, JsonRuntime.Context context) { + byte[] initial = context.allocator.allocateBytes(256L); + JsonRuntime.PrintBuffer buffer = new JsonRuntime.PrintBuffer(initial, 256L, context); + buffer.formatted = formatted; + if (initial == null) { + return null; + } else { + if (printValue_4dc80(root, buffer, context) != 0) { + updateOffset(buffer); + byte[] old = buffer.memory; + JsonRuntime.Resizer finalResizer = context.resizer; + if (finalResizer != null) { + byte[] result = finalResizer.resize(old, buffer.offset + 1L); + if (result != null) { + return result; + } + } else { + byte[] result = context.allocator.allocateBytes(buffer.offset + 1L); + if (result != null) { + System.arraycopy(old, 0, result, 0, (int)Math.min(buffer.capacity, buffer.offset + 1L)); + result[(int)buffer.offset] = 0; + context.allocator.release(old); + return result; + } + } + } + + if (buffer.memory != null) { + context.allocator.release(buffer.memory); + } + + return null; + } + } + + public static strictfp JsonRuntime.PrintSlice reserve_51400( + JsonRuntime.PrintBuffer buffer, long required, JsonRuntime.Context context + ) { + byte[] old = buffer.memory; + if (old == null) { + return null; + } else { + long capacity = buffer.capacity; + if ((capacity == 0L || Long.compareUnsigned(buffer.offset, capacity) < 0) && Long.compareUnsigned(required, 2147483647L) <= 0) { + long size = required + buffer.offset + 1L; + if (Long.compareUnsigned(size, capacity) <= 0) { + return new JsonRuntime.PrintSlice(old, buffer.offset); + } else if (buffer.noAllocation != 0) { + return null; + } else { + if (Long.compareUnsigned(size, 1073741824L) >= 0) { + if (size >>> 31 != 0L) { + return null; + } + + size = 2147483647L; + } else { + size *= 2L; + } + + byte[] next; + if (buffer.resize != null) { + next = buffer.resize.resize(old, size); + } else { + next = buffer.allocate.allocateBytes(size); + if (next != null) { + System.arraycopy(buffer.memory, 0, next, 0, (int)(buffer.offset + 1L)); + buffer.release.release(buffer.memory); + } + } + + if (next == null) { + buffer.release.release(buffer.memory); + buffer.memory = null; + buffer.capacity = 0L; + return null; + } else { + buffer.capacity = size; + buffer.memory = next; + return new JsonRuntime.PrintSlice(next, buffer.offset); + } + } + } else { + return null; + } + } + } + + private static strictfp long stringPrintRequiredSize(long length, long extra) { + return length + extra + 3L; + } + + public static strictfp int printString_514f0(byte[] string, JsonRuntime.PrintBuffer buffer, JsonRuntime.Context context) { + if (string == null) { + JsonRuntime.PrintSlice out = reserve_51400(buffer, 3L, context); + if (out == null) { + return 0; + } else { + out.memory[out.offset] = 34; + out.memory[out.offset + 1] = 34; + out.memory[out.offset + 2] = 0; + return 1; + } + } else { + long length = 0L; + long extra = 0L; + + while (true) { + int value = string[Math.toIntExact(length)] & 255; + if (value <= 34 && (17179883264L >>> value & 1L) != 0L) { + extra++; + } else { + if (value == 0) { + JsonRuntime.PrintSlice out = reserve_51400(buffer, stringPrintRequiredSize(length, extra), context); + if (out == null) { + return 0; + } + + byte[] memory = out.memory; + int start = out.offset; + int inputLength = Math.toIntExact(length); + int closingQuote = Math.toIntExact((long)start + length + extra + 1L); + int terminator = Math.toIntExact((long)start + length + extra + 2L); + memory[start] = 34; + if (extra == 0L) { + System.arraycopy(string, 0, memory, start + 1, inputLength); + } else { + int cursor = start; + + for (int i = 0; string[i] != 0; i++) { + int valuex = string[i] & 255; + if (valuex >= 32 && valuex != 34 && valuex != 92) { + cursor++; + memory[cursor] = (byte)valuex; + } else { + memory[cursor + 1] = 92; + int escaped; + switch (valuex) { + case 8: + escaped = 98; + break; + case 9: + escaped = 116; + break; + case 10: + escaped = 110; + break; + case 12: + escaped = 102; + break; + case 13: + escaped = 114; + break; + case 34: + escaped = 34; + break; + case 92: + escaped = 92; + break; + default: + JsonRuntime.FormattedNumber result = context.numbers.format("u%04x", (long)valuex); + int width = stringLength(result.text, 0) + 1; + System.arraycopy(result.text, 0, memory, cursor + 2, width); + cursor += 6; + continue; + } + + memory[cursor + 2] = (byte)escaped; + cursor += 2; + } + } + } + + memory[closingQuote] = 34; + memory[terminator] = 0; + return 1; + } + + if (value == 92) { + extra++; + } else if (value < 32) { + extra += 5L; + } + } + + length++; + } + } + } + + private static strictfp void updateOffset(JsonRuntime.PrintBuffer buffer) { + if (buffer.memory != null) { + buffer.offset = buffer.offset + (long)stringLength(buffer.memory, (int)buffer.offset); + } + } + + private static strictfp int printNumber(JsonRuntime.Node item, JsonRuntime.PrintBuffer buffer, JsonRuntime.Context context) { + double value = item.valueNumber; + int decimal = context.numbers.decimalPoint() & 0xFF; + JsonRuntime.FormattedNumber text; + if ((Double.doubleToRawLongBits(value) & Long.MAX_VALUE) >= 9218868437227405312L) { + text = new JsonRuntime.FormattedNumber(cString("null"), 4); + } else if (value == (double)item.valueInteger) { + text = context.numbers.format("%d", Integer.toUnsignedLong(item.valueInteger)); + } else { + text = context.numbers.format("%1.15g", Double.doubleToRawLongBits(value)); + JsonRuntime.ScannedNumber scanned = context.numbers.scan(text.text, "%lg"); + double maximum = sseMaximum(Math.abs(scanned.value), Math.abs(value)); + double error = Math.abs(scanned.value - value); + double tolerance = maximum * Double.longBitsToDouble(4372995238176751616L); + if (scanned.count != 1 || !(tolerance >= error)) { + text = context.numbers.format("%1.17g", Double.doubleToRawLongBits(value)); + } + } + + if (Integer.compareUnsigned(text.length, 25) > 0) { + return 0; + } else { + JsonRuntime.PrintSlice out = reserve_51400(buffer, (long)text.length + 1L, context); + if (out == null) { + return 0; + } else { + for (int i = 0; i < text.length; i++) { + out.memory[out.offset + i] = (text.text[i] & 255) == decimal ? 46 : text.text[i]; + } + + out.memory[out.offset + text.length] = 0; + buffer.offset = buffer.offset + (long)text.length; + return 1; + } + } + } + + private static strictfp double sseMaximum(double left, double right) { + return !Double.isNaN(left) && !Double.isNaN(right) && !(left <= right) ? left : right; + } + + public static strictfp int printValue_4dc80(JsonRuntime.Node item, JsonRuntime.PrintBuffer buffer, JsonRuntime.Context context) { + if (item == null) { + return 0; + } else { + int type = item.type & 0xFF; + if (type != 1 && type != 2 && type != 4) { + if (type == 8) { + return printNumber(item, buffer, context); + } else if (type == 16) { + return printString_514f0(item.valueString, buffer, context); + } else if (type == 128) { + if (item.valueString == null) { + return 0; + } else { + int length = stringLength(item.valueString, 0) + 1; + JsonRuntime.PrintSlice out = reserve_51400(buffer, (long)length, context); + if (out == null) { + return 0; + } else { + System.arraycopy(item.valueString, 0, out.memory, out.offset, length); + return 1; + } + } + } else if (type == 32) { + return printArray(item, buffer, context); + } else { + return type == 64 ? printObject(item, buffer, context) : 0; + } + } else { + byte[] literal = cString(type == 1 ? "false" : (type == 2 ? "true" : "null")); + JsonRuntime.PrintSlice out = reserve_51400(buffer, (long)literal.length, context); + if (out == null) { + return 0; + } else { + System.arraycopy(literal, 0, out.memory, out.offset, literal.length); + return 1; + } + } + } + } + + private static strictfp int printArray(JsonRuntime.Node item, JsonRuntime.PrintBuffer buffer, JsonRuntime.Context context) { + JsonRuntime.Node child = item.child; + JsonRuntime.PrintSlice out = reserve_51400(buffer, 1L, context); + if (out == null) { + return 0; + } else { + out.memory[out.offset] = 91; + buffer.offset++; + buffer.depth++; + + while (child != null) { + if (printValue_4dc80(child, buffer, context) == 0) { + return 0; + } + + updateOffset(buffer); + if (child.next == null) { + break; + } + + int compact = buffer.formatted == 0 ? 1 : 0; + out = reserve_51400(buffer, (long)(compact ^ 3), context); + if (out == null) { + return 0; + } + + out.memory[out.offset] = 44; + out.memory[out.offset + 1] = 0; + if (buffer.formatted != 0) { + out.memory[out.offset + 1] = 32; + out.memory[out.offset + 2] = 0; + } + + buffer.offset += (long)(2 - compact); + child = child.next; + } + + out = reserve_51400(buffer, 2L, context); + if (out == null) { + return 0; + } else { + out.memory[out.offset] = 93; + out.memory[out.offset + 1] = 0; + buffer.depth--; + return 1; + } + } + } + + private static strictfp int printObject(JsonRuntime.Node item, JsonRuntime.PrintBuffer buffer, JsonRuntime.Context context) { + JsonRuntime.Node child = item.child; + int compact = buffer.formatted == 0 ? 1 : 0; + JsonRuntime.PrintSlice out = reserve_51400(buffer, (long)(compact ^ 3), context); + if (out == null) { + return 0; + } else { + out.memory[out.offset] = 123; + buffer.depth++; + if (buffer.formatted != 0) { + out.memory[out.offset + 1] = 10; + } + + for (buffer.offset += (long)(2 - compact); child != null; child = child.next) { + if (buffer.formatted != 0) { + out = reserve_51400(buffer, buffer.depth, context); + if (out == null) { + return 0; + } + + Arrays.fill(out.memory, out.offset, out.offset + (int)buffer.depth, (byte)9); + buffer.offset = buffer.offset + buffer.depth; + } + + if (printString_514f0(child.name, buffer, context) == 0) { + return 0; + } + + updateOffset(buffer); + long colonWidth = Integer.compareUnsigned(buffer.formatted, 1) >= 0 ? 2L : 1L; + out = reserve_51400(buffer, colonWidth, context); + if (out == null) { + return 0; + } + + out.memory[out.offset] = 58; + if (buffer.formatted != 0) { + out.memory[out.offset + 1] = 9; + } + + buffer.offset += colonWidth; + if (printValue_4dc80(child, buffer, context) == 0) { + return 0; + } + + updateOffset(buffer); + long suffixWidth = (long)((child.next != null ? 1 : 0) + (Integer.compareUnsigned(buffer.formatted, 1) >= 0 ? 1 : 0)); + out = reserve_51400(buffer, suffixWidth + 1L, context); + if (out == null) { + return 0; + } + + int cursor = out.offset; + if (child.next != null) { + out.memory[cursor++] = 44; + } + + if (buffer.formatted != 0) { + out.memory[cursor++] = 10; + } + + out.memory[cursor] = 0; + buffer.offset += suffixWidth; + } + + out = reserve_51400(buffer, buffer.formatted != 0 ? buffer.depth + 1L : 2L, context); + if (out == null) { + return 0; + } else { + int cursorx = out.offset; + if (buffer.formatted != 0 && buffer.depth != 1L) { + long count = 0L; + + do { + out.memory[cursorx++] = 9; + } while (++count < buffer.depth - 1L); + } + + out.memory[cursorx] = 125; + out.memory[cursorx + 1] = 0; + buffer.depth--; + return 1; + } + } + } + + public interface Allocator { + JsonRuntime.Node allocateNode(); + + byte[] allocateBytes(long var1); + + void release(Object var1); + } + + public interface ByteComparisons { + int compareCString(byte[] var1, byte[] var2); + + int compareBytes(byte[] var1, int var2, byte[] var3, int var4); + } + + public static final strictfp class Context { + public JsonRuntime.Allocator allocator; + public JsonRuntime.Resizer resizer; + public JsonRuntime.NumberServices numbers; + public JsonRuntime.ByteComparisons comparisons; + public JsonRuntime.ExternalInvoker external; + public byte[] errorContent; + public long errorOffset; + + public Context( + JsonRuntime.Allocator allocator, + JsonRuntime.Resizer resizer, + JsonRuntime.NumberServices numbers, + JsonRuntime.ByteComparisons comparisons + ) { + if (allocator != null && numbers != null && comparisons != null) { + this.allocator = allocator; + this.resizer = resizer; + this.numbers = numbers; + this.comparisons = comparisons; + } else { + throw new NullPointerException("JSON caller services"); + } + } + + public strictfp Object invoke(int target, Object... arguments) { + Object[] a = new Object[5]; + if (arguments != null) { + System.arraycopy(arguments, 0, a, 0, Math.min(arguments.length, a.length)); + } + + switch (target) { + case 315728: + return JsonRuntime.isNumber_4d150((JsonRuntime.Node)a[0]); + case 315968: + JsonRuntime.deleteTree_4d240((JsonRuntime.Node)a[0], this); + return null; + case 316336: + JsonRuntime.releaseText_4d3b0(a[0], this); + return null; + case 316432: + return ConfigJsonParser.parseLength_4d410((byte[])a[0], word(a[1]), (ConfigJsonParser.ParseEnd)a[2], (int)word(a[3]), this); + case 316928: + return ConfigJsonParser.parseValue_4d600((JsonRuntime.Node)a[0], (ConfigJsonParser.ParseBuffer)a[1], this); + case 317952: + ConfigJsonParser.skipWhitespace_4da00((ConfigJsonParser.ParseBuffer)a[0]); + return null; + case 318064: + return ConfigJsonParser.parse_4da70((byte[])a[0], this); + case 318160: + return JsonRuntime.printAllocated_4dad0((JsonRuntime.Node)a[0], (int)word(a[1]), this); + case 318432: + return JsonRuntime.printCompact_4dbe0((JsonRuntime.Node)a[0], this); + case 318592: + return JsonRuntime.printValue_4dc80((JsonRuntime.Node)a[0], (JsonRuntime.PrintBuffer)a[1], this); + case 320720: + return JsonRuntime.lookup_4e4d0((JsonRuntime.Node)a[0], (byte[])a[1], this); + case 320864: + return JsonRuntime.append_4e560((JsonRuntime.Node)a[0], (JsonRuntime.Node)a[1]); + case 320944: + return JsonRuntime.attachName_4e5b0((JsonRuntime.Node)a[0], (byte[])a[1], (JsonRuntime.Node)a[2], this); + case 322880: + return JsonRuntime.writeBoolean_4ed40((JsonRuntime.Node)a[0], (byte[])a[1], (int)word(a[2]), this); + case 323248: + return JsonRuntime.writeNumber_4eeb0((JsonRuntime.Node)a[0], (byte[])a[1], Double.longBitsToDouble(word(a[2])), this); + case 323712: + return JsonRuntime.writeString_4f080((JsonRuntime.Node)a[0], (byte[])a[1], (byte[])a[2], this); + case 324736: + return JsonRuntime.writeObject_4f480((JsonRuntime.Node)a[0], (byte[])a[1], this); + case 325008: + return JsonRuntime.createObject_4f590(this); + case 325072: + return JsonRuntime.writeArray_4f5d0((JsonRuntime.Node)a[0], (byte[])a[1], this); + case 329920: + return JsonRuntime.isTrue_508c0((JsonRuntime.Node)a[0]); + case 330592: + return ConfigJsonParser.parseString_50b60((JsonRuntime.Node)a[0], (ConfigJsonParser.ParseBuffer)a[1], this); + case 331776: + return ConfigJsonParser.parseObject_51000((JsonRuntime.Node)a[0], (ConfigJsonParser.ParseBuffer)a[1], this); + case 332560: + return ConfigJsonParser.parseHex_51310((byte[])a[0], 0); + case 332800: + return JsonRuntime.reserve_51400((JsonRuntime.PrintBuffer)a[0], word(a[1]), this); + case 333040: + return JsonRuntime.printString_514f0((byte[])a[0], (JsonRuntime.PrintBuffer)a[1], this); + default: + if (this.external == null) { + throw new UnsupportedOperationException("Unbound JSON target " + target); + } else { + return this.external.invoke(target, arguments); + } + } + } + + private static strictfp long word(Object argument) { + return argument == null ? 0L : ((Number)argument).longValue(); + } + } + + public interface ExternalInvoker { + Object invoke(int var1, Object[] var2); + } + + public static final strictfp class FormattedNumber { + public final byte[] text; + public final int length; + + public FormattedNumber(byte[] text, int length) { + this.text = text; + this.length = length; + } + } + + public static final class Node { + public JsonRuntime.Node next; + public JsonRuntime.Node previous; + public JsonRuntime.Node child; + public int type; + public int typePadding; + public int valueInteger; + public int integerPadding; + public byte[] valueString; + public byte[] name; + public double valueNumber; + } + + public interface NumberServices { + int decimalPoint(); + + JsonRuntime.FormattedNumber format(String var1, long var2); + + JsonRuntime.ScannedNumber scan(byte[] var1, String var2); + + JsonRuntime.ParsedNumber parse(byte[] var1); + } + + public static final strictfp class ParsedNumber { + public final double value; + public final int consumed; + + public ParsedNumber(double value, int consumed) { + this.value = value; + this.consumed = consumed; + } + } + + public static final strictfp class PrintBuffer { + public byte[] memory; + public long capacity; + public long offset; + public long depth; + public int noAllocation; + public int formatted; + public JsonRuntime.Allocator allocate; + public JsonRuntime.Allocator release; + public JsonRuntime.Resizer resize; + + public PrintBuffer(byte[] memory, long capacity, JsonRuntime.Context context) { + this.memory = memory; + this.capacity = capacity; + this.allocate = context.allocator; + this.release = context.allocator; + this.resize = context.resizer; + } + } + + public static final strictfp class PrintSlice { + public final byte[] memory; + public final int offset; + + private PrintSlice(byte[] memory, long offset) { + this.memory = memory; + this.offset = Math.toIntExact(offset); + } + } + + public interface Resizer { + byte[] resize(byte[] var1, long var2); + } + + public static final strictfp class ScannedNumber { + public final int count; + public final double value; + + public ScannedNumber(int count, double value) { + this.count = count; + this.value = value; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/Bootstrap.java b/SlinkyClient/src/main/java/dev/slinky/inject/Bootstrap.java new file mode 100644 index 0000000..9cc45d1 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/Bootstrap.java @@ -0,0 +1,102 @@ +package dev.slinky.inject; + +import com.google.common.util.concurrent.ListenableFuture; +import dev.slinky.SlinkyMod; +import dev.slinky.client.event.ClientEventBridge; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.inject.transform.SlinkyPatches; +import dev.slinky.inject.transform.TransformerEngine; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import net.minecraft.client.Minecraft; + +public final class Bootstrap { + private static final String INJECTED_PROPERTY = "slinky.injected"; + + private Bootstrap() { + } + + public static void start(String namespace, String payloadPath) throws Throwable { + synchronized (Bootstrap.class) { + Field managerField = GameHooks.class.getDeclaredField("modules"); + managerField.setAccessible(true); + Object previousManager = managerField.get(null); + if (previousManager != null) { + System.setProperty("slinky.patches.installed", "true"); + Field shutdownField = previousManager.getClass().getDeclaredField("shutdown"); + shutdownField.setAccessible(true); + if (!((AtomicBoolean)shutdownField.get(previousManager)).get()) { + Platform.log("Slinky is already running in this process; ignoring second injection"); + return; + } + ClientEventBridge.install(null); + GameHooks.install(null); + Platform.log("Previous Slinky session was unloaded; starting a new session"); + } + System.clearProperty("slinky.injected"); + + try { + System.setProperty("slinky.injected", "true"); + Platform.initialize(Platform.Namespace.of(namespace), payloadPath, true); + + try (InputStream mappings = Platform.openResource("/dev/slinky/inject/mappings.txt")) { + if (mappings == null && Platform.getNamespace() != Platform.Namespace.NAMED) { + throw new IllegalStateException("Payload for " + namespace + " is missing " + "/dev/slinky/inject/mappings.txt"); + } + + Mappings.load(mappings); + } + + Platform.log("Runtime: " + Platform.describe() + ", " + Mappings.size() + " mappings, payload " + payloadPath); + Minecraft mc = Minecraft.getMinecraft(); + if (mc == null) { + throw new IllegalStateException("Minecraft has not been created yet"); + } + ListenableFuture task = mc.addScheduledTask(new Runnable() { + @Override + public void run() { + Bootstrap.initializeOnClientThread(); + } + }); + task.get(2L, TimeUnit.MINUTES); + } catch (Throwable failure) { + System.clearProperty("slinky.injected"); + throw failure; + } + } + } + + private static void initializeOnClientThread() { + SlinkyMod mod = new SlinkyMod(); + + try { + mod.preInitialize(); + mod.initialize(); + if (System.getProperty("slinky.patches.installed") == null) { + TransformerEngine transformer = new TransformerEngine(); + transformer.applyAll(SlinkyPatches.create(Platform.isForge())); + if (transformer.getFailed() != 0) { + throw new IllegalStateException("Failed to install " + transformer.getFailed() + " Slinky class patches"); + } + System.setProperty("slinky.patches.installed", "true"); + } else { + Platform.log("Reusing the installed Slinky game hooks"); + } + Platform.log("Slinky Semantic 0.5.0-settings initialized with " + mod.modules().all().size() + " modules"); + } catch (Throwable var2) { + try { + if (mod.modules() != null) { + mod.modules().shutdown(); + } + } catch (Throwable cleanupFailure) { + var2.addSuppressed(cleanupFailure); + } finally { + System.clearProperty("slinky.injected"); + } + Platform.log("Slinky initialization failed", var2); + throw var2 instanceof RuntimeException ? (RuntimeException)var2 : new RuntimeException(var2); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/Mappings.java b/SlinkyClient/src/main/java/dev/slinky/inject/Mappings.java new file mode 100644 index 0000000..91d0540 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/Mappings.java @@ -0,0 +1,260 @@ +package dev.slinky.inject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public final class Mappings { + public static final String RESOURCE = "/dev/slinky/inject/mappings.txt"; + private static final Map classes = new HashMap<>(); + private static final Map classesReverse = new HashMap<>(); + private static final Map fields = new HashMap<>(); + private static final Map methods = new HashMap<>(); + private static final Map methodsByParameters = new HashMap<>(); + private static boolean identity = true; + private static Mappings.HierarchyProvider hierarchy = Mappings::runtimeSupertypes; + + private Mappings() { + } + + public static void load(InputStream stream) throws IOException { + classes.clear(); + classesReverse.clear(); + fields.clear(); + methods.clear(); + methodsByParameters.clear(); + identity = stream == null; + if (stream != null) { + String line; + try (BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8))) { + while ((line = reader.readLine()) != null) { + String[] columns = line.split("\t"); + String var5 = columns[0]; + switch (var5) { + case "CL": + classes.put(columns[1], columns[2]); + classesReverse.put(columns[2], columns[1]); + break; + case "FD": + fields.put(columns[1] + '.' + columns[2], columns[3]); + break; + case "MD": + methods.put(columns[1] + '.' + columns[2] + columns[3], columns[4]); + methodsByParameters.put(columns[1] + '.' + columns[2] + columns[3].substring(0, columns[3].indexOf(41) + 1), columns[4]); + } + } + } + } + } + + public static void setHierarchyProvider(Mappings.HierarchyProvider provider) { + hierarchy = provider; + } + + public static boolean isIdentity() { + return identity; + } + + public static int size() { + return classes.size() + fields.size() + methods.size(); + } + + public static String mapClass(String namedInternalName) { + if (identity) { + return namedInternalName; + } else { + String mapped = classes.get(namedInternalName); + if (mapped != null) { + return mapped; + } else { + int inner = namedInternalName.lastIndexOf(36); + if (inner > 0) { + String outer = classes.get(namedInternalName.substring(0, inner)); + if (outer != null) { + return outer + namedInternalName.substring(inner); + } + } + + return namedInternalName; + } + } + } + + public static String unmapClass(String runtimeInternalName) { + if (identity) { + return runtimeInternalName; + } else { + String named = classesReverse.get(runtimeInternalName); + return named != null ? named : runtimeInternalName; + } + } + + public static String mapClassBinary(String namedBinaryName) { + return mapClass(namedBinaryName.replace('.', '/')).replace('/', '.'); + } + + public static String getNamedName(Class runtimeClass) { + return unmapClass(runtimeClass.getName().replace('.', '/')).replace('/', '.'); + } + + public static String mapDescriptor(String namedDescriptor) { + if (identity) { + return namedDescriptor; + } else { + StringBuilder builder = new StringBuilder(namedDescriptor.length()); + int index = 0; + + while (index < namedDescriptor.length()) { + char c = namedDescriptor.charAt(index); + if (c == 'L') { + int end = namedDescriptor.indexOf(59, index); + builder.append('L').append(mapClass(namedDescriptor.substring(index + 1, end))).append(';'); + index = end + 1; + } else { + builder.append(c); + index++; + } + } + + return builder.toString(); + } + } + + public static String mapField(String namedOwner, String namedName) { + if (identity) { + return namedName; + } else { + String direct = fields.get(namedOwner + '.' + namedName); + if (direct != null) { + return direct; + } else { + for (String type : walkSupertypes(namedOwner)) { + String mapped = fields.get(type + '.' + namedName); + if (mapped != null) { + return mapped; + } + } + + return namedName; + } + } + } + + public static String mapMethod(String namedOwner, String namedName, String namedDescriptor) { + if (!identity && !namedName.startsWith("<")) { + String direct = methods.get(namedOwner + '.' + namedName + namedDescriptor); + if (direct != null) { + return direct; + } else { + for (String type : walkSupertypes(namedOwner)) { + String mapped = methods.get(type + '.' + namedName + namedDescriptor); + if (mapped != null) { + return mapped; + } + } + + return namedName; + } + } else { + return namedName; + } + } + + public static String mapMethodByParameters(String namedOwner, String namedName, String namedParameters) { + if (!identity && !namedName.startsWith("<")) { + String direct = methodsByParameters.get(namedOwner + '.' + namedName + namedParameters); + if (direct != null) { + return direct; + } else { + for (String type : walkSupertypes(namedOwner)) { + String mapped = methodsByParameters.get(type + '.' + namedName + namedParameters); + if (mapped != null) { + return mapped; + } + } + + return namedName; + } + } else { + return namedName; + } + } + + public static String unmapDescriptor(String runtimeDescriptor) { + if (identity) { + return runtimeDescriptor; + } else { + StringBuilder builder = new StringBuilder(runtimeDescriptor.length()); + int index = 0; + + while (index < runtimeDescriptor.length()) { + char c = runtimeDescriptor.charAt(index); + if (c == 'L') { + int end = runtimeDescriptor.indexOf(59, index); + builder.append('L').append(unmapClass(runtimeDescriptor.substring(index + 1, end))).append(';'); + index = end + 1; + } else { + builder.append(c); + index++; + } + } + + return builder.toString(); + } + } + + private static Iterable walkSupertypes(String namedOwner) { + Set visited = new HashSet<>(); + Deque queue = new ArrayDeque<>(); + List result = new ArrayList<>(); + queue.add(mapClass(namedOwner)); + + while (!queue.isEmpty()) { + String runtime = queue.poll(); + if (visited.add(runtime)) { + String[] supertypes = hierarchy.getSupertypes(runtime); + if (supertypes != null) { + for (String supertype : supertypes) { + if (supertype != null && !visited.contains(supertype)) { + result.add(unmapClass(supertype)); + queue.add(supertype); + } + } + } + } + } + + return result; + } + + private static String[] runtimeSupertypes(String runtimeInternalName) { + try { + Class type = Class.forName(runtimeInternalName.replace('/', '.'), false, Platform.getGameClassLoader()); + Class[] interfaces = type.getInterfaces(); + String[] result = new String[interfaces.length + 1]; + result[0] = type.getSuperclass() == null ? null : type.getSuperclass().getName().replace('.', '/'); + + for (int i = 0; i < interfaces.length; i++) { + result[i + 1] = interfaces[i].getName().replace('.', '/'); + } + + return result; + } catch (Throwable var5) { + return null; + } + } + + public interface HierarchyProvider { + String[] getSupertypes(String var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/NativeBridge.java b/SlinkyClient/src/main/java/dev/slinky/inject/NativeBridge.java new file mode 100644 index 0000000..157363f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/NativeBridge.java @@ -0,0 +1,12 @@ +package dev.slinky.inject; + +public final class NativeBridge { + private NativeBridge() { + } + + public static native byte[] getClassBytes(Class var0); + + public static native int retransformClass(Class var0, byte[] var1); + + public static native void log(String var0); +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/Platform.java b/SlinkyClient/src/main/java/dev/slinky/inject/Platform.java new file mode 100644 index 0000000..f20903d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/Platform.java @@ -0,0 +1,176 @@ +package dev.slinky.inject; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; +import net.minecraft.client.Minecraft; + +public final class Platform { + private static Platform.Namespace namespace = Platform.Namespace.NAMED; + private static String payloadPath; + private static boolean nativesAvailable; + private static Boolean forge; + private static Boolean lunar; + private static Boolean badlion; + + private Platform() { + } + + static void initialize(Platform.Namespace runtimeNamespace, String jarPath, boolean natives) { + namespace = runtimeNamespace; + payloadPath = jarPath; + nativesAvailable = natives; + } + + public static Platform.Namespace getNamespace() { + return namespace; + } + + public static String getPayloadPath() { + return payloadPath; + } + + public static ClassLoader getGameClassLoader() { + ClassLoader loader = Minecraft.class.getClassLoader(); + return loader != null ? loader : ClassLoader.getSystemClassLoader(); + } + + public static boolean isForge() { + if (forge == null) { + forge = isClassPresent("net.minecraftforge.common.ForgeVersion"); + } + + return forge; + } + + public static boolean isLunar() { + if (lunar == null) { + lunar = isClassPresent("com.moonsworth.lunar.genesis.Genesis") + || isClassPresent("com.moonsworth.lunar.client.Lunar") + || System.getProperty("java.class.path", "").toLowerCase().contains("lunar"); + } + + return lunar; + } + + public static boolean isBadlion() { + if (badlion == null) { + badlion = isClassPresent("net.badlion.client.Wrapper") + || isClassPresent("net.badlion.client.Main") + || System.getProperty("java.class.path", "").toLowerCase().contains("badlion") + || System.getProperty("sun.java.command", "").toLowerCase().contains("badlion"); + } + + return badlion; + } + + public static boolean hasOptiFine() { + return isClassPresent("optifine.OptiFineTweaker") || isClassPresent("Config") || isClassPresent("net.optifine.Config"); + } + + public static String describe() { + String loader = isForge() ? "Forge" : (isBadlion() ? "Badlion" : (isLunar() ? "Lunar" : "Vanilla")); + if (hasOptiFine() && !isForge()) { + loader = loader + "+OptiFine"; + } + + return loader + " (" + namespace.id + " names)"; + } + + public static boolean isClassPresent(String name) { + try { + Class.forName(name, false, getGameClassLoader()); + return true; + } catch (Throwable var2) { + return false; + } + } + + public static InputStream openResource(String path) throws IOException { + if (payloadPath != null) { + final JarFile jar = new JarFile(payloadPath); + JarEntry entry = jar.getJarEntry(path.startsWith("/") ? path.substring(1) : path); + if (entry == null) { + jar.close(); + return Platform.class.getResourceAsStream(path); + } else { + return new FilterInputStream(jar.getInputStream(entry)) { + @Override + public void close() throws IOException { + try { + super.close(); + } finally { + jar.close(); + } + } + }; + } + } else { + return Platform.class.getResourceAsStream(path); + } + } + + public static InputStream resource(String path) { + try { + return openResource(path); + } catch (IOException var2) { + return null; + } + } + + public static void log(String message) { + if (nativesAvailable) { + try { + NativeBridge.log(message); + return; + } catch (UnsatisfiedLinkError var2) { + nativesAvailable = false; + } + } + + System.out.println("[Slinky] " + message); + } + + public static void log(String context, Throwable throwable) { + log(context + ": " + throwable); + int depth = 0; + + for (Throwable current = throwable; current != null && depth < 6; depth++) { + if (current != throwable) { + log("Caused by: " + current); + } + + StackTraceElement[] trace = current.getStackTrace(); + + for (int i = 0; i < trace.length && i < 12; i++) { + log(" at " + trace[i]); + } + + current = current.getCause(); + } + } + + public static enum Namespace { + NAMED("named"), + SRG("srg"), + OFFICIAL("official"); + + public final String id; + + private Namespace(String id) { + this.id = id; + } + + public static Platform.Namespace of(String id) { + for (Platform.Namespace namespace : values()) { + if (namespace.id.equalsIgnoreCase(id)) { + return namespace; + } + } + + throw new IllegalArgumentException("Unknown namespace " + id); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/Reflect.java b/SlinkyClient/src/main/java/dev/slinky/inject/Reflect.java new file mode 100644 index 0000000..6ea3ad7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/Reflect.java @@ -0,0 +1,44 @@ +package dev.slinky.inject; + +import java.lang.reflect.Method; + +public final class Reflect { + private Reflect() { + } + + public static String descriptor(Method method) { + StringBuilder builder = new StringBuilder("("); + + for (Class parameter : method.getParameterTypes()) { + builder.append(descriptor(parameter)); + } + + return builder.append(')').append(descriptor(method.getReturnType())).toString(); + } + + public static String descriptor(Class type) { + if (type.isArray()) { + return type.getName().replace('.', '/'); + } else if (type.isPrimitive()) { + if (type == int.class) { + return "I"; + } else if (type == void.class) { + return "V"; + } else if (type == boolean.class) { + return "Z"; + } else if (type == byte.class) { + return "B"; + } else if (type == char.class) { + return "C"; + } else if (type == short.class) { + return "S"; + } else if (type == double.class) { + return "D"; + } else { + return type == float.class ? "F" : "J"; + } + } else { + return "L" + type.getName().replace('.', '/') + ";"; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/ReflectionHelper.java b/SlinkyClient/src/main/java/dev/slinky/inject/ReflectionHelper.java new file mode 100644 index 0000000..9875e2f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/ReflectionHelper.java @@ -0,0 +1,78 @@ +package dev.slinky.inject; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public final class ReflectionHelper { + private ReflectionHelper() { + } + + public static Field findField(Class type, String... names) { + for (String name : names) { + try { + Field field = type.getDeclaredField(name); + field.setAccessible(true); + return field; + } catch (NoSuchFieldException var10) { + } + } + + String owner = Mappings.unmapClass(type.getName().replace('.', '/')); + + for (String name : names) { + String runtime = Mappings.mapField(owner, name); + if (!runtime.equals(name)) { + try { + Field field = type.getDeclaredField(runtime); + field.setAccessible(true); + return field; + } catch (NoSuchFieldException var9) { + } + } + } + + throw new IllegalStateException("Missing field " + owner + "." + String.join("/", names)); + } + + public static Method findMethod(Class type, E instance, String[] names, Class... parameterTypes) { + for (String name : names) { + try { + Method method = type.getDeclaredMethod(name, parameterTypes); + method.setAccessible(true); + return method; + } catch (NoSuchMethodException var14) { + } + } + + String owner = Mappings.unmapClass(type.getName().replace('.', '/')); + StringBuilder runtimeParameters = new StringBuilder("("); + + for (Class parameter : parameterTypes) { + runtimeParameters.append(Reflect.descriptor(parameter)); + } + + String namedParameters = Mappings.unmapDescriptor(runtimeParameters.append(')').toString()); + + for (String name : names) { + String runtime = Mappings.mapMethodByParameters(owner, name, namedParameters); + if (!runtime.equals(name)) { + try { + Method method = type.getDeclaredMethod(runtime, parameterTypes); + method.setAccessible(true); + return method; + } catch (NoSuchMethodException var13) { + } + } + } + + throw new IllegalStateException("Missing method " + owner + "." + String.join("/", names) + namedParameters); + } + + public static T getPrivateValue(Class type, E instance, String... names) { + try { + return (T)findField(type, names).get(instance); + } catch (IllegalAccessException var4) { + throw new IllegalStateException(var4); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/ReloadState.java b/SlinkyClient/src/main/java/dev/slinky/inject/ReloadState.java new file mode 100644 index 0000000..c4fa408 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/ReloadState.java @@ -0,0 +1,28 @@ +package dev.slinky.inject; + +/** Holds reload bookkeeping without changing the schema of already loaded classes. */ +public final class ReloadState { + private static Thread shutdownHook; + + private ReloadState() { + } + + public static synchronized void replaceHook(Thread hook) { + Runtime runtime = Runtime.getRuntime(); + Thread previous = shutdownHook; + boolean removed = previous != null && runtime.removeShutdownHook(previous); + try { + runtime.addShutdownHook(hook); + shutdownHook = hook; + } catch (RuntimeException failure) { + if (removed) { + try { + runtime.addShutdownHook(previous); + } catch (RuntimeException restoreFailure) { + failure.addSuppressed(restoreFailure); + } + } + throw failure; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/transform/SlinkyPatches.java b/SlinkyClient/src/main/java/dev/slinky/inject/transform/SlinkyPatches.java new file mode 100644 index 0000000..6533f0f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/transform/SlinkyPatches.java @@ -0,0 +1,698 @@ +package dev.slinky.inject.transform; + +import dev.slinky.inject.Mappings; +import dev.slinky.shaded.asm.Opcodes; +import dev.slinky.shaded.asm.tree.AbstractInsnNode; +import dev.slinky.shaded.asm.tree.ClassNode; +import dev.slinky.shaded.asm.tree.FieldInsnNode; +import dev.slinky.shaded.asm.tree.InsnList; +import dev.slinky.shaded.asm.tree.InsnNode; +import dev.slinky.shaded.asm.tree.JumpInsnNode; +import dev.slinky.shaded.asm.tree.LabelNode; +import dev.slinky.shaded.asm.tree.LdcInsnNode; +import dev.slinky.shaded.asm.tree.MethodInsnNode; +import dev.slinky.shaded.asm.tree.MethodNode; +import dev.slinky.shaded.asm.tree.TryCatchBlockNode; +import dev.slinky.shaded.asm.tree.VarInsnNode; +import java.util.ArrayList; +import java.util.List; + +public final class SlinkyPatches implements Opcodes { + static final String GAME_HOOKS = "dev/slinky/client/hook/GameHooks"; + static final String RENDER_HOOKS = "dev/slinky/client/render/hook/RenderHooks"; + static final String EVENTS = "dev/slinky/client/event/ClientEventBridge"; + static final String EVENT = "dev/slinky/client/event/SemanticEvent"; + static final String MINECRAFT = "net/minecraft/client/Minecraft"; + static final String ENTITY = "net/minecraft/entity/Entity"; + static final String LIVING = "net/minecraft/entity/EntityLivingBase"; + static final String PLAYER = "net/minecraft/client/entity/EntityPlayerSP"; + static final String CONTROLLER = "net/minecraft/client/multiplayer/PlayerControllerMP"; + static final String NETWORK = "net/minecraft/network/NetworkManager"; + static final String WORLD = "net/minecraft/world/World"; + static final String RENDER_INFO = "net/minecraft/client/renderer/ActiveRenderInfo"; + static final String RENDER_MANAGER = "net/minecraft/client/renderer/entity/RenderManager"; + static final String LIVING_RENDERER = "net/minecraft/client/renderer/entity/RendererLivingEntity"; + static final String RENDER = "net/minecraft/client/renderer/entity/Render"; + static final String ENTITY_RENDERER = "net/minecraft/client/renderer/EntityRenderer"; + static final String CHUNK_PROVIDER = "net/minecraft/client/multiplayer/ChunkProviderClient"; + static final String GL_STATE = "net/minecraft/client/renderer/GlStateManager"; + static final String GUI_SCREEN = "net/minecraft/client/gui/GuiScreen"; + + private SlinkyPatches() { + } + + static String cls(String named) { + return Mappings.mapClass(named); + } + + static String desc(String named) { + return Mappings.mapDescriptor(named); + } + + static boolean isCall(AbstractInsnNode insn, String owner, String name, String desc) { + if (!(insn instanceof MethodInsnNode)) { + return false; + } else { + MethodInsnNode call = (MethodInsnNode)insn; + return call.owner.equals(cls(owner)) && call.desc.equals(desc(desc)) && call.name.equals(Mappings.mapMethod(owner, name, desc)); + } + } + + static boolean isExternalCall(AbstractInsnNode insn, String owner, String name, String desc) { + if (!(insn instanceof MethodInsnNode)) { + return false; + } else { + MethodInsnNode call = (MethodInsnNode)insn; + return call.owner.equals(owner) && call.name.equals(name) && call.desc.equals(desc); + } + } + + static MethodInsnNode hook(String owner, String name, String namedDesc) { + return new MethodInsnNode(184, owner, name, desc(namedDesc), false); + } + + static AbstractInsnNode nextReal(AbstractInsnNode insn) { + for (AbstractInsnNode node = insn.getNext(); node != null; node = node.getNext()) { + if (node.getOpcode() >= 0) { + return node; + } + } + + return null; + } + + static int redirectInputLoop(MethodNode method, String extOwner, String extName, String extDesc, String hookOwner, String hookName) { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isExternalCall(insn, extOwner, extName, extDesc)) { + AbstractInsnNode cond = nextReal(insn); + if (cond != null && cond.getOpcode() == 153) { + int pollAt = method.instructions.indexOf(insn); + if (method.instructions.indexOf(((JumpInsnNode)cond).label) > pollAt) { + AbstractInsnNode body = nextReal(cond); + if (body == null || body.getOpcode() != 167 || method.instructions.indexOf(((JumpInsnNode)body).label) > pollAt) { + method.instructions.set(insn, hook(hookOwner, hookName, extDesc)); + count++; + } + } + } + } + } + + return count; + } + + static boolean isReturn(AbstractInsnNode insn) { + return insn.getOpcode() >= 172 && insn.getOpcode() <= 177; + } + + static InsnList list(AbstractInsnNode... nodes) { + InsnList list = new InsnList(); + + for (AbstractInsnNode node : nodes) { + list.add(node); + } + + return list; + } + + static InsnList returnIfTrue() { + LabelNode proceed = new LabelNode(); + return list(new JumpInsnNode(153, proceed), new InsnNode(177), proceed); + } + + static int beforeReturns(MethodNode method, SlinkyPatches.InsnFactory factory) { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isReturn(insn)) { + method.instructions.insertBefore(insn, factory.create()); + count++; + } + } + + return count; + } + + static int scope(MethodNode method, InsnList entry, SlinkyPatches.InsnFactory exit) { + LabelNode start = new LabelNode(); + LabelNode end = new LabelNode(); + LabelNode handler = new LabelNode(); + int returns = beforeReturns(method, exit); + InsnList head = new InsnList(); + if (entry != null) { + head.add(entry); + } + + head.add(start); + method.instructions.insert(head); + method.instructions.add(end); + method.instructions.add(handler); + method.instructions.add(exit.create()); + method.instructions.add(new InsnNode(191)); + method.tryCatchBlocks.add(new TryCatchBlockNode(start, end, handler, null)); + return returns; + } + + public static List create(boolean forge) { + List patches = new ArrayList<>(); + String doRender = "(Lnet/minecraft/entity/EntityLivingBase;DDDFF)V"; + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/renderer/entity/RendererLivingEntity") + .edit( + "doRender", + doRender, + "Chams scope (RenderHooks#beginLiving/endLiving)", + -1, + method -> scope( + method, + list(new VarInsnNode(25, 1), hook("dev/slinky/client/render/hook/RenderHooks", "beginLiving", "(Lnet/minecraft/entity/EntityLivingBase;)V")), + () -> list(hook("dev/slinky/client/render/hook/RenderHooks", "endLiving", "()V")) + ) + ) + .edit("renderName", "(Lnet/minecraft/entity/EntityLivingBase;DDD)V", "Name Tags hides the vanilla name (cancellable head)", 1, method -> { + InsnList entry = list( + new VarInsnNode(25, 1), hook("dev/slinky/client/render/hook/RenderHooks", "suppressVanillaName", "(Lnet/minecraft/entity/Entity;)Z") + ); + entry.add(returnIfTrue()); + method.instructions.insert(entry); + return 1; + }) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/renderer/entity/Render") + .edit( + "renderLivingLabel", + "(Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V", + "Name Tags hides the vanilla label (cancellable head)", + 1, + method -> { + InsnList entry = list( + new VarInsnNode(25, 1), hook("dev/slinky/client/render/hook/RenderHooks", "suppressVanillaName", "(Lnet/minecraft/entity/Entity;)Z") + ); + entry.add(returnIfTrue()); + method.instructions.insert(entry); + return 1; + } + ) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/multiplayer/ChunkProviderClient") + .edit( + "unloadChunk", + "(II)V", + "afterUnloadChunk before return", + -1, + method -> beforeReturns( + method, + () -> list(new VarInsnNode(21, 1), new VarInsnNode(21, 2), hook("dev/slinky/client/render/hook/RenderHooks", "afterUnloadChunk", "(II)V")) + ) + ) + ); + String blockPos = "net/minecraft/util/BlockPos"; + String blockState = "net/minecraft/block/state/IBlockState"; + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/world/World") + .edit( + "setBlockState", + "(L" + blockPos + ";L" + blockState + ";I)Z", + "beforeSetBlock at head", + 1, + method -> { + method.instructions + .insert( + list( + new VarInsnNode(25, 0), + new VarInsnNode(25, 1), + new VarInsnNode(25, 2), + hook("dev/slinky/client/render/hook/RenderHooks", "beforeSetBlock", "(Lnet/minecraft/world/World;L" + blockPos + ";L" + blockState + ";)V") + ) + ); + return 1; + } + ) + .edit( + "markBlockRangeForRenderUpdate", + "(IIIIII)V", + "afterInvalidate before return", + -1, + method -> beforeReturns( + method, + () -> list( + new VarInsnNode(25, 0), + new VarInsnNode(21, 1), + new VarInsnNode(21, 3), + hook("dev/slinky/client/render/hook/RenderHooks", "afterInvalidate", "(Lnet/minecraft/world/World;II)V") + ) + ) + ) + .edit( + "updateEntities", + "()V", + "beforeEntities/afterEntities/abortEntities", + -1, + method -> { + LabelNode start = new LabelNode(); + LabelNode end = new LabelNode(); + LabelNode failure = new LabelNode(); + int returns = beforeReturns( + method, () -> list(new VarInsnNode(25, 0), hook("dev/slinky/client/hook/GameHooks", "afterEntities", "(Lnet/minecraft/world/World;)V")) + ); + method.instructions + .insert(list(new VarInsnNode(25, 0), hook("dev/slinky/client/hook/GameHooks", "beforeEntities", "(Lnet/minecraft/world/World;)V"), start)); + method.instructions.add(end); + method.instructions.add(failure); + method.instructions + .add( + list( + new VarInsnNode(25, 0), + hook("dev/slinky/client/hook/GameHooks", "abortEntities", "(Lnet/minecraft/world/World;)V"), + new InsnNode(191) + ) + ); + method.tryCatchBlocks.add(new TryCatchBlockNode(start, end, failure, null)); + return returns; + } + ) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/renderer/EntityRenderer") + .edit("renderWorldPass", "(IFJ)V", "GlStateManager.clear -> RenderHooks#clearWorld", 2, method -> { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isCall(insn, "net/minecraft/client/renderer/GlStateManager", "clear", "(I)V")) { + method.instructions.set(insn, hook("dev/slinky/client/render/hook/RenderHooks", "clearWorld", "(I)V")); + count++; + } + } + + return count; + }) + .edit("updateCameraAndRender", "(FJ)V", "preRender before Display.isActive, endRender scope", 1, method -> { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isExternalCall(insn, "org/lwjgl/opengl/Display", "isActive", "()Z")) { + method.instructions.insertBefore(insn, hook("dev/slinky/client/hook/GameHooks", "preRender", "()V")); + count++; + } + } + + if (count == 0) { + return 0; + } else { + scope(method, null, () -> list(hook("dev/slinky/client/hook/GameHooks", "endRender", "()V"))); + return count; + } + }) + .edit( + "orientCamera", + "(F)V", + "beginCamera/endCamera scope", + -1, + method -> scope( + method, + list(hook("dev/slinky/client/hook/GameHooks", "beginCamera", "()V")), + () -> list(hook("dev/slinky/client/hook/GameHooks", "endCamera", "()V")) + ) + ) + .edit( + "getMouseOver", + "(F)V", + "beginRay/customRay, entity reach, block reach, hitbox border", + -1, + method -> { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (insn instanceof LdcInsnNode && Double.valueOf(3.0).equals(((LdcInsnNode)insn).cst)) { + method.instructions.insert(insn, hook("dev/slinky/client/hook/GameHooks", "entityReach", "(D)D")); + count++; + } else if (isCall(insn, "net/minecraft/client/multiplayer/PlayerControllerMP", "getBlockReachDistance", "()F")) { + method.instructions.insert(insn, hook("dev/slinky/client/hook/GameHooks", "queryReach", "(F)F")); + count++; + } else if (isCall(insn, "net/minecraft/entity/Entity", "getCollisionBorderSize", "()F")) { + method.instructions.insert(insn, hook("dev/slinky/client/hook/GameHooks", "hitboxBorder", "(F)F")); + count++; + } + } + + InsnList start = list( + new VarInsnNode(23, 1), + hook("dev/slinky/client/hook/GameHooks", "beginRay", "(F)V"), + hook("dev/slinky/client/hook/GameHooks", "customRay", "()Z") + ); + start.add(returnIfTrue()); + method.instructions.insert(start); + return count + 1; + } + ) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/renderer/ActiveRenderInfo") + .edit( + "updateRenderInfo", + "(Lnet/minecraft/entity/player/EntityPlayer;Z)V", + "beginRenderInfo/endRenderInfo scope", + -1, + method -> scope( + method, + list(hook("dev/slinky/client/hook/GameHooks", "beginRenderInfo", "()V")), + () -> list(hook("dev/slinky/client/hook/GameHooks", "endRenderInfo", "()V")) + ) + ) + ); + SlinkyPatches.ClassEdits renderManager = new SlinkyPatches.ClassEdits("net/minecraft/client/renderer/entity/RenderManager"); + renderManager.everyMethodExpected = 6; + renderManager.everyMethodLabel = "playerViewX/playerViewY writes (2 pitch, 4 yaw)"; + renderManager.everyMethod.add(method -> { + int count = 0; + String owner = cls("net/minecraft/client/renderer/entity/RenderManager"); + String pitch = Mappings.mapField("net/minecraft/client/renderer/entity/RenderManager", "playerViewX"); + String yaw = Mappings.mapField("net/minecraft/client/renderer/entity/RenderManager", "playerViewY"); + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (insn instanceof FieldInsnNode && insn.getOpcode() == 181) { + FieldInsnNode field = (FieldInsnNode)insn; + if (field.owner.equals(owner) && field.desc.equals("F")) { + String adapter = field.name.equals(pitch) ? "renderViewPitch" : (field.name.equals(yaw) ? "renderViewYaw" : null); + if (adapter != null) { + method.instructions.insertBefore(insn, hook("dev/slinky/client/hook/GameHooks", adapter, "(F)F")); + count++; + } + } + } + } + + return count; + }); + patches.add(renderManager); + String worldClient = "net/minecraft/client/multiplayer/WorldClient"; + SlinkyPatches.ClassEdits minecraft = new SlinkyPatches.ClassEdits("net/minecraft/client/Minecraft") + .edit("updateDisplay", "()V", "beforeDisplay before Display.update", 1, method -> { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isExternalCall(insn, "org/lwjgl/opengl/Display", "update", "()V")) { + method.instructions.insertBefore(insn, hook("dev/slinky/client/hook/GameHooks", "beforeDisplay", "()V")); + count++; + } + } + + return count; + }) + .edit("shutdownMinecraftApplet", "()V", "shutdown at head", 1, method -> { + method.instructions.insert(hook("dev/slinky/client/hook/GameHooks", "shutdown", "()V")); + return 1; + }) + .edit("rightClickMouse", "()V", "beforeInteraction(true)/afterInteraction(true)", -1, method -> interaction(method, true)) + .edit("clickMouse", "()V", "beforeInteraction(false)/afterInteraction(false)", -1, method -> interaction(method, false)) + .edit("runTick", "()V", "ClientTickEvent START/END", -1, method -> { + int returns = beforeReturns(method, () -> list(new InsnNode(3), hook("dev/slinky/client/event/ClientEventBridge", "clientTick", "(Z)V"))); + method.instructions.insert(list(new InsnNode(4), hook("dev/slinky/client/event/ClientEventBridge", "clientTick", "(Z)V"))); + return returns; + }) + .edit("runGameLoop", "()V", "RenderTickEvent START/END around updateCameraAndRender", 1, method -> { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isCall(insn, "net/minecraft/client/renderer/EntityRenderer", "updateCameraAndRender", "(FJ)V")) { + method.instructions.insertBefore(insn, list(new InsnNode(4), hook("dev/slinky/client/event/ClientEventBridge", "renderTick", "(Z)V"))); + method.instructions.insert(insn, list(new InsnNode(3), hook("dev/slinky/client/event/ClientEventBridge", "renderTick", "(Z)V"))); + count++; + } + } + + return count; + }) + .edit( + "loadWorld", + "(L" + worldClient + ";Ljava/lang/String;)V", + "WorldEvent.Unload at head", + 1, + method -> { + method.instructions + .insert(list(new VarInsnNode(25, 0), hook("dev/slinky/client/event/ClientEventBridge", "loadWorld", "(Lnet/minecraft/client/Minecraft;)V"))); + return 1; + } + ); + minecraft.everyMethodExpected = 2; + minecraft.everyMethodLabel = "Keyboard.next/Mouse.next event-loop redirects (runTick, or OptiFine runInputTick)"; + minecraft.everyMethod + .add(method -> redirectInputLoop(method, "org/lwjgl/input/Keyboard", "next", "()Z", "dev/slinky/client/event/ClientEventBridge", "keyboardNext")); + minecraft.everyMethod + .add(method -> redirectInputLoop(method, "org/lwjgl/input/Mouse", "next", "()Z", "dev/slinky/client/event/ClientEventBridge", "mouseNext")); + patches.add(minecraft); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/multiplayer/PlayerControllerMP") + .edit( + "updateController", + "()V", + "updateController before return", + -1, + method -> beforeReturns(method, () -> list(hook("dev/slinky/client/hook/GameHooks", "updateController", "()V"))) + ) + ); + String packet = "net/minecraft/network/Packet"; + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/network/NetworkManager") + .edit( + "sendPacket", + "(L" + packet + ";)V", + "beforeSend at head (cancellable)", + 1, + method -> { + InsnList entry = list( + new VarInsnNode(25, 0), + new VarInsnNode(25, 1), + hook("dev/slinky/client/hook/GameHooks", "beforeSend", "(Lnet/minecraft/network/NetworkManager;L" + packet + ";)Z") + ); + entry.add(returnIfTrue()); + method.instructions.insert(entry); + return 1; + } + ) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/entity/Entity") + .edit( + "setAngles", + "(FF)V", + "mouseAngles at head (cancellable)", + 1, + method -> { + InsnList entry = list( + new VarInsnNode(25, 0), + new VarInsnNode(23, 1), + new VarInsnNode(23, 2), + hook("dev/slinky/client/hook/GameHooks", "mouseAngles", "(Lnet/minecraft/entity/Entity;FF)Z") + ); + entry.add(returnIfTrue()); + method.instructions.insert(entry); + return 1; + } + ) + .edit( + "moveFlying", + "(FFF)V", + "beforeMoveFlying/afterMoveFlying", + -1, + method -> { + int local = method.maxLocals++; + InsnList entry = list( + new VarInsnNode(25, 0), + new VarInsnNode(23, 1), + new VarInsnNode(23, 2), + new VarInsnNode(23, 3), + hook("dev/slinky/client/hook/GameHooks", "beforeMoveFlying", "(Lnet/minecraft/entity/Entity;FFF)Ldev/slinky/client/event/SemanticEvent;"), + new VarInsnNode(58, local) + ); + String[] fields = new String[]{"sideways", "forward", "factor"}; + + for (int i = 1; i <= 3; i++) { + entry.add(new VarInsnNode(25, local)); + entry.add(new FieldInsnNode(180, "dev/slinky/client/event/SemanticEvent", fields[i - 1], "F")); + entry.add(new VarInsnNode(56, i)); + } + + int returns = beforeReturns( + method, + () -> list( + new VarInsnNode(25, 0), + new VarInsnNode(25, local), + hook("dev/slinky/client/hook/GameHooks", "afterMoveFlying", "(Lnet/minecraft/entity/Entity;Ldev/slinky/client/event/SemanticEvent;)V") + ) + ); + method.instructions.insert(entry); + return returns; + } + ) + .edit("moveEntity", "(DDD)V", "isSneaking -> GameHooks#safeWalk (first call)", 1, method -> { + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isCall(insn, "net/minecraft/entity/Entity", "isSneaking", "()Z")) { + method.instructions.set(insn, hook("dev/slinky/client/hook/GameHooks", "safeWalk", "(Lnet/minecraft/entity/Entity;)Z")); + return 1; + } + } + + return 0; + }) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/entity/EntityPlayerSP") + .edit("swingItem", "()V", "return after super.swingItem() for GameHooks#baseSwing", 1, method -> { + String name = Mappings.mapMethod("net/minecraft/client/entity/EntityPlayerSP", "swingItem", "()V"); + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (insn.getOpcode() == 183 && ((MethodInsnNode)insn).name.equals(name) && ((MethodInsnNode)insn).desc.equals("()V")) { + InsnList after = list(hook("dev/slinky/client/hook/GameHooks", "baseSwingOnly", "()Z")); + after.add(returnIfTrue()); + method.instructions.insert(insn, after); + count++; + } + } + + return count; + }) + .edit("sendChatMessage", "(Ljava/lang/String;)V", "client command at head (cancellable)", 1, method -> { + InsnList entry = list(new VarInsnNode(25, 1), hook("dev/slinky/client/event/ClientEventBridge", "sendChatMessage", "(Ljava/lang/String;)Z")); + entry.add(returnIfTrue()); + method.instructions.insert(entry); + return 1; + }) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/gui/GuiScreen") + .edit( + "handleInput", + "()V", + "handleKeyboardInput -> ClientEventBridge#handleKeyboardInput", + 1, + method -> redirectSelfCall(method, "handleKeyboardInput") + ) + .edit("handleInput", "()V", "handleMouseInput -> ClientEventBridge#handleMouseInput", 1, method -> redirectSelfCall(method, "handleMouseInput")) + ); + patches.add( + new SlinkyPatches.ClassEdits("net/minecraft/client/network/NetHandlerPlayClient") + .edit("onDisconnect", "(Lnet/minecraft/util/IChatComponent;)V", "disconnect at head", 1, method -> { + method.instructions.insert(hook("dev/slinky/client/event/ClientEventBridge", "disconnect", "()V")); + return 1; + }) + ); + return patches; + } + + private static int interaction(MethodNode method, boolean use) { + int returns = beforeReturns(method, () -> list(new InsnNode(use ? 4 : 3), hook("dev/slinky/client/hook/GameHooks", "afterInteraction", "(Z)V"))); + InsnList start = list(new InsnNode(use ? 4 : 3), hook("dev/slinky/client/hook/GameHooks", "beforeInteraction", "(Z)Z")); + start.add(returnIfTrue()); + method.instructions.insert(start); + return returns; + } + + private static int redirectSelfCall(MethodNode method, String name) { + int count = 0; + + for (AbstractInsnNode insn : method.instructions.toArray()) { + if (isCall(insn, "net/minecraft/client/gui/GuiScreen", name, "()V")) { + method.instructions.set(insn, hook("dev/slinky/client/event/ClientEventBridge", name, "(Lnet/minecraft/client/gui/GuiScreen;)V")); + count++; + } + } + + return count; + } + + public static final class ClassEdits { + public final String target; + public final List edits = new ArrayList<>(); + final List everyMethod = new ArrayList<>(); + int everyMethodExpected; + String everyMethodLabel; + + ClassEdits(String target) { + this.target = target; + } + + public String getRuntimeTarget() { + return Mappings.mapClass(this.target); + } + + SlinkyPatches.ClassEdits edit(String name, String desc, String label, int expected, SlinkyPatches.Edit edit) { + this.edits.add(new SlinkyPatches.MethodEdit(name, desc, label, expected, edit)); + return this; + } + + public MethodNode find(ClassNode node, SlinkyPatches.MethodEdit edit) { + String name = Mappings.mapMethod(this.target, edit.name, edit.desc); + String desc = Mappings.mapDescriptor(edit.desc); + + for (MethodNode method : node.methods) { + if (method.name.equals(name) && method.desc.equals(desc)) { + return method; + } + } + + return null; + } + + public int applyEveryMethod(ClassNode node) { + int points = 0; + + for (SlinkyPatches.Edit edit : this.everyMethod) { + for (MethodNode method : node.methods) { + points += edit.apply(method); + } + } + + return points; + } + + public int getEveryMethodExpected() { + return this.everyMethodExpected; + } + + public String getEveryMethodLabel() { + return this.everyMethodLabel; + } + + public boolean hasEveryMethodEdits() { + return !this.everyMethod.isEmpty(); + } + } + + public interface Edit { + int apply(MethodNode var1); + } + + interface InsnFactory { + InsnList create(); + } + + public static final class MethodEdit { + public final String name; + public final String desc; + public final String label; + public final int expected; + final SlinkyPatches.Edit edit; + + MethodEdit(String name, String desc, String label, int expected, SlinkyPatches.Edit edit) { + this.name = name; + this.desc = desc; + this.label = label; + this.expected = expected; + this.edit = edit; + } + + public int apply(MethodNode method) { + return this.edit.apply(method); + } + + public String describe() { + return this.name + this.desc + " " + this.label; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/inject/transform/TransformerEngine.java b/SlinkyClient/src/main/java/dev/slinky/inject/transform/TransformerEngine.java new file mode 100644 index 0000000..2a83743 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/inject/transform/TransformerEngine.java @@ -0,0 +1,130 @@ +package dev.slinky.inject.transform; + +import dev.slinky.inject.NativeBridge; +import dev.slinky.inject.Platform; +import dev.slinky.shaded.asm.ClassReader; +import dev.slinky.shaded.asm.ClassWriter; +import dev.slinky.shaded.asm.tree.ClassNode; +import dev.slinky.shaded.asm.tree.MethodNode; +import java.util.List; + +public final class TransformerEngine { + private int applied; + private int failed; + private int warnings; + + public void applyAll(List patches) { + for (SlinkyPatches.ClassEdits patch : patches) { + try { + this.apply(patch); + } catch (Throwable var5) { + this.failed++; + Platform.log("Failed to patch " + patch.target, var5); + } + } + + Platform.log(String.format("Patched %d classes (%d failed, %d warnings)", this.applied, this.failed, this.warnings)); + } + + public int getFailed() { + return this.failed; + } + + private void warn(String message) { + this.warnings++; + Platform.log("WARN " + message); + } + + private void apply(SlinkyPatches.ClassEdits patch) { + String runtimeName = patch.getRuntimeTarget(); + + Class target; + try { + target = Class.forName(runtimeName.replace('/', '.'), false, Platform.getGameClassLoader()); + } catch (LinkageError | ClassNotFoundException var11) { + this.failed++; + Platform.log("Missing target class " + patch.target + " (" + runtimeName + ")"); + return; + } + + byte[] original = NativeBridge.getClassBytes(target); + if (original == null) { + throw new IllegalStateException("Unable to capture bytecode of " + runtimeName); + } else { + ClassNode node = new ClassNode(); + new ClassReader(original).accept(node, 4); + int changes = 0; + + for (SlinkyPatches.MethodEdit edit : patch.edits) { + MethodNode method = patch.find(node, edit); + if (method == null) { + this.warn(patch.target + ": method not found for " + edit.describe()); + } else { + int points = edit.apply(method); + if (points == 0) { + this.warn(patch.target + ": no injection point for " + edit.describe()); + } else if (edit.expected >= 0 && points != edit.expected) { + this.warn(patch.target + ": " + points + " injection points (expected " + edit.expected + ") for " + edit.describe()); + } + + changes += points; + } + } + + if (patch.hasEveryMethodEdits()) { + int points = patch.applyEveryMethod(node); + if (points != patch.getEveryMethodExpected()) { + this.warn( + patch.target + ": " + points + " injection points (expected " + patch.getEveryMethodExpected() + ") for " + patch.getEveryMethodLabel() + ); + } + + changes += points; + } + + if (changes != 0) { + ClassWriter writer = new TransformerEngine.GameClassWriter(3); + node.accept(writer); + int error = NativeBridge.retransformClass(target, writer.toByteArray()); + if (error != 0) { + throw new IllegalStateException( + "RetransformClasses returned " + error + (error == -1 ? " (load hook never matched the target)" : " (JVMTI error)") + ); + } else { + this.applied++; + } + } + } + } + + static final class GameClassWriter extends ClassWriter { + GameClassWriter(int flags) { + super(flags); + } + + @Override + protected String getCommonSuperClass(String first, String second) { + ClassLoader loader = Platform.getGameClassLoader(); + + try { + Class a = Class.forName(first.replace('/', '.'), false, loader); + Class b = Class.forName(second.replace('/', '.'), false, loader); + if (a.isAssignableFrom(b)) { + return first; + } else if (b.isAssignableFrom(a)) { + return second; + } else if (!a.isInterface() && !b.isInterface()) { + do { + a = a.getSuperclass(); + } while (!a.isAssignableFrom(b)); + + return a.getName().replace('.', '/'); + } else { + return "java/lang/Object"; + } + } catch (Throwable var6) { + return "java/lang/Object"; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/CatalogModule.java b/SlinkyClient/src/main/java/dev/slinky/module/CatalogModule.java new file mode 100644 index 0000000..5992c52 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/CatalogModule.java @@ -0,0 +1,50 @@ +package dev.slinky.module; + +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ChoiceSetting; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NumberSetting; +import dev.slinky.setting.RangeSetting; +import dev.slinky.setting.Setting; +import dev.slinky.setting.StringListSetting; +import java.util.List; + +public abstract class CatalogModule extends Module { + protected CatalogModule(String id, String name, ModuleCategory category) { + super(id, name, "Recovered " + name + " behavior", category); + + for (Setting setting : ModuleCatalog.settings(name)) { + this.add(setting); + } + } + + protected final boolean flag(String key) { + return ((BooleanSetting)this.findSetting(key)).isEnabled(); + } + + protected final float number(String key) { + return ((NumberSetting)this.findSetting(key)).floatValue(); + } + + protected final int choice(String key) { + return ((ChoiceSetting)this.findSetting(key)).index(); + } + + protected final RangeSetting.Value range(String key) { + return ((RangeSetting)this.findSetting(key)).get(); + } + + protected final List names(String key) { + return ((StringListSetting)this.findSetting(key)).get(); + } + + protected final ColorSetting.Value color(String key) { + return ((ColorSetting)this.findSetting(key)).get(); + } + + protected final void itemPolicy(String key) { + ((StringListSetting)this.findSetting(key)).normalizeWith(ItemPolicyService::canonicalize); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/CoreModules.java b/SlinkyClient/src/main/java/dev/slinky/module/CoreModules.java new file mode 100644 index 0000000..6c809f9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/CoreModules.java @@ -0,0 +1,179 @@ +package dev.slinky.module; + +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.module.combat.AimAssistModule; +import dev.slinky.module.combat.AutoBlockModule; +import dev.slinky.module.combat.AutoClickerModule; +import dev.slinky.module.combat.AutoWeaponModule; +import dev.slinky.module.combat.BacktrackModule; +import dev.slinky.module.combat.CriticalsModule; +import dev.slinky.module.combat.HitSelectModule; +import dev.slinky.module.combat.HitboxesModule; +import dev.slinky.module.combat.KnockbackDelayModule; +import dev.slinky.module.combat.KnockbackDisplaceModule; +import dev.slinky.module.combat.LagRangeModule; +import dev.slinky.module.combat.PiercingModule; +import dev.slinky.module.combat.ReachModule; +import dev.slinky.module.combat.SprintResetModule; +import dev.slinky.module.combat.TimerRangeModule; +import dev.slinky.module.combat.VelocityModule; +import dev.slinky.module.combat.WeaponsModule; +import dev.slinky.module.movement.FastAccelModule; +import dev.slinky.module.movement.InstantStopModule; +import dev.slinky.module.movement.InvWalkModule; +import dev.slinky.module.movement.KeepSprintModule; +import dev.slinky.module.movement.NoJumpDelayModule; +import dev.slinky.module.movement.NoSlowModule; +import dev.slinky.module.movement.NullMoveModule; +import dev.slinky.module.movement.SafeWalkModule; +import dev.slinky.module.movement.SpeedModule; +import dev.slinky.module.movement.SprintModule; +import dev.slinky.module.movement.StrafeModule; +import dev.slinky.module.render.AntiDebuffModule; +import dev.slinky.module.render.BlockEspModule; +import dev.slinky.module.render.ChamsModule; +import dev.slinky.module.render.ChestEspModule; +import dev.slinky.module.render.FreeLookModule; +import dev.slinky.module.render.GuiModule; +import dev.slinky.module.render.IndicatorsModule; +import dev.slinky.module.render.ItemEspModule; +import dev.slinky.module.render.ModOverlayModule; +import dev.slinky.module.render.NameTagsModule; +import dev.slinky.module.render.NoHurtCamModule; +import dev.slinky.module.render.NotificationsModule; +import dev.slinky.module.render.PlayerEspModule; +import dev.slinky.module.render.PointersModule; +import dev.slinky.module.render.TrajectoriesModule; +import dev.slinky.module.utility.AntiBotModule; +import dev.slinky.module.utility.AutoPotModule; +import dev.slinky.module.utility.AutoRodModule; +import dev.slinky.module.utility.AutoSoupModule; +import dev.slinky.module.utility.BlinkModule; +import dev.slinky.module.utility.ChestStealerModule; +import dev.slinky.module.utility.DebugModule; +import dev.slinky.module.utility.FakeLagModule; +import dev.slinky.module.utility.FriendsModule; +import dev.slinky.module.utility.InvManagerModule; +import dev.slinky.module.utility.ItemUseFixModule; +import dev.slinky.module.utility.NoHitDelayModule; +import dev.slinky.module.utility.NoItemReleaseModule; +import dev.slinky.module.utility.NoUseDelayModule; +import dev.slinky.module.utility.PingFixModule; +import dev.slinky.module.utility.RefillModule; +import dev.slinky.module.utility.TeamsModule; +import dev.slinky.module.utility.TimerModule; +import dev.slinky.module.world.AutoToolModule; +import dev.slinky.module.world.BlockInModule; +import dev.slinky.module.world.BridgeAssistModule; +import dev.slinky.module.world.ClutchModule; +import dev.slinky.module.world.FastMineModule; +import dev.slinky.module.world.FastPlaceModule; +import dev.slinky.module.world.GhostHandModule; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public final class CoreModules { + private CoreModules() { + } + + public static void register(ModuleManager manager) { + WeaponsModule weapons = new WeaponsModule(); + List implemented = new ArrayList<>(); + implemented.add(weapons); + implemented.add(new TimerModule()); + implemented.add(new AntiDebuffModule()); + implemented.add(new NoJumpDelayModule()); + implemented.add(new NullMoveModule()); + implemented.add(new NoHitDelayModule()); + implemented.add(new FastMineModule()); + implemented.add(new NoUseDelayModule()); + implemented.add(new AutoToolModule()); + implemented.add(new AutoWeaponModule(weapons)); + implemented.add(new NoHurtCamModule()); + implemented.add(new SprintModule()); + implemented.add(new NoSlowModule()); + implemented.add(new ItemUseFixModule()); + implemented.add(new ReachModule()); + implemented.add(new HitboxesModule()); + implemented.add(new SafeWalkModule()); + implemented.add(new FastAccelModule(weapons)); + implemented.add(new AntiBotModule()); + implemented.add(new TeamsModule()); + implemented.add(new FriendsModule()); + implemented.add(new PiercingModule(weapons)); + implemented.add(new GhostHandModule()); + implemented.add(new NoItemReleaseModule()); + implemented.add(new PingFixModule()); + implemented.add(new AimAssistModule(weapons)); + implemented.add(new FreeLookModule()); + implemented.add(new StrafeModule(weapons)); + implemented.add(new InstantStopModule()); + implemented.add(new KeepSprintModule()); + implemented.add(new SprintResetModule(weapons)); + implemented.add(new VelocityModule(weapons)); + implemented.add(new FakeLagModule(weapons)); + implemented.add(new CriticalsModule(weapons)); + implemented.add(new BlinkModule(manager)); + implemented.add(new BacktrackModule(weapons)); + implemented.add(new LagRangeModule(weapons)); + implemented.add(new TimerRangeModule(weapons)); + implemented.add(new KnockbackDelayModule(weapons)); + implemented.add(new DebugModule()); + implemented.add(new KnockbackDisplaceModule(weapons, manager)); + implemented.add(new AutoSoupModule(manager)); + implemented.add(new AutoPotModule(manager)); + implemented.add(new AutoRodModule(manager, weapons)); + implemented.add(new RefillModule(manager)); + implemented.add(new InvWalkModule()); + implemented.add(new InvManagerModule()); + implemented.add(new AutoClickerModule(manager, weapons)); + implemented.add(new AutoBlockModule(manager)); + implemented.add(new BridgeAssistModule()); + implemented.add(new FastPlaceModule()); + implemented.add(new HitSelectModule(weapons)); + implemented.add(new ClutchModule(manager)); + implemented.add(new BlockInModule(manager)); + implemented.add(new PlayerEspModule()); + implemented.add(new ChestEspModule()); + implemented.add(new NameTagsModule()); + implemented.add(new PointersModule()); + implemented.add(new IndicatorsModule()); + implemented.add(new BlockEspModule()); + implemented.add(new ItemEspModule()); + implemented.add(new TrajectoriesModule()); + implemented.add(new ChamsModule()); + implemented.add(new ModOverlayModule(manager)); + implemented.add(new NotificationsModule(manager)); + implemented.add(new GuiModule(manager)); + Map byName = new LinkedHashMap<>(); + + for (Module module : implemented) { + if (byName.put(module.getName(), module) != null) { + throw new IllegalStateException("Duplicate implementation " + module.getName()); + } + } + + for (String name : ModuleCatalog.moduleNames()) { + if (ModuleCatalog.descriptorCategory(name) >= 0) { + Module modulex = byName.remove(name); + if (modulex == null) { + throw new IllegalStateException("Missing implementation " + name); + } + + manager.register(modulex); + } + } + + if (!byName.isEmpty()) { + throw new IllegalStateException("Unmatched implementations " + byName.keySet()); + } + } + + public static List sourceOnlyIntervals() { + return Collections.unmodifiableList(Arrays.asList(new Module[]{new ChestStealerModule(), new SpeedModule()})); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/Module.java b/SlinkyClient/src/main/java/dev/slinky/module/Module.java new file mode 100644 index 0000000..e9c4241 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/Module.java @@ -0,0 +1,199 @@ +package dev.slinky.module; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.settings.ModuleSettingsLayout; +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.setting.Setting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public abstract class Module { + private final String id; + private final String name; + private final String description; + private final ModuleCategory category; + private final List> settings = new ArrayList<>(); + private volatile boolean enabled; + private volatile boolean holdBinding; + private volatile int binding; + + protected Module(String id, String name, String description, ModuleCategory category) { + this.id = id; + this.name = name; + this.description = description; + this.category = category; + } + + protected final > T add(T setting) { + for (Setting current : this.settings) { + if (current.getKey().equals(setting.getKey())) { + throw new IllegalArgumentException("duplicate setting key " + setting.getKey()); + } + } + + this.settings.add(setting); + return setting; + } + + public final String getId() { + return this.id; + } + + public final String getName() { + return this.name; + } + + public final String getDescription() { + return this.description; + } + + public final ModuleCategory getCategory() { + return this.category; + } + + public int metadataCategory() { + return ModuleCatalog.descriptorCategory(this.name); + } + + public int descriptorFlags() { + return ModuleCatalog.descriptorFlags(this.name); + } + + public String statusText() { + return null; + } + + public final List> getSettings() { + return Collections.unmodifiableList(this.settings); + } + + protected final void reorderSettings(String... keys) { + if (keys.length != this.settings.size()) { + throw new IllegalArgumentException("Incomplete setting order for " + this.name); + } else { + List> ordered = new ArrayList<>(); + + for (String key : keys) { + Setting match = null; + + for (Setting setting : this.settings) { + if (setting.getKey().equals(key)) { + match = setting; + } + } + + if (match == null || ordered.contains(match)) { + throw new IllegalArgumentException("Invalid setting order key " + key); + } + + ordered.add(match); + } + + this.settings.clear(); + this.settings.addAll(ordered); + } + } + + public final Setting findSetting(String key) { + for (Setting setting : this.settings) { + if (setting.getKey().equalsIgnoreCase(key)) { + return setting; + } + } + + return null; + } + + public final boolean isEnabled() { + return this.enabled; + } + + public final boolean isHoldBinding() { + return this.holdBinding; + } + + public final void setHoldBinding(boolean hold) { + this.holdBinding = hold; + } + + public final int getBinding() { + return this.binding; + } + + public final void setBinding(int binding) { + this.binding = binding; + } + + public boolean afterSettingControl(String key, ClientContext context) { + return false; + } + + final void markEnabled(boolean value) { + this.enabled = value; + } + + final void notifyLifecycle(boolean value, ClientContext context) { + if (value) { + this.onEnable(context); + } else { + this.onDisable(context); + } + } + + final void setEnabledInternal(boolean enabled, ClientContext context) { + if (this.enabled != enabled) { + this.enabled = enabled; + if (enabled) { + this.onEnable(context); + } else { + this.onDisable(context); + } + } + } + + protected void onEnable(ClientContext context) { + } + + protected void onDisable(ClientContext context) { + } + + public void onClientTick(ClientContext context) { + } + + public void onClientTickStart(ClientContext context) { + } + + public void onWorldUnload(ClientContext context) { + } + + public void onRenderTickStart(ClientContext context) { + } + + public void onRenderTick(ClientContext context) { + } + + public void onEvent(ClientContext context, SemanticEvent event) { + } + + public boolean listens(int type) { + return false; + } + + public boolean settingVisible(String key) { + return true; + } + + public final List> visibleSettings() { + List> result = new ArrayList<>(); + + for (ModuleSettingsLayout.Control control : ModuleSettingsLayout.controls(this)) { + if (control.setting != null) { + result.add(control.setting); + } + } + + return Collections.unmodifiableList(result); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/ModuleCategory.java b/SlinkyClient/src/main/java/dev/slinky/module/ModuleCategory.java new file mode 100644 index 0000000..bb59d09 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/ModuleCategory.java @@ -0,0 +1,21 @@ +package dev.slinky.module; + +public enum ModuleCategory { + COMBAT("Combat"), + MOVEMENT("Movement"), + RENDER("Render"), + WORLD("World"), + UTILITY("Utility"), + BLOCKS("Blocks"), + UNKNOWN("Other"); + + private final String displayName; + + private ModuleCategory(String displayName) { + this.displayName = displayName; + } + + public String getDisplayName() { + return this.displayName; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/ModuleManager.java b/SlinkyClient/src/main/java/dev/slinky/module/ModuleManager.java new file mode 100644 index 0000000..3e48e1e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/ModuleManager.java @@ -0,0 +1,375 @@ +package dev.slinky.module; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.client.event.ClientEventBridge; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.input.InputRouter; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.config.ConfigurationSession; +import dev.slinky.module.catalog.ModuleCatalog; +import dev.slinky.setting.Setting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import net.minecraft.client.Minecraft; + +public final class ModuleManager { + private final Map byId = new LinkedHashMap<>(); + private final ClientContext context; + private final InputRouter input; + private final ConfigurationSession configurationSession = new ConfigurationSession(); + private final AtomicBoolean shutdown = new AtomicBoolean(); + private boolean pendingPersistence; + private final ModuleStateQueue stateChanges = new ModuleStateQueue<>(new ModuleStateQueue.Lifecycle() { + public boolean enabled(Module module) { + return module.isEnabled(); + } + + public boolean cancelDisable(Module module) { + SemanticEvent event = new SemanticEvent(4); + event.module = module; + ModuleManager.this.dispatch(event); + return event.cancelled; + } + + public void mark(Module module, boolean enabled) { + module.markEnabled(enabled); + } + + public void notifyChange(Module module, boolean enabled) { + ModuleManager.this.dispatchLifecycle(module, enabled); + if (!enabled) { + ModuleActionService.release(module); + } + } + + @Override + public void beforeDisableBatch() { + ModuleManager.this.disablingListeners = ModuleManager.this.selectedListeners(5); + } + }); + private List disablingListeners; + private Runnable persistence = new Runnable() { + @Override + public void run() { + } + }; + + public ModuleManager() { + this(new ClientContext(Minecraft.getMinecraft())); + } + + public ModuleManager(ClientContext context) { + this.context = context; + this.input = new InputRouter(this); + context.setGuiEnabled(() -> { + Module gui = this.find("GUI"); + return gui != null && gui.isEnabled(); + }); + } + + public void register(Module module) { + String id = normalize(module.getId()); + if (this.byId.containsKey(id)) { + throw new IllegalArgumentException("duplicate module id " + id); + } else { + this.byId.put(id, module); + } + } + + public void setPersistence(Runnable persistence) { + this.persistence = persistence; + } + + public synchronized void persist() { + if (!this.shutdown.get()) { + if (this.stateChanges.pending()) { + this.pendingPersistence = true; + } else { + this.persistence.run(); + } + } + } + + public List all() { + return Collections.unmodifiableList(new ArrayList<>(this.byId.values())); + } + + public List inCategory(ModuleCategory category) { + List result = new ArrayList<>(); + + for (Module module : this.byId.values()) { + if (module.getCategory() == category) { + result.add(module); + } + } + + return result; + } + + public Module find(String name) { + String normalized = normalize(name); + Module direct = this.byId.get(normalized); + if (direct != null) { + return direct; + } else { + for (Module module : this.byId.values()) { + if (normalize(module.getName()).equals(normalized)) { + return module; + } + } + + return null; + } + } + + public void toggle(Module module) { + this.setEnabled(module, !module.isEnabled(), true); + } + + public void setBinding(Module module, int binding) { + if (this.find(module.getId()) != module) { + throw new IllegalArgumentException("Binding owner is not registered"); + } else { + module.setBinding(binding); + SemanticEvent event = new SemanticEvent(24); + event.module = module; + this.dispatch(event); + } + } + + public void setEnabled(Module module, boolean enabled, boolean save) { + if (!this.shutdown.get()) { + this.requestEnabled(module, enabled); + if (save) { + this.persist(); + } + } + } + + private void validateSettings(Module module, boolean enabled) { + if (enabled && module instanceof CatalogModule) { + for (Setting setting : module.getSettings()) { + if (!setting.isConfigured()) { + throw new IllegalArgumentException("Choose " + module.getName() + "." + setting.getKey() + " before enabling"); + } + } + } + } + + public boolean requestEnabled(Module module, boolean enabled) { + if (this.shutdown.get()) { + return false; + } else { + this.validateSettings(module, enabled); + return this.stateChanges.request(module, enabled); + } + } + + public void applyPendingChanges() { + try { + this.stateChanges.apply(); + } finally { + this.disablingListeners = null; + } + + synchronized (this) { + if (this.pendingPersistence && !this.shutdown.get()) { + this.pendingPersistence = false; + this.persistence.run(); + } + } + } + + private void dispatchLifecycle(Module subject, boolean enabled) { + SemanticEvent event = new SemanticEvent(5); + event.module = subject; + event.enabled = enabled; + List selected = (List)(enabled ? this.selectedListeners(5) : new ArrayList<>(this.disablingListeners)); + if (!selected.contains(subject)) { + selected.add(subject); + } + + this.sortListeners(selected, 5); + + for (Module module : selected) { + if (module == subject) { + module.notifyLifecycle(enabled, this.context); + } + + if (module.listens(5)) { + module.onEvent(this.context, event); + } + } + } + + public void clientTick(boolean start) { + for (Module module : this.byId.values()) { + if (module.isEnabled()) { + if (start) { + module.onClientTickStart(this.context); + } else { + module.onClientTick(this.context); + } + } + } + } + + public void worldUnload() { + this.stateChanges.clear(); + this.input.clear(); + + try { + for (Module module : this.byId.values()) { + module.onWorldUnload(this.context); + } + } finally { + RelationshipService.clear(); + try { + GameHooks.clear(); + } finally { + try { + RotationService.reset(this.context); + } finally { + ModuleActionService.clear(); + } + } + } + } + + public void dispatch(SemanticEvent event) { + for (Module module : this.selectedListeners(event.type)) { + module.onEvent(this.context, event); + } + } + + public InputRouter input() { + return this.input; + } + + public ConfigurationSession configurationSession() { + return this.configurationSession; + } + + private List selectedListeners(int type) { + List selected = new ArrayList<>(); + + for (Module module : this.byId.values()) { + if (module.isEnabled() && module.listens(type)) { + selected.add(module); + } + } + + this.sortListeners(selected, type); + return selected; + } + + private void sortListeners(List selected, final int type) { + Collections.sort(selected, new Comparator() { + public int compare(Module first, Module second) { + return ModuleCatalog.priority(second.getName(), type) - ModuleCatalog.priority(first.getName(), type); + } + }); + } + + public synchronized void persistOnExit() { + if (!this.shutdown.get()) { + this.persistence.run(); + } + } + + public void shutdown() { + if (this.shutdown.compareAndSet(false, true)) { + try { + synchronized (this) { + this.persistence.run(); + this.pendingPersistence = false; + } + + this.stateChanges.clear(); + + for (Module module : this.byId.values()) { + if (module.listens(26)) { + module.onEvent(this.context, new SemanticEvent(26)); + } + } + + for (Module modulex : this.byId.values()) { + this.stateChanges.request(modulex, false); + } + + this.applyPendingChanges(); + List enabled = new ArrayList<>(); + this.disablingListeners = this.selectedListeners(5); + + for (Module modulex : this.byId.values()) { + if (modulex.isEnabled()) { + enabled.add(modulex); + } + } + + for (Module modulexx : enabled) { + modulexx.markEnabled(false); + } + + try { + for (Module modulexx : enabled) { + this.dispatchLifecycle(modulexx, false); + } + } finally { + this.disablingListeners = null; + } + + } finally { + // A failed save or module callback must still leave the old session inert. + for (Module module : this.byId.values()) { + module.markEnabled(false); + } + this.pendingPersistence = false; + this.disablingListeners = null; + this.stateChanges.clear(); + try { + this.worldUnload(); + } finally { + try { + ClientEventBridge.install(null); + } finally { + try { + GameHooks.install(null); + } finally { + System.clearProperty("slinky.injected"); + } + } + } + } + } + } + + public void renderTick(boolean start) { + for (Module module : this.byId.values()) { + if (module.isEnabled()) { + if (start) { + module.onRenderTickStart(this.context); + } else { + module.onRenderTick(this.context); + } + } + } + } + + public ClientContext context() { + return this.context; + } + + private static String normalize(String value) { + return value.toLowerCase(Locale.ROOT).replace(" ", "").replace("_", "").replace("-", ""); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/ModuleStateQueue.java b/SlinkyClient/src/main/java/dev/slinky/module/ModuleStateQueue.java new file mode 100644 index 0000000..a38e78e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/ModuleStateQueue.java @@ -0,0 +1,69 @@ +package dev.slinky.module; + +import java.util.ArrayList; +import java.util.List; + +public final class ModuleStateQueue { + private final ModuleStateQueue.Lifecycle lifecycle; + private final List enables = new ArrayList<>(); + private final List disables = new ArrayList<>(); + + public ModuleStateQueue(ModuleStateQueue.Lifecycle lifecycle) { + this.lifecycle = lifecycle; + } + + public synchronized boolean request(T module, boolean enabled) { + if (this.lifecycle.enabled(module) == enabled) { + return true; + } else if (!enabled && this.lifecycle.cancelDisable(module)) { + return false; + } else { + (enabled ? this.enables : this.disables).add(module); + return true; + } + } + + public synchronized void apply() { + for (T module : this.enables) { + this.lifecycle.mark(module, true); + } + + for (int i = 0; i < this.enables.size(); i++) { + this.lifecycle.notifyChange(this.enables.get(i), true); + } + + this.enables.clear(); + this.lifecycle.beforeDisableBatch(); + + for (T module : this.disables) { + this.lifecycle.mark(module, false); + } + + for (int i = 0; i < this.disables.size(); i++) { + this.lifecycle.notifyChange(this.disables.get(i), false); + } + + this.disables.clear(); + } + + public synchronized boolean pending() { + return !this.enables.isEmpty() || !this.disables.isEmpty(); + } + + public synchronized void clear() { + this.enables.clear(); + this.disables.clear(); + } + + public interface Lifecycle { + boolean enabled(T var1); + + boolean cancelDisable(T var1); + + void mark(T var1, boolean var2); + + void notifyChange(T var1, boolean var2); + + void beforeDisableBatch(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/catalog/ModuleCatalog.java b/SlinkyClient/src/main/java/dev/slinky/module/catalog/ModuleCatalog.java new file mode 100644 index 0000000..6683053 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/catalog/ModuleCatalog.java @@ -0,0 +1,174 @@ +package dev.slinky.module.catalog; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import dev.slinky.setting.BooleanSetting; +import dev.slinky.setting.ChoiceSetting; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NamedColorListSetting; +import dev.slinky.setting.NumberSetting; +import dev.slinky.setting.RangeSetting; +import dev.slinky.setting.Setting; +import dev.slinky.setting.StringListSetting; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public final class ModuleCatalog { + private static final Map MODULES = read(); + private static final Map DESCRIPTORS = readDescriptors(); + + private ModuleCatalog() { + } + + private static Map readDescriptors() { + InputStream stream = Platform.resource("/assets/slinkysemantic/ModuleDescriptors.json"); + if (stream == null) { + throw new IllegalStateException("Missing module role metadata"); + } else { + try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + Map result = new LinkedHashMap<>(); + + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = element.getAsJsonObject(); + result.put(row.get("module").getAsString(), row); + } + + return Collections.unmodifiableMap(result); + } catch (IOException var17) { + throw new IllegalStateException(var17); + } + } + } + + public static int descriptorFlags(String name) { + JsonArray observations = DESCRIPTORS.get(name).getAsJsonArray("observations"); + return observations.size() == 0 ? 0 : observations.get(0).getAsJsonObject().get("flags").getAsInt(); + } + + public static int descriptorCategory(String name) { + JsonArray observations = DESCRIPTORS.get(name).getAsJsonArray("observations"); + return observations.size() == 0 ? -1 : observations.get(0).getAsJsonObject().get("category").getAsInt(); + } + + private static Map read() { + InputStream stream = Platform.resource("/assets/slinkysemantic/MetadataCatalog.json"); + if (stream == null) { + throw new IllegalStateException("Missing recovered setting catalogue"); + } else { + try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + JsonObject root = new JsonParser().parse(reader).getAsJsonObject(); + Map modules = new LinkedHashMap<>(); + + for (JsonElement row : root.getAsJsonArray("modules")) { + JsonObject m = row.getAsJsonObject(); + if (modules.put(m.get("module").getAsString(), m) != null) { + throw new IllegalStateException("Duplicate module descriptor"); + } + } + + return Collections.unmodifiableMap(modules); + } catch (IOException var18) { + throw new IllegalStateException(var18); + } + } + } + + public static JsonObject module(String name) { + JsonObject record = MODULES.get(name); + if (record == null) { + throw new IllegalArgumentException("Unknown recovered module " + name); + } else { + return record; + } + } + + public static List moduleNames() { + return Collections.unmodifiableList(new ArrayList<>(MODULES.keySet())); + } + + public static List> settings(String name) { + List> result = new ArrayList<>(); + + for (JsonElement element : module(name).getAsJsonArray("settings")) { + JsonObject row = element.getAsJsonObject(); + String key = row.get("key").getAsString(); + String label = text(row, "label", text(row, "format", key)); + String type = row.get("type").getAsString(); + double min = observation(row, "minimum_observation", 0.0); + double max = observation(row, "maximum_observation", 0.0); + Setting setting; + if (type.equals("boolean")) { + setting = new BooleanSetting(key, label, false); + } else if (type.equals("number")) { + setting = new NumberSetting(key, label, min, min, max, 0.0); + } else if (type.equals("range")) { + setting = new RangeSetting(key, label, min, min, min, max); + } else if (!type.equals("choice")) { + if (type.equals("list")) { + setting = (Setting)(row.get("kind_observation").getAsInt() == 1 + ? new NamedColorListSetting(key, label) + : new StringListSetting(key, label, Collections.emptyList())); + } else { + if (!type.equals("color")) { + throw new IllegalStateException("Unmodelled setting type " + type); + } + + setting = new ColorSetting(key, label); + } + } else { + JsonArray choices = row.getAsJsonArray("options"); + String[] options = new String[choices.size()]; + + for (int i = 0; i < choices.size(); i++) { + JsonObject choice = choices.get(i).getAsJsonObject(); + if (choice.get("value").getAsInt() != i) { + throw new IllegalStateException("Non-contiguous choice"); + } + + options[i] = choice.get("label").getAsString(); + } + + setting = new ChoiceSetting(key, label, 0, options); + } + + setting.markUnconfigured(); + result.add(setting); + } + + return result; + } + + private static String text(JsonObject object, String key, String fallback) { + JsonElement value = object.get(key); + return value != null && !value.isJsonNull() ? value.getAsString() : fallback; + } + + private static double observation(JsonObject row, String key, double fallback) { + JsonElement value = row.get(key); + return value != null && !value.isJsonNull() ? value.getAsJsonObject().get("value").getAsDouble() : fallback; + } + + public static int priority(String name, int event) { + for (JsonElement descriptor : module(name).getAsJsonArray("descriptor_observations")) { + for (JsonElement callback : descriptor.getAsJsonObject().getAsJsonArray("callbacks")) { + JsonObject c = callback.getAsJsonObject(); + if (c.get("event").getAsInt() == event) { + return c.get("priority_signed").getAsInt(); + } + } + } + + return 0; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/catalog/StatusText.java b/SlinkyClient/src/main/java/dev/slinky/module/catalog/StatusText.java new file mode 100644 index 0000000..396ee2f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/catalog/StatusText.java @@ -0,0 +1,78 @@ +package dev.slinky.module.catalog; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.slinky.inject.Platform; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; + +public final class StatusText { + private static final Map METADATA = read(); + private static volatile StatusText.Formatter formatter = (pattern, argument) -> String.format(Locale.ROOT, pattern, argument); + + private StatusText() { + } + + private static Map read() { + InputStream stream = Platform.resource("/assets/slinkysemantic/StatusMetadata.json"); + if (stream == null) { + throw new IllegalStateException("Missing recovered status metadata"); + } else { + Map result = new LinkedHashMap<>(); + + try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { + for (JsonElement element : new JsonParser().parse(reader).getAsJsonArray()) { + JsonObject row = element.getAsJsonObject(); + String name = row.get("module").getAsString(); + if (result.put(name, row) != null) { + throw new IllegalStateException("Duplicate status " + name); + } + } + } catch (IOException var18) { + throw new IllegalStateException(var18); + } + + return Collections.unmodifiableMap(result); + } + } + + public static StatusText.Formatter bind(StatusText.Formatter endpoint) { + StatusText.Formatter previous = formatter; + formatter = Objects.requireNonNull(endpoint); + return previous; + } + + public static String label(String name, int index) { + JsonObject row = METADATA.get(name); + String label = row.getAsJsonArray("labels").get(index).getAsString(); + return render(row, 0, label); + } + + public static String number(String name, double value) { + return number(name, 0, value); + } + + public static String number(String name, int formatIndex, double value) { + return render(METADATA.get(name), formatIndex, value); + } + + private static String render(JsonObject row, int formatIndex, Object argument) { + String pattern = row.getAsJsonArray("formats").get(formatIndex).getAsJsonObject().get("value").getAsString(); + String value = formatter.format(pattern, argument); + byte[] bytes = value.getBytes(StandardCharsets.UTF_8); + return bytes.length < 32 ? value : new String(bytes, 0, 31, StandardCharsets.UTF_8); + } + + public interface Formatter { + String format(String var1, Object var2); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/AimAssistModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/AimAssistModule.java new file mode 100644 index 0000000..01ab996 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/AimAssistModule.java @@ -0,0 +1,519 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.AimNoise; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.inject.ReflectionHelper; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import java.lang.reflect.Field; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import org.lwjgl.input.Mouse; + +public final strictfp class AimAssistModule extends CatalogModule { + private final WeaponsModule weapons; + private final RotationRandom random; + private final RotationRandom.Smooth pitchDamping = new RotationRandom.Smooth(); + private final RotationRandom.Smooth pitchNoise = new RotationRandom.Smooth(); + private final RotationRandom.Smooth horizontalFactor = new RotationRandom.Smooth(); + private final RotationRandom.Smooth verticalFactor = new RotationRandom.Smooth(); + private final RotationRandom.Smooth speedFactor = new RotationRandom.Smooth(); + private EntityPlayer target; + private boolean targetActive; + private boolean silent; + private Vec3 previousAim = new Vec3(0.0, 0.0, 0.0); + private Vec3 currentAim = this.previousAim; + private int graceTicks; + private long tieCounter; + + public AimAssistModule(WeaponsModule weapons) { + this(weapons, RotationRandom.SHARED); + } + + public AimAssistModule(WeaponsModule weapons, RotationRandom random) { + super("aimassist", "Aim Assist", ModuleCategory.COMBAT); + this.weapons = weapons; + this.random = random; + this.reorderSettings( + new String[]{ + "mode", + "lock_on_vertical", + "silent_move_correct", + "silent_ignore_manual_aim", + "hor_speed", + "ver_speed", + "predict", + "aim_randomization", + "hor_hitbox_correct", + "ver_hitbox_correct", + "mode_target", + "sort_by", + "allow_exceed_fov", + "range", + "fov", + "require_sprint", + "require_mouse_pressed", + "require_mouse_moved", + "disable_on_block_break", + "require_weapon", + "ignore_invis", + "require_line_of_sight" + } + ); + } + + @Override + public strictfp boolean settingVisible(String key) { + int mode = this.choice("mode"); + if (key.equals("lock_on_vertical")) { + return mode == 2; + } else if (key.equals("hor_speed") || key.equals("ver_speed")) { + return mode != 2; + } else if (key.equals("silent_move_correct") || key.equals("silent_ignore_manual_aim")) { + return mode == 3; + } else if (key.equals("require_sprint")) { + return mode != 3; + } else if (key.equals("sort_by")) { + return this.choice("mode_target") == 1; + } else { + return key.equals("allow_exceed_fov") ? this.choice("mode_target") == 0 : true; + } + } + + @Override + public strictfp boolean listens(int type) { + return type == 1 || type == 13 || type == 18; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 13) { + if (this.silent) { + event.active = true; + if (this.flag("silent_move_correct")) { + event.remapMovement = true; + } + } + } else if (event.type == 18) { + this.updateTarget(context); + } else if (event.type == 1) { + this.rotate(context, event); + } + } + + private strictfp boolean focused(ClientContext context) { + return context.ready() && context.minecraft().inGameHasFocus && context.minecraft().currentScreen == null; + } + + private strictfp void clearTarget() { + this.target = null; + this.targetActive = false; + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.clearTarget(); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.clearTarget(); + this.silent = false; + this.graceTicks = 0; + } + + public strictfp EntityPlayer currentTarget() { + return this.target; + } + + public strictfp boolean targetActive() { + return this.targetActive; + } + + private strictfp boolean consider( + ClientContext context, EntityPlayer candidate, Vec3 eye, float viewYaw, boolean locked, AimAssistModule.Score best, AimAssistModule.Candidate result + ) { + if (candidate.isDead || candidate.isPlayerSleeping()) { + return false; + } else if (this.flag("ignore_invis") && candidate.isInvisibleToPlayer(context.player())) { + return false; + } else if ((RelationshipService.flags(candidate) & 7) != 0) { + return false; + } else { + Vec3 position = new Vec3(candidate.posX, candidate.posY, candidate.posZ); + float prediction = this.number("predict"); + if (prediction > 0.0F && candidate instanceof EntityOtherPlayerMP) { + position = RotationMath.interpolate(position, AimAssistModule.ServerPosition.read((EntityOtherPlayerMP)candidate), (double)prediction); + } + + AxisAlignedBB box = candidate.getEntityBoundingBox().expand(0.1, 0.1, 0.1); + Vec3 nearest = new Vec3( + RotationMath.clamp(box.minX, box.maxX, eye.xCoord), + RotationMath.clamp(box.minY, box.maxY, eye.yCoord), + RotationMath.clamp(box.minZ, box.maxZ, eye.zCoord) + ); + double distance = RotationMath.distance(eye, nearest); + boolean enabled = !((double)((float)this.range("range").lower) > distance); + if (distance > best.distance) { + return false; + } else { + Vec3 point = aimPoint( + eye, position, nearest, distance, this.number("hor_hitbox_correct"), this.number("ver_hitbox_correct"), this.number("aim_randomization") + ); + float angle = RotationMath.abs(RotationMath.wrap(RotationMath.angles(eye, point)[0] - viewYaw)); + if (angle > best.angle) { + if (!locked) { + return false; + } + + enabled = this.flag("allow_exceed_fov"); + } + + float health = candidate.getHealth(); + if (Float.isNaN(health)) { + health = 20.0F; + } + + if (!(health > best.health) && candidate.hurtTime <= best.hurtTime) { + if (this.flag("require_line_of_sight") && context.world().rayTraceBlocks(eye, point, false, true, true) != null) { + return false; + } else { + if (this.choice("mode_target") != 0) { + switch (this.choice("sort_by")) { + case 0: + best.distance = distance; + break; + case 1: + best.health = health; + break; + case 2: + int hash = RotationMath.tieHash(candidate.getEntityId(), this.tieCounter++); + if (candidate.hurtTime == best.hurtTime && Integer.compareUnsigned(hash, best.tieBreak) < 0) { + return false; + } + + best.hurtTime = candidate.hurtTime; + best.tieBreak = hash; + break; + case 3: + best.angle = angle; + break; + default: + throw new IllegalStateException("target sort"); + } + } else { + best.angle = angle; + } + + result.point = point; + result.enabled = enabled; + if (locked) { + this.targetActive = enabled; + } + + return true; + } + } else { + return false; + } + } + } + } + + private strictfp void updateTarget(ClientContext context) { + RotationService.clearManual(); + if (!this.focused(context)) { + this.clearTarget(); + } else if (this.flag("require_sprint") && this.choice("mode") != 3 && !context.player().isSprinting()) { + this.targetActive = false; + } else { + int keyCode = context.minecraft().gameSettings.keyBindAttack.getKeyCode(); + boolean attack = Mouse.isButtonDown(keyCode == -99 ? 1 : 0); + if (this.flag("require_mouse_pressed")) { + if (!attack) { + this.graceTicks = (this.random.chance(0.5F) ? 1 : 0) + 1; + this.clearTarget(); + return; + } + + if (this.graceTicks != 0 && this.choice("mode") < 2) { + this.graceTicks--; + this.clearTarget(); + return; + } + } + + MovingObjectPosition hit = context.minecraft().objectMouseOver; + if (this.flag("disable_on_block_break") && attack && hit != null && hit.typeOfHit == MovingObjectType.BLOCK) { + this.targetActive = false; + } else if (this.flag("require_weapon") && !this.weapons.isWeapon(context.player())) { + this.clearTarget(); + } else { + Vec3 eye = new Vec3(context.player().posX, context.player().posY + 1.62, context.player().posZ); + float viewYaw = RotationService.storedRotationValid() ? RotationService.storedYaw() : context.player().rotationYaw; + AimAssistModule.Score best = new AimAssistModule.Score((double)((float)this.range("range").upper), (float)this.range("fov").upper); + AimAssistModule.Candidate selected = new AimAssistModule.Candidate(); + if (this.choice("mode_target") == 0 && this.target != null) { + if (this.consider(context, this.target, eye, viewYaw, true, best, selected)) { + this.previousAim = this.currentAim; + this.currentAim = selected.point; + return; + } + + this.clearTarget(); + } + + EntityPlayer chosen = null; + + for (int i = 0; i < context.world().playerEntities.size(); i++) { + EntityPlayer candidate = (EntityPlayer)context.world().playerEntities.get(i); + if (candidate != context.player()) { + AimAssistModule.Candidate result = new AimAssistModule.Candidate(); + if (this.consider(context, candidate, eye, viewYaw, false, best, result)) { + chosen = candidate; + selected = result; + } + } + } + + if (chosen == null) { + this.clearTarget(); + } else { + this.previousAim = this.target == chosen ? this.currentAim : selected.point; + this.currentAim = selected.point; + this.targetActive = selected.enabled; + this.target = chosen; + } + } + } + } + + public static strictfp Vec3 aimPoint(Vec3 localEye, Vec3 predicted, Vec3 nearest, double distance, float horizontal, float vertical, float randomization) { + Vec3 targetEye = new Vec3(predicted.xCoord, predicted.yCoord + 1.62, predicted.zCoord); + double x = targetEye.xCoord; + double z = targetEye.zCoord; + if (horizontal > 0.0F) { + float fraction = distance < 3.5 ? (float)((double)horizontal * (distance / 3.5)) : horizontal; + Vec3 point = RotationMath.interpolate(targetEye, nearest, (double)fraction); + x = point.xCoord; + z = point.zCoord; + } + + double y = targetEye.yCoord + (nearest.yCoord - targetEye.yCoord) * (double)vertical; + double sum = localEye.xCoord + localEye.yCoord; + sum += localEye.zCoord; + sum += x; + sum += y; + sum += z; + float input = (float)(sum * 0.1); + float noiseX = AimNoise.sample(input); + float noiseY = AimNoise.sample(10000.0F + input); + double halfX = (double)noiseX * 0.5; + double halfY = (double)noiseY * 0.5; + float noiseZ = AimNoise.sample(20000.0F + input); + double halfZ = (double)noiseZ * 0.5; + float randomScale = randomization; + if (distance < 3.5) { + randomScale = (float)((double)randomization * (distance / 3.5 * 0.9 + 0.1)); + } + + double scale = (double)randomScale; + return new Vec3(x + scale * halfX, y + scale * halfY, z + scale * halfZ); + } + + private strictfp void rotate(ClientContext context, SemanticEvent event) { + if (this.focused(context)) { + float currentYaw = context.player().rotationYaw + RotationService.pendingYaw(); + float currentPitch = context.player().rotationPitch + RotationService.pendingPitch(); + if (!this.targetActive) { + if (this.silent) { + if (RotationService.storedRotationValid() && RotationService.claim(100)) { + float yaw = RotationMath.wrap(RotationService.storedYaw() - currentYaw); + float pitch = RotationService.storedPitch() - currentPitch; + if (RotationMath.magnitude(yaw, pitch) < 10.0F) { + this.silent = false; + } + + this.applyStep(yaw, pitch, (float)event.elapsedSeconds); + } else { + this.silent = false; + } + } + } else if (RotationService.claim(100)) { + if (!this.silent && this.choice("mode") == 3) { + this.silent = true; + } + + if (!this.silent || RotationService.storedRotationValid()) { + double fraction = (double)event.timerRenderPartialTicks; + Vec3 previous = new Vec3(context.player().prevPosX, context.player().prevPosY, context.player().prevPosZ); + Vec3 current = new Vec3(context.player().posX, context.player().posY, context.player().posZ); + Vec3 eye = RotationMath.interpolate(previous, current, fraction).addVector(0.0, 1.62, 0.0); + float[] desired = RotationMath.angles(eye, RotationMath.interpolate(this.previousAim, this.currentAim, fraction)); + float yaw = RotationMath.wrap(desired[0] - currentYaw); + float pitch = desired[1] - currentPitch; + if (this.choice("mode") == 3 && !this.flag("silent_ignore_manual_aim")) { + float restoreYaw = RotationMath.wrap(RotationService.storedYaw() - currentYaw); + float restorePitch = RotationService.storedPitch() - currentPitch; + float targetYaw = RotationMath.wrap(desired[0] - RotationService.storedYaw()); + float targetPitch = desired[1] - RotationService.storedPitch(); + if (RotationMath.magnitude(restoreYaw, restorePitch) < 10.0F + && RotationMath.magnitude(targetYaw, targetPitch) < RotationMath.magnitude(yaw, pitch)) { + RotationService.add(restoreYaw, restorePitch); + return; + } + } + + this.applyStep(yaw, pitch, (float)event.elapsedSeconds); + } + } + } + } + + private strictfp void applyStep(float yaw, float pitch, float time) { + float[] step = this.aimStep(yaw, pitch, time, RotationRandom.now(), RotationService.manualYaw(), RotationService.manualPitch()); + if (this.flag("require_mouse_moved")) { + RotationService.clearManual(); + } + + RotationService.add(step[0], step[1]); + } + + public strictfp float[] aimStep(float yaw, float pitch, float time, double now, float manualYaw, float manualPitch) { + float deadZone = (float)this.range("fov").lower; + yaw = yaw > 0.0F ? RotationMath.max(yaw - deadZone, 0.0F) : RotationMath.min(yaw + deadZone, 0.0F); + pitch = pitch > 0.0F ? RotationMath.max(pitch - deadZone, 0.0F) : RotationMath.min(deadZone + pitch, 0.0F); + int mode = this.choice("mode"); + if (mode != 2) { + float draw = this.pitchDamping.sample(40.0F, 120.0F, 5.0, now, this.random); + double slope = -1.0 / (double)draw; + float magnitudeScale = RotationMath.max((float)(slope * (double)RotationMath.abs(yaw) + 1.0), 0.0F); + pitch *= magnitudeScale; + } + + if (mode == 2) { + if (!this.flag("lock_on_vertical")) { + pitch = 0.0F; + } + } else { + float hSpeed = this.number("hor_speed"); + float vSpeed = this.number("ver_speed"); + if (mode == 3) { + hSpeed = RotationMath.max(5.0F, hSpeed); + if (5.0F > vSpeed) { + vSpeed = 5.0F; + } + } + + float hHalf = hSpeed * 0.5F; + float hSquared = hHalf * hHalf; + float yawFactor = this.horizontalFactor.sample(0.9F, 1.1F, 1.0, now, this.random) * hSquared; + float vHalf = vSpeed * 0.5F; + float vSquared = vHalf * vHalf; + float pitchFactor = this.verticalFactor.sample(0.9F, 1.1F, 1.0, now, this.random) * vSquared; + float global = this.speedFactor.sample(0.95F, 1.05F, 60.0, now, this.random); + if (mode == 1) { + yawFactor *= 5.0F; + yawFactor *= global; + float yawStep = yawFactor * time; + yaw = RotationMath.clamp(-yawStep, yawStep, yaw); + pitchFactor *= 5.0F; + pitchFactor *= global; + float pitchStep = pitchFactor * time; + pitch = RotationMath.clamp(-pitchStep, pitchStep, pitch); + } else { + float rawYaw = yawFactor * yaw; + float rawPitch = pitchFactor * pitch; + rawYaw *= global; + rawPitch *= global; + rawYaw *= time; + rawPitch *= time; + if (!(RotationMath.abs(rawYaw) > RotationMath.abs(yaw))) { + yaw = rawYaw; + } + + if (!(RotationMath.abs(rawPitch) > RotationMath.abs(pitch))) { + pitch = rawPitch; + } + } + + float bound = (float)((double)RotationMath.abs(yaw) * 0.1); + pitch += this.pitchNoise.sample(-bound, bound, 1.0, now, this.random); + } + + if (this.flag("require_mouse_moved")) { + float yawMagnitude = RotationMath.abs(yaw); + float pitchMagnitude = RotationMath.abs(pitch); + float manualYawMagnitude = RotationMath.abs(manualYaw); + float manualPitchMagnitude = RotationMath.abs(manualPitch); + boolean adjustYaw = manualYawMagnitude < yawMagnitude && yaw != 0.0F; + float ratio = manualYawMagnitude / yawMagnitude; + float scaledYaw = ratio * yaw; + if (manualPitchMagnitude < pitchMagnitude && pitch != 0.0F) { + float pitchRatio = manualPitchMagnitude / pitchMagnitude; + pitch *= pitchRatio; + } + + if (adjustYaw) { + yaw = scaledYaw; + } + } + + return new float[]{yaw, pitch}; + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + private static final strictfp class Candidate { + Vec3 point; + boolean enabled; + + private Candidate() { + } + } + + public static final strictfp class Score { + public double distance; + public float health = Float.MAX_VALUE; + public float angle; + public int hurtTime = Integer.MAX_VALUE; + public int tieBreak; + + public Score(double range, float fov) { + this.distance = range; + this.angle = fov; + } + } + + private static final class ServerPosition { + static final Field X = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPX", "field_71185_c"); + static final Field Y = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPY", "field_71182_d"); + static final Field Z = ReflectionHelper.findField(EntityOtherPlayerMP.class, "otherPlayerMPZ", "field_71183_e"); + + static strictfp Vec3 read(EntityOtherPlayerMP player) { + try { + return new Vec3(X.getDouble(player), Y.getDouble(player), Z.getDouble(player)); + } catch (IllegalAccessException var2) { + throw new IllegalStateException("Cannot read target interpolation position", var2); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoBlockModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoBlockModule.java new file mode 100644 index 0000000..40693a6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoBlockModule.java @@ -0,0 +1,272 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.play.client.C02PacketUseEntity.Action; +import net.minecraft.network.play.client.C02PacketUseEntity; +import org.lwjgl.input.Mouse; + +public final class AutoBlockModule extends CatalogModule { + private boolean blocking; + private boolean manualBlock; + private boolean animationOwned; + private int blockStartTick = -1; + private int lastSelfHurtTime; + private volatile boolean lagging; + private int lagStartTick = -1; + private int tickCounter; + + public AutoBlockModule(ModuleManager modules) { + super("autoblock", "Auto Block", ModuleCategory.COMBAT); + } + + private static int ticks(float value) { + return value <= 0.0F ? 0 : (int)Math.ceil((double)value); + } + + private static boolean holdingSword(ClientContext c) { + return c.player() != null && ActionAccess.canBlock(c.player().getHeldItem()); + } + + private EntityPlayer target() { + EntityPlayer target = GameHooks.target(); + float range = this.number("range"); + return target != null && GameHooks.targetDistanceSquared() <= (double)(range * range) ? target : null; + } + + @Override + public boolean listens(int type) { + return type == 3 || type == 5 || type == 14 || type == 23 || type == 26; + } + + @Override + protected void onEnable(ClientContext c) { + this.tickCounter = 0; + this.resetState(c, false); + } + + @Override + protected void onDisable(ClientContext c) { + this.resetState(c, true); + } + + @Override + public void onWorldUnload(ClientContext c) { + this.resetState(c, false); + } + + public boolean swallowMouseEvent(ClientContext c) { + return this.isEnabled() && Mouse.getEventButton() == 1 && c.ready() && c.minecraft().currentScreen == null && holdingSword(c); + } + + @Override + public void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 3) { + if (this.lagging) { + e.dispatchMode = 1; + } + } else if (e.type == 23) { + if (this.lagging + && this.flag("lag_flush_attack") + && e.packet instanceof C02PacketUseEntity + && ((C02PacketUseEntity)e.packet).getAction() == Action.ATTACK) { + this.releaseLag(); + if (this.flag("lag_reblock") && holdingSword(c)) { + this.startBlocking(c, this.tickCounter); + } + } + } else if (e.type == 14) { + if (!e.active && this.shouldBlockVanillaUse(c)) { + e.cancelled = true; + } + } else { + if (e.type == 26 || e.type == 5 && e.module == this && !e.enabled) { + this.resetState(c, true); + } + } + } + + @Override + public void onRenderTickStart(ClientContext c) { + if (c.ready()) { + if (c.minecraft().currentScreen == null || !this.blocking && !this.lagging) { + if (this.flag("fake_block_animation") && holdingSword(c)) { + boolean show = this.blocking || this.lagging; + if (show && this.flag("fake_block_animation_require_target")) { + show = this.target() != null; + } + + this.setItemInUse(c, show); + } + } else { + this.resetState(c, true); + } + } + } + + @Override + public void onClientTickStart(ClientContext c) { + if (c.ready() && !c.player().isDead && c.minecraft().currentScreen == null) { + int selfHurtTime = c.player().hurtTime; + boolean hurtAgain = selfHurtTime > this.lastSelfHurtTime; + this.lastSelfHurtTime = selfHurtTime; + if (!holdingSword(c)) { + this.resetState(c, false); + } else { + int currentTick = ++this.tickCounter; + boolean rightDown = Mouse.isButtonDown(1); + boolean leftDown = Mouse.isButtonDown(0); + if (!leftDown) { + if (!rightDown) { + this.resetState(c, true); + } else { + if (this.lagging) { + this.releaseLag(); + } + + if (!this.blocking) { + this.startBlocking(c, currentTick); + this.manualBlock = true; + } + } + } else { + if (this.manualBlock) { + this.stopBlocking(c, true); + this.manualBlock = false; + } + + boolean conditionsMet = this.target() != null && (!this.flag("require_right_mouse_pressed") || rightDown); + if (this.lagging) { + int lagTicks = ticks(this.number("lag_duration")); + boolean lagExpired = lagTicks > 0 && this.lagStartTick >= 0 && currentTick - this.lagStartTick >= lagTicks; + if (lagExpired || !conditionsMet) { + this.releaseLag(); + if (lagExpired && this.flag("lag_reblock") && conditionsMet) { + this.startBlocking(c, currentTick); + } + } + } + + if (!conditionsMet) { + this.stopBlocking(c, true); + } else { + if (!this.blocking && !this.lagging && (!this.flag("require_damage") || this.shouldPredictiveBlock(c))) { + this.startBlocking(c, currentTick); + } + + if (this.blocking) { + int holdTicks = ticks(this.number("max_hold_time")); + boolean shouldStop = holdTicks > 0 && this.blockStartTick >= 0 && currentTick - this.blockStartTick >= holdTicks; + if (this.flag("require_damage") && hurtAgain) { + shouldStop = true; + } + + if (shouldStop) { + if (this.shouldStartLag()) { + this.startLag(currentTick); + } + + this.stopBlocking(c, true); + } + } + } + } + } + } else { + this.resetState(c, true); + } + } + + private boolean shouldPredictiveBlock(ClientContext c) { + int trigger = Math.max(1, Math.min(10, Math.round(this.number("max_hurt_time")))); + return c.player().hurtTime == trigger; + } + + private boolean shouldBlockVanillaUse(ClientContext c) { + return this.isEnabled() && this.lagging && c.ready() && holdingSword(c) && c.minecraft().currentScreen == null; + } + + private void startBlocking(ClientContext c, int currentTick) { + if (holdingSword(c)) { + int key = c.minecraft().gameSettings.keyBindUseItem.getKeyCode(); + KeyBinding.setKeyBindState(key, true); + KeyBinding.onTick(key); + this.blocking = true; + this.blockStartTick = currentTick; + } + } + + private void stopBlocking(ClientContext c, boolean force) { + if (this.blocking || force) { + if (c.minecraft() != null && c.minecraft().gameSettings != null) { + KeyBinding.setKeyBindState(c.minecraft().gameSettings.keyBindUseItem.getKeyCode(), false); + } + + this.blocking = false; + this.blockStartTick = -1; + } + } + + private boolean shouldStartLag() { + float chance = this.number("lag_chance"); + return chance <= 0.0F ? false : chance >= 1.0F || RotationRandom.SHARED.chance(chance); + } + + private void startLag(int currentTick) { + if (!this.lagging) { + this.lagging = true; + this.lagStartTick = currentTick; + } + } + + private void releaseLag() { + this.lagging = false; + this.lagStartTick = -1; + } + + public boolean isActive() { + return this.isEnabled() && (this.blocking || this.lagging); + } + + private void setItemInUse(ClientContext c, boolean show) { + if (c.player() != null) { + if (show) { + ActionAccess.useCount(c.player(), 72000); + this.animationOwned = true; + } else if (this.animationOwned) { + if (!c.player().isUsingItem()) { + ActionAccess.useCount(c.player(), 0); + } + + this.animationOwned = false; + } + } + } + + private void resetState(ClientContext c, boolean releaseUseKey) { + this.releaseLag(); + if (c.minecraft() != null && c.minecraft().gameSettings != null) { + this.stopBlocking(c, releaseUseKey); + this.manualBlock = false; + if (this.animationOwned) { + this.setItemInUse(c, false); + } + + if (releaseUseKey && Mouse.isCreated() && Mouse.isButtonDown(1) && c.minecraft().currentScreen == null) { + KeyBinding.setKeyBindState(c.minecraft().gameSettings.keyBindUseItem.getKeyCode(), true); + } + + this.lastSelfHurtTime = 0; + } else { + this.blocking = this.manualBlock = false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoClickerModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoClickerModule.java new file mode 100644 index 0000000..c1e8636 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoClickerModule.java @@ -0,0 +1,431 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.inventory.Slot; + +public final strictfp class AutoClickerModule extends CatalogModule { + private final AutoClickerModule.State state = new AutoClickerModule.State(); + private final WeaponsModule weapons; + private final ModuleManager modules; + + public AutoClickerModule(ModuleManager modules, WeaponsModule weapons) { + super("autoclicker", "Auto Clicker", ModuleCategory.COMBAT); + this.modules = modules; + this.weapons = weapons; + } + + private strictfp AutoClickerModule.Settings settings() { + AutoClickerModule.Settings s = new AutoClickerModule.Settings(); + s.pattern = this.choice("pattern"); + s.cps = this.number("target_cps"); + s.randomize = this.flag("randomize_cps"); + s.exhaust = this.flag("exhaust"); + s.blockBreak = this.flag("allow_block_break"); + s.inventory = this.flag("allow_inventory"); + s.inventoryRandomize = this.flag("inventory_randomize"); + s.weapon = this.flag("require_weapon"); + s.notUsing = this.flag("require_not_using_item"); + return s; + } + + private strictfp AutoClickerModule.Input input(final ClientContext c) { + return new AutoClickerModule.Input() { + @Override + public strictfp boolean ready() { + return c.inputReady(); + } + + @Override + public strictfp boolean hardware(int button) { + return ActionAccess.mouse().physical(button); + } + + @Override + public strictfp boolean menu() { + return c.minecraft().currentScreen != null; + } + + @Override + public strictfp boolean inventoryPrimary() { + return this.hardware(1) && (!AutoClickerModule.this.state.modifier || AutoClickerModule.this.state.secondary); + } + + @Override + public strictfp boolean shift() { + return ActionAccess.mouse().shift(); + } + + private strictfp Slot hovered() { + return c.minecraft().currentScreen instanceof GuiContainer ? ActionAccess.hovered((GuiContainer)c.minecraft().currentScreen) : null; + } + + @Override + public strictfp int slot() { + Slot slot = this.hovered(); + return slot == null ? -1 : slot.slotNumber; + } + + @Override + public strictfp boolean cursorStack() { + return c.player() == null || c.player().inventory.getItemStack() != null; + } + + @Override + public strictfp boolean slotStack() { + Slot slot = this.hovered(); + return slot != null && slot.getHasStack(); + } + + @Override + public strictfp boolean weapon() { + return AutoClickerModule.this.weapons.isWeapon(c.player()); + } + + @Override + public strictfp boolean using() { + return c.player().isUsingItem(); + } + + @Override + public strictfp float yaw() { + return c.player().rotationYaw; + } + + @Override + public strictfp float pitch() { + return c.player().rotationPitch; + } + + @Override + public strictfp boolean target() { + return GameHooks.target() != null; + } + + @Override + public strictfp double targetDistance() { + return GameHooks.targetDistanceSquared(); + } + + @Override + public strictfp void emit(int button, boolean down) { + ActionAccess.mouse().emit(c, button, down); + } + }; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 1 || type == 17 || type == 26; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + AutoClickerModule.Input i = this.input(c); + if (e.type == 26) { + this.state.clear(i); + } else { + if (e.type == 0) { + this.state.secondary = c.minecraft().gameSettings.keyBindAttack.getKeyCode() == -99; + if (c.inputReady()) { + this.state.previousYaw = c.player().rotationYaw; + this.state.previousPitch = c.player().rotationPitch; + Module delay = this.modules.find("nohitdelay"); + if (delay == null || !delay.isEnabled()) { + MinecraftFields.setLeftClickCounter(c.minecraft(), 0); + } + } + } else if (e.type == 17) { + if (c.inputReady()) { + this.state.hitKind = ActionAccess.hitKind(c.minecraft().objectMouseOver); + } + } else { + this.state + .advance(i, this.settings(), MinecraftFields.timer(c.minecraft()).timerSpeed, e.elapsedSeconds, RotationRandom.SHARED, RotationRandom.now()); + } + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.state.clear(this.input(c)); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.state.clear(this.input(c)); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("pattern").isConfigured()) { + return null; + } else { + int index = this.choice("pattern"); + return StatusText.label(this.getName(), index); + } + } + + public interface Input { + boolean ready(); + + boolean hardware(int var1); + + boolean menu(); + + boolean inventoryPrimary(); + + boolean shift(); + + int slot(); + + boolean cursorStack(); + + boolean slotStack(); + + boolean weapon(); + + boolean using(); + + float yaw(); + + float pitch(); + + boolean target(); + + double targetDistance(); + + void emit(int var1, boolean var2); + } + + public static final class Settings { + public int pattern; + public float cps; + public boolean randomize; + public boolean exhaust; + public boolean blockBreak; + public boolean inventory; + public boolean inventoryRandomize; + public boolean weapon; + public boolean notUsing; + } + + public static final class State { + public double remaining; + public double previousInterval; + public int adjustmentCount; + public int hitKind; + public int previousSlot = -1; + public boolean secondary; + public boolean modifier; + public boolean inventoryWasPressed; + public boolean quick; + public boolean lastAdjusted; + public float previousYaw; + public float previousPitch; + private final RotationRandom.Smooth inventoryGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth inventoryDelay = new RotationRandom.Smooth(); + private final RotationRandom.Smooth amplitude = new RotationRandom.Smooth(); + private final RotationRandom.Smooth slow = new RotationRandom.Smooth(); + private final RotationRandom.Smooth medium = new RotationRandom.Smooth(); + private final RotationRandom.Smooth fast = new RotationRandom.Smooth(); + private final RotationRandom.Smooth quickGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth exhaustGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth exhaustCount = new RotationRandom.Smooth(); + private final RotationRandom.Gaussian wave = new RotationRandom.Gaussian(); + private final RotationRandom.Gaussian exhaustWave = new RotationRandom.Gaussian(); + + private static strictfp float f(int a) { + return ActionConstants.f(a); + } + + private static strictfp double d(int a) { + return ActionConstants.d(a); + } + + private static strictfp float sample(RotationRandom.Smooth s, int lower, int period, RotationRandom r, double now) { + return s.sample(f(lower), f(lower + 4), d(period), now, r); + } + + private strictfp void cleanup(double idle) { + this.remaining = idle; + this.previousSlot = -1; + } + + public strictfp void restore(AutoClickerModule.Input i) { + if (this.modifier) { + i.emit(this.secondary ? 0 : 1, i.hardware(this.secondary ? 0 : 1)); + } + + this.modifier = false; + } + + public strictfp void clear(AutoClickerModule.Input i) { + this.restore(i); + this.cleanup(0.0); + this.previousInterval = 0.0; + this.adjustmentCount = this.hitKind = 0; + this.inventoryWasPressed = this.quick = this.lastAdjusted = false; + } + + public strictfp float adjust(float interval, float bias, boolean exhaust, RotationRandom r, double now) { + this.lastAdjusted = false; + int count = this.adjustmentCount; + if (count < 1) { + if (!exhaust || !this.exhaustGate.gate((float)(d(1377240) + (double)bias), (float)((double)bias + d(1377248)), d(1377256), now, r)) { + return interval; + } + + float threshold = r.interval(0.0F, f(1377264)); + float first = sample(this.exhaustCount, 1377268, 1377280, r, now); + count = 3; + if (!(first > threshold)) { + count = (sample(this.exhaustCount, 1377288, 1377280, r, now) > threshold ? 1 : 0) + 1; + } + } + + this.adjustmentCount = count - 1; + this.lastAdjusted = true; + double scaled = (double)this.exhaustWave.sample(r) * d(1377296); + double offset = scaled + d(1377240); + return (float)((double)interval + offset); + } + + private strictfp void menu(AutoClickerModule.Input i, AutoClickerModule.Settings s, int physical, int synthetic, RotationRandom r, double now) { + if (synthetic == 1) { + i.emit(this.secondary ? 0 : 1, (physical & 1) == 0); + this.modifier = false; + } + + if (!i.menu()) { + this.cleanup(d(1377072)); + } else { + boolean primary = i.inventoryPrimary(); + if (primary && this.inventoryWasPressed) { + if (s.inventory && i.shift() && i.slot() != -1 && !i.cursorStack() && i.slot() != this.previousSlot) { + this.previousSlot = i.slot(); + if (!i.slotStack() && this.inventoryGate.gate(f(1377080), f(1377084), d(1377088), now, r)) { + this.idleMenu(s); + } else { + i.emit(1, true); + if (s.inventoryRandomize) { + boolean longer = this.inventoryDelay.gate(f(1377104), f(1377108), d(1377088), now, r); + int range = longer ? 1377120 : 1377112; + this.remaining = (double)r.interval(f(range), f(range + 4)) + this.remaining; + } else { + this.remaining = d(1377096) + this.remaining; + } + } + } else { + this.idleMenu(s); + } + } else { + this.inventoryWasPressed = primary; + this.idleMenu(s); + } + } + } + + private strictfp void idleMenu(AutoClickerModule.Settings s) { + this.remaining = d(s.inventoryRandomize ? 1377128 : 1377096) + this.remaining; + } + + public strictfp void advance(AutoClickerModule.Input i, AutoClickerModule.Settings s, float timerSpeed, double elapsed, RotationRandom r, double now) { + double next = this.remaining - (double)timerSpeed * elapsed; + this.remaining = d(1377064) > next ? d(1377064) : next; + if (0.0 >= this.remaining) { + boolean hardware = i.hardware(this.secondary ? 0 : 1); + int physical = (hardware ^ this.modifier ? 1 : 0) | (this.modifier ? 2 : 0); + int synthetic = this.modifier ? 1 : 0; + + while (i.ready()) { + if (((physical | synthetic) & 1) == 0) { + this.cleanup(d(1377072)); + return; + } + + boolean reject = this.hitKind == 1 && s.blockBreak || s.weapon && !i.weapon() || s.notUsing && (i.using() || (physical & synthetic & 1) != 0); + if (reject) { + if (synthetic != 1) { + this.cleanup(0.0); + return; + } + + i.emit(this.secondary ? 0 : 1, (physical & 1) == 0); + this.modifier = false; + this.cleanup(0.0); + return; + } + + if (!s.notUsing && (physical & synthetic & 1) != 0) { + i.emit(this.secondary ? 0 : 1, false); + this.modifier = false; + this.cleanup(0.0); + return; + } + + if ((physical & 1) != 0) { + i.emit(this.secondary ? 0 : 1, false); + this.remaining = this.previousInterval + this.remaining; + } else { + i.emit(this.secondary ? 0 : 1, true); + float rate = s.cps; + if (s.randomize) { + float amp = sample(this.amplitude, 1377136, 1377144, r, now); + float low = f(1377152); + float high = f(1377156); + float a = this.slow.sample(low, high, d(1377160), now, r); + float b = this.medium.sample(low, high, d(1377144), now, r); + float c = sample(this.fast, 1377168, 1377176, r, now); + rate *= a + f(1377184) + b + c; + rate *= this.wave.sample(r) * amp + f(1377184); + } + + float interval; + if (s.pattern == 1 && this.quick) { + interval = Float.intBitsToFloat(1013276738); + this.quick = false; + } else { + interval = s.pattern == 1 ? (float)(d(1377216) / (double)rate + d(1377224)) : f(1377188) / rate; + float turn = RotationMath.magnitude(i.yaw() - this.previousYaw, i.pitch() - this.previousPitch); + float bias = turn / f(1377192) + 0.0F; + if (!i.target() || i.targetDistance() > d(1377200)) { + bias = (float)((double)bias + d(1377208)); + } + + interval = this.adjust(interval, bias, s.exhaust, r, now); + if (s.pattern == 1 && !this.lastAdjusted) { + boolean gate = this.quickGate.gate(f(1377232), f(1377236), d(1377144), now, r); + this.quick = r.chance(gate ? 1.0F : 0.0F); + } + } + + this.remaining += (double)interval; + this.previousInterval = (double)interval; + } + + physical ^= 1; + synthetic ^= 1; + this.modifier = synthetic != 0; + if (!(0.0 >= this.remaining)) { + return; + } + } + + this.menu(i, s, physical, synthetic, r, now); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoWeaponModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoWeaponModule.java new file mode 100644 index 0000000..5e3285c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/AutoWeaponModule.java @@ -0,0 +1,86 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; + +public final class AutoWeaponModule extends CatalogModule { + private final WeaponsModule weapons; + public final AutoWeaponModule.State state = new AutoWeaponModule.State(); + + public AutoWeaponModule(WeaponsModule weapons) { + super("autoweapon", "Auto Weapon", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public boolean listens(int type) { + return type == 25; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.inputReady() && !context.player().isUsingItem() && (!this.flag("require_mouse_pressed") || AttackInput.pressed(context))) { + MovingObjectPosition hit = context.minecraft().objectMouseOver; + if (hit != null + && hit.typeOfHit == MovingObjectType.ENTITY + && hit.entityHit instanceof EntityOtherPlayerMP + && RelationshipService.hostile(hit.entityHit) + && !this.weapons.isWeapon(context.player())) { + int current = context.player().inventory.currentItem; + int selected = this.weapons.firstAllowedSlot(context.player().inventory); + if (selected == -1 || selected == current) { + this.state.reset(); + } else if (!this.state.waiting(this.number("activation_time"))) { + if (ModuleActionService.claim(this)) { + try { + context.player().inventory.currentItem = selected; + } finally { + ModuleActionService.release(this); + } + } + } + } else { + this.state.reset(); + } + } else { + this.state.reset(); + } + } + + @Override + protected void onDisable(ClientContext context) { + this.state.reset(); + ModuleActionService.release(this); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.state.reset(); + ModuleActionService.release(this); + } + + public static final class State { + public int selectionDelayTicks; + + public boolean waiting(float activationTime) { + if (activationTime > (float)this.selectionDelayTicks) { + this.selectionDelayTicks++; + return true; + } else { + return false; + } + } + + public void reset() { + this.selectionDelayTicks = 0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/BacktrackModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/BacktrackModule.java new file mode 100644 index 0000000..33cb4cb --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/BacktrackModule.java @@ -0,0 +1,254 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.PacketAccess; +import dev.slinky.client.packet.PredictionGeometry; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.render.world.RemoteBoxRenderer; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.play.server.S06PacketUpdateHealth; +import net.minecraft.network.play.server.S08PacketPlayerPosLook; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S14PacketEntity; +import net.minecraft.network.play.server.S18PacketEntityTeleport; +import net.minecraft.network.play.server.S19PacketEntityStatus; +import net.minecraft.network.play.server.S29PacketSoundEffect; +import net.minecraft.util.Vec3; + +public final strictfp class BacktrackModule extends CatalogModule { + private final WeaponsModule weapons; + private boolean active; + private boolean disableOnHit; + private boolean absolute; + private boolean hasYaw; + private boolean render; + private int targetId; + private int selfId; + private int cooldown; + private int delayedSequence; + private int releasedSequence; + private int teleportSequence; + private int interpolation; + private long delay; + private Vec3 offset = zero(); + private Vec3 previous = zero(); + private Vec3 current = zero(); + private Vec3 desired = zero(); + private float delayedYaw; + private float previousYaw; + private float currentYaw; + private float desiredYaw; + + public BacktrackModule(WeaponsModule weapons) { + super("backtrack", "Backtrack", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int t) { + return t == 2 || t == 6 || t == 18; + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 2) { + this.packet(e); + } else if (e.type == 6) { + if (this.render) { + RemoteBoxRenderer.draw( + e, + this.previous, + this.current, + this.previousYaw, + this.currentYaw, + this.flag("indicator_rotate"), + this.flag("indicator_filled"), + this.number("indicator_line_width"), + this.color("indicator_color") + ); + } + } else if (this.cooldown <= 0 || --this.cooldown == 0) { + EntityPlayer target = GameHooks.target(); + float low = (float)this.range("target_dist").lower; + float high = (float)this.range("target_dist").upper; + boolean allowed = c.inputReady() + && (!this.flag("require_mouse_pressed") || AttackInput.pressed(c)) + && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player())) + && c.player().ticksExisted - c.player().getLastAttackerTime() <= 20 + && target != null + && !((float)target.hurtTime > this.number("max_hurt_time")) + && !((double)(low * low) > GameHooks.targetDistanceSquared()) + && !(GameHooks.targetDistanceSquared() > (double)(high * high)); + if (!allowed) { + if (this.active) { + this.cooldown = NumericMath.truncateInt(this.number("cooldown")); + } + + this.active = this.render = false; + } else { + Vec3 self = TimingAccess.position(c.player()); + Vec3 server = TimingAccess.server(target); + int oldId = this.targetId; + this.delay = NumericMath.truncateLong(this.number("delay")); + this.targetId = target.getEntityId(); + this.selfId = c.player().getEntityId(); + this.disableOnHit = this.flag("disable_on_hit"); + if (!this.active) { + if (!(0.01 < RotationMath.distance(self, server) - RotationMath.distance(self, TimingAccess.position(target)))) { + this.render = false; + } else { + this.active = true; + this.offset = zero(); + this.absolute = this.hasYaw = false; + this.previous = this.current = this.desired = TimingAccess.position(target); + this.previousYaw = this.currentYaw = this.desiredYaw = target.rotationYaw; + this.render = this.flag("render_remote_pos"); + } + } else { + Vec3 candidate = this.absolute ? this.offset : this.offset.add(server); + if (!(-0.05 > metric(self, server, candidate)) && oldId == this.targetId) { + this.updatePosition(candidate, this.hasYaw ? this.delayedYaw : target.rotationYaw); + } else { + this.offset = zero(); + this.absolute = this.hasYaw = false; + this.active = this.render = false; + this.cooldown = NumericMath.truncateInt(this.number("cooldown")); + } + } + } + } + } + + public static strictfp double metric(Vec3 self, Vec3 server, Vec3 delayed) { + return RotationMath.distance(self, delayed) - RotationMath.distance(self, server); + } + + private strictfp void packet(SemanticEvent e) { + if (this.active) { + if (e.packet instanceof S19PacketEntityStatus) { + if (PacketAccess.statusId((S19PacketEntityStatus)e.packet) == this.targetId) { + e.dispatchMode = 3; + return; + } + } else if (e.packet instanceof S06PacketUpdateHealth || e.packet instanceof S29PacketSoundEffect) { + e.dispatchMode = 3; + return; + } + + if (e.packet instanceof S12PacketEntityVelocity) { + if (this.disableOnHit && ((S12PacketEntityVelocity)e.packet).getEntityID() == this.selfId) { + this.active = false; + return; + } + } else if (e.packet instanceof S08PacketPlayerPosLook) { + this.active = false; + return; + } + + if (e.packetAgeMillis <= this.delay) { + e.dispatchMode = 1; + if (e.packetSequence > this.delayedSequence) { + this.delayedSequence = e.packetSequence; + this.publish(e, false); + } + } else if (e.dispatchMode == 0 && e.packetSequence > this.releasedSequence) { + this.publish(e, true); + this.releasedSequence = e.packetSequence; + } + } + } + + private strictfp void publish(SemanticEvent e, boolean reconcile) { + if (!reconcile || this.teleportSequence <= e.packetSequence) { + boolean relative = e.packet instanceof S14PacketEntity; + if (relative || e.packet instanceof S18PacketEntityTeleport) { + S14PacketEntity move = relative ? (S14PacketEntity)e.packet : null; + S18PacketEntityTeleport teleport = relative ? null : (S18PacketEntityTeleport)e.packet; + if ((relative ? PacketAccess.relativeId(move) : teleport.getEntityId()) == this.targetId) { + Vec3 value = relative + ? new Vec3((double)move.func_149062_c() * 0.03125, (double)move.func_149061_d() * 0.03125, (double)move.func_149064_e() * 0.03125) + : new Vec3((double)teleport.getX() * 0.03125, (double)teleport.getY() * 0.03125, (double)teleport.getZ() * 0.03125); + if (reconcile) { + this.offset = this.offset.subtract(value); + if (!relative) { + this.absolute = false; + } + } else { + if (relative) { + this.offset = this.offset.add(value); + if (!move.func_149060_h()) { + return; + } + } else { + this.offset = value; + this.absolute = true; + } + + this.delayedYaw = (float)(relative ? move.func_149066_f() : teleport.getYaw()) * 360.0F * 0.00390625F; + this.hasYaw = true; + if (!relative) { + this.teleportSequence = e.packetSequence; + } + } + } + } + } + } + + private strictfp void updatePosition(Vec3 position, float yaw) { + if (!sameBits(this.desired, position) || yaw != this.desiredYaw) { + this.interpolation = 3; + } + + this.desired = position; + this.previous = this.current; + this.previousYaw = this.currentYaw; + this.desiredYaw = yaw; + if (this.interpolation < 1) { + this.current = position; + } else { + double fraction = 1.0 / (double)this.interpolation; + this.current = this.current.add(PredictionGeometry.scale(position.subtract(this.current), fraction)); + yaw = (float)((double)RotationMath.wrap(this.desiredYaw - this.currentYaw) * fraction) + this.currentYaw; + this.interpolation--; + } + + this.currentYaw = yaw; + } + + private static strictfp boolean sameBits(Vec3 a, Vec3 b) { + return Double.doubleToRawLongBits(a.xCoord) == Double.doubleToRawLongBits(b.xCoord) + && Double.doubleToRawLongBits(a.yCoord) == Double.doubleToRawLongBits(b.yCoord) + && Double.doubleToRawLongBits(a.zCoord) == Double.doubleToRawLongBits(b.zCoord); + } + + private static strictfp Vec3 zero() { + return new Vec3(0.0, 0.0, 0.0); + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.clear(); + } + + private strictfp void clear() { + this.active = this.disableOnHit = this.absolute = this.hasYaw = this.render = false; + this.targetId = this.selfId = this.cooldown = this.delayedSequence = this.releasedSequence = this.teleportSequence = this.interpolation = 0; + this.delay = 0L; + this.offset = this.previous = this.current = this.desired = zero(); + this.delayedYaw = this.previousYaw = this.currentYaw = this.desiredYaw = 0.0F; + } + + @Override + public strictfp String statusText() { + return !this.findSetting("delay").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("delay")); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/CriticalsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/CriticalsModule.java new file mode 100644 index 0000000..0285389 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/CriticalsModule.java @@ -0,0 +1,166 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.network.play.client.C03PacketPlayer; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Timer; + +public final strictfp class CriticalsModule extends CatalogModule { + private final WeaponsModule weapons; + public final CriticalsModule.State state = new CriticalsModule.State(); + + public CriticalsModule(WeaponsModule weapons) { + super("criticals", "Criticals", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 1 || type == 3; + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 0) { + boolean eligible = false; + if (c.inputReady()) { + if (this.state.chanceCounter == 0) { + this.state.chanceCounter = 10; + this.state.cachedChance = RotationRandom.SHARED.chance(this.number("chance")); + } + + this.state.chanceCounter--; + eligible = this.state.cachedChance + && (!this.flag("require_mouse_pressed") || AttackInput.pressed(c)) + && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player())) + && c.player().ticksExisted - c.player().getLastAttackerTime() < 11; + } + + if (this.choice("mode") == 0) { + this.state.eligible = eligible; + this.state.limit = NumericMath.truncateInt(this.number("max_delay")) & 65535; + this.state.active = false; + } else { + this.state.eligible = false; + MovingObjectPosition hit = c.minecraft().objectMouseOver; + this.state.active = eligible + && !c.player().onGround + && !(c.player().motionY >= 0.0) + && c.player().hurtTime != 10 + && hit != null + && hit.typeOfHit == MovingObjectType.ENTITY; + } + } else if (e.type == 1) { + Timer timer = MinecraftFields.timer(c.minecraft()); + if (this.state.active) { + timer.timerSpeed = this.number("timer_speed"); + this.state.restore = true; + this.state.accumulated = (double)(1.0F - this.number("timer_speed")) * (e.elapsedSeconds * 20.0) + this.state.accumulated; + if (this.state.accumulated > (double)this.number("boost")) { + this.state.accumulated = (double)this.number("boost"); + } + } else { + if (this.state.accumulated > 1.0) { + int whole = !(this.state.accumulated >= 2.1474836E9F) && !(this.state.accumulated < -2.1474836E9F) && !Double.isNaN(this.state.accumulated) + ? (int)this.state.accumulated + : Integer.MIN_VALUE; + timer.elapsedPartialTicks += (float)whole; + this.state.accumulated -= (double)whole; + } + + if (this.state.restore) { + timer.timerSpeed = 1.0F; + this.state.restore = false; + } + } + } else { + C03PacketPlayer packet = e.packet instanceof C03PacketPlayer ? (C03PacketPlayer)e.packet : null; + this.state.packet(e, packet != null && packet.isMoving(), packet == null ? 0.0 : packet.getPositionY(), packet != null && packet.isOnGround()); + } + } + + @Override + protected strictfp synchronized void onDisable(ClientContext c) { + if (this.state.restore) { + MinecraftFields.timer(c.minecraft()).timerSpeed = 1.0F; + } + + this.state.restore = false; + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.reset(c); + } + + private strictfp void reset(ClientContext c) { + if (this.state.restore) { + MinecraftFields.timer(c.minecraft()).timerSpeed = 1.0F; + } + + this.state.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public static final class State { + public int chanceCounter; + public int limit; + public int lastPacketId; + public int packetCount; + public boolean cachedChance; + public boolean eligible; + public boolean active; + public boolean restore; + public boolean falling; + public double accumulated; + public double previousY; + + public strictfp void packet(SemanticEvent e, boolean moving, double y, boolean ground) { + if (moving && e.packetSequence > this.lastPacketId) { + if (ground || this.previousY > y) { + this.falling = !ground; + } + + if (this.eligible && this.falling) { + this.packetCount = this.packetCount + (this.limit * 52429 >>> 18); + if (this.packetCount > this.limit) { + this.packetCount = this.limit; + } + } else { + this.packetCount = 0; + } + + this.previousY = y; + this.lastPacketId = e.packetSequence; + } + + if (e.packetAgeMillis < (long)this.packetCount) { + e.dispatchMode = 1; + } + } + + public strictfp void clear() { + this.chanceCounter = this.limit = this.lastPacketId = this.packetCount = 0; + this.cachedChance = this.eligible = this.active = this.restore = this.falling = false; + this.accumulated = this.previousY = 0.0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/HitSelectModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/HitSelectModule.java new file mode 100644 index 0000000..9912bf6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/HitSelectModule.java @@ -0,0 +1,354 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.numeric.DoubleNumeric; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.util.BlockPos; + +public final strictfp class HitSelectModule extends CatalogModule { + private final HitSelectModule.State state = new HitSelectModule.State(); + private final WeaponsModule weapons; + + public HitSelectModule(WeaponsModule weapons) { + super("hitselect", "Hit Select", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + private strictfp HitSelectModule.Input input(final ClientContext c) { + return new HitSelectModule.Input() { + @Override + public strictfp boolean ready() { + return c.inputReady(); + } + + @Override + public strictfp int hurt() { + return c.player().hurtTime; + } + + @Override + public strictfp boolean sprint() { + return c.player().isSprinting(); + } + + @Override + public strictfp boolean weapon() { + return HitSelectModule.this.weapons.isWeapon(c.player()); + } + + @Override + public strictfp int hitKind() { + return ActionAccess.hitKind(c.minecraft().objectMouseOver); + } + + @Override + public strictfp boolean hasHit() { + return c.minecraft().objectMouseOver != null; + } + + @Override + public strictfp boolean hitEntity() { + return c.minecraft().objectMouseOver != null && c.minecraft().objectMouseOver.entityHit != null; + } + + @Override + public strictfp boolean ground() { + return c.player().onGround; + } + + @Override + public strictfp double vertical() { + return c.player().motionY; + } + + @Override + public strictfp float fallDistance() { + return c.player().fallDistance; + } + + @Override + public strictfp boolean feetAir() { + return ActionAccess.registeredAir( + c.world(), new BlockPos(DoubleNumeric.floor(c.player().posX), DoubleNumeric.floor(c.player().posY), DoubleNumeric.floor(c.player().posZ)) + ); + } + + @Override + public strictfp boolean using() { + return c.player().isUsingItem(); + } + + @Override + public strictfp void swing() { + GameHooks.baseSwing(c.player()); + } + + @Override + public strictfp boolean target() { + return GameHooks.target() != null; + } + + @Override + public strictfp int targetId() { + return GameHooks.target().getEntityId(); + } + + @Override + public strictfp int targetHurt() { + return GameHooks.target().hurtTime; + } + + @Override + public strictfp int ticks() { + return c.player().ticksExisted; + } + + @Override + public strictfp int attackerTime() { + return c.player().getLastAttackerTime(); + } + }; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 14 || type == 17 || type == 26; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 26) { + this.state.clear(); + } else if (!c.ready()) { + this.state.clear(); + } else { + HitSelectModule.Input i = this.input(c); + if (e.type == 0) { + this.state.tick(i); + } else if (e.type == 17) { + this.state.history(i, this.flag("use_server_time")); + } else if (e.type == 14 + && e.active + && this.state + .filter( + i, + e.reducing, + this.choice("mode"), + this.flag("require_sprint"), + this.flag("require_weapon"), + this.number("cancel_rate_air"), + this.number("pause_dur"), + this.number("wait_for_damage_dur"), + this.number("trades_delay"), + this.flag("use_server_time"), + this.flag("crits_allow_reduce"), + this.flag("require_damage"), + this.number("cancel_rate"), + this.flag("fake_swing"), + RotationRandom.SHARED + )) { + e.cancelled = true; + } + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public interface Input { + boolean ready(); + + int hurt(); + + boolean sprint(); + + boolean weapon(); + + boolean hasHit(); + + int hitKind(); + + boolean hitEntity(); + + boolean ground(); + + double vertical(); + + float fallDistance(); + + boolean feetAir(); + + boolean using(); + + void swing(); + + int targetId(); + + int targetHurt(); + + boolean target(); + + int ticks(); + + int attackerTime(); + } + + public static final class State { + public int unhurt; + public int targetHistory; + public int consecutive; + public int previousTarget; + public boolean ready; + public boolean cancel; + public boolean newHurtWindow; + + public strictfp void tick(HitSelectModule.Input i) { + this.ready = false; + this.unhurt = i.ready() && i.hurt() == 0 ? this.unhurt + 1 : 0; + } + + public strictfp void history(HitSelectModule.Input i, boolean server) { + if (!server) { + int id = i.target() ? i.targetId() : 0; + if (id == this.previousTarget) { + if (Integer.compareUnsigned(++this.targetHistory, 10) < 0) { + return; + } + } else { + this.previousTarget = id; + this.targetHistory = 1001; + } + + if (i.ticks() == i.attackerTime()) { + this.targetHistory = 0; + } + } else { + if (i.target() && i.targetHurt() == 10) { + this.targetHistory = 0; + this.newHurtWindow = true; + } else { + this.targetHistory++; + } + } + } + + private static strictfp int rounded(float value, RotationRandom r) { + long whole = !Double.isNaN((double)value) && !((double)value >= 9.223372E18F) && !((double)value < -9.223372E18F) ? (long)value : Long.MIN_VALUE; + float fraction = value - (float)Integer.toUnsignedLong((int)whole); + return (int)whole + (r.chance(fraction) ? 1 : 0); + } + + public strictfp boolean filter( + HitSelectModule.Input i, + boolean reducing, + int mode, + boolean requireSprint, + boolean requireWeapon, + float airRate, + float pause, + float waitDamage, + float trades, + boolean server, + boolean allowReduce, + boolean requireDamage, + float combatRate, + boolean fakeSwing, + RotationRandom r + ) { + if (!this.ready) { + boolean decision; + if ((!requireSprint || i.sprint()) && (!requireWeapon || i.weapon()) && i.hitKind() != 1) { + if (i.hasHit() && i.hitKind() == 0 && r.chance(airRate)) { + decision = true; + } else { + int threshold = rounded(pause, r); + boolean ground = i.ground(); + boolean rising = (!ground || i.vertical() > 0.0) && reducing; + boolean missing = i.hitKind() != 2 || !i.hitEntity(); + boolean early = false; + decision = false; + if (mode == 0) { + if (rising) { + early = true; + } else { + if (Integer.compareUnsigned(this.targetHistory, 15) < 0) { + this.consecutive = 0; + } else if (!missing && Integer.compareUnsigned(++this.consecutive, rounded(waitDamage, r)) <= 0) { + decision = true; + early = true; + } + + if (!early) { + if (Integer.compareUnsigned(this.unhurt, 9) <= 0) { + threshold += rounded(trades, r); + } + + if (this.newHurtWindow) { + this.newHurtWindow = false; + early = true; + } + } + } + } else if (mode == 1) { + boolean window = Integer.compareUnsigned(this.targetHistory - 9, -7) < 0 || server; + boolean descending = !ground && i.fallDistance() > 0.0F; + if ((!descending || !window) && (!rising || window && !allowReduce) && i.feetAir()) { + if (!ground && !descending && (!requireDamage || i.hurt() != 0)) { + decision = true; + early = true; + } + } else { + early = true; + } + } else { + early = true; + } + + if (!early) { + decision = Integer.compareUnsigned(threshold, this.targetHistory + 1) > 0 && r.chance(combatRate); + } + } + } else { + decision = false; + } + + this.cancel = decision; + this.ready = true; + } + + if (this.cancel && fakeSwing && !i.using()) { + i.swing(); + } + + return this.cancel; + } + + public strictfp void clear() { + this.unhurt = this.targetHistory = this.consecutive = this.previousTarget = 0; + this.ready = this.cancel = this.newHurtWindow = false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/HitboxesModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/HitboxesModule.java new file mode 100644 index 0000000..24c9565 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/HitboxesModule.java @@ -0,0 +1,29 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; + +public final class HitboxesModule extends CatalogModule { + public HitboxesModule() { + super("hitboxes", "Hitboxes", ModuleCategory.COMBAT); + } + + @Override + public boolean listens(int type) { + return type == 8; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + event.enabled = true; + event.expand = (double)this.number("expand"); + } + + @Override + public String statusText() { + return !this.findSetting("expand").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("expand")); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDelayModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDelayModule.java new file mode 100644 index 0000000..29eba45 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDelayModule.java @@ -0,0 +1,117 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.PacketKinds; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.network.play.server.S12PacketEntityVelocity; + +public final strictfp class KnockbackDelayModule extends CatalogModule { + private final WeaponsModule weapons; + private final RotationRandom.Smooth chance = new RotationRandom.Smooth(); + public final KnockbackDelayModule.State state = new KnockbackDelayModule.State(); + + public KnockbackDelayModule(WeaponsModule weapons) { + super("knockbackdelay", "Knockback Delay", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 2 || type == 18; + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 2) { + this.state + .packet( + e, + e.packet instanceof S12PacketEntityVelocity && ((S12PacketEntityVelocity)e.packet).getEntityID() == this.state.entityId, + PacketKinds.realtimeDamage(e.packet) + ); + } else if (c.player() != null) { + this.state.entityId = c.player().getEntityId(); + this.state.ground = this.flag("require_air") && c.player().onGround; + boolean allowed = GameHooks.target() != null + && !(GameHooks.targetDistanceSquared() > (double)(this.number("range") * this.number("range"))) + && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player())) + && (!this.flag("require_mouse") || AttackInput.pressed(c)) + && (!this.flag("require_target") || TimingAccess.facingPlayer(c)); + if (allowed) { + double probability = (double)this.number("chance"); + allowed = probability > 0.999 + || this.chance.gate((float)(-0.025 + probability), (float)(probability + 0.025), 60.0, RotationRandom.now(), RotationRandom.SHARED); + } + + this.state.allowed = allowed; + this.state.delay = NumericMath.truncateInt(this.number("max_delay")) & 65535; + } + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + return !this.findSetting("max_delay").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("max_delay")); + } + + public static final class State { + public int entityId; + public int delay; + public int savedSequence; + public boolean ground; + public boolean allowed; + public boolean active; + + public strictfp void packet(SemanticEvent e, boolean matches, boolean immediate) { + if (e.dispatchMode == 0) { + if (this.ground) { + this.active = e.packetAgeMillis == 0L && this.allowed; + } else if (this.allowed && matches) { + this.active = true; + } + + if (matches && this.active) { + if (this.savedSequence != 0 && this.savedSequence != e.packetSequence) { + this.reset(); + return; + } + + if (this.savedSequence == 0) { + this.savedSequence = e.packetSequence; + } + } else if (!this.active) { + return; + } + + if (e.packetAgeMillis > (long)this.delay) { + this.reset(); + } else { + e.dispatchMode = immediate ? 3 : 1; + } + } + } + + private strictfp void reset() { + this.active = this.allowed = false; + this.savedSequence = 0; + } + + public strictfp void clear() { + this.reset(); + this.entityId = this.delay = 0; + this.ground = false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDisplaceModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDisplaceModule.java new file mode 100644 index 0000000..5a7148d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/KnockbackDisplaceModule.java @@ -0,0 +1,175 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; + +public final strictfp class KnockbackDisplaceModule extends CatalogModule { + private final WeaponsModule weapons; + private final ModuleManager modules; + private boolean packetPending; + private boolean active; + private boolean wasActive; + private boolean inputSeen; + private int inputTicks; + private int activationTicks; + private int movementDirection; + private float retainedYaw; + private float retainedPitch; + + public KnockbackDisplaceModule(WeaponsModule weapons, ModuleManager modules) { + super("knockbackdisplace", "Knockback Displace", ModuleCategory.COMBAT); + this.weapons = weapons; + this.modules = modules; + } + + @Override + public strictfp boolean listens(int t) { + return t == 3 || t == 13 || t == 14 || t == 15 || t == 18; + } + + public static strictfp int direction(int mode, int movement, boolean random) { + switch (mode) { + case 0: + return -1; + case 1: + return 1; + case 2: + return (random ? 1 : 0) - 1 | 1; + case 3: + return movement; + case 4: + return -movement; + default: + throw new IllegalArgumentException("direction"); + } + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 3) { + if (this.packetPending) { + e.dispatchMode = 1; + } + } else if (e.type == 13) { + if (this.active || this.wasActive) { + e.remapMovement = false; + } + } else if (e.type == 15) { + if (e.active && Integer.compareUnsigned(this.inputTicks, 10) >= 0 && this.inputSeen) { + this.inputTicks = 0; + } + } else if (e.type == 18) { + this.update(c); + } else if (this.active) { + e.cancelled = true; + } else if (e.active && c.ready()) { + MovingObjectPosition hit = c.minecraft().objectMouseOver; + if (hit != null + && hit.typeOfHit == MovingObjectType.ENTITY + && hit.entityHit instanceof EntityOtherPlayerMP + && RelationshipService.hostile(hit.entityHit)) { + this.inputSeen = true; + if (!this.wasActive + && Integer.compareUnsigned(this.inputTicks, 9) >= 0 + && !(this.number("cooldown") > (float)Integer.toUnsignedLong(this.activationTicks))) { + Module timer = this.modules.find("timerrange"); + if (!(timer instanceof TimerRangeModule) || !((TimerRangeModule)timer).frozenOrAdvancing()) { + if ((!this.flag("require_no_kb") || !e.reducing) && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player()))) { + boolean enchant = (this.weapons.classificationFlags(c.player()) & 2) != 0; + if (enchant || !this.flag("require_kb_enchant") && c.player().isSprinting()) { + this.retainedYaw = c.player().rotationYaw; + this.retainedPitch = c.player().rotationPitch; + float targetYaw = (float)TimingAccess.serverYaw(hit.entityHit); + if (!this.flag("require_facing_away") || 100.0F > RotationMath.abs(RotationMath.wrap(targetYaw - this.retainedYaw))) { + int mode = this.choice("direction"); + int sign = direction(mode, this.movementDirection, mode == 2 && RotationRandom.SHARED.chance(0.5F)); + if (sign != 0 && RotationService.claim(200)) { + RotationService.retain(c, false, this.retainedYaw, this.retainedPitch); + this.active = true; + boolean positive = RotationRandom.SHARED.chance(0.5F); + float yaw = (this.number("angle") - RotationRandom.SHARED.interval(0.0F, 10.0F)) * (float)sign; + float pitch = RotationRandom.SHARED.interval(10.0F, 20.0F); + if (!positive) { + pitch = Float.intBitsToFloat(Float.floatToRawIntBits(pitch) ^ Integer.MIN_VALUE); + } + + RotationService.add(yaw, pitch); + RotationService.applyPending(c); + if (this.flag("hide_rotation")) { + this.packetPending = true; + } + + e.cancelled = true; + this.activationTicks = 0; + } + } + } + } + } + } + } + } + } + + private strictfp void update(ClientContext c) { + this.inputTicks++; + this.activationTicks++; + this.wasActive = this.active; + this.inputSeen = false; + if (!c.inputReady()) { + this.active = false; + } else { + float movement = c.player().moveStrafing; + int sign = (movement > 0.0F ? 1 : 0) - (movement < 0.0F ? 1 : 0); + if (!this.flag("use_last_strafe") || sign != 0) { + this.movementDirection = sign; + } + + if (this.active) { + if (RotationService.claim(200)) { + float yaw = this.retainedYaw - (c.player().rotationYaw + RotationService.pendingYaw()); + float pitch = this.retainedPitch - (c.player().rotationPitch + RotationService.pendingPitch()); + RotationService.add(yaw, pitch); + RotationService.applyPending(c); + MinecraftFields.setLeftClickCounter(c.minecraft(), 0); + KeyBinding.onTick(c.minecraft().gameSettings.keyBindAttack.getKeyCode()); + } + + this.active = false; + } + } + + this.packetPending = this.wasActive && this.flag("hide_rotation"); + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.clear(); + } + + private strictfp void clear() { + this.packetPending = this.active = this.wasActive = this.inputSeen = false; + this.inputTicks = this.activationTicks = this.movementDirection = 0; + this.retainedYaw = this.retainedPitch = 0.0F; + } + + @Override + public strictfp String statusText() { + return !this.findSetting("angle").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("angle")); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/LagRangeModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/LagRangeModule.java new file mode 100644 index 0000000..baf18f2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/LagRangeModule.java @@ -0,0 +1,174 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.render.world.RemoteBoxRenderer; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.C02PacketUseEntity; +import net.minecraft.network.play.client.C03PacketPlayer; +import net.minecraft.network.play.client.C0BPacketEntityAction; +import net.minecraft.util.Vec3; + +public final strictfp class LagRangeModule extends CatalogModule { + private final WeaponsModule weapons; + private final RotationRandom.Smooth radius = new RotationRandom.Smooth(); + private boolean input; + private boolean wasSprinting; + private boolean active; + private boolean approaching; + private boolean flushAttack; + private boolean flushSprint; + private boolean flushMovement; + private boolean render; + private int potionCooldown; + private int lastSequence; + private long delay; + private Vec3 targetPosition = zero(); + private Vec3 sent = zero(); + private Vec3 previous = zero(); + private Vec3 current = zero(); + + public LagRangeModule(WeaponsModule weapons) { + super("lagrange", "Lag Range", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int t) { + return t == 3 || t == 6 || t == 15 || t == 18; + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 3) { + this.packet(e); + } else if (e.type == 6) { + if (this.render) { + RemoteBoxRenderer.draw( + e, + this.previous, + this.current, + 0.0F, + 0.0F, + false, + this.flag("indicator_filled"), + this.number("indicator_line_width"), + this.color("indicator_color") + ); + } + } else if (e.type == 15) { + if (e.active && c.player() != null) { + this.input = c.player().ticksExisted == c.player().getLastAttackerTime(); + } + } else { + boolean clicked = this.input; + this.input = false; + if (c.inputReady() && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player()))) { + if (this.flag("flush_splash_potion")) { + ItemStack stack = c.player().getHeldItem(); + if (stack != null && Item.getIdFromItem(stack.getItem()) == 373 && (stack.getItemDamage() & 16384) != 0) { + this.potionCooldown = 15; + this.reject(); + return; + } + + if (this.potionCooldown > 0) { + this.potionCooldown--; + this.reject(); + return; + } + } + + boolean sprint = c.player().isSprinting(); + boolean stopped = this.wasSprinting && this.flag("flush_sprint_reset") && !sprint; + this.wasSprinting = sprint; + EntityPlayer target = GameHooks.target(); + if (target == null) { + this.reject(); + } else { + double distance = (double)this.radius.sample(10.0F, 15.0F, 10.0, RotationRandom.now(), RotationRandom.SHARED); + if (GameHooks.targetDistanceSquared() > distance * distance) { + this.reject(); + } else { + this.delay = NumericMath.truncateLong(this.number("delay")); + this.flushAttack = clicked && target.hurtTime < 5; + this.flushSprint = stopped; + this.active = true; + this.targetPosition = TimingAccess.server(target); + this.previous = this.render ? this.current : this.sent; + this.current = this.sent; + this.render = this.flag("render_remote_pos") && c.minecraft().gameSettings.thirdPersonView != 0 && this.approaching; + } + } + } else { + this.reject(); + } + } + } + + private strictfp void packet(SemanticEvent e) { + C03PacketPlayer movement = e.packet instanceof C03PacketPlayer ? (C03PacketPlayer)e.packet : null; + if (e.packetSequence > this.lastSequence) { + if (this.active && movement != null && movement.isMoving()) { + Vec3 point = new Vec3(movement.getPositionX(), movement.getPositionY(), movement.getPositionZ()); + this.approaching = TimingAccess.squared(this.targetPosition, this.sent) > TimingAccess.squared(this.targetPosition, point); + } + + this.lastSequence = e.packetSequence; + } + + if (this.active && this.approaching && !this.flushAttack && !this.flushMovement && !this.flushSprint && e.packetAgeMillis < this.delay) { + e.dispatchMode = 1; + } else if (e.dispatchMode == 0) { + if (movement != null) { + this.flushMovement = false; + if (movement.isMoving()) { + this.sent = new Vec3(movement.getPositionX(), movement.getPositionY(), movement.getPositionZ()); + } + } else if (e.packet instanceof C02PacketUseEntity) { + if (this.flushAttack) { + this.flushAttack = false; + this.flushMovement = true; + } + } else if (e.packet instanceof C0BPacketEntityAction && this.flushSprint && ((C0BPacketEntityAction)e.packet).getAction().ordinal() == 4) { + this.flushSprint = false; + this.flushMovement = true; + } + } + } + + private strictfp void reject() { + this.flushMovement = this.flushAttack = this.flushSprint = this.active = this.render = false; + } + + private static strictfp Vec3 zero() { + return new Vec3(0.0, 0.0, 0.0); + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.clear(); + } + + private strictfp void clear() { + this.reject(); + this.input = this.wasSprinting = this.approaching = false; + this.potionCooldown = this.lastSequence = 0; + this.delay = 0L; + this.targetPosition = this.sent = this.previous = this.current = zero(); + } + + @Override + public strictfp String statusText() { + return !this.findSetting("delay").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("delay")); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/PiercingModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/PiercingModule.java new file mode 100644 index 0000000..2d03d09 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/PiercingModule.java @@ -0,0 +1,100 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.Entity; + +public final class PiercingModule extends CatalogModule { + private final WeaponsModule weapons; + + public PiercingModule(WeaponsModule weapons) { + super("piercing", "Piercing", ModuleCategory.COMBAT); + this.weapons = weapons; + this.reorderSettings(new String[]{"sort_by", "non_players", "friendlies", "bots", "enemies", "blocks", "require_weapon", "require_inside_bb"}); + } + + @Override + public boolean listens(int type) { + return type == 8; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + event.queryOverride = true; + } + + public boolean pierceBlocks(ClientContext context) { + return this.isEnabled() && this.flag("blocks") && (!this.flag("require_weapon") || this.weapons.isWeapon(context.player())); + } + + public int rank(ClientContext context, Entity first, Entity second, boolean inside) { + if (this.isEnabled() && (inside || !this.flag("require_inside_bb"))) { + if (this.flag("require_weapon") && !this.weapons.isWeapon(context.player())) { + return 2; + } else if (!(second instanceof EntityOtherPlayerMP)) { + return this.flag("non_players") ? 1 : 2; + } else { + int flags = RelationshipService.flags(second); + if ((!this.flag("friendlies") || (flags & 5) == 0) && (!this.flag("bots") || (flags & 2) == 0)) { + if (!(first instanceof EntityOtherPlayerMP)) { + return 0; + } else if (!this.flag("enemies")) { + return 2; + } else { + EntityOtherPlayerMP a = (EntityOtherPlayerMP)first; + EntityOtherPlayerMP b = (EntityOtherPlayerMP)second; + return compare( + this.choice("sort_by"), + health(a.getHealth()), + health(b.getHealth()), + a.hurtTime, + b.hurtTime, + a.ticksExisted + a.getLastAttackerTime(), + b.ticksExisted + b.getLastAttackerTime() + ); + } + } else { + return 1; + } + } + } else { + return 2; + } + } + + private static float health(float value) { + return Float.isNaN(value) ? 20.0F : value; + } + + public static int compare(int mode, float firstHealth, float secondHealth, int firstHurt, int secondHurt, int firstCounter, int secondCounter) { + if (mode == 1) { + if (secondHealth > firstHealth) { + return 1; + } + + if (firstHealth > secondHealth) { + return 0; + } + } else if (mode == 0) { + if (secondHurt > firstHurt) { + return 1; + } + + if (secondHurt < firstHurt) { + return 0; + } + } + + return mix(secondCounter) <= mix(firstCounter) ? 1 : 0; + } + + public static int mix(int counter) { + counter = (counter ^ counter >>> 16) * 73244475; + counter = (counter ^ counter >>> 16) * 73244475; + return counter ^ counter >>> 16; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/ReachModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/ReachModule.java new file mode 100644 index 0000000..893a816 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/ReachModule.java @@ -0,0 +1,82 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; + +public final class ReachModule extends CatalogModule { + private final ReachModule.State state = new ReachModule.State(); + + public ReachModule() { + super("reach", "Reach", ModuleCategory.COMBAT); + } + + @Override + public boolean listens(int type) { + return type == 8; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready() + && this.state + .update(this.flag("require_sprint"), context.player().isSprinting(), context.player().getLastAttackerTime(), this.number("activate_time"))) { + event.enabled = true; + event.distance = (double)this.number("distance"); + } + } + + private void reset() { + this.state.countdown = 0; + this.state.previousAttackerTime = 0; + } + + @Override + public void onWorldUnload(ClientContext context) { + this.reset(); + } + + @Override + protected void onDisable(ClientContext context) { + this.reset(); + } + + @Override + public String statusText() { + return !this.findSetting("distance").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("distance")); + } + + public static final class State { + public int countdown; + public int previousAttackerTime; + + public boolean update(boolean requireSprint, boolean sprinting, int attackerTime, float activation) { + int count = this.countdown; + if (count > 0) { + this.countdown = --count; + } + + if (requireSprint) { + if (!sprinting) { + return false; + } + + count = this.countdown; + } + + if (count == 0) { + if (attackerTime == this.previousAttackerTime) { + count = this.countdown; + } else { + this.previousAttackerTime = attackerTime; + this.countdown = 9; + count = 9; + } + } + + return activation > (float)count; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/SprintResetModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/SprintResetModule.java new file mode 100644 index 0000000..4f52bd0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/SprintResetModule.java @@ -0,0 +1,197 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; + +public final strictfp class SprintResetModule extends CatalogModule { + private final SprintResetModule.State state = new SprintResetModule.State(); + private final WeaponsModule weapons; + private KeyBinding heldKey; + + public SprintResetModule(WeaponsModule weapons) { + super("sprintreset", "Sprint Reset", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 17; + } + + private strictfp SprintResetModule.Action action(final ClientContext context) { + return new SprintResetModule.Action() { + @Override + public strictfp void apply(boolean active) { + int mode = SprintResetModule.this.choice("mode"); + GameSettings keys = context.minecraft().gameSettings; + KeyBinding key = mode == 2 ? keys.keyBindSprint : (mode == 1 ? keys.keyBindSneak : keys.keyBindForward); + if (SprintResetModule.this.heldKey != null && SprintResetModule.this.heldKey != key) { + KeyState.restore(SprintResetModule.this.heldKey); + SprintResetModule.this.heldKey = null; + } + + if (mode == 2 && context.player() != null) { + context.player().setSprinting(!active); + } + + if (active) { + KeyState.set(key, mode == 1); + SprintResetModule.this.heldKey = key; + } else { + KeyState.restore(key); + SprintResetModule.this.heldKey = null; + } + } + }; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 17) { + boolean ready = context.ready() && context.minecraft().inGameHasFocus && context.minecraft().currentScreen == null; + boolean weaponAllowed = !this.flag("require_weapon") + || ready && this.weapons.isAllowed(context.player().getHeldItem(), context.player().inventory.currentItem); + this.state + .update( + ready, + RotationRandom.now(), + ready && context.player().ticksExisted == context.player().getLastAttackerTime(), + ready ? context.player().hurtTime : 0, + this.number("delay"), + this.number("duration"), + this.flag("randomize"), + this.flag("wait_for_damage"), + weaponAllowed, + RotationRandom.SHARED, + this.action(context) + ); + } + } + + private strictfp void reset(ClientContext context) { + this.state.reset(this.action(context)); + if (this.heldKey != null) { + KeyState.restore(this.heldKey); + this.heldKey = null; + } + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.reset(context); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.reset(context); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public interface Action { + void apply(boolean var1); + } + + public static final class State { + public int phase; + public int sampleCount; + public float timer; + public double lastSampleTime; + public boolean haveState; + private final RotationRandom.Smooth delayRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth durationRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth gateRandom = new RotationRandom.Smooth(); + + public strictfp void reset(SprintResetModule.Action action) { + if (this.phase == 2) { + action.apply(false); + } + + this.phase = 0; + this.haveState = false; + this.timer = 0.0F; + } + + public strictfp void update( + boolean ready, + double now, + boolean countersEqual, + int damage, + float delay, + float duration, + boolean randomize, + boolean waitDamage, + boolean weaponAllowed, + RotationRandom random, + SprintResetModule.Action action + ) { + if (!ready) { + this.reset(action); + } else { + if (now - this.lastSampleTime >= 0.5 && countersEqual) { + this.lastSampleTime = now; + this.haveState = true; + } + + this.sampleCount++; + if (damage == 10) { + this.sampleCount = 0; + } + + if (this.timer > 0.0F) { + this.timer += -1.0F; + if (this.timer > 0.0F) { + if (this.phase == 2) { + action.apply(true); + } + + return; + } + } + + if (this.phase == 2) { + action.apply(false); + this.phase = 0; + } else if (this.phase == 1) { + action.apply(true); + this.phase = 2; + this.haveState = false; + if (randomize) { + float sample = this.durationRandom.sample(0.0F, 1.0F, 30.0, now, random); + duration = RotationMath.max(0.0F, duration - sample); + if (this.gateRandom.gate(0.05F, 0.1F, 30.0, now, random)) { + duration += random.interval(1.0F, 2.0F); + } + } + + this.timer += duration; + } else { + if (randomize) { + delay += this.delayRandom.sample(0.0F, 2.0F, 5.0, now, random); + } + + if (this.haveState && (!waitDamage || this.sampleCount == 0) && weaponAllowed) { + this.timer += delay; + this.phase = 1; + } + } + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/TimerRangeModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/TimerRangeModule.java new file mode 100644 index 0000000..50809ac --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/TimerRangeModule.java @@ -0,0 +1,262 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.PredictionGeometry; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Timer; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public final strictfp class TimerRangeModule extends CatalogModule { + private final WeaponsModule weapons; + private int remaining; + private boolean frozen; + private boolean eligible; + private boolean packetHold; + private boolean useOwned; + private float forward; + private float lateral; + private double freezeRemaining; + private double cooldown; + + public TimerRangeModule(WeaponsModule weapons) { + super("timerrange", "Timer Range", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int t) { + return t == 0 || t == 1 || t == 3; + } + + public strictfp synchronized boolean frozenOrAdvancing() { + return this.isEnabled() && (this.remaining > 0 || this.frozen); + } + + private strictfp boolean sword(ClientContext c) { + ItemStack stack = c.player() == null ? null : c.player().getHeldItem(); + if (stack == null) { + return false; + } else { + int index = Item.getIdFromItem(stack.getItem()) - 267; + return Integer.compareUnsigned(index, 16) <= 0 && (66083 >>> index & 1) != 0; + } + } + + private strictfp void beginFreeze(ClientContext c) { + MinecraftFields.timer(c.minecraft()).timerSpeed = 0.0F; + this.frozen = true; + if (this.choice("mode") == 1) { + this.packetHold = true; + } else { + if (this.flag("block_while_frozen") && this.sword(c)) { + KeyBinding key = c.minecraft().gameSettings.keyBindUseItem; + KeyState.set(key, true); + KeyBinding.onTick(key.getKeyCode()); + this.useOwned = true; + } + } + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 3) { + if (this.packetHold) { + e.dispatchMode = 1; + } + } else if (e.type == 0) { + this.tick(c); + } else { + Timer timer = MinecraftFields.timer(c.minecraft()); + if (this.frozen) { + this.freezeRemaining = this.freezeRemaining - e.elapsedSeconds; + if (this.freezeRemaining > 0.0) { + timer.timerSpeed = 0.0F; + return; + } + + timer.timerSpeed = 1.0F; + this.frozen = this.packetHold = false; + if (this.choice("mode") != 1 && this.flag("block_while_frozen") && this.sword(c)) { + KeyState.set(c.minecraft().gameSettings.keyBindUseItem, false); + this.useOwned = false; + } + + if (this.choice("mode") == 1) { + timer.elapsedPartialTicks = (float)this.remaining; + } + } + + if (this.cooldown > 0.0) { + this.cooldown = this.cooldown - e.elapsedSeconds; + } else { + EntityPlayer target = GameHooks.target(); + if (this.eligible && c.inputReady() && target != null) { + Vec3 velocity = new Vec3(c.player().motionX, c.player().motionY, c.player().motionZ); + Vec3 self = TimingAccess.position(c.player()).addVector(0.0, 1.62, 0.0); + Vec3 position = TimingAccess.position(target); + Vec3 desired = TimingAccess.server(target); + int targetTicks = TimingAccess.interpolationTicks(target); + int mode = this.choice("mode"); + float yaw = (float)((float) -Math.PI - (double)c.player().rotationYaw * (Math.PI / 180.0)); + float pitch = Float.intBitsToFloat(Float.floatToRawIntBits(c.player().rotationPitch) + Integer.MIN_VALUE); + float cosine = RotationMath.cosine(yaw); + float sine = RotationMath.sine(yaw); + pitch = (float)((double)pitch * (Math.PI / 180.0)); + float pitchCos = Float.intBitsToFloat(Float.floatToRawIntBits(RotationMath.cosine(pitch)) ^ Integer.MIN_VALUE); + Vec3 direction = new Vec3((double)(sine * pitchCos), (double)RotationMath.sine(pitch), (double)(cosine * pitchCos)); + int steps = NumericMath.truncateInt(this.number(mode == 0 ? "duration" : "duration_legit")); + + for (int step = 1; step <= steps; step++) { + double[] box = new double[]{ + position.xCoord - 0.4, position.yCoord - 0.1, position.zCoord - 0.4, position.xCoord + 0.4, position.yCoord + 1.9, position.zCoord + 0.4 + }; + if (PredictionGeometry.ray(box, self, PredictionGeometry.scale(direction, 3.0))) { + double distance = TimingAccess.squared(self, PredictionGeometry.clamp(box, self)); + if (distance > 0.0) { + float radius = this.number("min_dist"); + if ((double)(radius * radius) > distance) { + return; + } + + float count = (float)step; + if (mode == 1) { + this.beginFreeze(c); + } else { + timer.elapsedPartialTicks = count; + } + + this.remaining = step; + this.freezeRemaining = (double)(count - e.timerRenderPartialTicks) * 0.05; + this.cooldown = (double)this.number("cooldown"); + return; + } + } + + Vec3 motion = PredictionGeometry.movement(c.player().rotationYaw, this.forward, this.lateral, c.player().getAIMoveSpeed()); + velocity = velocity.add(motion); + self = self.add(velocity); + velocity = PredictionGeometry.scale(velocity, 0.546); + if (mode == 1) { + double length = RotationMath.hypot(velocity.xCoord, velocity.zCoord); + Vec3 difference = self.subtract(desired); + double scale = length / RotationMath.hypot(difference.xCoord, difference.zCoord); + Vec3 change = PredictionGeometry.scale(difference, scale); + desired = desired.addVector(change.xCoord, 0.0, change.zCoord); + } + + if (targetTicks > 0) { + position = position.add(PredictionGeometry.scale(desired.subtract(position), 1.0 / (double)targetTicks)); + targetTicks--; + } + } + } + } + } + } + + private strictfp void tick(ClientContext c) { + GameSettings keys = c.minecraft().gameSettings; + EntityPlayer target = GameHooks.target(); + if (this.remaining > 0) { + if ((--this.remaining | this.choice("mode")) == 0) { + this.beginFreeze(c); + } + + if (c.inputReady() && target != null) { + MovingObjectPosition hit = c.minecraft().objectMouseOver; + if (hit != null && hit.typeOfHit == MovingObjectType.ENTITY) { + MinecraftFields.setLeftClickCounter(c.minecraft(), 0); + KeyBinding.onTick(keys.keyBindAttack.getKeyCode()); + } + } + } else { + this.eligible = false; + if (c.inputReady() + && target != null + && !(3.0 > GameHooks.targetDistanceSquared()) + && c.player().onGround + && target.hurtTime <= 1 + && (!this.flag("require_mouse_pressed") || AttackInput.pressed(c)) + && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player())) + && (!this.flag("require_not_using_item") || !c.player().isUsingItem()) + && !(c.player().motionY > 0.0) + && !keys.keyBindJump.isKeyDown()) { + Vec3 self = TimingAccess.position(c.player()).addVector(0.0, 1.62, 0.0); + Vec3 remote = TimingAccess.server(target).addVector(0.0, 1.62, 0.0); + if (clearWorldRay(c.world(), self, remote)) { + this.forward = keys.keyBindForward.isKeyDown() ? 1.0F : 0.0F; + if (keys.keyBindBack.isKeyDown()) { + this.forward += -1.0F; + } + + this.lateral = keys.keyBindLeft.isKeyDown() ? 1.0F : 0.0F; + if (keys.keyBindRight.isKeyDown()) { + this.lateral += -1.0F; + } + + this.eligible = this.forward > 0.0F; + } + } + } + } + + public static strictfp boolean clearWorldRay(World world, Vec3 from, Vec3 to) { + return world.rayTraceBlocks(from, to, false, true, true) == null; + } + + @Override + protected strictfp synchronized void onDisable(ClientContext c) { + MinecraftFields.timer(c.minecraft()).timerSpeed = 1.0F; + this.frozen = this.packetHold = false; + this.remaining = 0; + if (this.useOwned) { + KeyState.restore(c.minecraft().gameSettings.keyBindUseItem); + this.useOwned = false; + } + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.reset(c); + } + + private strictfp void reset(ClientContext c) { + MinecraftFields.timer(c.minecraft()).timerSpeed = 1.0F; + if (this.useOwned) { + KeyState.restore(c.minecraft().gameSettings.keyBindUseItem); + } + + this.frozen = this.packetHold = this.eligible = this.useOwned = false; + this.remaining = 0; + this.forward = this.lateral = 0.0F; + this.freezeRemaining = this.cooldown = 0.0; + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/VelocityModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/VelocityModule.java new file mode 100644 index 0000000..88b8834 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/VelocityModule.java @@ -0,0 +1,217 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.network.play.server.S08PacketPlayerPosLook; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S27PacketExplosion; +import net.minecraft.potion.Potion; + +public final strictfp class VelocityModule extends CatalogModule { + private final WeaponsModule weapons; + private final RotationRandom.Smooth probability = new RotationRandom.Smooth(); + private boolean resetPending; + private boolean knockbackPending; + private boolean storedPending; + private boolean attackApplied; + private boolean jumpOwned; + private int entityId; + private int countdown; + private double storedX; + private double storedY; + private double storedZ; + private double inputX; + private double inputY; + private double inputZ; + + public VelocityModule(WeaponsModule weapons) { + super("velocity", "Velocity", ModuleCategory.COMBAT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int t) { + return t == 0 || t == 2 || t == 14 || t == 15 || t == 17 || t == 18; + } + + private strictfp boolean eligible(ClientContext c) { + return (!this.flag("require_forward") || !(0.0F >= c.player().moveForward)) + && (!this.flag("require_mouse") || AttackInput.pressed(c)) + && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player())) + && (!this.flag("require_target") || TimingAccess.facingPlayer(c)); + } + + private strictfp boolean chance(float percent) { + if (percent > 99.0F) { + return true; + } else { + double fraction = (double)((float)((double)percent * 0.01)); + return this.probability.gate((float)(-0.05 + fraction), (float)(fraction + 0.05), 60.0, RotationRandom.now(), RotationRandom.SHARED); + } + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 2) { + if (e.dispatchMode == 0) { + if (e.packet instanceof S12PacketEntityVelocity) { + if (((S12PacketEntityVelocity)e.packet).getEntityID() == this.entityId) { + this.knockbackPending = true; + } + } else if (e.packet instanceof S27PacketExplosion) { + S27PacketExplosion p = (S27PacketExplosion)e.packet; + float x = p.func_149149_c(); + float z = p.func_149147_e(); + this.knockbackPending = (double)(x * x + z * z) > 0.05; + } else if (e.packet instanceof S08PacketPlayerPosLook) { + this.resetPending = true; + } + } + } else if (c.player() != null) { + if (e.type == 14) { + if (e.active) { + this.inputX = c.player().motionX; + this.inputY = c.player().motionY; + this.inputZ = c.player().motionZ; + } + } else if (e.type == 15) { + if (this.choice("mode") == 2 && (!this.attackApplied || this.flag("reduce_multiple_per_tick")) && e.active && e.reducing) { + if ((!this.flag("require_forward") || !(0.0F >= c.player().moveForward)) && (!this.flag("require_weapon") || this.weapons.isWeapon(c.player()))) { + if (c.player().ticksExisted == c.player().getLastAttackerTime()) { + this.inputX *= 0.6; + this.inputZ = 0.6 * this.inputZ; + c.player().motionX = this.inputX; + c.player().motionY = this.inputY; + c.player().motionZ = this.inputZ; + this.attackApplied = true; + } + } + } + } else if (e.type == 17) { + this.storedX = c.player().motionX; + this.storedY = c.player().motionY; + this.storedZ = c.player().motionZ; + this.storedPending = true; + } else if (e.type == 0) { + if (this.choice("mode") == 3 && c.inputReady()) { + if (this.resetPending) { + this.resetPending = false; + } else if (this.storedPending && this.eligible(c) && this.chance(this.number("ignore_chance"))) { + c.player().motionX = this.storedX; + c.player().motionZ = this.storedZ; + if (this.choice("ignore_vertical") == 2 || this.choice("ignore_vertical") == 1 && !c.player().onGround) { + c.player().motionY = this.storedY; + } + + this.storedPending = false; + } + } + } else { + this.attackApplied = false; + int mode = this.choice("mode"); + if (mode != 2 && c.inputReady()) { + this.entityId = c.player().getEntityId(); + if (mode == 1) { + if (this.jumpOwned) { + KeyState.restore(c.minecraft().gameSettings.keyBindJump); + this.jumpOwned = false; + } else if (this.eligible(c) + && this.chance(this.number("jump_chance")) + && (!this.flag("require_sprinting_jump") || c.player().isSprinting()) + && c.player().onGround + && !(0.0 >= c.player().motionY) + && !c.player().isPotionActive(Potion.jump) + && !c.minecraft().gameSettings.keyBindJump.isKeyDown()) { + KeyState.set(c.minecraft().gameSettings.keyBindJump, true); + this.jumpOwned = true; + } + } else if (mode == 0) { + if (this.countdown > 0) { + if (--this.countdown == 0) { + this.scale(c); + } + } else if (this.knockbackPending) { + this.knockbackPending = false; + if (this.eligible(c) && this.chance(this.number("reduce_chance"))) { + double x = c.player().motionX; + double z = c.player().motionZ; + double length = RotationMath.hypot(x, z); + if (length != 0.0) { + float angle = (float)((double)c.player().rotationYaw * -Math.PI / 180.0 + -Math.PI); + double projection = ((double)RotationMath.sine(angle) * x + (double)RotationMath.cosine(angle) * z) / length; + if ((double)this.number("fov") >= StrictMath.acos(projection)) { + this.countdown = NumericMath.truncateInt(this.number("reduce_delay")); + if (this.countdown <= 0 || --this.countdown == 0) { + this.scale(c); + } + } + } + } + } + } + } + } + } + } + + private strictfp void scale(ClientContext c) { + double factor = (double)this.number("reduce_amount"); + c.player().motionX *= factor; + c.player().motionZ = factor * c.player().motionZ; + } + + @Override + protected strictfp synchronized void onEnable(ClientContext c) { + this.storedPending = false; + } + + @Override + protected strictfp synchronized void onDisable(ClientContext c) { + this.storedPending = false; + if (this.jumpOwned) { + KeyState.restore(c.minecraft().gameSettings.keyBindJump); + this.jumpOwned = false; + } + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.reset(c); + } + + private strictfp void reset(ClientContext c) { + if (this.jumpOwned) { + KeyState.restore(c.minecraft().gameSettings.keyBindJump); + } + + this.jumpOwned = this.resetPending = this.knockbackPending = this.storedPending = this.attackApplied = false; + this.countdown = this.entityId = 0; + this.storedX = this.storedY = this.storedZ = this.inputX = this.inputY = this.inputZ = 0.0; + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + if (index != 0) { + return StatusText.label(this.getName(), index); + } else if (!this.findSetting("reduce_amount").isConfigured()) { + return null; + } else { + float percent = this.number("reduce_amount") * 100.0F; + return StatusText.number(this.getName(), 1, (double)percent); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/combat/WeaponsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/combat/WeaponsModule.java new file mode 100644 index 0000000..f889c96 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/combat/WeaponsModule.java @@ -0,0 +1,239 @@ +package dev.slinky.module.combat; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.StringListSetting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; + +public final class WeaponsModule extends CatalogModule { + private final WeaponsModule.Cache cache = new WeaponsModule.Cache(0, false, 0); + + public WeaponsModule() { + super("weapons", "Weapons", ModuleCategory.COMBAT); + this.itemPolicy("extra_items"); + } + + @Override + public boolean listens(int type) { + return type == 26; + } + + public boolean sticksEnabled() { + return ItemPolicyService.contains(this.names("extra_items"), 280); + } + + public void setSticksEnabled(boolean enabled) { + List items = new ArrayList<>(this.names("extra_items")); + items.removeIf(name -> ItemPolicyService.identifier(name) == 280); + if (enabled) { + items.add(ItemPolicyService.name(280)); + } + + ((StringListSetting)this.findSetting("extra_items")).set(items); + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 26) { + ((StringListSetting)this.findSetting("extra_items")).set(Collections.emptyList()); + } + } + + public boolean isAllowed(ItemStack stack, int selectedSlot) { + if (stack == null) { + return this.flag("fist"); + } else { + int groups = enchantmentGroups(stack); + return this.selectedSetting(selectedSlot) || this.groupAllowed(groups) || this.itemAllowed(stack.getItem()); + } + } + + private boolean selectedSetting(int selected) { + if (selected >= 0 && selected < 9) { + return this.flag(Integer.toString(selected + 1)); + } else { + switch (selected) { + case -1: + return this.flag("fist"); + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + default: + throw new IllegalArgumentException("Slot outside recovered setting records: " + selected); + case 9: + return this.flag("enchant_sharpness"); + case 10: + return this.flag("enchant_knockback"); + case 11: + return this.flag("enchant_fire_aspect"); + case 12: + return this.flag("axes"); + case 13: + return this.flag("swords"); + } + } + } + + private boolean groupAllowed(int groups) { + return (groups & 1) != 0 && this.flag("enchant_sharpness") + || (groups & 2) != 0 && this.flag("enchant_knockback") + || Integer.compareUnsigned(groups, 4) >= 0 && this.flag("enchant_fire_aspect"); + } + + private boolean itemAllowed(Item item) { + return allowedIdentifier( + item == null ? null : Item.getIdFromItem(item), this.flag("fist"), this.flag("swords"), this.flag("axes"), this.names("extra_items") + ); + } + + public static boolean allowedIdentifier(Integer identifier, boolean fist, boolean swords, boolean axes, List extraItems) { + if (identifier == null) { + return fist; + } else { + int id = identifier; + int bit = id - 258; + if (Integer.compareUnsigned(bit, 29) < 0) { + if ((33834496 >>> bit & 1) != 0) { + return swords; + } + + if ((270671873 >>> bit & 1) != 0) { + return axes; + } + } + + return id == 0 ? fist : ItemPolicyService.contains(extraItems, id); + } + } + + public int firstAllowedSlot(InventoryPlayer inventory) { + for (int slot = 0; slot < 9; slot++) { + if (this.flag(Integer.toString(slot + 1))) { + return slot; + } + + ItemStack stack = inventory.getStackInSlot(slot); + if (stack != null && (this.groupAllowed(enchantmentGroups(stack)) || this.itemAllowed(stack.getItem()))) { + return slot; + } + } + + return -1; + } + + public boolean isWeapon(EntityPlayer player) { + if (player == null) { + return false; + } else { + this.updateCache(player); + return this.cache.allowed; + } + } + + public int classificationFlags(EntityPlayer player) { + if (player == null) { + return 0; + } else { + this.updateCache(player); + return this.cache.groups; + } + } + + private void updateCache(final EntityPlayer player) { + this.cache + .update( + player.ticksExisted, + new WeaponsModule.Classification() { + private ItemStack stack; + + @Override + public int groups() { + this.stack = player.inventory.getStackInSlot(player.inventory.currentItem); + return this.stack == null ? 0 : WeaponsModule.enchantmentGroups(this.stack); + } + + @Override + public boolean allowed(int groups) { + return this.stack == null + ? WeaponsModule.this.flag("fist") + : WeaponsModule.this.selectedSetting(player.inventory.currentItem) + || WeaponsModule.this.groupAllowed(groups) + || WeaponsModule.this.itemAllowed(this.stack.getItem()); + } + } + ); + } + + public static int enchantmentGroups(ItemStack stack) { + NBTTagList tags = stack.getEnchantmentTagList(); + if (tags == null) { + return 0; + } else { + int groups = 0; + + for (int index = 0; index < tags.tagCount(); index++) { + groups |= enchantmentGroup(tags.getCompoundTagAt(index).getShort("id") & '\uffff'); + } + + return groups; + } + } + + public static int enchantmentGroup(int unsignedShort) { + switch (unsignedShort & 65535) { + case 16: + return 1; + case 17: + case 18: + default: + return 0; + case 19: + return 2; + case 20: + return 4; + } + } + + public static final class Cache { + public int key; + public int groups; + public boolean allowed; + + public Cache(int key, boolean allowed, int groups) { + this.key = key; + this.allowed = allowed; + this.groups = groups; + } + + public void update(int counter, WeaponsModule.Classification classification) { + if (counter != this.key) { + this.key = counter; + this.groups = 0; + this.groups = classification.groups(); + this.allowed = classification.allowed(this.groups); + } + } + } + + public interface Classification { + int groups(); + + boolean allowed(int var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/FastAccelModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/FastAccelModule.java new file mode 100644 index 0000000..e939693 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/FastAccelModule.java @@ -0,0 +1,62 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.combat.WeaponsModule; + +public final strictfp class FastAccelModule extends CatalogModule { + private final WeaponsModule weapons; + + public FastAccelModule(WeaponsModule weapons) { + super("fastaccel", "Fast Accel", ModuleCategory.MOVEMENT); + this.weapons = weapons; + } + + public static strictfp double limit(float sideways, float forward, float factor, boolean sprintJump) { + float length = NumericMath.floatDistance(sideways, forward); + float denominator = !Float.isNaN(length) && !(length >= 1.0F) ? 1.0F : length; + float scale = factor / denominator; + float x = sideways * scale; + float z = scale * forward; + double step = (double)NumericMath.floatDistance(x, z); + double limit = 0.0 + step; + + for (int i = 0; i < 19; i++) { + limit = limit * 0.546 + step; + } + + if (sprintJump) { + limit += 0.2; + } + + return limit; + } + + @Override + public strictfp boolean listens(int type) { + return type == 22; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready() && (event.forward != 0.0F || event.sideways != 0.0F)) { + if (!this.flag("require_weapon") || this.weapons.isAllowed(context.player().getHeldItem(), context.player().inventory.currentItem)) { + if (!this.flag("require_not_damaged") || context.player().hurtTime <= 0) { + double speed = RotationMath.hypot(context.player().motionX, context.player().motionZ); + if (speed != 0.0 && context.player().onGround) { + double limit = limit(event.sideways, event.forward, event.factor, event.jump && context.player().isSprinting()); + if (!(speed > limit)) { + double accelerated = speed + (limit - speed) * (double)this.number("acceleration"); + context.player().motionX = context.player().motionX / speed * accelerated; + context.player().motionZ = context.player().motionZ / speed * accelerated; + } + } + } + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/InstantStopModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/InstantStopModule.java new file mode 100644 index 0000000..3ec83b6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/InstantStopModule.java @@ -0,0 +1,104 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.settings.GameSettings; + +public final strictfp class InstantStopModule extends CatalogModule { + private int phase; + + public InstantStopModule() { + super("instantstop", "Instant Stop", ModuleCategory.MOVEMENT); + } + + @Override + public strictfp boolean listens(int type) { + return type == 16; + } + + public static strictfp int choose(double origin, double right, double straight, double left) { + double minimum = RotationMath.min(right, origin); + int index = origin > right ? -1 : 999; + double previousMinimum = minimum; + minimum = RotationMath.min(straight, previousMinimum); + if (previousMinimum > straight) { + index = 0; + } + + if (minimum > left) { + index = 1; + } + + return index; + } + + public static strictfp int stoppingDirection(double x, double z, float yaw, float speed) { + double[] scores = new double[3]; + + for (int i = 0; i < 3; i++) { + double[] movement = RotationMath.movement(yaw, -1.0F, (float)(i - 1), speed); + double sumX = x + movement[0]; + double sumZ = movement[1] + z; + scores[i] = sumX * sumX + sumZ * sumZ; + } + + return choose(x * x + z * z, scores[0], scores[1], scores[2]); + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 16) { + if (context.ready() && context.minecraft().inGameHasFocus) { + GameSettings keys = context.minecraft().gameSettings; + if (this.phase == 2) { + this.restore(context); + } else if (this.phase != 1) { + if (keys.keyBindForward.isKeyDown()) { + this.phase = 1; + } + } else if (!keys.keyBindForward.isKeyDown() && context.player().onGround) { + float speed = context.player().getAIMoveSpeed(); + if (context.player().isSprinting()) { + speed = (float)((double)speed / 1.3); + } + + int direction = stoppingDirection(context.player().motionX, context.player().motionZ, context.player().rotationYaw, speed); + this.phase = 0; + if (direction != 999) { + KeyState.set(keys.keyBindBack, true); + KeyState.set(keys.keyBindLeft, direction == 1); + KeyState.set(keys.keyBindRight, direction == -1); + this.phase = 2; + } + } + } else { + this.restore(context); + } + } + } + + private strictfp void restore(ClientContext context) { + if (this.phase == 2) { + GameSettings keys = context.minecraft().gameSettings; + KeyState.restore(keys.keyBindBack); + KeyState.restore(keys.keyBindLeft); + KeyState.restore(keys.keyBindRight); + } + + this.phase = 0; + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.restore(context); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.restore(context); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/InvWalkModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/InvWalkModule.java new file mode 100644 index 0000000..16ae80c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/InvWalkModule.java @@ -0,0 +1,424 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.NetworkSendAdapter; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import java.util.Arrays; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerPlayer; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.client.C0DPacketCloseWindow; +import net.minecraft.network.play.client.C0EPacketClickWindow; +import net.minecraft.network.play.client.C16PacketClientStatus.EnumState; +import net.minecraft.network.play.client.C16PacketClientStatus; + +public final class InvWalkModule extends CatalogModule { + private final InvWalkModule.State state = new InvWalkModule.State(); + private KeyBinding[] changedKeys; + private KeyBinding changedSprint; + + @Override + public String statusText() { + return !this.findSetting("mode").isConfigured() ? null : StatusText.label(this.getName(), this.choice("mode")); + } + + public InvWalkModule() { + super("invwalk", "Inv Walk", ModuleCategory.MOVEMENT); + } + + @Override + public boolean listens(int type) { + return type == 17 || type == 5 || type == 23 || type == 25; + } + + private static NetworkManager receiver(ClientContext c) { + return c.minecraft().getNetHandler() == null ? null : c.minecraft().getNetHandler().getNetworkManager(); + } + + @Override + public synchronized void onEvent(ClientContext c, SemanticEvent e) { + InvWalkModule.Live a = new InvWalkModule.Live(c, e.type == 23 ? e.receiver : receiver(c)); + if (e.type == 17) { + this.state + .update( + a, this.choice("mode"), this.choice("stop_on_click"), this.choice("stop_non_inv"), (int)NumericMath.truncateLong(this.number("stop_duration")) + ); + } else if (e.type == 23) { + int kind = e.packet instanceof C16PacketClientStatus + ? 0 + : (e.packet instanceof C0EPacketClickWindow ? 1 : (e.packet instanceof C0DPacketCloseWindow ? 2 : -1)); + int action = kind == 0 ? ((C16PacketClientStatus)e.packet).getStatus().ordinal() : -1; + if (this.state.packet(a, e.packet, kind, action, this.choice("mode"))) { + e.cancelled = true; + } + } else if (e.type == 25) { + if (this.state.finish(a)) { + e.cancelled = true; + } + } else if (e.type == 5 && e.module == this && !e.enabled) { + this.state.flush(a); + } + } + + private void restoreKeys() { + if (this.changedKeys != null) { + for (KeyBinding key : this.changedKeys) { + KeyState.restore(key); + } + + this.changedKeys = null; + } + + if (this.changedSprint != null) { + KeyState.restore(this.changedSprint); + this.changedSprint = null; + } + } + + @Override + protected synchronized void onDisable(ClientContext c) { + this.state.flush(new InvWalkModule.Live(c, receiver(c))); + this.restoreKeys(); + } + + @Override + public synchronized void onWorldUnload(ClientContext c) { + this.state.flush(new InvWalkModule.Live(c, receiver(c))); + this.state.clear(); + this.restoreKeys(); + } + + public interface Access { + boolean screen(); + + boolean inventoryScreen(); + + boolean ready(); + + boolean physical(int var1); + + boolean cursorStack(); + + boolean craftingStack(int var1); + + boolean connection(); + + void send(Object var1); + + Object open(); + + Object close(); + + void key(int var1, boolean var2); + + void stopSprint(); + } + + private final class Live implements InvWalkModule.Access { + private final ClientContext context; + private final NetworkManager receiver; + private final KeyBinding[] keys; + + Live(ClientContext c, NetworkManager receiver) { + this.context = c; + this.receiver = receiver; + GameSettings s = c.minecraft().gameSettings; + this.keys = new KeyBinding[]{s.keyBindForward, s.keyBindBack, s.keyBindLeft, s.keyBindRight, s.keyBindJump}; + } + + @Override + public boolean screen() { + return this.context.minecraft().currentScreen != null; + } + + @Override + public boolean inventoryScreen() { + return this.context.minecraft().currentScreen instanceof GuiInventory; + } + + @Override + public boolean ready() { + return this.context.inputReady(); + } + + @Override + public boolean physical(int key) { + return KeyState.physical(this.keys[key]); + } + + @Override + public boolean cursorStack() { + return this.context.player() != null && this.context.player().inventory.getItemStack() != null; + } + + @Override + public boolean craftingStack(int index) { + if (this.context.player() == null) { + return false; + } else { + Container container = this.context.player().inventoryContainer; + return container instanceof ContainerPlayer && ((ContainerPlayer)container).craftMatrix.getStackInSlot(index) != null; + } + } + + @Override + public boolean connection() { + return this.receiver != null && this.receiver.isChannelOpen(); + } + + @Override + public void send(Object packet) { + if (this.connection()) { + NetworkSendAdapter.sendDirect(this.receiver, (Packet)packet); + } + } + + @Override + public Object open() { + return new C16PacketClientStatus(EnumState.OPEN_INVENTORY_ACHIEVEMENT); + } + + @Override + public Object close() { + return new C0DPacketCloseWindow(0); + } + + @Override + public void key(int index, boolean value) { + InvWalkModule.this.changedKeys = this.keys; + KeyState.set(this.keys[index], value); + } + + @Override + public void stopSprint() { + if (this.context.player() != null) { + this.context.player().setSprinting(false); + } + + InvWalkModule.this.changedSprint = this.context.minecraft().gameSettings.keyBindSprint; + KeyState.set(InvWalkModule.this.changedSprint, false); + } + } + + public static final class State { + public final Object[] packets = new Object[32]; + public int count; + public int tick; + public int phase; + public int lastTick; + public boolean stopped; + public boolean busy; + + public boolean flush(InvWalkModule.Access a) { + if (this.count == 0) { + return false; + } else { + boolean valid = a.connection(); + + for (int i = 0; i < this.count; i++) { + if (valid) { + a.send(this.packets[i]); + } + + this.packets[i] = null; + } + + this.count = 0; + return valid; + } + } + + public boolean finish(InvWalkModule.Access a) { + if (!this.busy && this.flush(a)) { + this.lastTick = this.tick; + return a.ready(); + } else { + return false; + } + } + + public boolean packet(InvWalkModule.Access a, Object packet, int kind, int action, int mode) { + if (mode != 1) { + return false; + } else if (kind == 0) { + if (action == 2) { + this.phase = 2; + return true; + } else { + return false; + } + } else { + if (kind == 1) { + if (this.phase == 2) { + a.send(a.open()); + this.phase = 3; + this.busy = true; + } else if (this.count == 0 && !this.busy) { + this.lastTick = this.tick; + return false; + } + } else { + if (kind != 2) { + return false; + } + + if (this.phase == 2) { + return true; + } + + if (this.count == 0) { + return false; + } + } + + if (this.count != 32 && packet != null) { + this.packets[this.count++] = packet; + } + + return true; + } + } + + private boolean recent(int duration) { + return Integer.compareUnsigned(this.tick - this.lastTick, duration) < 0; + } + + public void update(InvWalkModule.Access a, int mode, int interact, int other, int duration) { + boolean[] pressed = new boolean[5]; + boolean moving = false; + + for (int i = 0; i < 5; i++) { + pressed[i] = a.physical(i); + moving |= pressed[i]; + } + + boolean block = mode == 1 && interact != 2 && this.count != 0; + boolean stop = interact == 0 && block; + this.tick++; + boolean active; + if (!a.screen()) { + if (this.phase != 0) { + set(a, pressed); + } + + this.phase = 0; + if (!a.ready()) { + return; + } + + active = false; + } else { + if (!a.inventoryScreen()) { + this.phase = 1; + if (mode == 1) { + boolean var15 = block | !moving; + boolean blocked = var15 || interact != 2 && this.recent(duration); + block = other != 2 || blocked; + stop = interact == 0 && blocked || other == 0 && block; + } + + if (stop) { + zero(a); + } else { + set(a, pressed); + } + + this.finishUpdate(a, block, stop); + return; + } + + boolean deny; + if (mode != 1) { + this.phase = 3; + active = true; + deny = false; + } else { + deny = true; + if (!a.cursorStack()) { + if (this.phase == 1) { + deny = block; + } else { + boolean craft = false; + + for (int i = 0; i < 4; i++) { + if (a.craftingStack(i)) { + craft = true; + break; + } + } + + if (!craft) { + deny = block; + } + } + } + + boolean allowed = moving && !deny; + if (this.phase == 2 && !allowed) { + a.send(a.open()); + this.phase = 3; + } else if (this.count == 0 && this.phase == 3 && allowed && (interact == 2 || !this.recent(duration))) { + a.send(a.close()); + this.phase = 2; + } + + deny |= this.phase == 3; + active = this.phase != 0; + } + + block |= interact != 2 && deny; + stop = interact == 0 && block; + } + + if (active || this.stopped || stop) { + if (stop) { + zero(a); + } else { + set(a, pressed); + } + } + + this.finishUpdate(a, block, stop); + } + + private static void set(InvWalkModule.Access a, boolean[] pressed) { + for (int i = 0; i < 5; i++) { + a.key(i, pressed[i]); + } + } + + private static void zero(InvWalkModule.Access a) { + for (int i = 0; i < 5; i++) { + a.key(i, false); + } + } + + private void finishUpdate(InvWalkModule.Access a, boolean block, boolean stop) { + if (block) { + a.stopSprint(); + } + + this.stopped = stop; + this.busy = false; + } + + public void clear() { + Arrays.fill(this.packets, null); + this.count = 0; + this.tick = 0; + this.phase = 0; + this.lastTick = 0; + this.stopped = false; + this.busy = false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/KeepSprintModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/KeepSprintModule.java new file mode 100644 index 0000000..b431ae2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/KeepSprintModule.java @@ -0,0 +1,123 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; + +public final strictfp class KeepSprintModule extends CatalogModule { + private final KeepSprintModule.State state = new KeepSprintModule.State(); + private final RotationRandom random; + + public KeepSprintModule() { + this(RotationRandom.SHARED); + } + + public KeepSprintModule(RotationRandom random) { + super("keepsprint", "Keep Sprint", ModuleCategory.COMBAT); + this.random = random; + } + + @Override + public strictfp boolean listens(int type) { + return type == 14 || type == 15 || type == 17; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 17) { + if (this.state.finish() && context.player() != null) { + context.player().setSprinting(true); + } + } else if (event.active) { + if (event.type == 14) { + boolean accept = context.inputReady() && context.player().isSprinting() && this.random.chance(this.number("chance")); + this.state + .sample(true, accept, accept ? context.player().motionX : 0.0, accept ? context.player().motionY : 0.0, accept ? context.player().motionZ : 0.0); + } else if (event.type == 15 && this.state.armed && context.player() != null) { + if (this.flag("require_on_ground") && !context.player().onGround) { + return; + } + + if (context.player().ticksExisted != context.player().getLastAttackerTime()) { + return; + } + + if (!this.state.applyReductionPolicy(this.flag("allow_reduce"), event.reducing, this.number("motion_mult"))) { + return; + } + + context.player().motionX = this.state.x; + context.player().motionY = this.state.y; + context.player().motionZ = this.state.z; + } + } + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.state.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("motion_mult").isConfigured()) { + return null; + } else { + float percent = this.number("motion_mult") * 100.0F; + return StatusText.number(this.getName(), (double)percent); + } + } + + public static final class State { + public boolean armed; + public boolean pending; + public double x; + public double y; + public double z; + + public strictfp void sample(boolean active, boolean accept, double x, double y, double z) { + if (active) { + this.armed = accept; + if (accept) { + this.x = x; + this.y = y; + this.z = z; + } + } + } + + public strictfp void scale(float factor) { + this.x *= (double)factor; + this.z = (double)factor * this.z; + this.pending = true; + } + + public strictfp boolean applyReductionPolicy(boolean allowReduce, boolean reducing, float factor) { + if (allowReduce && reducing) { + return false; + } else { + this.scale(factor); + return true; + } + } + + public strictfp boolean finish() { + boolean result = this.pending; + this.pending = false; + return result; + } + + public strictfp void clear() { + this.armed = this.pending = false; + this.x = this.y = this.z = 0.0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/NoJumpDelayModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/NoJumpDelayModule.java new file mode 100644 index 0000000..f845fc2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/NoJumpDelayModule.java @@ -0,0 +1,25 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; + +public final class NoJumpDelayModule extends CatalogModule { + public NoJumpDelayModule() { + super("nojumpdelay", "No Jump Delay", ModuleCategory.MOVEMENT); + } + + @Override + public boolean listens(int type) { + return type == 17; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.inputReady()) { + MinecraftFields.setJumpTicks(context.player(), 0); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/NoSlowModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/NoSlowModule.java new file mode 100644 index 0000000..bb7fc15 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/NoSlowModule.java @@ -0,0 +1,40 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.item.Item; + +public final class NoSlowModule extends CatalogModule { + public NoSlowModule() { + super("noslow", "No Slow", ModuleCategory.MOVEMENT); + } + + public static String category(int identifier) { + int bucket = identifier - 261; + if (Integer.compareUnsigned(bucket, 23) < 0 && (4229312 >>> (bucket & 31) & 1) != 0) { + return "mult_sword"; + } else { + return bucket == 0 ? "mult_bow" : "mult_consumables"; + } + } + + public static float scale(float input, float retained) { + return (float)((double)retained / 0.2 * (double)input); + } + + @Override + public boolean listens(int type) { + return type == 21; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready() && context.player().isUsingItem() && context.player().getHeldItem() != null) { + float retained = this.number(category(Item.getIdFromItem(context.player().getHeldItem().getItem()))); + event.sideways = scale(event.sideways, retained); + event.forward = scale(event.forward, retained); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/NullMoveModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/NullMoveModule.java new file mode 100644 index 0000000..2d4adb5 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/NullMoveModule.java @@ -0,0 +1,110 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.Arrays; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; + +public final class NullMoveModule extends CatalogModule { + private final NullMoveModule.State state = new NullMoveModule.State(); + + public NullMoveModule() { + super("nullmove", "Null Move", ModuleCategory.MOVEMENT); + } + + @Override + public boolean listens(int type) { + return type == 16; + } + + private KeyBinding[] keys(ClientContext context) { + GameSettings g = context.minecraft().gameSettings; + return new KeyBinding[]{g.keyBindForward, g.keyBindLeft, g.keyBindBack, g.keyBindRight}; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready() && context.minecraft().inGameHasFocus) { + final KeyBinding[] bindings = this.keys(context); + this.state.update(context.player().ticksExisted, new NullMoveModule.Keys() { + @Override + public boolean pressed(int index) { + return bindings[index].isKeyDown(); + } + + @Override + public boolean physical(int index) { + return KeyState.physical(bindings[index]); + } + + @Override + public void set(int index, boolean pressed) { + KeyState.set(bindings[index], pressed); + } + }); + } + } + + private void restore(ClientContext context) { + for (KeyBinding key : this.keys(context)) { + KeyState.restore(key); + } + + this.state.clear(); + } + + @Override + protected void onDisable(ClientContext context) { + this.restore(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.restore(context); + } + + public interface Keys { + boolean pressed(int var1); + + boolean physical(int var1); + + void set(int var1, boolean var2); + } + + public static final class State { + private final int[] stamps = new int[4]; + private static final int[] OPPOSITE = new int[]{2, 3, 0, 1}; + + public void update(int stamp, NullMoveModule.Keys keys) { + for (int direction = 0; direction < 4; direction++) { + int previous = this.stamps[direction]; + int other = OPPOSITE[direction]; + int next = 0; + boolean pressed = keys.pressed(direction); + boolean oppositePressed = keys.pressed(other); + if (pressed) { + next = stamp; + if (previous == 0 && oppositePressed) { + keys.set(other, false); + } + } else if (previous != 0 && keys.physical(other)) { + keys.set(other, true); + } + + this.stamps[direction] = next; + } + } + + public int stamp(int index) { + return this.stamps[index]; + } + + public void clear() { + Arrays.fill(this.stamps, 0); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/SafeWalkModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/SafeWalkModule.java new file mode 100644 index 0000000..6f8985c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/SafeWalkModule.java @@ -0,0 +1,54 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.item.ItemBlock; + +public final class SafeWalkModule extends CatalogModule { + private boolean allowed; + + public SafeWalkModule() { + super("safewalk", "Safe Walk", ModuleCategory.WORLD); + } + + @Override + public boolean listens(int type) { + return type == 0; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.inputReady()) { + if ((!this.flag("require_looking_down") || !(65.0F > context.player().rotationPitch)) + && (!this.flag("require_not_forward") || !(context.player().moveForward > 0.0F)) + && (!this.flag("require_holding_blocks") || context.player().getHeldItem() != null && context.player().getHeldItem().getItem() instanceof ItemBlock) + ) + { + this.allowed = true; + float factor = this.number("motion_multiplier"); + if (context.player().onGround && factor != 1.0F) { + context.player().motionX *= (double)factor; + context.player().motionZ = (double)factor * context.player().motionZ; + } + } else { + this.allowed = false; + } + } + } + + public boolean allowed() { + return this.isEnabled() && this.allowed; + } + + @Override + protected void onDisable(ClientContext context) { + this.allowed = false; + } + + @Override + public void onWorldUnload(ClientContext context) { + this.allowed = false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/SpeedModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/SpeedModule.java new file mode 100644 index 0000000..f6174c5 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/SpeedModule.java @@ -0,0 +1,11 @@ +package dev.slinky.module.movement; + +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; + +public final class SpeedModule extends CatalogModule { + public SpeedModule() { + super("speed", "Speed", ModuleCategory.MOVEMENT); + this.reorderSettings(new String[]{"speed", "require_ground"}); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/SprintModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/SprintModule.java new file mode 100644 index 0000000..f929c05 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/SprintModule.java @@ -0,0 +1,82 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; + +public final class SprintModule extends CatalogModule { + private boolean lastState; + + public SprintModule() { + super("sprint", "Sprint", ModuleCategory.MOVEMENT); + } + + @Override + public boolean listens(int type) { + return type == 17 || type == 21; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 17) { + boolean active = context.minecraft().currentScreen == null || this.flag("while_in_gui"); + KeyState.set(context.minecraft().gameSettings.keyBindSprint, active); + if (context.player() != null) { + if (!active) { + if (this.lastState) { + context.player().setSprinting(false); + } + + return; + } + + if (context.player().isSprinting()) { + context.player().setSprinting(true); + } + } + + this.lastState = active; + } else if (context.ready()) { + if (event.forward == 0.0F && event.sideways == 0.0F) { + return; + } + + boolean using = context.player().isUsingItem(); + if (using && !this.flag("while_using_item")) { + return; + } + + if (event.forward < 0.0F) { + if (!this.flag("while_backwards")) { + return; + } + } else if (event.forward == 0.0F && event.sideways != 0.0F) { + if (!this.flag("while_sideways")) { + return; + } + } else if (!using) { + return; + } + + event.factor = (float)((double)event.factor * 1.3); + context.player().setSprinting(true); + } + } + + private void restore(ClientContext context) { + KeyState.restore(context.minecraft().gameSettings.keyBindSprint); + this.lastState = false; + } + + @Override + protected void onDisable(ClientContext context) { + this.restore(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.restore(context); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/movement/StrafeModule.java b/SlinkyClient/src/main/java/dev/slinky/module/movement/StrafeModule.java new file mode 100644 index 0000000..74a249b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/movement/StrafeModule.java @@ -0,0 +1,80 @@ +package dev.slinky.module.movement; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.combat.WeaponsModule; + +public final strictfp class StrafeModule extends CatalogModule { + private final WeaponsModule weapons; + private boolean sampledSprint; + + public StrafeModule(WeaponsModule weapons) { + super("strafe", "Strafe", ModuleCategory.MOVEMENT); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 21 || type == 22; + } + + public static strictfp double[] redirect(double x, double z, float yaw, float forward, float sideways, float amount, boolean boost) { + double speed = RotationMath.hypot(x, z); + if (boost) { + speed += 0.2; + } + + double turn = sideways < 0.0F ? -1.0 : 0.0; + if (sideways > 0.0F) { + turn = 1.0; + } + + double heading = (double)yaw; + if (forward > 0.0F) { + turn *= -45.0; + } else if (forward < 0.0F) { + heading += 180.0; + turn *= 45.0; + } else { + turn *= -90.0; + } + + float radians = (float)((turn + heading) * Math.PI / 180.0); + float sine = Float.intBitsToFloat(Float.floatToRawIntBits(RotationMath.sine(radians)) ^ Integer.MIN_VALUE); + double nextX = x + ((double)sine * speed - x) * (double)amount; + double nextZ = z + ((double)RotationMath.cosine(radians) * speed - z) * (double)amount; + return new double[]{nextX, nextZ}; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready()) { + if (event.type == 21) { + this.sampledSprint = context.player().isSprinting(); + } else if (event.type == 22 && (event.forward != 0.0F || event.sideways != 0.0F)) { + if (!this.flag("require_weapon") || this.weapons.isAllowed(context.player().getHeldItem(), context.player().inventory.currentItem)) { + if (!((float)context.player().hurtTime > this.number("max_hurt_time"))) { + boolean ground = context.player().onGround; + float amount = this.number(!ground ? "strength_air" : (event.jump ? "strength_jump" : "strength_ground")); + if (amount != 0.0F) { + boolean var10006 = ground && event.jump && !this.sampledSprint; + double[] motion = redirect( + context.player().motionX, context.player().motionZ, context.player().rotationYaw, event.forward, event.sideways, amount, var10006 + ); + context.player().motionX = motion[0]; + context.player().motionZ = motion[1]; + } + } + } + } + } + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.sampledSprint = false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/AntiDebuffModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/AntiDebuffModule.java new file mode 100644 index 0000000..682f449 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/AntiDebuffModule.java @@ -0,0 +1,37 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +public final class AntiDebuffModule extends CatalogModule { + public AntiDebuffModule() { + super("antidebuff", "Anti Debuff", ModuleCategory.RENDER); + } + + @Override + public boolean listens(int type) { + return type == 18; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready()) { + if (this.flag("blindness")) { + PotionEffect effect = context.player().getActivePotionEffect(Potion.blindness); + if (effect != null) { + MinecraftFields.setPotionDuration(effect, 0); + } + } + + if (this.flag("nausea")) { + context.player().timeInPortal = 0.0F; + context.player().prevTimeInPortal = 0.0F; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/BlockEspModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/BlockEspModule.java new file mode 100644 index 0000000..670598a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/BlockEspModule.java @@ -0,0 +1,258 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericServices; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.client.render.world.BlockMesh; +import dev.slinky.client.render.world.LoadedChunkAccess; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NamedColorListSetting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; +import net.minecraft.world.World; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +public final strictfp class BlockEspModule extends CatalogModule { + private final List regions = new ArrayList<>(); + private final SortedMap policy = new TreeMap<>((a, b) -> a - b); + private boolean recollect; + private boolean dirty; + + public BlockEspModule() { + super("block_esp", "Block ESP", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 0 || t == 5 || t == 6 || t == 20 || t == 26; + } + + private strictfp void refreshPolicy() { + this.policy.clear(); + + for (NamedColorListSetting.Entry e : ((NamedColorListSetting)this.findSetting("allowed_blocks")).get()) { + int id = LoadedChunkAccess.blockIdentifier(e.name); + if (id != -1 && !this.policy.containsKey(Integer.valueOf(id))) { + this.policy.put(Integer.valueOf(id), e.color); + } + } + } + + @Override + public strictfp boolean afterSettingControl(String key, ClientContext c) { + if (!key.equals("allowed_blocks")) { + return false; + } else { + this.release(); + this.refreshPolicy(); + this.recollect = true; + return true; + } + } + + @Override + protected strictfp void onEnable(ClientContext c) { + this.refreshPolicy(); + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.release(); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + RenderEventPayload payload = RenderEventPayload.get(e); + if (e.type == 20 && payload != null) { + this.regionChanged(payload.world, payload.regionKind, payload.x, payload.y, payload.z, payload.blockId); + } else if (e.type == 26) { + this.release(); + this.policy.clear(); + } else if (e.type == 0) { + if (c.inputReady() && this.dirty) { + for (BlockMesh.Region region : this.regions) { + BlockMesh.rebuild(region); + } + + this.dirty = false; + } + + if (!c.ready()) { + this.release(); + } else if (this.recollect) { + this.release(); + this.collect(c); + this.recollect = false; + } + } else if (e.type == 5) { + if (e.module == this) { + if (e.enabled) { + this.refreshPolicy(); + if (c.ready()) { + this.collect(c); + } + } else { + this.release(); + } + } + } else if (e.type == 6) { + RenderAccess.submit(e, this.plan(e)); + } + } + + public strictfp void regionChanged(ClientContext c, int kind, int x, int y, int z, int blockId) { + this.regionChanged(kind == 1 && c != null && c.minecraft() != null && c.ready() ? c.world() : null, kind, x, y, z, blockId); + } + + public strictfp void regionChanged(World world, int kind, int x, int y, int z, int blockId) { + if (this.isEnabled()) { + if (Integer.compareUnsigned(kind, 2) < 0) { + this.remove(x, z); + if (kind == 1 && world != null) { + this.scan(world.getChunkFromChunkCoords(x, z)); + } + } else if (kind == 2) { + int cx = x >> 4; + int cz = z >> 4; + BlockMesh.Region region = this.find(cx, cz); + ColorSetting.Value color = this.policy.get(Integer.valueOf(blockId)); + if (region == null) { + if (color == null) { + return; + } + + region = new BlockMesh.Region(cx, cz); + this.insert(region); + } + + BlockMesh.change(region, x - (cx << 4), y, z - (cz << 4), blockId, color); + if (region.blocks.isEmpty()) { + this.remove(cx, cz); + } + } + } + } + + private strictfp BlockMesh.Region find(int x, int z) { + for (BlockMesh.Region r : this.regions) { + if (r.x == x && r.z == z) { + return r; + } + } + + return null; + } + + private strictfp void insert(BlockMesh.Region region) { + int i = 0; + + while (i < this.regions.size() && BlockMesh.compareRegion(region.x, region.z, this.regions.get(i).x, this.regions.get(i).z) > 0) { + i++; + } + + this.regions.add(i, region); + } + + private strictfp void remove(int x, int z) { + BlockMesh.Region r = this.find(x, z); + if (r != null) { + r.release(); + this.regions.remove(r); + } + } + + private strictfp void collect(ClientContext c) { + for (Chunk chunk : LoadedChunkAccess.loaded(c)) { + this.scan(chunk); + } + } + + private strictfp void scan(Chunk chunk) { + this.remove(chunk.xPosition, chunk.zPosition); + BlockMesh.Region region = null; + ExtendedBlockStorage[] sections = chunk.getBlockStorageArray(); + + for (int section = 0; section < 16; section++) { + if (sections[section] != null) { + List found = BlockMesh.scanPacked(section, sections[section].getData(), this.policy); + if (!found.isEmpty()) { + if (region == null) { + region = new BlockMesh.Region(chunk.xPosition, chunk.zPosition); + this.insert(region); + } + + region.blocks.addAll(found); + } + } + } + + if (region != null) { + BlockMesh.rebuild(region); + } + } + + public strictfp DrawPlan plan(SemanticEvent e) { + DrawPlan p = new DrawPlan().lineWidth(this.number("line_width")); + long limit = BlockMesh.renderLimit(this.flag("should_limit_block_render"), this.number("block_render_limit")); + double scale = RenderConstants.d(1392976); + double cx = e.cameraX * scale; + double cz = scale * e.cameraZ; + double midpoint = RenderConstants.d(1392992); + + for (BlockMesh.Region region : this.regions) { + if (!(NumericServices.hypot(cx - ((double)region.x + midpoint), cz - ((double)region.z + midpoint)) > (double)this.number("range"))) { + p.push().translate((float)((double)(region.x << 4) - e.cameraX), (float)(-e.cameraY), (float)((double)(region.z << 4) - e.cameraZ)); + long amount = Long.compareUnsigned((long)region.indices.length, limit) > 0 ? limit : (long)region.indices.length; + + for (int i = 0; (long)(i + 1) < amount; i += 2) { + int a = region.indices[i] & '\uffff'; + int b = region.indices[i + 1] & '\uffff'; + int color = region.colors[a]; + p.color((float)(color >>> 24 & 0xFF) / 255.0F, (float)(color >>> 16 & 0xFF) / 255.0F, (float)(color >>> 8 & 0xFF) / 255.0F, 1.0F) + .vertices( + 1, + 3, + region.vertices[a * 3], + region.vertices[a * 3 + 1], + region.vertices[a * 3 + 2], + region.vertices[b * 3], + region.vertices[b * 3 + 1], + region.vertices[b * 3 + 2] + ); + } + + p.pop(); + } + } + + return p; + } + + public strictfp List regions() { + return Collections.unmodifiableList(this.regions); + } + + private strictfp void release() { + for (BlockMesh.Region r : this.regions) { + r.release(); + } + + this.regions.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.release(); + this.recollect = true; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/ChamsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/ChamsModule.java new file mode 100644 index 0000000..3e3e1db --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/ChamsModule.java @@ -0,0 +1,76 @@ +package dev.slinky.module.render; + +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.Objects; +import net.minecraft.entity.Entity; +import org.lwjgl.opengl.GL11; + +public final class ChamsModule extends CatalogModule { + private static ChamsModule.Graphics graphics = new ChamsModule.Graphics() { + @Override + public void enable(int c) { + GL11.glEnable(c); + } + + @Override + public void offset(float a, float b) { + GL11.glPolygonOffset(a, b); + } + + @Override + public void disable(int c) { + GL11.glDisable(c); + } + }; + + public ChamsModule() { + super("chams", "Chams", ModuleCategory.RENDER); + } + + public static ChamsModule.Graphics bindGraphics(ChamsModule.Graphics next) { + ChamsModule.Graphics old = graphics; + graphics = Objects.requireNonNull(next); + return old; + } + + public boolean eligible(Entity entity) { + return this.isEnabled() && (RelationshipService.flags(entity) & (this.flag("hide_friendlies") ? 5 : 0) + 2) == 0; + } + + public boolean begin(Entity entity) { + boolean selected = this.eligible(entity); + if (selected) { + graphics.enable(32823); + graphics.offset(RenderConstants.f(1392420), RenderConstants.f(1392424)); + } + + return selected; + } + + public void end(boolean selected) { + if (selected) { + graphics.disable(32823); + } + } + + public void render(Entity entity, Runnable original) { + boolean selected = this.begin(entity); + + try { + original.run(); + } finally { + this.end(selected); + } + } + + public interface Graphics { + void enable(int var1); + + void offset(float var1, float var2); + + void disable(int var1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/ChestEspModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/ChestEspModule.java new file mode 100644 index 0000000..c523c9c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/ChestEspModule.java @@ -0,0 +1,101 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; + +public final strictfp class ChestEspModule extends CatalogModule { + private final List rows = new ArrayList<>(); + + public ChestEspModule() { + super("chest_esp", "Chest ESP", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 0 || t == 6; + } + + private static strictfp String kind(int id) { + return id == 54 ? "chest" : (id == 130 ? "ender_chest" : (id == 146 ? "trapped_chest" : (id == 138 ? "beacon" : null))); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 0) { + this.rows.clear(); + if (!c.ready()) { + return; + } + + double[] self = RenderAccess.position(c.player()); + float range = this.number("range"); + + for (TileEntity tile : c.world().loadedTileEntityList) { + BlockPos pos = tile.getPos(); + int id = Block.getIdFromBlock(c.world().getBlockState(pos).getBlock()); + String kind = kind(id); + if (kind != null && this.flag("render_" + kind)) { + double[] p = new double[]{(double)pos.getX(), (double)pos.getY(), (double)pos.getZ()}; + if (!(RenderMath.distanceSquared(p, self) > (double)(range * range))) { + this.rows.add(new ChestEspModule.Row(p, id)); + if (this.rows.size() == 100) { + break; + } + } + } + } + } else { + RenderAccess.submit(e, this.plan(e)); + } + } + + public strictfp DrawPlan plan(SemanticEvent e) { + DrawPlan p = new DrawPlan().lineWidth(this.number("line_width")); + float scale = RenderConstants.f(1383008); + + for (ChestEspModule.Row r : this.rows) { + double[] relative = RenderMath.subtract(r.position, new double[]{e.cameraX, e.cameraY, e.cameraZ}); + p.push() + .translate((float)(relative[0] + RenderConstants.d(1383120)), (float)(relative[1] + RenderConstants.d(1383128)), (float)(relative[2] + 0.5)) + .scale(scale, scale, scale); + if (this.flag("filled")) { + p.color(this.color("color_" + kind(r.id)), RenderConstants.f(1383012)).graphics(168960); + } + + p.color(this.color("color_" + kind(r.id)), 1.0F).graphics(169008).pop(); + } + + return p; + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + public static final strictfp class Row { + public final double[] position; + public final int id; + + public Row(double[] p, int id) { + this.position = (double[])p.clone(); + this.id = id; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/FreeLookModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/FreeLookModule.java new file mode 100644 index 0000000..6c858d1 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/FreeLookModule.java @@ -0,0 +1,67 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; + +public final class FreeLookModule extends CatalogModule { + private boolean saved; + private int perspective; + private float yaw; + private float pitch; + + public FreeLookModule() { + super("freelook", "Free Look", ModuleCategory.RENDER); + } + + @Override + protected void onEnable(ClientContext context) { + if (context.ready()) { + this.saved = true; + this.yaw = RotationService.storedRotationValid() ? RotationService.cameraYaw() : context.player().rotationYaw; + this.pitch = RotationService.storedRotationValid() ? RotationService.cameraPitch() : context.player().rotationPitch; + this.perspective = context.minecraft().gameSettings.thirdPersonView; + context.minecraft().gameSettings.thirdPersonView = this.choice("target_perspective"); + } + } + + @Override + protected void onDisable(ClientContext context) { + this.restore(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.restore(context); + } + + private void restore(ClientContext context) { + if (this.saved) { + context.minecraft().gameSettings.thirdPersonView = this.perspective; + RotationService.restoreCamera(this.yaw, this.pitch); + this.saved = false; + } + } + + @Override + public boolean listens(int type) { + return type == 13; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (event.type == 13) { + if (!this.saved && context.ready()) { + this.onEnable(context); + } + + if (this.saved) { + event.active = true; + event.yaw = this.yaw; + event.pitch = this.pitch; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/GuiModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/GuiModule.java new file mode 100644 index 0000000..f79498c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/GuiModule.java @@ -0,0 +1,165 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.ClickGuiScreen; +import dev.slinky.client.gui.GuiMath; +import dev.slinky.client.gui.GuiModuleList; +import dev.slinky.client.gui.RenderModuleAccess; +import dev.slinky.client.gui.profile.ProfileServices; +import dev.slinky.client.gui.settings.GuiModuleSettings; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.ColorSetting; +import java.io.IOException; +import net.minecraft.client.gui.GuiScreen; +import org.lwjgl.input.Mouse; + +public final class GuiModule extends CatalogModule { + private final ModuleManager manager; + private final GuiMath.Runtime runtime = new GuiMath.Runtime(); + private boolean shutdown; + + public GuiModule(ModuleManager manager) { + super("gui", "GUI", ModuleCategory.RENDER); + this.manager = manager; + RenderModuleAccess.bindGuiInteraction(this::interactionRequested); + } + + public GuiMath.Runtime runtime() { + return this.runtime; + } + + public float scale() { + return RenderConstants.f(1381616 + this.choice("scale") * 4); + } + + public ColorSetting.Value accent() { + return this.color("accent_color"); + } + + public boolean compact() { + return this.flag("compact"); + } + + public boolean wide() { + return this.flag("wide"); + } + + public boolean interactionRequested() { + return this.runtime.closeRequested; + } + + public int redrawFlags(int old) { + return old | 3; + } + + @Override + public boolean listens(int t) { + return t == 0 || t == 5 || t == 9 || t == 10 || t == 26; + } + + @Override + protected void onEnable(ClientContext c) { + this.runtime.start(RenderAccess.now()); + if (Mouse.isGrabbed()) { + Mouse.setCursorPosition(c.minecraft().displayWidth / 2, c.minecraft().displayHeight / 2); + Mouse.setGrabbed(false); + } + + if (!(c.minecraft().currentScreen instanceof ClickGuiScreen) + && !(c.minecraft().currentScreen instanceof GuiModuleList) + && !(c.minecraft().currentScreen instanceof GuiModuleSettings)) { + c.minecraft().displayGuiScreen(new ClickGuiScreen(this.manager, this)); + } + } + + @Override + protected void onDisable(ClientContext c) { + this.runtime.finishModal(true); + this.runtime.clearInteraction(); + GuiScreen screen = c.minecraft().currentScreen; + if (screen instanceof ClickGuiScreen || screen instanceof GuiModuleList || screen instanceof GuiModuleSettings) { + c.minecraft().displayGuiScreen(null); + } + + if (c.ready() && !this.shutdown) { + c.minecraft().setIngameFocus(); + } + + this.saveOnClose(); + RenderAccess.releaseCanvasResources(); + } + + public void saveOnClose() { + if (!this.shutdown) { + try { + this.manager.input().profiles().saveConfiguration(); + } catch (IOException var8) { + SemanticEvent error = new SemanticEvent(12); + RenderEventPayload payload = RenderEventPayload.attach(error); + payload.errorCode = var8 instanceof ProfileServices.Failure ? ((ProfileServices.Failure)var8).code : 1; + + try { + this.manager.dispatch(error); + } finally { + RenderEventPayload.detach(error); + } + } + } + } + + public long dispatchInput(int kind, int key, boolean pressed, int unchanged, byte[] utf8, int x, int y, float wheel) { + if (this.isEnabled() && this.runtime.input(kind, key, x, y, wheel, pressed, utf8)) { + return 1L; + } else { + if (kind == 2 && pressed && key != 0) { + if (unchanged == 0 && key == this.getBinding()) { + this.manager.requestEnabled(this, !this.isEnabled()); + return 1L; + } + + if (key == 87 && this.isEnabled()) { + this.manager.requestEnabled(this, false); + return 1L; + } + } + + return this.isEnabled() && (kind != 2 || !this.flag("allow_input") || Integer.compareUnsigned(key, 5) <= 0) ? (long)kind & 4294967040L | 1L : 0L; + } + } + + public void screenClosed() { + if (this.isEnabled()) { + this.manager.requestEnabled(this, false); + } + } + + @Override + public void onEvent(ClientContext c, SemanticEvent e) { + RenderEventPayload payload = RenderEventPayload.get(e); + if (e.type == 9 && payload != null) { + payload.redrawFlags = this.redrawFlags(payload.redrawFlags); + } else if (e.type == 10 && payload != null && payload.guiDraw != null) { + payload.guiDraw.run(); + } else if (e.type == 26) { + this.shutdown = true; + RenderAccess.releaseCanvasResources(); + this.runtime.finishModal(true); + this.runtime.clearInteraction(); + } else if (e.type == 0 && Mouse.isGrabbed()) { + Mouse.setGrabbed(false); + } + } + + @Override + public void onWorldUnload(ClientContext c) { + this.runtime.finishModal(true); + this.runtime.clearInteraction(); + RenderAccess.releaseCanvasResources(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/IndicatorsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/IndicatorsModule.java new file mode 100644 index 0000000..1817e94 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/IndicatorsModule.java @@ -0,0 +1,158 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.DoubleTrigonometry; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityEnderPearl; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.entity.projectile.EntityFireball; + +public final strictfp class IndicatorsModule extends CatalogModule { + private final List rows = new ArrayList<>(); + + public IndicatorsModule() { + super("indicators", "Indicators", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 5 || t == 7 || t == 18; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 5) { + if (e.module == this && !e.enabled) { + this.rows.clear(); + } + } else if (e.type == 18) { + this.update(c); + } else if (c.ready()) { + RenderAccess.Frame frame = RenderAccess.frame(c, e); + if (frame != null) { + RenderAccess.submit(e, this.plan(frame, e.timerRenderPartialTicks, c.minecraft().getRenderViewEntity().rotationYaw, RenderAccess.now())); + } + } + } + + private strictfp void update(ClientContext c) { + this.rows.clear(); + if (c.ready()) { + double[] self = RenderAccess.position(c.player()); + + for (Entity entity : c.world().loadedEntityList) { + int type = entity instanceof EntityEnderPearl ? 14 : (entity instanceof EntityFireball ? 12 : (entity instanceof EntityArrow ? 10 : 0)); + if (type != 0 + && this.flag(type == 14 ? "show_pearl" : (type == 12 ? "show_fireball" : "show_arrow")) + && (type != 10 || !RenderAccess.arrowInGround((EntityArrow)entity))) { + double distance = RenderMath.distanceSquared(RenderAccess.position(entity), self); + if (!this.flag("require_coming_closer") || !(distance > RenderMath.distanceSquared(RenderAccess.previous(entity), self))) { + distance = StrictMath.sqrt(distance); + String label = String.format(Locale.ROOT, RenderConstants.text(1392808), distance); + if (label.length() > 9) { + label = label.substring(0, 9); + } + + int color = distance > RenderConstants.d(1392680) ? -256 : -65536; + if (distance > RenderConstants.d(1392688)) { + color = -1; + } + + this.rows.add(new IndicatorsModule.Row(entity, type, label, (int)RenderAccess.width(c, label), color)); + if (this.rows.size() == 10) { + break; + } + } + } + } + } + } + + public strictfp DrawPlan plan(RenderAccess.Frame frame, float partial, float yaw, double clock) { + float one = RenderConstants.f(1392612); + double phase = clock * RenderConstants.d(1392616); + double half = RenderConstants.d(1392624); + float alpha = (float)(DoubleTrigonometry.sine(phase) * half + half); + DrawPlan p = new DrawPlan() + .push() + .translate(frame.width * RenderConstants.f(1392608), frame.height * RenderConstants.f(1392608), 0.0F) + .lineWidth(one) + .enable(2848); + + for (IndicatorsModule.Row r : this.rows) { + double x = (double)RenderMath.lerp((float)r.px, (float)r.x, partial) - frame.camera[0]; + double z = (double)RenderMath.lerp((float)r.pz, (float)r.z, partial) - frame.camera[2]; + float angle = PointersModule.angle(x, z, yaw, 1392632, 1392640, 1392648); + float size = this.number("scale"); + p.push() + .rotate(angle, 0.0F, 0.0F, one) + .translate(0.0F, Float.intBitsToFloat(Float.floatToRawIntBits(this.number("radius")) ^ RenderConstants.i(1392656)), 0.0F) + .scale(size, size, size) + .push() + .rotate(Float.intBitsToFloat(Float.floatToRawIntBits(angle) ^ RenderConstants.i(1392656)), 0.0F, 0.0F, one) + .text(r.label, (float)((double)(-r.width) * half), -5.0F, r.color, true, 9.0F) + .pop() + .translate(0.0F, RenderConstants.f(1392672), 0.0F) + .scale(RenderConstants.f(1392676), RenderConstants.f(1392676), RenderConstants.f(1392676)); + int type = r.type - 10; + p.color(RenderConstants.f(1392912 + 4 * type), RenderConstants.f(1392932 + 4 * type), RenderConstants.f(1392952 + 4 * type), alpha) + .graphics(169280) + .color(0.0F, 0.0F, 0.0F, alpha) + .graphics(169328) + .pop(); + } + + return p.pop(); + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.rows.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + public static final strictfp class Row { + public final double x; + public final double z; + public final double px; + public final double pz; + public final int type; + public final int color; + public final int width; + public final String label; + + public Row(Entity e, int type, String label, int width, int color) { + this(e.posX, e.posZ, e.prevPosX, e.prevPosZ, type, label, width, color); + } + + public Row(double x, double z, double px, double pz, int type, String label, int width, int color) { + this.x = x; + this.z = z; + this.px = px; + this.pz = pz; + this.type = type; + this.label = label; + this.width = width; + this.color = color; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/ItemEspModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/ItemEspModule.java new file mode 100644 index 0000000..2502dcf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/ItemEspModule.java @@ -0,0 +1,205 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.ColorSetting; +import dev.slinky.setting.NamedColorListSetting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public final strictfp class ItemEspModule extends CatalogModule { + private final List rows = new ArrayList<>(); + private final SortedMap policy = new TreeMap<>((a, b) -> a - b); + + public ItemEspModule() { + super("item_esp", "Item ESP", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 6 || t == 18 || t == 26; + } + + private strictfp void refreshPolicy() { + this.policy.clear(); + + for (NamedColorListSetting.Entry e : ((NamedColorListSetting)this.findSetting("allowed_items")).get()) { + int id = ItemPolicyService.identifier(e.name); + if (id != -1 && !this.policy.containsKey(Integer.valueOf(id))) { + this.policy.put(Integer.valueOf(id), e.color); + } + } + } + + @Override + public strictfp boolean afterSettingControl(String key, ClientContext c) { + if (key.equals("allowed_items")) { + this.refreshPolicy(); + return true; + } else { + return false; + } + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 26) { + this.policy.clear(); + this.rows.clear(); + } else if (e.type == 18) { + this.update(c); + } else if (c.ready()) { + RenderAccess.submit(e, this.plan(c, e)); + } + } + + private strictfp void update(ClientContext c) { + this.rows.clear(); + this.refreshPolicy(); + if (c.ready()) { + double[] self = RenderAccess.position(c.player()); + float range = this.number("range"); + + for (Entity raw : c.world().loadedEntityList) { + if (raw instanceof EntityItem && !raw.isDead) { + EntityItem entity = (EntityItem)raw; + double[] position = RenderAccess.position(entity); + if (!(RenderMath.distanceSquared(position, self) > (double)(range * range))) { + ItemStack stack = entity.getEntityItem(); + if (stack != null && stack.stackSize > 0 && stack.getItem() != null) { + int id = Item.getIdFromItem(stack.getItem()); + ColorSetting.Value color = this.policy.get(Integer.valueOf(id)); + if (color == null) { + if (!this.flag("highlight_all")) { + continue; + } + + color = this.color("default_color"); + } + + this.rows.add(new ItemEspModule.Row(RenderAccess.previous(entity), position, color, id, stack.stackSize)); + if (this.rows.size() == 100) { + break; + } + } + } + } + } + + if (this.flag("show_count")) { + mergeCounts(this.rows, RenderConstants.d(1393504)); + + for (ItemEspModule.Row row : this.rows) { + if (row.label != null) { + row.width = (int)RenderAccess.width(c, row.label); + } + } + } + } + } + + public static strictfp void mergeCounts(List rows, double radiusSquared) { + for (int i = 0; i < rows.size(); i++) { + ItemEspModule.Row row = rows.get(i); + if (row.quantity != 0) { + long total = (long)row.quantity; + + for (int j = 0; j < rows.size(); j++) { + if (i != j) { + ItemEspModule.Row other = rows.get(j); + if (row.id == other.id && RenderMath.distanceSquared(row.position, other.position) < radiusSquared) { + total += (long)other.quantity; + other.quantity = 0; + } + } + } + + row.quantity = (int)Math.min(total, 99L); + row.label = total > 1L ? RenderConstants.text(1393611).replace("%u", Integer.toUnsignedString(row.quantity)) : null; + } + } + } + + public strictfp DrawPlan plan(ClientContext c, SemanticEvent e) { + DrawPlan p = new DrawPlan(); + float size = RenderConstants.f(1393448); + double offset = RenderConstants.d(1393440); + + for (ItemEspModule.Row row : this.rows) { + double[] pos = RenderMath.subtract( + RenderMath.lerp(row.previous, row.position, (double)e.timerRenderPartialTicks), new double[]{e.cameraX, e.cameraY, e.cameraZ} + ); + p.push() + .translate((float)pos[0], (float)(pos[1] + offset), (float)pos[2]) + .scale(size, size, size) + .color(row.color, RenderConstants.f(1393452)) + .graphics(168960) + .pop(); + } + + if (this.flag("show_count")) { + float pitch = c.minecraft().getRenderViewEntity().rotationPitch; + float yaw = Float.intBitsToFloat(Float.floatToRawIntBits(c.minecraft().getRenderViewEntity().rotationYaw) ^ RenderConstants.i(1393472)); + float one = RenderConstants.f(1393456); + float textScale = RenderConstants.f(1393488); + + for (ItemEspModule.Row row : this.rows) { + if (row.label != null) { + double[] pos = RenderMath.subtract( + RenderMath.lerp(row.previous, row.position, (double)e.timerRenderPartialTicks), new double[]{e.cameraX, e.cameraY, e.cameraZ} + ); + p.push() + .translate((float)pos[0], (float)(pos[1] + offset), (float)pos[2]) + .rotate(yaw, 0.0F, one, 0.0F) + .rotate(pitch, one, 0.0F, 0.0F) + .scale(textScale, textScale, textScale) + .text(row.label, (float)((double)(-row.width) * RenderConstants.d(1393496)), -4.0F, -1, true, RenderAccess.textHeight(c)) + .pop(); + } + } + } + + return p; + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + public static final strictfp class Row { + public final double[] previous; + public final double[] position; + public final ColorSetting.Value color; + public final int id; + public int quantity; + public String label; + public int width; + + public Row(double[] previous, double[] position, ColorSetting.Value color, int id, int quantity) { + this.previous = (double[])previous.clone(); + this.position = (double[])position.clone(); + this.color = color; + this.id = id; + this.quantity = quantity & 0xFF; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/ModOverlayModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/ModOverlayModule.java new file mode 100644 index 0000000..6534de9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/ModOverlayModule.java @@ -0,0 +1,334 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.RenderModuleAccess; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.ColorSetting; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final strictfp class ModOverlayModule extends CatalogModule { + private final ModuleManager manager; + private final List rows = new ArrayList<>(); + private boolean dirty; + private boolean measure; + private int mask; + private float timer; + + public ModOverlayModule(ModuleManager manager) { + super("mod_overlay", "Mod Overlay", ModuleCategory.RENDER); + this.manager = manager; + } + + @Override + public strictfp boolean listens(int t) { + return t == 0 || t == 5 || t == 9 || t == 10 || t == 11 || t == 24; + } + + private strictfp boolean category(Module m) { + switch (RenderModuleAccess.category(m)) { + case 0: + return this.flag("show_combat"); + case 1: + return this.flag("show_move"); + case 2: + return this.flag("show_visual"); + case 3: + return this.flag("show_block"); + case 4: + return this.flag("show_utility"); + default: + return true; + } + } + + private strictfp boolean eligible(Module m, boolean requireEnabled) { + return (!requireEnabled || m.isEnabled()) + && (RenderModuleAccess.observedFlags(m) & 4) == 0 + && (!this.flag("require_bound") || m.getBinding() != 0) + && this.category(m); + } + + private strictfp void text(ModOverlayModule.Row row) { + row.name = bounded(this.flag("lowercase") ? lowercase(row.module.getName()) : row.module.getName(), 19); + String status = this.flag("show_details") ? RenderModuleAccess.status(row.module) : null; + row.status = status == null ? "" : bounded(this.flag("lowercase") ? lowercase(status) : status, 31); + } + + private static strictfp String bounded(String text, int max) { + byte[] bytes = text.getBytes(StandardCharsets.UTF_8); + return bytes.length <= max ? text : new String(bytes, 0, max, StandardCharsets.UTF_8); + } + + private static strictfp String lowercase(String source) { + StringBuilder out = new StringBuilder(source.length()); + + for (int i = 0; i < source.length(); i++) { + char c = source.charAt(i); + out.append(c >= 'A' && c <= 'Z' ? (char)(c + ' ') : c); + } + + return out.toString(); + } + + private strictfp void append(Module module) { + ModOverlayModule.Row row = new ModOverlayModule.Row(module); + this.text(row); + this.rows.add(row); + } + + public strictfp void refresh() { + for (ModOverlayModule.Row row : this.rows) { + if (!this.eligible(row.module, false)) { + row.enabled = false; + } + } + + for (Module m : this.manager.all()) { + if (this.eligible(m, true)) { + ModOverlayModule.Row existing = null; + + for (ModOverlayModule.Row rowx : this.rows) { + if (rowx.module == m) { + existing = rowx; + break; + } + } + + if (existing != null) { + existing.enabled = true; + } else { + this.append(m); + } + } + } + + this.measure = true; + } + + public strictfp void control(Module module, boolean enabled) { + this.timer = Float.intBitsToFloat(1045220557); + if (module != this) { + for (ModOverlayModule.Row row : this.rows) { + if (row.module == module) { + if (!enabled) { + row.enabled = false; + } else if (this.eligible(module, false)) { + row.enabled = true; + } + + return; + } + } + + if (enabled && this.eligible(module, true)) { + this.append(module); + this.measure = true; + } + } else { + this.rows.clear(); + if (enabled) { + for (Module m : this.manager.all()) { + if (this.eligible(m, true)) { + this.append(m); + } + } + + this.measure = true; + } + } + } + + public strictfp void collect(ClientContext c) { + int next = (this.flag("show_combat") ? 1 : 0) + (this.flag("show_move") ? 2 : 0) + (this.flag("show_block") ? 4 : 0) + (this.flag("show_visual") ? 8 : 0); + next |= (this.flag("show_utility") ? 16 : 0) | (this.flag("require_bound") ? 32 : 0); + boolean oldDirty = this.dirty; + if (this.mask != next || oldDirty) { + this.refresh(); + this.mask = next; + this.dirty = false; + } + + if (oldDirty || !c.inputReady()) { + for (ModOverlayModule.Row row : this.rows) { + this.text(row); + } + + this.measure = true; + } + } + + public strictfp int redrawFlags(int old) { + return old | (!this.measure && !(this.timer > 0.0F) && !this.animating() ? 1 : 3); + } + + private strictfp boolean animating() { + float cap = RenderConstants.f(1383528); + + for (ModOverlayModule.Row row : this.rows) { + if (!row.enabled || row.progress != cap) { + return true; + } + } + + return false; + } + + public strictfp void settingAction(int kind) { + if (kind == 0) { + this.dirty = true; + } + } + + @Override + public strictfp boolean afterSettingControl(String key, ClientContext c) { + this.dirty = true; + return false; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + RenderEventPayload payload = RenderEventPayload.get(e); + if (e.type == 9 && payload != null) { + payload.redrawFlags = this.redrawFlags(payload.redrawFlags); + } else if (e.type == 11 && payload != null) { + this.settingAction(payload.action); + } else if (e.type == 0) { + this.collect(c); + } else if (e.type == 5 && e.module != null) { + this.control(e.module, e.enabled); + } else if (e.type == 24 && this.flag("require_bound")) { + this.refresh(); + } else if (e.type == 10) { + RenderAccess.submit(e, this.plan(c, (float)e.elapsedSeconds)); + } + } + + public strictfp DrawPlan plan(ClientContext c, float elapsed) { + return this.plan((float)c.minecraft().displayWidth, elapsed); + } + + public strictfp DrawPlan plan(float screen, float elapsed) { + DrawPlan var5; + try (CanvasFonts.GuiFaceScope face = CanvasFonts.guiFace()) { + var5 = this.planWithFace(screen, elapsed); + } + + return var5; + } + + private strictfp DrawPlan planWithFace(float screen, float elapsed) { + float font = this.number("text_size"); + if (this.timer > 0.0F) { + this.timer -= elapsed; + } + + double rate = RenderConstants.d(1383520); + double increase = (double)elapsed * rate; + double decrease = Double.longBitsToDouble(Double.doubleToRawLongBits((double)elapsed) ^ RenderConstants.l(1383504)) * rate; + float cap = RenderConstants.f(1383528); + + for (int i = 0; i < this.rows.size(); i++) { + ModOverlayModule.Row row = this.rows.get(i); + if (row.enabled) { + if (row.progress != cap) { + row.progress = RenderMath.min(cap, (float)((double)row.progress + increase)); + } + } else { + row.progress = (float)((double)row.progress + decrease); + if (!(row.progress > 0.0F)) { + this.rows.remove(i); + } + } + } + + float gap = RenderConstants.f(1383532); + if (this.measure) { + for (ModOverlayModule.Row row : this.rows) { + float[] bounds = new float[4]; + CanvasFonts.bounds(row.name, 0.0F, 0.0F, font, 9, bounds); + row.width = bounds[2]; + row.height = bounds[3]; + if (!row.status.isEmpty()) { + CanvasFonts.bounds(row.status, 0.0F, 0.0F, font, 9, bounds); + row.width = bounds[2] + gap + row.width; + } + } + + Collections.sort(this.rows, (a, b) -> b.width > a.width ? 1 : (a.width > b.width ? -1 : a.name.compareTo(b.name))); + this.measure = false; + } + + float y = 0.0F; + DrawPlan p = new DrawPlan().canvas(); + + for (int ix = 0; ix < this.rows.size(); ix++) { + ModOverlayModule.Row rowx = this.rows.get(ix); + float alpha = rowx.progress == cap ? cap : RenderMath.smooth(rowx.progress); + float corner = this.number("bg_rounding"); + if (ix + 1 < this.rows.size()) { + corner = RenderMath.min(rowx.width - this.rows.get(ix + 1).width, corner); + } + + corner = RenderMath.max(0.0F, corner); + float px = this.number("padding_x"); + float twiceX = px + px; + float py = this.number("padding_y"); + float barX = screen - twiceX - rowx.width * alpha; + float barWidth = twiceX + rowx.width; + float barHeight = py + py + rowx.height; + p.color(0.0F, 0.0F, 0.0F, Float.intBitsToFloat(1060320051) * alpha).rectVarying(barX, y, barWidth, barHeight, 0.0F, 0.0F, 0.0F, corner); + float textY = py + y; + float textX = screen - px - rowx.width * alpha; + float end = p.canvasText(rowx.name, textX, textY, argb(this.color("name_color"), alpha), font, 9); + if (!rowx.status.isEmpty()) { + p.canvasText(rowx.status, end + gap, textY, argb(this.color("details_color"), alpha), font, 9); + } + + py = this.number("padding_y"); + y += alpha * (py + py + rowx.height); + } + + return p; + } + + private static strictfp int argb(ColorSetting.Value color, float alpha) { + return (int)(alpha * 255.0F) << 24 | color.argb() & 16777215; + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + this.dirty = true; + } + + public static final strictfp class Row { + public final Module module; + public String name; + public String status; + public float width; + public float height; + public float progress; + public boolean enabled = true; + + private Row(Module module) { + this.module = module; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/NameTagsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/NameTagsModule.java new file mode 100644 index 0000000..6bd9340 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/NameTagsModule.java @@ -0,0 +1,340 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.render.text.Utf8Buffer; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagList; + +public final strictfp class NameTagsModule extends CatalogModule { + private final List rows = new ArrayList<>(); + private final short[] enchantId = new short[25]; + private final short[] enchantLevel = new short[25]; + + public NameTagsModule() { + super("name_tags", "Name Tags", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 5 || t == 7 || t == 18; + } + + public strictfp boolean suppressVanilla(Entity entity) { + return this.isEnabled() && entity instanceof EntityPlayer && (RelationshipService.flags(entity) & 2) == 0; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 5) { + if (e.module == this && !e.enabled) { + this.rows.clear(); + } + } else if (e.type == 18) { + this.update(c); + } else if (c.ready()) { + RenderAccess.Frame frame = RenderAccess.frame(c, e); + if (frame != null) { + RenderAccess.submit(e, this.plan(frame, e.timerRenderPartialTicks, RenderAccess.fov(c, e.timerRenderPartialTicks), RenderAccess.textHeight(c))); + } + } + } + + private strictfp void update(ClientContext c) { + this.rows.clear(); + if (c.ready()) { + double[] self = RenderAccess.position(c.player()); + double[] previousSelf = RenderAccess.previous(c.player()); + float range = this.number("range"); + + for (EntityPlayer player : c.world().playerEntities) { + boolean own = player == c.player(); + int flags = RelationshipService.flags(player); + if ((!own || this.flag("show_own_name_tag") && c.minecraft().gameSettings.thirdPersonView != 0) && (flags & 2) == 0 && !player.isDead) { + double[] position = RenderAccess.position(player); + double distance = RenderMath.distanceSquared(position, self); + if (!(distance > (double)(range * range))) { + NameTagsModule.Row row = new NameTagsModule.Row(); + row.label = this.label( + player.getName(), player.getDisplayName().getFormattedText(), flags, own, player.getHealth(), player.getAbsorptionAmount(), distance + ); + if (row.label == null) { + break; + } + + row.player = player; + row.position = position; + row.previous = RenderAccess.previous(player); + row.width = (int)RenderAccess.width(c, row.label); + row.distance = (float)StrictMath.sqrt((double)((float)distance)); + row.previousDistance = (float)StrictMath.sqrt(RenderMath.distanceSquared(previousSelf, row.previous)); + + for (int slot = 0; slot < 5; slot++) { + ItemStack stack = player.getEquipmentInSlot(slot); + row.equipment[slot].present = stack != null; + if (stack != null) { + row.equipmentCount++; + } + + if (this.flag("show_enchants") && stack != null) { + this.enchants(stack, row.equipment[slot].enchantments); + } + } + + this.rows.add(row); + if (this.rows.size() == 100) { + break; + } + } + } + } + + Collections.sort(this.rows, (a, b) -> RenderMath.compareDistance(a.distance, b.distance)); + } + } + + public strictfp String label(String plain, String display, int flags, boolean own, float health, float absorb, double distance) { + if (this.flag("use_display_name") && !this.flag("show_health") && !this.flag("show_distance")) { + return display; + } else { + Utf8Buffer text = new Utf8Buffer(128); + boolean ok = true; + if (this.flag("show_health")) { + health = RenderMath.clamp(0.0F, RenderConstants.f(1390364), health); + absorb = RenderMath.clamp(0.0F, RenderConstants.f(1390368), absorb); + char color = (char)(RenderConstants.f(1390372) > health ? 101 : 97); + if (RenderConstants.f(1390376) > health) { + color = 'c'; + } + + int precision = this.choice("health_fmt") == 1 ? 1 : 0; + if (precision == 1) { + health *= RenderConstants.f(1390380); + absorb *= RenderConstants.f(1390380); + } + + ok = text.formatResult(nativeHealth(color, precision, health)); + if (ok && absorb > 0.0F) { + ok = text.formatResult(nativeAbsorption(precision, absorb)); + } + + if (ok) { + ok = text.append(RenderConstants.text(1390585)); + } + } + + if (ok) { + if (this.flag("use_display_name")) { + ok = text.append(display); + } else { + ok = text.append(RenderConstants.text(1390593)) && text.appendByte((flags & 5) != 0 ? 97 : 99); + byte[] name = plain.getBytes(StandardCharsets.UTF_8); + int limit = Math.min(plain.length(), 64); + + for (int i = 0; ok && i < limit && i < name.length; i++) { + if ((name[i] & 255) == 194) { + i += 2; + } else { + ok = text.appendByte(name[i]); + } + } + } + } + + if (ok && this.flag("show_distance") && !own) { + double root = StrictMath.sqrt(distance); + float shortDistance = (float)root; + char colorx = (char)(RenderConstants.f(1390384) > shortDistance ? 101 : 97); + if (RenderConstants.f(1390388) > shortDistance) { + colorx = 'c'; + } + + ok = text.formatResult(String.format(Locale.ROOT, RenderConstants.text(1390596), Integer.valueOf(colorx), root)); + } + + String result = ok ? text.finish() : null; + return result == null ? (this.flag("use_display_name") ? display : plain) : result; + } + } + + private static strictfp String nativeHealth(char color, int precision, float value) { + return RenderConstants.text(1390567) + .replace("%c", String.valueOf(color)) + .replace("%.*f", String.format(Locale.ROOT, "%." + precision + "f", (double)value)); + } + + private static strictfp String nativeAbsorption(int precision, float value) { + return RenderConstants.text(1390576).replace("%.*f", String.format(Locale.ROOT, "%." + precision + "f", (double)value)); + } + + private strictfp void enchants(ItemStack stack, List output) { + NBTTagList tags = stack.getEnchantmentTagList(); + if (tags != null) { + int count = tags.tagCount(); + int limit = Math.min(count, 25); + + for (int i = 0; i < limit; i++) { + int id = tags.getCompoundTagAt(i).getShort("id") & '\uffff'; + if (id <= 62 && (2301620820134395392L >>> id & 1L) == 0L) { + int level = tags.getCompoundTagAt(i).getShort("lvl"); + this.enchantId[i] = (short)id; + this.enchantLevel[i] = (short)Math.max(0, Math.min(level, 99)); + } + } + + List indices = new ArrayList<>(); + + for (int ix = 0; ix < limit; ix++) { + indices.add(ix); + } + + Collections.sort(indices, (a, b) -> RenderConstants.i(1391296 + 4 * this.enchantId[a]) - RenderConstants.i(1391296 + 4 * this.enchantId[b])); + short[] ids = (short[])this.enchantId.clone(); + short[] levels = (short[])this.enchantLevel.clone(); + + for (int ix = 0; ix < limit; ix++) { + this.enchantId[ix] = ids[indices.get(ix)]; + this.enchantLevel[ix] = levels[indices.get(ix)]; + } + + for (int ix = 0; ix < Math.min(count, 4); ix++) { + int id = this.enchantId[ix] & '\uffff'; + String abbr = id <= 62 ? RenderConstants.pointerText(1390704 + 8 * id) : null; + String label = String.format(Locale.ROOT, RenderConstants.text(1390692), abbr, Integer.valueOf(this.enchantLevel[ix])); + if (label.length() > 5) { + label = label.substring(0, 5); + } + + output.add(label); + } + } + } + + public strictfp DrawPlan plan(RenderAccess.Frame frame, float partial, float fov, float fontHeight) { + return this.plan(frame, partial, fov, fontHeight, (row, slot) -> row.player.getEquipmentInSlot(slot)); + } + + public strictfp DrawPlan plan(RenderAccess.Frame frame, float partial, float fov, float fontHeight, NameTagsModule.EquipmentHost equipmentHost) { + DrawPlan p = new DrawPlan().op("itemDepth", RenderConstants.f(1390288)); + float fovScale = RenderConstants.f(1390292) / fov; + float one = RenderConstants.f(1390312); + float half = RenderConstants.f(1390336); + float height = RenderConstants.f(1390352); + float pad = RenderConstants.f(1390356); + double center = RenderConstants.d(1390320); + + for (NameTagsModule.Row row : this.rows) { + double[] pos = RenderMath.lerp(row.previous, row.position, (double)partial); + pos[1] += RenderConstants.d(1390296); + RenderMath.Projection projected = frame.project(RenderMath.subtract(pos, frame.camera)); + if (projected != null) { + float factor = projected.reciprocal * RenderConstants.f(1390308); + if (this.flag("distance_scaling")) { + factor = RenderMath.max(factor, one); + } + + float size = this.number("scale") * fovScale * factor; + float left = (float)((double)(-row.width) * center + RenderConstants.d(1390328)); + p.push().translate(projected.x, projected.y, projected.reciprocal * RenderConstants.f(1390304)).scale(size, size, size).disable(2929); + if (this.flag("background")) { + float right = (float)((double)row.width * center + RenderConstants.d(1390344)); + p.color(0.0F, 0.0F, 0.0F, half).vertices(5, 2, left, 0.0F, right, 0.0F, left, height, right, height); + } + + p.text(row.label, left + pad, -10.0F, -1, this.flag("text_shadow"), fontHeight); + if (this.flag("show_equipment")) { + p.enable(2929).scale(one, one, RenderConstants.f(1390360)); + int x = -(row.equipmentCount << 3); + + for (int slot = 0; slot < row.equipment.length; slot++) { + NameTagsModule.Equipment gear = row.equipment[slot]; + if (gear.present) { + ItemStack current = equipmentHost.current(row, slot); + if (current != null) { + p.item(current, (float)x, -32.0F); + x += 16; + } + } + } + + p.disable(3008).scale(half, half, half); + if (this.flag("show_enchants")) { + x = -(row.equipmentCount << 3); + + for (NameTagsModule.Equipment gear : row.equipment) { + if (gear.present) { + int y = -64; + + for (String label : gear.enchantments) { + p.text(label, (float)(x + x), (float)y, -1, true, fontHeight); + y += 8; + } + + x += 16; + } + } + } + } + + p.pop(); + } + } + + return p; + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.rows.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + public static final class Equipment { + public boolean present; + public final List enchantments = new ArrayList<>(); + } + + public interface EquipmentHost { + ItemStack current(NameTagsModule.Row var1, int var2); + } + + public static final strictfp class Row { + public double[] previous; + public double[] position; + public EntityPlayer player; + public String label; + public int width; + public int equipmentCount; + public float distance; + public float previousDistance; + public final NameTagsModule.Equipment[] equipment = new NameTagsModule.Equipment[5]; + + public Row() { + for (int i = 0; i < 5; i++) { + this.equipment[i] = new NameTagsModule.Equipment(); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/NoHurtCamModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/NoHurtCamModule.java new file mode 100644 index 0000000..114a015 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/NoHurtCamModule.java @@ -0,0 +1,63 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.entity.EntityLivingBase; + +public final class NoHurtCamModule extends CatalogModule { + private EntityLivingBase changedEntity; + private final NoHurtCamModule.State state = new NoHurtCamModule.State(); + + public NoHurtCamModule() { + super("nohurtcam", "No Hurt Cam", ModuleCategory.RENDER); + } + + public void applyPreRender(ClientContext context) { + if (context.ready()) { + if (this.changedEntity != context.player()) { + this.restore(); + this.changedEntity = context.player(); + } + + this.changedEntity.maxHurtTime = this.state.apply(this.changedEntity.maxHurtTime); + } + } + + @Override + protected void onDisable(ClientContext context) { + this.restore(); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.restore(); + } + + private void restore() { + if (this.changedEntity != null) { + this.changedEntity.maxHurtTime = this.state.restore(this.changedEntity.maxHurtTime); + this.changedEntity = null; + } + } + + public static final class State { + private int saved; + private boolean held; + + public int apply(int current) { + if (!this.held || current != Integer.MAX_VALUE) { + this.saved = current; + } + + this.held = true; + return Integer.MAX_VALUE; + } + + public int restore(int current) { + int result = this.held && current == Integer.MAX_VALUE ? this.saved : current; + this.held = false; + return result; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/NotificationsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/NotificationsModule.java new file mode 100644 index 0000000..6c60c01 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/NotificationsModule.java @@ -0,0 +1,176 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.gui.RenderModuleAccess; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.NotificationQueue; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.client.render.font.CanvasFonts; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.ColorSetting; +import java.util.Locale; + +public final strictfp class NotificationsModule extends CatalogModule { + private final ModuleManager manager; + private final NotificationQueue queue = new NotificationQueue(); + private boolean handshake; + + public NotificationsModule(ModuleManager manager) { + super("notifications", "Notifications", ModuleCategory.RENDER); + this.manager = manager; + } + + @Override + public strictfp boolean listens(int t) { + return t == 5 || t == 9 || t == 10 || t == 11 || t == 12 || t == 19; + } + + public strictfp NotificationQueue queue() { + return this.queue; + } + + public strictfp boolean clearHandshake() { + boolean old = this.handshake; + this.handshake = false; + return old; + } + + private strictfp boolean category(Module module) { + switch (RenderModuleAccess.category(module)) { + case 0: + return this.flag("show_combat"); + case 1: + return this.flag("show_move"); + case 2: + return this.flag("show_visual"); + case 3: + return this.flag("show_block"); + case 4: + return this.flag("show_utility"); + default: + return true; + } + } + + public strictfp void stateChanged(Module module, boolean enabled) { + if (module == this) { + if (!enabled) { + this.queue.clearMessages(); + } else if (!this.handshake) { + this.handshake = true; + Module gui = this.manager.find("gui"); + String binding = gui == null ? "" : RenderModuleAccess.keyName(gui.getBinding()); + this.queue.append(1, String.format(Locale.ROOT, RenderConstants.text(1384194), binding)); + } + } else if ((RenderModuleAccess.observedFlags(module) & 16) == 0 + && ((RenderModuleAccess.observedFlags(module) & 2) == 0 || !this.flag("hide_bind_only")) + && (!module.isHoldBinding() || !this.flag("hide_hold_notifs")) + && this.category(module)) { + this.queue.state(module.getName(), enabled); + } + } + + public strictfp int advance(ClientContext c, float elapsed, int flags) { + Module gui = this.manager.find("gui"); + return this.queue.advance(elapsed, flags, this.flag("hide_ingame") && (gui == null || !gui.isEnabled())); + } + + public strictfp void configAction(int kind, String label) { + if (kind != 2) { + String action = RenderConstants.pointerText(1384336 + 8 * kind); + this.queue.append(0, action + " " + (label == null ? RenderConstants.text(1384368) : label)); + } + } + + public strictfp void message(int code, String message) { + this.queue.append(2, message == null ? RenderConstants.text(1384424).replace("%d", Integer.toString(code)) : message); + } + + public strictfp void friendChanged(boolean added) { + this.queue.append(1, added ? "Friend added" : "Friend removed"); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + RenderEventPayload payload = RenderEventPayload.get(e); + if (e.type == 11 && payload != null) { + this.configAction(payload.action, payload.profileName); + } else if (e.type == 12 && payload != null) { + this.message(payload.errorCode, payload.message); + } else if (e.type == 19 && payload != null) { + this.friendChanged(payload.friendAdded); + } else if (e.type == 5 && e.module != null) { + this.stateChanged(e.module, e.enabled); + } else if (e.type == 9 && payload != null) { + payload.redrawFlags = this.advance(c, (float)e.elapsedSeconds, payload.redrawFlags); + } else if (e.type == 10) { + Module gui = this.manager.find("gui"); + if (!this.flag("hide_ingame") || gui != null && gui.isEnabled()) { + RenderAccess.submit(e, this.plan(c)); + } + } + } + + public strictfp DrawPlan plan(ClientContext c) { + DrawPlan p = new DrawPlan().canvas(); + float y = RenderConstants.f(1384036); + float initial = y; + float one = RenderConstants.f(1384048); + float white = RenderConstants.f(1384076); + float dark = RenderConstants.f(1384100); + float padding = RenderConstants.f(1384108); + float shrink = RenderConstants.f(1384112); + float font = RenderConstants.f(1384032); + + for (NotificationQueue.Message m : this.queue.messages()) { + float amount = NotificationQueue.opacity(m.age); + float x = (one - amount) * RenderConstants.f(1384072) + initial; + ColorSetting.Value color; + if (m.kind == 0) { + color = new ColorSetting.Value(RenderConstants.f(1384084), RenderConstants.f(1384088), RenderConstants.f(1384092)); + } else if (m.kind == 1) { + Module gui = this.manager.find("gui"); + color = gui == null ? new ColorSetting.Value(white, white, white) : ((ColorSetting)gui.findSetting("accent_color")).get(); + } else if (m.kind == 2) { + color = new ColorSetting.Value(white, RenderConstants.f(1384080), RenderConstants.f(1384080)); + } else { + color = new ColorSetting.Value(white, white, white); + } + + float width = CanvasFonts.width(m.text, 0, font) + RenderConstants.f(1384096); + p.color(dark, dark, dark, amount).rect(x, y, width, 42.0F, RenderConstants.f(1384104)); + float sx = x + padding; + float sy = y + padding; + float sw = RenderConstants.f(1384116); + float sh = 42.0F + shrink; + p.color(color, RenderConstants.f(1384120) * amount).rect(sx, sy, sw, sh, RenderConstants.f(1384124)); + String prefix = RenderConstants.text(1384328); + float prefixWidth = CanvasFonts.width(prefix, 0, font); + p.canvasText(prefix, (float)((double)sw * 0.5 + (double)sx), sy + sh * 0.5F, argb(color, amount), font, 18); + p.canvasText(m.text, sx + sw + padding, y + 21.0F, argb(new ColorSetting.Value(white, white, white), amount), font, 17); + y += amount * RenderConstants.f(1384128); + } + + return p; + } + + private static strictfp int argb(ColorSetting.Value c, float alpha) { + return (int)(alpha * 255.0F) << 24 | c.argb() & 16777215; + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.queue.clearMessages(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.queue.clearAll(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/PlayerEspModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/PlayerEspModule.java new file mode 100644 index 0000000..6728fb5 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/PlayerEspModule.java @@ -0,0 +1,237 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import dev.slinky.setting.ColorSetting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; + +public final strictfp class PlayerEspModule extends CatalogModule { + private final List rows = new ArrayList<>(); + + public PlayerEspModule() { + super("player_esp", "Player ESP", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int type) { + return type == 6 || type == 7 || type == 18; + } + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 18) { + this.update(c); + } else if (e.type == 6 && this.choice("mode") == 1 && c.ready()) { + RenderAccess.submit(e, this.worldPlan(c, e)); + } else if (e.type == 7 && this.choice("mode") == 0) { + RenderAccess.Frame frame = RenderAccess.frame(c, e); + if (frame != null) { + RenderAccess.submit(e, this.screenPlan(frame, e.timerRenderPartialTicks)); + } + } + } + + private strictfp void update(ClientContext c) { + if (c.ready()) { + this.rows.clear(); + double[] self = RenderAccess.position(c.player()); + int mask = (this.flag("hide_friendlies") ? 5 : 0) + 2; + float radius = this.number("range"); + + for (EntityPlayer player : c.world().playerEntities) { + int flags = RelationshipService.flags(player); + if (player != c.player() && (flags & mask) == 0 && !player.isDead) { + double[] p = RenderAccess.position(player); + double distance = RenderMath.distanceSquared(p, self); + if (!(distance > (double)(radius * radius))) { + boolean target = this.flag("override_target_color") && player == GameHooks.target(); + ColorSetting.Value color = target + ? this.color("color_target") + : (this.choice("color_mode") == 0 ? RenderAccess.nameColor(player) : this.color((flags & 5) != 0 ? "color_friendlies" : "color_enemies")); + float extra = RenderMath.max(0.0F, player.getAbsorptionAmount()); + float total = player.getMaxHealth() + extra; + float max = RenderConstants.f(1378848); + float health = total == 0.0F ? 0.0F : RenderMath.clamp(0.0F, max, (player.getHealth() + extra) / total); + float absorb = player.getHealth() == 0.0F ? 0.0F : RenderMath.clamp(0.0F, max, extra / player.getHealth()); + this.rows.add(new PlayerEspModule.Row(RenderAccess.previous(player), p, color, (float)distance, player.hurtTime, health, absorb, target)); + if (this.rows.size() == 100) { + break; + } + } + } + } + + Collections.sort(this.rows, (a, b) -> RenderMath.compareDistance(a.distance, b.distance)); + } + } + + private strictfp ColorSetting.Value hurt(PlayerEspModule.Row row, float partial, boolean world) { + if (row.hurt > 0 && this.flag("hurt_effect")) { + float t = RenderMath.min(RenderConstants.f(world ? 1378800 : 1378824), (float)row.hurt - partial) * RenderConstants.f(world ? 1378804 : 1378828); + return RenderMath.blend(row.color, new ColorSetting.Value(RenderConstants.f(world ? 1378792 : 1378832), 0.0F, 0.0F), t); + } else { + return row.color; + } + } + + public strictfp DrawPlan screenPlan(RenderAccess.Frame frame, float partial) { + DrawPlan plan = new DrawPlan().lineWidth(this.number("line_width")); + + for (PlayerEspModule.Row row : this.rows) { + double[] relative = RenderMath.subtract(RenderMath.lerp(row.previous, row.position, (double)partial), frame.camera); + float minx = 0.0F; + float maxx = 0.0F; + float miny = 0.0F; + float maxy = 0.0F; + boolean valid = true; + + for (int i = 0; i < 8; i++) { + double[] corner = new double[]{ + RenderConstants.d(1378976 + i * 24), RenderConstants.d(1378984 + i * 24), i == 0 ? -0.4 : RenderConstants.d(1378992 + i * 24) + }; + RenderMath.Projection p = frame.project(RenderMath.add(relative, corner)); + if (p == null) { + valid = false; + break; + } + + if (i == 0) { + maxx = p.x; + minx = p.x; + maxy = p.y; + miny = p.y; + } else { + if (minx > p.x) { + minx = p.x; + } else if (p.x > maxx) { + maxx = p.x; + } + + if (miny > p.y) { + miny = p.y; + } else if (p.y > maxy) { + maxy = p.y; + } + } + } + + if (valid && RenderMath.visibleBounds(minx, miny, maxx, maxy, frame.width, frame.height)) { + ColorSetting.Value color = this.hurt(row, partial, false); + if (this.flag("show_2d_box") || row.target) { + plan.push().translate(minx, miny, 0.0F).scale(maxx - minx, maxy - miny, RenderConstants.f(1378832)); + if (this.flag("filled")) { + plan.color(color, RenderConstants.f(1378836)).graphics(169120); + } + + plan.color(color, 1.0F).graphics(169168).pop(); + } + + if (this.flag("show_health_bar")) { + float x = minx - this.number("line_width") + RenderConstants.f(1378840) + RenderConstants.f(1378844); + healthBar(plan, row, x, miny, maxy); + } + } + } + + return plan; + } + + public static strictfp void healthBar(DrawPlan p, PlayerEspModule.Row row, float x, float lower, float upper) { + float middle = RenderMath.lerp(upper, lower, row.health); + p.color(0.0F, 0.0F, 0.0F, 1.0F).line(x, lower, x, middle); + if (row.absorption > 0.0F) { + float split = RenderMath.lerp(middle, upper, row.absorption); + p.color(RenderConstants.f(1378852), RenderConstants.f(1378856), 0.0F, 1.0F).line(x, middle, x, split); + middle = split; + } + + float peak = RenderConstants.f(1378852); + p.color(RenderMath.lerp(peak, 0.0F, row.health), RenderMath.lerp(0.0F, peak, row.health), 0.0F, 1.0F).line(x, middle, x, upper); + } + + private strictfp DrawPlan worldPlan(ClientContext c, SemanticEvent e) { + DrawPlan p = new DrawPlan().lineWidth(this.number("line_width")); + float sy = RenderConstants.f(1378792); + float sx = RenderConstants.f(1378796); + float yaw = Float.intBitsToFloat(Float.floatToRawIntBits(c.minecraft().getRenderViewEntity().rotationYaw) ^ RenderConstants.i(1378768)); + + for (PlayerEspModule.Row row : this.rows) { + double[] relative = RenderMath.subtract( + RenderMath.lerp(row.previous, row.position, (double)e.timerRenderPartialTicks), new double[]{e.cameraX, e.cameraY, e.cameraZ} + ); + p.push().translate((float)relative[0], (float)(relative[1] + RenderConstants.d(1378784)), (float)relative[2]).scale(sx, sy, sx); + if (this.flag("show_2d_box") || row.target) { + ColorSetting.Value color = this.hurt(row, e.timerRenderPartialTicks, true); + if (this.flag("filled")) { + p.color(color, RenderConstants.f(1378808)).graphics(168960); + } + + p.color(color, 1.0F).graphics(169008); + } + + if (this.flag("show_health_bar")) { + p.rotate(yaw, 0.0F, sy, 0.0F); + healthBar(p, row, RenderConstants.f(1378816), sy, RenderConstants.f(1378820)); + } + + p.pop(); + } + + return p; + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public static final strictfp class Row { + public final double[] previous; + public final double[] position; + public final ColorSetting.Value color; + public final float distance; + public final float health; + public final float absorption; + public final int hurt; + public final boolean target; + + public Row( + double[] previous, double[] position, ColorSetting.Value color, float distance, int hurt, float health, float absorption, boolean target + ) { + this.previous = (double[])previous.clone(); + this.position = (double[])position.clone(); + this.color = color; + this.distance = distance; + this.hurt = hurt; + this.health = health; + this.absorption = absorption; + this.target = target; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/PointersModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/PointersModule.java new file mode 100644 index 0000000..f47773d --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/PointersModule.java @@ -0,0 +1,163 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericServices; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import dev.slinky.setting.ColorSetting; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; + +public final strictfp class PointersModule extends CatalogModule { + private final List rows = new ArrayList<>(); + + public strictfp List rows() { + return Collections.unmodifiableList(this.rows); + } + + public PointersModule() { + super("pointers", "Pointers", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 7 || t == 18; + } + + public static strictfp float angle(double x, double z, float yaw, int degrees, int pi, int adjust) { + return RotationMath.wrap((float)(NumericServices.atan2(z, x) * RenderConstants.d(degrees) / RenderConstants.d(pi) + RenderConstants.d(adjust)) - yaw); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 18) { + if (!c.ready()) { + return; + } + + this.rows.clear(); + double[] self = RenderAccess.position(c.player()); + double[] previous = RenderAccess.previous(c.player()); + float range = this.number("range"); + float yaw = c.minecraft().getRenderViewEntity().rotationYaw; + int mask = (this.flag("hide_friendlies") ? 5 : 0) + 2; + + for (EntityPlayer player : c.world().playerEntities) { + int flags = RelationshipService.flags(player); + if (player != c.player() && !player.isDead && (flags & mask) == 0) { + double distance = RenderMath.distanceSquared(RenderAccess.position(player), self); + if (!(distance > (double)(range * range)) + && !(this.number("ignore_fov") > Math.abs(angle(player.posX - self[0], player.posZ - self[2], yaw, 1391808, 1391816, 1391824)))) { + ColorSetting.Value color = this.choice("color_mode") == 1 + ? RenderAccess.nameColor(player) + : (this.choice("color_mode") == 2 ? this.color((flags & 5) != 0 ? "color_friendlies" : "color_enemies") : null); + this.rows.add(new PointersModule.Row(player, self, previous, color)); + if (this.rows.size() == 100) { + break; + } + } + } + } + + Collections.sort(this.rows, (a, b) -> RenderMath.compareDistance(a.distance, b.distance)); + } else if (c.ready()) { + RenderAccess.Frame frame = RenderAccess.frame(c, e); + if (frame != null) { + RenderAccess.submit( + e, + this.plan(frame, e.timerRenderPartialTicks, c.minecraft().getRenderViewEntity().rotationYaw, c.minecraft().getRenderViewEntity().rotationPitch) + ); + } + } + } + + public strictfp DrawPlan plan(RenderAccess.Frame frame, float partial, float yaw, float pitch) { + DrawPlan p = new DrawPlan().push().translate(frame.width * RenderConstants.f(1391728), frame.height * RenderConstants.f(1391728), 0.0F); + if (this.choice("style") != 0) { + p.rotate(RenderConstants.f(1391736) - RenderMath.max(RenderConstants.f(1391732), pitch), RenderConstants.f(1391740), 0.0F, 0.0F); + } + + float one = RenderConstants.f(1391740); + float span = (float)this.range("near_far_range").upper - (float)this.range("near_far_range").lower; + if (span == 0.0F) { + span = RenderConstants.f(1391744); + } + + p.lineWidth(one).enable(2848); + + for (PointersModule.Row row : this.rows) { + double x = (double)RenderMath.lerp((float)row.px, (float)row.x, partial) - frame.camera[0]; + double z = (double)RenderMath.lerp((float)row.pz, (float)row.z, partial) - frame.camera[2]; + float angle = angle(x, z, yaw, 1391752, 1391760, 1391768); + float size = this.number("scale") * RenderConstants.f(1391776); + float distance = RenderMath.lerp(row.previousDistance, row.distance, partial); + float factor = RenderMath.clamp(0.0F, one, (distance - (float)this.range("near_far_range").lower) / span); + float radius = this.number("radius"); + if (this.flag("scale_radius")) { + radius *= factor + one; + } + + ColorSetting.Value color = this.choice("color_mode") == 0 ? RenderMath.blend(this.color("color_near"), this.color("color_far"), factor) : row.color; + p.push() + .rotate(angle, 0.0F, 0.0F, one) + .scale(size, size, size) + .translate(0.0F, Float.intBitsToFloat(Float.floatToRawIntBits(radius) ^ RenderConstants.i(1391792)), 0.0F) + .color(color, 1.0F) + .graphics(169280) + .color(0.0F, 0.0F, 0.0F, 1.0F) + .graphics(169328) + .pop(); + } + + return p.pop(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.rows.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("style").isConfigured()) { + return null; + } else { + int index = this.choice("style"); + return StatusText.label(this.getName(), index); + } + } + + public static final strictfp class Row { + public final double x; + public final double z; + public final double px; + public final double pz; + public final float distance; + public final float previousDistance; + public final ColorSetting.Value color; + + public Row(EntityPlayer e, double[] self, double[] previous, ColorSetting.Value color) { + this(RenderAccess.position(e), RenderAccess.previous(e), self, previous, color); + } + + public Row(double[] position, double[] old, double[] self, double[] previous, ColorSetting.Value color) { + this.x = position[0]; + this.z = position[2]; + this.px = old[0]; + this.pz = old[2]; + this.distance = (float)StrictMath.sqrt((double)((float)RenderMath.distanceSquared(position, self))); + this.previousDistance = (float)StrictMath.sqrt(RenderMath.distanceSquared(old, previous)); + this.color = color; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/render/TrajectoriesModule.java b/SlinkyClient/src/main/java/dev/slinky/module/render/TrajectoriesModule.java new file mode 100644 index 0000000..77072d7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/render/TrajectoriesModule.java @@ -0,0 +1,188 @@ +package dev.slinky.module.render; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.DrawPlan; +import dev.slinky.client.render.RenderAccess; +import dev.slinky.client.render.RenderConstants; +import dev.slinky.client.render.RenderMath; +import dev.slinky.client.render.world.TrajectoryPrediction; +import dev.slinky.client.rotation.RotationService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class TrajectoriesModule extends CatalogModule { + private float previousSpeed; + private float speed; + private float gravity; + private TrajectoryPrediction.Result prediction; + private final List candidates = new ArrayList<>(); + + public TrajectoriesModule() { + super("trajectories", "Trajectories", ModuleCategory.RENDER); + } + + @Override + public strictfp boolean listens(int t) { + return t == 5 || t == 6 || t == 18; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 5) { + if (e.module == this && !e.enabled) { + this.candidates.clear(); + } + } else if (e.type == 18) { + this.update(c); + } else if (c.ready() && this.prediction != null) { + RenderAccess.submit(e, this.plan(c, e)); + } + } + + private strictfp TrajectoryPrediction.Launch launch(ClientContext c, double[] position, float partial) { + return TrajectoryPrediction.launch( + position, c.player().rotationYaw, c.player().rotationPitch, partial, this.previousSpeed, this.speed, false, c.player().isSneaking() + ); + } + + private strictfp void update(ClientContext c) { + this.prediction = null; + if (!RotationService.storedRotationValid() && c.inputReady() && c.minecraft().gameSettings.thirdPersonView == 0) { + ItemStack held = c.player().getHeldItem(); + if (held != null) { + int id = Item.getIdFromItem(held.getItem()); + boolean pearl = id == 368; + if (pearl) { + if (!this.flag("render_pearls")) { + return; + } + } else if (id != 332 && id != 344) { + if (id != 261) { + return; + } + } else if (!this.flag("render_throwables")) { + return; + } + + if (id != 261) { + this.previousSpeed = this.speed = 1.5F; + this.gravity = Float.intBitsToFloat(1022739087); + } else { + if (!this.flag("render_bow")) { + return; + } + + this.gravity = Float.intBitsToFloat(1028443341); + if (c.player().isUsingItem()) { + int ticks = c.player().getItemInUseCount(); + float charge = TrajectoryPrediction.charge(72000 - ticks); + double threshold = RenderConstants.d(1396240); + if (threshold > (double)charge) { + this.speed = 0.0F; + return; + } + + this.speed = TrajectoryPrediction.speed(charge); + if (this.speed == 0.0F) { + return; + } + + charge = TrajectoryPrediction.charge(71999 - ticks); + this.previousSpeed = threshold > (double)charge ? 0.0F : TrajectoryPrediction.speed(charge); + } else { + if (!this.flag("render_uncharged_bow")) { + return; + } + + this.previousSpeed = this.speed = 3.0F; + } + } + + TrajectoryPrediction.Launch launch = this.launch(c, RenderAccess.position(c.player()), 0.0F); + double[] broad = TrajectoryPrediction.broad(launch); + this.candidates.clear(); + double margin = RenderConstants.d(1396280); + + for (Entity entity : c.world().loadedEntityList) { + if (entity != c.player() && entity.canBeCollidedWith()) { + AxisAlignedBB b = entity.getEntityBoundingBox(); + double[] box = new double[]{b.minX - margin, b.minY - margin, b.minZ - margin, b.maxX + margin, b.maxY + margin, margin + b.maxZ}; + if (TrajectoryPrediction.intersects(box, broad)) { + this.candidates + .add(new TrajectoryPrediction.Candidate(box, RenderMath.subtract(RenderAccess.position(entity), RenderAccess.previous(entity)))); + } + } + } + + this.prediction = TrajectoryPrediction.predict( + launch, + this.candidates, + (from, to) -> { + MovingObjectPosition hit = c.world().rayTraceBlocks(new Vec3(from[0], from[1], from[2]), new Vec3(to[0], to[1], to[2]), false, true, false); + if (hit == null) { + return null; + } else { + BlockPos block = hit.getBlockPos(); + return new TrajectoryPrediction.BlockHit( + new double[]{hit.hitVec.xCoord, hit.hitVec.yCoord, hit.hitVec.zCoord}, + new double[]{(double)block.getX(), (double)block.getY(), (double)block.getZ()} + ); + } + }, + this.gravity, + pearl + ); + } + } + } + + public strictfp DrawPlan plan(ClientContext c, SemanticEvent e) { + DrawPlan p = new DrawPlan().lineWidth(this.number("line_width")).color(this.color(this.prediction.hitColor ? "color_hit" : "color_miss"), 1.0F); + double[] camera = new double[]{e.cameraX, e.cameraY, e.cameraZ}; + TrajectoryPrediction.Launch launch = this.launch( + c, RenderMath.lerp(RenderAccess.previous(c.player()), RenderAccess.position(c.player()), (double)e.timerRenderPartialTicks), e.timerRenderPartialTicks + ); + p.vertices(3, 3, TrajectoryPrediction.renderPoints(launch, this.prediction.steps, this.gravity, camera)); + if (this.prediction.marker) { + double[] low = Arrays.copyOfRange(this.prediction.box, 0, 3); + double[] high = Arrays.copyOfRange(this.prediction.box, 3, 6); + double[] center = RenderMath.lerp(low, high, RenderConstants.d(1396216)); + double[] half = RenderMath.subtract(high, center); + double[] motion = RenderMath.scale(this.prediction.motion, RenderConstants.d(1396224) - (double)e.timerRenderPartialTicks); + double[] translation = RenderMath.subtract(RenderMath.subtract(center, camera), motion); + p.push() + .translate((float)translation[0], (float)translation[1], (float)translation[2]) + .scale((float)half[0], (float)half[1], (float)half[2]) + .graphics(169008) + .pop(); + } + + return p; + } + + public strictfp TrajectoryPrediction.Result prediction() { + return this.prediction; + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.candidates.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.candidates.clear(); + this.prediction = null; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/AntiBotModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/AntiBotModule.java new file mode 100644 index 0000000..15aee21 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/AntiBotModule.java @@ -0,0 +1,154 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public final class AntiBotModule extends CatalogModule { + private final Map history = new HashMap<>(); + private Object world; + + public AntiBotModule() { + super("antibot", "Anti Bot", ModuleCategory.UTILITY); + } + + public static boolean validName(String text) { + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (c == 167) { + i++; + } else { + int upper = c & '\uffdf'; + if ((upper - 65 & 65535) < 26 || c == '_' || (c - '0' & 65535) < 10) { + return true; + } + } + } + + return false; + } + + @Override + public boolean listens(int type) { + return type == 0; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (this.world != context.world()) { + this.history.clear(); + this.world = context.world(); + } + + if (context.ready()) { + for (EntityPlayer player : context.world().playerEntities) { + if (player != context.player()) { + AntiBotModule.History entry = this.history.get(player.getUniqueID()); + if (entry == null) { + entry = new AntiBotModule.History(); + this.history.put(player.getUniqueID(), entry); + } + + entry.movement(player.prevPosX, player.prevPosZ, player.posX, player.posZ); + boolean rejected = this.reject(context, player, entry); + RelationshipService.set(player, 2, rejected); + } + } + } + } + + private boolean reject(ClientContext context, EntityPlayer player, AntiBotModule.History entry) { + if (this.flag("always_stationary") && 1.0 > entry.travelledSquared) { + return true; + } else { + int mode = this.choice("invalid_uuid"); + if (mode == 0 || ((int)player.getUniqueID().getMostSignificantBits() & 61440) != 8192 || mode != 2 && !(1.0 > entry.travelledSquared)) { + if (this.flag("sleeping") && player.isPlayerSleeping()) { + return true; + } else { + int age = player.ticksExisted; + if (this.flag("always_invis") && !entry.armorSeen) { + if (player.isInvisibleToPlayer(context.player())) { + boolean found = false; + + for (int i = 0; i < 4; i++) { + ItemStack armor = player.inventory.armorInventory[i]; + if (armor != null && armor.getItem() != null && Item.getIdFromItem(armor.getItem()) != 0) { + found = true; + break; + } + } + + if (!found) { + return true; + } + } + + if (age >= 21) { + entry.armorSeen = true; + } + } + + float threshold = this.number("min_age"); + if (0.0F < threshold && !entry.ageAccepted) { + if ((float)age < threshold) { + return true; + } + + entry.ageAccepted = true; + } + + if (this.flag("invalid_username") && !entry.nameAccepted) { + entry.nameAccepted = validName(player.getName()); + if (!entry.nameAccepted) { + return true; + } + } + + return false; + } + } else { + return true; + } + } + } + + private void clear() { + this.history.clear(); + this.world = null; + RelationshipService.clear(2); + } + + @Override + protected void onDisable(ClientContext context) { + this.clear(); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.clear(); + } + + public static final class History { + public double travelledSquared; + public boolean armorSeen; + public boolean ageAccepted; + public boolean nameAccepted; + + public void movement(double previousX, double previousZ, double x, double z) { + double dx = previousX - x; + double dz = previousZ - z; + double zSquared = dz * dz; + double xSquared = dx * dx; + this.travelledSquared += xSquared + zSquared; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoPotModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoPotModule.java new file mode 100644 index 0000000..6c753d8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoPotModule.java @@ -0,0 +1,195 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.ConsumableAccess; +import dev.slinky.client.inventory.ConsumableDelay; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; + +public final strictfp class AutoPotModule extends CatalogModule { + private final AutoPotModule.State state = new AutoPotModule.State(); + private final ConsumableAccess.Live access; + private final ConsumableDelay delay = new ConsumableDelay(); + + public AutoPotModule(ModuleManager modules) { + super("autopot", "Auto Pot", ModuleCategory.UTILITY); + this.access = new ConsumableAccess.Live(this, modules); + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 4 || type == 5; + } + + @Override + protected strictfp void onEnable(ClientContext c) { + this.access.context = c; + this.state.enable(this.access, this.flag("prevent_waste"), this.flag("double_splash")); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 4 && e.module == this) { + if (this.state.cancelDisable()) { + e.cancelled = true; + } + } else if (e.type == 0) { + this.access.context = c; + this.state + .tick(this.access, () -> this.delay.switching(this.number("delay"), RotationRandom.now(), RotationRandom.SHARED), this.flag("use_non_health")); + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.access.cleanup(); + this.state.phase = 0; + this.state.uses = 0; + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.access.cleanup(); + this.state.phase = 0; + this.state.uses = 0; + this.state.continuing = false; + this.state.timer = 0.0F; + } + + public interface Delay { + float sample(); + } + + public static final class State { + public int phase; + public int uses; + public int pending; + public int selected; + public int previous; + public boolean continuing; + public float timer; + + public strictfp void enable(ConsumableAccess a, boolean prevent, boolean multiple) { + if (a.ready()) { + int count = InventoryActions.truncateDouble(((double)(a.maximumHealth() - a.health()) + 0.5) * 0.125); + if (count == 0) { + count = 1; + if (prevent) { + this.phase = 4; + return; + } + } + + if (multiple) { + this.uses = count; + this.pending = 0; + } else { + this.uses = 1; + this.pending = prevent ? count - 1 : 5; + } + } + } + + public strictfp boolean cancelDisable() { + if (this.phase != 4 && this.pending > 0) { + this.uses++; + this.pending--; + return true; + } else { + return false; + } + } + + public strictfp void tick(ConsumableAccess a, AutoPotModule.Delay delay, boolean nonHealth) { + for (int pass = 0; pass < 4; pass++) { + if (this.timer > 0.0F) { + this.timer += -1.0F; + break; + } + + if (!a.ready()) { + this.continuing = false; + this.phase = 4; + a.disable(); + return; + } + + switch (this.phase) { + case 0: + int slot = 0; + + while (slot < 9 && (a.type(slot) != 373 || (a.damage(slot) & 16384) == 0 || (a.damage(slot) & 15) != 5 && !nonHealth)) { + slot++; + } + + if (slot == 9) { + this.uses = 0; + this.phase = this.continuing ? 3 : 4; + this.continuing = false; + if (this.phase == 4) { + a.disable(); + } + + return; + } + + this.selected = slot; + if (!this.continuing) { + this.previous = a.current(); + a.remember(); + } + + this.continuing = false; + this.phase = this.selected == this.previous ? 2 : 1; + break; + case 1: + if (!a.claim()) { + this.phase = 4; + a.disable(); + return; + } + + a.select(this.selected); + this.phase = 2; + this.timer = delay.sample() + this.timer; + break; + case 2: + if (a.usingItem()) { + return; + } + + a.use(); + this.uses--; + this.phase = 3; + if (this.selected != this.previous) { + this.timer = delay.sample() + 1.0F + this.timer; + } + break; + case 3: + if (this.uses > 0) { + this.continuing = true; + this.phase = 0; + } else { + a.select(this.previous); + this.phase = 4; + } + break; + case 4: + a.release(); + a.disable(); + return; + default: + throw new IllegalStateException("Invalid potion phase"); + } + } + + if (this.phase == 4) { + a.disable(); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoRodModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoRodModule.java new file mode 100644 index 0000000..0e337d9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoRodModule.java @@ -0,0 +1,346 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.client.inventory.ConsumableDelay; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.TimingAccess; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.combat.WeaponsModule; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class AutoRodModule extends CatalogModule { + private final ModuleManager modules; + private final WeaponsModule weapons; + private final ConsumableDelay switchDelay = new ConsumableDelay(); + private final RotationRandom.Smooth throwRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth throwGate = new RotationRandom.Smooth(); + private int phase; + private int previous = -1; + private int selected; + private int retract; + private float timer; + private boolean cancel; + private boolean rod; + private boolean inputSeen; + private InventoryPlayer owner; + + public AutoRodModule(ModuleManager modules, WeaponsModule weapons) { + super("autorod", "Auto Rod", ModuleCategory.UTILITY); + this.modules = modules; + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 4 || type == 5 || type == 14; + } + + @Override + protected strictfp void onEnable(ClientContext c) { + this.phase = 0; + } + + private strictfp void restore() { + if (this.owner != null && this.previous != -1) { + this.owner.currentItem = this.previous; + } + + this.previous = -1; + this.owner = null; + } + + private strictfp void release() { + ModuleActionService.release(this); + } + + private strictfp float delay() { + return this.flag("randomize_delays") + ? this.switchDelay.switching(this.number("delay"), RotationRandom.now(), RotationRandom.SHARED) + : this.number("delay"); + } + + public static strictfp int choose(int[] types, boolean throwables) { + int candidate = -1; + + for (int i = 0; i < 9; i++) { + if ((types[i] == 332 || types[i] == 344) && throwables) { + return i; + } + + if (types[i] == 346) { + candidate = i; + if (!throwables) { + return i; + } + } + } + + return candidate; + } + + private strictfp int scan(InventoryPlayer inventory) { + int candidate = -1; + this.rod = false; + + for (int i = 0; i < 9; i++) { + int type = InventoryActions.type(inventory.getStackInSlot(i)); + if ((type == 332 || type == 344) && this.flag("allow_throwables")) { + return i; + } + + if (type == 346) { + this.rod = true; + candidate = i; + if (!this.flag("allow_throwables")) { + return i; + } + } + } + + return candidate; + } + + public static strictfp int retractTicks(Vec3 origin, Vec3 target, float speed) { + float delay; + if (target == null) { + delay = 10.0F / speed; + } else { + Vec3 closest = new Vec3( + RotationMath.clamp(target.xCoord - 0.3, target.xCoord + 0.3, origin.xCoord), + RotationMath.clamp(target.yCoord, target.yCoord + 1.8, origin.yCoord), + RotationMath.clamp(target.zCoord - 0.3, target.zCoord + 0.3, origin.zCoord) + ); + delay = (float)(RotationMath.distance(origin, closest) / (double)speed); + } + + return NumericMath.truncateInt(NumericMath.ceiling(delay)); + } + + private strictfp float throwingDelay() { + float speed = this.number("throw_speed"); + if (!this.flag("randomize_delays")) { + return 20.0F / speed; + } else { + double now = RotationRandom.now(); + RotationRandom r = RotationRandom.SHARED; + float result = 20.0F / (speed * this.throwRandom.sample(0.5F, 1.0F, 1.0, now, r)); + if (this.throwGate.gate(0.01F, 0.03F, 30.0, now, r)) { + result += r.interval(1.0F, 2.0F); + } + + return result; + } + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 4 && e.module == this) { + if (!this.cancel) { + if (this.isHoldBinding()) { + this.cancel = true; + } else { + if (this.phase == 6) { + return; + } + + if (this.phase == 3) { + this.phase = 7; + } + } + + e.cancelled = true; + } + } else if (e.type == 14) { + if (!e.active && c.ready() && InventoryActions.type(c.player().getHeldItem()) == 346) { + if (this.inputSeen) { + e.cancelled = true; + } else { + this.inputSeen = true; + } + } + } else if (e.type == 0 && c.inputReady()) { + if (this.cancel) { + this.restore(); + this.release(); + this.modules.requestEnabled(this, false); + this.cancel = false; + } else { + int pass = 0; + + while (true) { + label180: { + if (pass < 3) { + MovingObjectPosition hit = c.minecraft().objectMouseOver; + if (this.flag("require_not_mouse_over") && hit != null && hit.typeOfHit == MovingObjectType.ENTITY) { + this.restore(); + this.release(); + this.phase = 6; + } else { + label190: { + if (this.phase == 7) { + this.restore(); + this.release(); + this.phase = 0; + return; + } + + if (this.retract != 0) { + this.retract--; + } + + if (this.timer > 0.0F) { + this.timer--; + if (this.timer > 0.0F) { + break label190; + } + } + + InventoryPlayer inv = c.player().inventory; + int current = inv.currentItem; + if (this.phase > 1 && current != this.selected) { + this.release(); + this.previous = -1; + this.owner = null; + this.phase = 6; + } else if (this.phase <= 5) { + if (this.phase == 0) { + int slot = this.scan(inv); + if (slot >= 0 && ModuleActionService.claim(this)) { + this.owner = inv; + this.previous = current; + this.selected = slot; + if (this.flag("always_switch_to_weapon")) { + int weapon = this.weapons.firstAllowedSlot(inv); + if (weapon != -1) { + this.previous = weapon; + } + + current = this.previous; + } + + this.phase = this.selected == current ? 2 : 1; + break label180; + } + + this.phase = 6; + } else { + label148: { + if (this.phase == 1) { + inv.currentItem = this.selected; + this.phase = 2; + this.inputSeen = false; + } else { + if (this.phase == 2) { + int slot = this.scan(inv); + if (slot < 0) { + this.phase = 5; + return; + } + + if (slot == current) { + InventoryActions.pressCount(c.minecraft().gameSettings.keyBindUseItem, 1); + if (this.rod) { + this.phase = 3; + Entity target = GameHooks.target(); + Vec3 targetPos = target == null ? null : TimingAccess.server(target); + this.retract = retractTicks( + new Vec3(c.player().posX, c.player().posY + 1.62, c.player().posZ), targetPos, this.number("retract_speed") + ); + this.timer = this.delay() + this.timer; + return; + } + + if (!this.isHoldBinding()) { + this.phase = 5; + this.timer = this.delay() + this.timer; + } else { + this.timer = this.throwingDelay() + this.timer; + } + + return; + } + + this.phase = 1; + this.selected = slot; + this.timer = this.delay() + this.timer; + break label180; + } + + if (this.phase == 3) { + if (this.retract != 0) { + break label148; + } + + this.phase = this.previous == this.selected ? 4 : 5; + } else { + if (this.phase == 4) { + inv.currentItem = (this.previous + 1) % 9; + this.phase = 5; + return; + } + + if (this.phase == 5) { + this.phase = 6; + this.restore(); + this.release(); + this.timer = this.delay() + this.timer; + break label148; + } + } + } + + this.timer = this.delay() + this.timer; + break label180; + } + } + } + } + } + } + + if (this.phase == 6) { + if (this.isHoldBinding()) { + this.phase = 0; + } else { + this.modules.requestEnabled(this, false); + } + } + + return; + } + + pass++; + } + } + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.restore(); + this.release(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.restore(); + this.release(); + this.cancel = false; + this.phase = 0; + this.timer = 0.0F; + this.retract = 0; + this.inputSeen = false; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoSoupModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoSoupModule.java new file mode 100644 index 0000000..015fd69 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/AutoSoupModule.java @@ -0,0 +1,257 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.ConsumableAccess; +import dev.slinky.client.inventory.ConsumableDelay; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.NumberSetting; + +public final strictfp class AutoSoupModule extends CatalogModule { + private final AutoSoupModule.State state = new AutoSoupModule.State(); + private final ConsumableAccess.Live access; + private final ConsumableDelay delay = new ConsumableDelay(); + private final RotationRandom.Smooth skip = new RotationRandom.Smooth(); + + public AutoSoupModule(ModuleManager modules) { + super("autosoup", "Auto Soup", ModuleCategory.UTILITY); + this.access = new ConsumableAccess.Live(this, modules); + this.itemPolicy("allowed_items"); + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 4 || type == 5; + } + + @Override + protected strictfp void onEnable(ClientContext c) { + this.state.enable(); + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 4 && e.module == this) { + if (this.state.cancelDisable()) { + e.cancelled = true; + } + } else if (e.type == 0) { + this.access.context = c; + this.state + .tick( + this.access, + new AutoSoupModule.Policy() { + @Override + public strictfp boolean matches(int type) { + return AutoSoupModule.this.flag("override_item") + ? ItemPolicyService.contains(AutoSoupModule.this.names("allowed_items"), type) + : type == 282 || type == 413; + } + + @Override + public strictfp boolean skipCandidate() { + return AutoSoupModule.this.skip.gate(0.01F, 0.08F, 30.0, RotationRandom.now(), RotationRandom.SHARED); + } + + @Override + public strictfp float delay(float base) { + return AutoSoupModule.this.delay.soup(base, AutoSoupModule.this.number("randomization"), RotationRandom.now(), RotationRandom.SHARED); + } + }, + this.number("single_soup_max_hp"), + this.number("double_soup_max_hp"), + this.number("delay_before"), + this.number("delay_between"), + this.number("delay_after"), + this.flag("drop_bowls") + ); + } + } + + @Override + public strictfp boolean afterSettingControl(String key, ClientContext c) { + if (!"single_soup_max_hp".equals(key)) { + return false; + } else { + NumberSetting single = (NumberSetting)this.findSetting(key); + NumberSetting twice = (NumberSetting)this.findSetting("double_soup_max_hp"); + if (single.isConfigured() && twice.isConfigured() && twice.floatValue() > single.floatValue()) { + twice.set(Double.valueOf((double)single.floatValue())); + return true; + } else { + return false; + } + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.access.cleanup(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.access.cleanup(); + this.state.enable(); + } + + public interface Policy { + boolean matches(int var1); + + boolean skipCandidate(); + + float delay(float var1); + } + + public static final class State { + public int phase; + public int selected; + public int previous; + public boolean cancel; + public boolean reuse; + public boolean repeat; + public boolean soup; + public float timer; + + public strictfp void enable() { + this.phase = 0; + this.reuse = false; + this.timer = 0.0F; + this.cancel = false; + } + + public strictfp boolean cancelDisable() { + if (this.phase != 0 && this.phase != 6) { + this.cancel = true; + return true; + } else { + return false; + } + } + + private strictfp void after(AutoSoupModule.Policy p, float between) { + this.phase = 5; + if (this.selected != this.previous) { + this.timer = this.timer + p.delay(between); + if (this.timer <= 0.0F) { + this.timer++; + } + } + } + + public strictfp void tick(ConsumableAccess a, AutoSoupModule.Policy p, float single, float twice, float before, float between, float after, boolean drop) { + if (!this.cancel || this.phase != 6 && this.phase != 0) { + if (!a.ready()) { + this.reuse = false; + this.phase = 0; + } else { + for (int pass = 0; pass < 3; pass++) { + if (this.timer > 0.0F) { + this.timer += -1.0F; + return; + } + + switch (this.phase) { + case 0: + float hp = a.health(); + if (hp > single) { + return; + } + + this.timer = this.timer + p.delay(before); + this.repeat = hp <= twice; + this.phase = 1; + break; + case 1: + int start = a.current(); + int found = -1; + + for (int i = 0; i < 9; i++) { + int candidate = (start + i) % 9; + if (candidate != start || !this.reuse) { + int type = a.type(candidate); + if (p.matches(type)) { + this.soup = type == 413 || type == 282; + found = candidate; + if (!p.skipCandidate()) { + break; + } + } + } + } + + if (found == -1) { + this.phase = this.reuse ? 5 : 6; + this.reuse = false; + return; + } + + this.selected = found; + if (!this.reuse) { + this.previous = a.current(); + a.remember(); + } + + this.reuse = false; + this.phase = this.selected == this.previous ? 3 : 2; + break; + case 2: + if (!a.claim()) { + this.phase = 0; + return; + } + + a.select(this.selected); + this.phase = 3; + this.timer = this.timer + p.delay(between); + if (a.usingItem() && this.timer <= 0.0F) { + this.timer++; + } + break; + case 3: + a.use(); + if (drop && this.soup) { + this.phase = 4; + this.timer = this.timer + p.delay(between); + if (this.timer <= 0.0F) { + this.timer++; + } + } else { + this.after(p, between); + } + break; + case 4: + a.drop(); + this.after(p, between); + break; + case 5: + a.release(); + if (this.repeat) { + this.repeat = false; + this.reuse = true; + this.phase = 1; + } else { + a.select(this.previous); + this.phase = 6; + } + break; + case 6: + this.reuse = false; + this.timer = this.timer + p.delay(after); + this.phase = 0; + break; + default: + return; + } + } + } + } else { + a.disable(); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/BlinkModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/BlinkModule.java new file mode 100644 index 0000000..5420dbe --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/BlinkModule.java @@ -0,0 +1,74 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.PacketKinds; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; + +public final class BlinkModule extends CatalogModule { + private final ModuleManager modules; + private int previous; + private int remaining; + private int direction; + + public BlinkModule(ModuleManager modules) { + super("blink", "Blink", ModuleCategory.UTILITY); + this.modules = modules; + } + + @Override + public boolean listens(int type) { + return type == 0 || type == 2 || type == 3 || type == 14; + } + + @Override + protected synchronized void onEnable(ClientContext c) { + this.remaining = (int)NumericMath.truncateLong(this.number("max_duration")); + this.previous = Integer.MAX_VALUE; + this.direction = this.choice("direction"); + } + + @Override + public synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 2 && this.direction != 1) { + e.dispatchMode = !PacketKinds.realtimeDamage(e.packet) && !PacketKinds.blinkImmediate(e.packet) ? 1 : 3; + } else if (e.type == 3 && this.direction != 0) { + e.dispatchMode = 1; + } else if (e.type == 0 && c.inputReady()) { + int current = c.player().getLastAttackerTime(); + boolean rising = current > this.previous && this.flag("disable_on_attack"); + this.previous = current; + if (--this.remaining == 0 || rising) { + this.modules.requestEnabled(this, false); + } + } else if (e.type == 14 && this.flag(e.active ? "disable_on_block_interact" : "disable_on_block_dig")) { + MovingObjectPosition hit = c.minecraft().objectMouseOver; + if (hit != null && hit.typeOfHit == MovingObjectType.BLOCK) { + this.modules.requestEnabled(this, false); + } + } + } + + @Override + public synchronized void onWorldUnload(ClientContext c) { + this.remaining = 0; + this.previous = Integer.MAX_VALUE; + this.modules.requestEnabled(this, false); + } + + @Override + public String statusText() { + if (!this.findSetting("direction").isConfigured()) { + return null; + } else { + int index = this.choice("direction"); + return StatusText.label(this.getName(), index); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/ChestStealerModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/ChestStealerModule.java new file mode 100644 index 0000000..4543994 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/ChestStealerModule.java @@ -0,0 +1,57 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.util.StatCollector; + +public final strictfp class ChestStealerModule extends CatalogModule { + private float remainingDelay; + private float previousX; + private float previousY; + + public ChestStealerModule() { + super("cheststealer", "Chest Stealer", ModuleCategory.UTILITY); + } + + public static strictfp int compareTitle(String title, String translated) { + return title.length() != translated.length() ? 0 : title.length() & -256 | (title.equals(translated) ? 1 : 0); + } + + public strictfp boolean acceptsTitle(String title) { + return (compareTitle(title, StatCollector.translateToLocal("container.chest")) & 0xFF) != 0 + || (compareTitle(title, StatCollector.translateToLocal("container.chestDouble")) & 0xFF) != 0; + } + + public strictfp void updateOpenDelay(ClientContext c) { + if (c.minecraft().currentScreen instanceof GuiChest) { + if (!this.flag("require_vanilla_title")) { + return; + } + + String title = InventoryActions.chestTitle((GuiChest)c.minecraft().currentScreen); + if (title != null && this.acceptsTitle(title)) { + return; + } + } + + this.remainingDelay = this.number("delay_after_open"); + this.remainingDelay = RotationRandom.SHARED.interval(1.0F, 1.5F) * this.remainingDelay; + this.previousX = 4.0F; + this.previousY = 4.0F; + } + + public strictfp float remainingDelay() { + return this.remainingDelay; + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.remainingDelay = 0.0F; + this.previousX = 0.0F; + this.previousY = 0.0F; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/DebugModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/DebugModule.java new file mode 100644 index 0000000..daf6b11 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/DebugModule.java @@ -0,0 +1,104 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import java.util.Locale; +import net.minecraft.network.play.client.C07PacketPlayerDigging; +import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; +import net.minecraft.util.ChatComponentText; + +public final class DebugModule extends CatalogModule { + private boolean usingItem; + private boolean previousUse; + private int left; + private int right; + private int age; + + public DebugModule() { + super("debug", "Debug", ModuleCategory.UTILITY); + } + + @Override + public boolean listens(int t) { + return t == 0 || t == 3 || t == 15 || t == 18; + } + + @Override + public synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 3) { + if (e.dispatchMode == 0 || e.dispatchMode == 3) { + if (e.packet instanceof C08PacketPlayerBlockPlacement) { + this.usingItem = true; + } else if (e.packet instanceof C07PacketPlayerDigging && ((C07PacketPlayerDigging)e.packet).getStatus().ordinal() == 5) { + this.usingItem = false; + } + } + } else if (e.type == 15) { + if (this.flag("clicks")) { + if (e.active) { + this.left++; + } else { + this.right++; + } + + this.age = 0; + } + } else if (c.inputReady()) { + long tick = Integer.toUnsignedLong(c.player().ticksExisted) % 1000L; + if (e.type == 0) { + int hurt = c.player().hurtTime; + if (this.flag("hurt_time") && hurt >= 7) { + char color = hurt <= 10 ? new char[]{'a', 'e', 'c', '4'}[hurt - 7] : 102; + this.chat( + c, + "§7[%03d] [debug/hurt_time] §%c%02d §%cS §%cB", + tick, + color, + hurt, + Character.valueOf((char)(c.player().isSprinting() ? '8' : 'c')), + Character.valueOf((char)(c.player().isUsingItem() ? 'c' : '8')) + ); + } + + if (this.flag("item_use_state") && this.previousUse != this.usingItem) { + this.previousUse = this.usingItem; + this.chat(c, "§7[%03d] [debug/item_use] §%s", tick, this.usingItem ? "aStart" : "cStop"); + } + } else { + if (this.flag("clicks")) { + if (Integer.compareUnsigned(this.age, 9) <= 0) { + this.chat( + c, + "§7[%03d] [debug/click] §%cL %s §%cR %s", + tick, + Character.valueOf((char)(this.left == 0 ? '8' : (this.left == 1 ? 'a' : '2'))), + Integer.toUnsignedString(this.left), + Character.valueOf((char)(this.right == 0 ? '8' : (this.right == 1 ? 'b' : '3'))), + Integer.toUnsignedString(this.right) + ); + } + + this.left = this.right = 0; + } + + this.age++; + } + } + } + + private void chat(ClientContext c, String format, Object... args) { + c.player().addChatMessage(new ChatComponentText(String.format(Locale.ROOT, format, args))); + } + + @Override + public synchronized void onWorldUnload(ClientContext c) { + this.clear(); + } + + private void clear() { + this.usingItem = this.previousUse = false; + this.left = this.right = this.age = 0; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/FakeLagModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/FakeLagModule.java new file mode 100644 index 0000000..4a53694 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/FakeLagModule.java @@ -0,0 +1,144 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.packet.PacketKinds; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import dev.slinky.module.combat.WeaponsModule; + +public final strictfp class FakeLagModule extends CatalogModule { + private final WeaponsModule weapons; + public final FakeLagModule.State state = new FakeLagModule.State(); + + public FakeLagModule(WeaponsModule weapons) { + super("fakelag", "Fake Lag", ModuleCategory.UTILITY); + this.weapons = weapons; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 2 || type == 3; + } + + @Override + public strictfp synchronized void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 0) { + this.state + .update( + this.choice("mode"), + this.number("inbound"), + this.number("outbound"), + this.flag("realtime_damage"), + c.world() != null, + c.inputReady(), + this.flag("require_ingame"), + this.flag("require_weapon"), + this.weapons.isWeapon(c.player()), + this.flag("require_attack"), + c.player() == null ? 0 : c.player().getLastAttackerTime() + ); + } else { + this.state.packet(e, PacketKinds.realtimeDamage(e.packet)); + } + } + + @Override + public strictfp synchronized void onWorldUnload(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public static final class State { + public int lastState; + public int pulseTimer; + public int inboundValue; + public int outboundValue; + public int inboundAmount; + public int outboundAmount; + public boolean realtime; + public boolean inboundBlock; + public boolean outboundBlock; + + public strictfp void update( + int mode, + float inbound, + float outbound, + boolean realtime, + boolean world, + boolean ready, + boolean requireGame, + boolean requireWeapon, + boolean weapon, + boolean requireAttack, + int sampled + ) { + if (this.pulseTimer > 0) { + this.pulseTimer--; + } + + this.realtime = realtime; + if (mode == 1) { + int previous = this.inboundValue; + this.inboundValue = previous < 1 ? NumericMath.truncateInt((float)previous + inbound) : previous - 50; + this.inboundBlock = previous >= 1 && Integer.compareUnsigned(previous, 51) < 0; + previous = this.outboundValue; + this.outboundValue = previous < 1 ? NumericMath.truncateInt((float)previous + outbound) : previous - 50; + this.outboundBlock = previous >= 1 && Integer.compareUnsigned(previous, 51) < 0; + } + + if (world && (!requireGame || ready)) { + boolean send; + if (requireWeapon && !weapon) { + this.pulseTimer = 0; + send = false; + } else { + send = !requireAttack || this.pulseTimer != 0; + } + + if (sampled != this.lastState) { + this.pulseTimer = 20; + } + + this.lastState = sampled; + if (send) { + this.inboundAmount = NumericMath.truncateInt(inbound) & 65535; + this.outboundAmount = NumericMath.truncateInt(outbound) & 65535; + return; + } + } else { + this.pulseTimer = 0; + } + + this.inboundAmount = this.outboundAmount = 0; + } + + public strictfp void packet(SemanticEvent e, boolean damage) { + if (e.type == 2 && this.realtime && damage) { + e.dispatchMode = 3; + } else if (e.type == 2 ? !this.inboundBlock : !this.outboundBlock) { + e.packetAgeMillis = e.packetAgeMillis - (e.type == 2 ? (long)this.inboundAmount : (long)this.outboundAmount); + if (e.packetAgeMillis < 0L) { + e.packetAgeMillis = 0L; + e.dispatchMode = 1; + } + } + } + + public strictfp void clear() { + this.lastState = this.pulseTimer = this.inboundValue = this.outboundValue = this.inboundAmount = this.outboundAmount = 0; + this.realtime = this.inboundBlock = this.outboundBlock = false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/FriendsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/FriendsModule.java new file mode 100644 index 0000000..bfeb9a3 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/FriendsModule.java @@ -0,0 +1,289 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.render.RenderEventPayload; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import dev.slinky.setting.StringListSetting; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.UUID; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MovingObjectPosition; + +public final class FriendsModule extends CatalogModule { + private final SortedMap records = new TreeMap<>(); + private List loaded = Collections.emptyList(); + + public FriendsModule() { + super("friends", "Friends", ModuleCategory.UTILITY); + } + + @Override + public boolean settingVisible(String key) { + return !key.equals("friends"); + } + + private static int digit(int c) { + int decimal = c - 48 & 0xFF; + if (decimal < 10) { + return decimal; + } else { + return (c - 97 & 0xFF) < 26 ? c + 169 & 0xFF : -1; + } + } + + public static byte[] decodeRecord(String text) { + byte[] bytes = text.getBytes(StandardCharsets.UTF_8); + if (bytes.length < 48) { + return null; + } else { + byte[] record = new byte[32]; + + for (int end : new int[]{16, 24}) { + for (int i = end == 16 ? 0 : 16; i < end; i++) { + int high = digit(bytes[i * 2] & 255); + int low = digit(bytes[i * 2 + 1] & 255); + if (high < 0 || low < 0) { + break; + } + + record[i] = (byte)(high << 4 | low); + } + } + + return record; + } + } + + public static String encodeRecord(byte[] record, int length) { + StringBuilder result = new StringBuilder(); + String digits = "0123456789abcdef"; + + for (int i = 0; i < length; i++) { + result.append(digits.charAt((record[i] & 255) >>> 4)); + result.append(digits.charAt(record[i] & 15)); + } + + return result.toString(); + } + + private static byte[] record(UUID uuid, long timestamp) { + return ByteBuffer.allocate(32) + .order(ByteOrder.LITTLE_ENDIAN) + .putLong(uuid.getMostSignificantBits()) + .putLong(uuid.getLeastSignificantBits()) + .putLong(timestamp) + .putLong(0L) + .array(); + } + + private void load() { + List values = this.names("friends"); + if (!values.equals(this.loaded)) { + this.records.clear(); + + for (String name : values) { + byte[] r = decodeRecord(name); + if (r != null && !this.records.containsKey(encodeRecord(r, 16))) { + this.records.put(encodeRecord(r, 16), r); + } + } + + this.loaded = new ArrayList<>(values); + } + } + + private void store() { + List values = new ArrayList<>(); + + for (byte[] r : this.records.values()) { + values.add(encodeRecord(r, 24)); + } + + ((StringListSetting)this.findSetting("friends")).set(values); + this.loaded = new ArrayList<>(values); + } + + public void toggle(EntityPlayer player) { + this.toggleRecord(player); + } + + private Boolean toggleRecord(EntityPlayer player) { + this.load(); + byte[] r = record(player.getUniqueID(), System.currentTimeMillis() / 1000L); + String key = encodeRecord(r, 16); + boolean added = !this.records.containsKey(key); + if (!added) { + this.records.remove(key); + } else { + if ((RelationshipService.flags(player) & 2) != 0) { + return null; + } + + this.records.put(key, r); + } + + this.store(); + return added; + } + + public void middleClickAction(ClientContext context, ModuleManager manager) { + if (this.flag("middle_click_add")) { + MovingObjectPosition hit = context.minecraft().objectMouseOver; + if (hit != null && hit.entityHit instanceof EntityPlayer) { + Boolean added = this.toggleRecord((EntityPlayer)hit.entityHit); + if (added != null) { + SemanticEvent event = new SemanticEvent(19); + RenderEventPayload payload = RenderEventPayload.attach(event); + payload.friendAdded = added; + + try { + manager.dispatch(event); + } finally { + RenderEventPayload.detach(event); + } + + manager.persist(); + } + } + } + } + + public String command(ClientContext context, String action, String argument) { + this.load(); + if (action.equals("clear")) { + int count = this.records.size(); + this.records.clear(); + this.store(); + return "§aRemoved " + count + " friend" + (count == 1 ? "" : "s") + "."; + } else if (action.equals("near")) { + long radius = Long.parseUnsignedLong(argument); + double distance = (double)(radius & Long.MAX_VALUE) + (radius < 0L ? 9.223372E18F : 0.0); + int added = 0; + + for (EntityPlayer player : context.world().playerEntities) { + if (player != context.player() + && (RelationshipService.flags(player) & 2) == 0 + && player.getDistanceSqToEntity(context.player()) <= distance * distance) { + byte[] r = record(player.getUniqueID(), 0L); + String key = encodeRecord(r, 16); + boolean fresh = !this.records.containsKey(key); + if (fresh) { + this.records.put(key, r); + } + + added += fresh ? 1 : 0; + } + } + + this.store(); + return "§aAdded " + added + " friend" + (added == 1 ? "" : "s") + "."; + } else if (argument.getBytes(StandardCharsets.UTF_8).length >= 17) { + return "§cUsername is too long."; + } else { + EntityPlayer found = null; + + for (EntityPlayer playerx : context.world().playerEntities) { + if (playerx != context.player() && asciiPrefix(playerx.getName(), argument)) { + if (found != null) { + return "§cFound multiple names starting with '" + argument + "'."; + } + + found = playerx; + } + } + + if (found == null) { + return "§cPlayer not found."; + } else { + byte[] r = record(found.getUniqueID(), 0L); + String key = encodeRecord(r, 16); + if (action.equals("add")) { + if (!this.records.containsKey(key)) { + this.records.put(key, r); + } + + this.store(); + return "§aAdded " + found.getName() + " as friend."; + } else if (action.equals("remove")) { + this.records.remove(key); + this.store(); + return "§aRemoved " + found.getName() + " as friend."; + } else { + throw new IllegalArgumentException("friend action must be add, remove, near, or clear"); + } + } + } + } + + private static boolean asciiPrefix(String text, String prefix) { + byte[] a = text.getBytes(StandardCharsets.UTF_8); + byte[] b = prefix.getBytes(StandardCharsets.UTF_8); + if (b.length > a.length) { + return false; + } else { + for (int i = 0; i < b.length; i++) { + int x = a[i] & 255; + int y = b[i] & 255; + if (x >= 65 && x <= 90) { + x += 32; + } + + if (y >= 65 && y <= 90) { + y += 32; + } + + if (x != y) { + return false; + } + } + + return true; + } + } + + @Override + public boolean listens(int type) { + return type == 0; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready()) { + this.load(); + long time = System.currentTimeMillis() / 1000L; + + for (EntityPlayer player : context.world().playerEntities) { + if (player != context.player()) { + byte[] r = this.records.get(encodeRecord(record(player.getUniqueID(), 0L), 16)); + RelationshipService.set(player, 4, r != null); + if (r != null) { + ByteBuffer.wrap(r).order(ByteOrder.LITTLE_ENDIAN).putLong(16, time); + } + } + } + + this.store(); + } + } + + @Override + protected void onDisable(ClientContext context) { + RelationshipService.clear(4); + } + + @Override + public void onWorldUnload(ClientContext context) { + RelationshipService.clear(4); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/InvManagerModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/InvManagerModule.java new file mode 100644 index 0000000..8683922 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/InvManagerModule.java @@ -0,0 +1,178 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.inventory.InventorySelection; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.NumberSetting; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.entity.player.InventoryPlayer; + +public final strictfp class InvManagerModule extends CatalogModule { + private int phase; + private int resume; + private int scan; + private long processed; + private InventorySelection.Action action; + private float timer; + private float previousX; + private float previousY; + + public InvManagerModule() { + super("invmanager", "Inv Manager", ModuleCategory.UTILITY); + } + + @Override + public strictfp boolean listens(int type) { + return type == 25; + } + + private strictfp void delay(float x, float y) { + float amount = (float)((NumberSetting)this.findSetting("speed")).getMaximum() / this.number("speed"); + float distance = NumericMath.floatDistance(x - this.previousX, y - this.previousY); + if (this.flag("smart_speed")) { + amount *= RotationMath.max(distance * 0.5F, 1.0F); + } + + if (this.flag("randomize")) { + amount *= RotationRandom.SHARED.interval(1.0F, 1.25F); + } + + this.timer += amount; + this.previousX = x; + this.previousY = y; + } + + private strictfp void delay(int slot) { + float[] grid = InventoryActions.grid(slot); + this.delay(grid[0], grid[1]); + } + + private strictfp void advance(int next) { + this.phase = next; + this.scan = 0; + this.processed = 0L; + this.action = null; + this.resume = 0; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + if (e.type == 25) { + if (!(c.minecraft().currentScreen instanceof GuiInventory)) { + this.advance(0); + this.timer = this.number("delay_after_open"); + if (this.flag("randomize")) { + this.timer = RotationRandom.SHARED.interval(1.0F, 1.5F) * this.timer; + } + + float[] grid = InventoryActions.grid(13); + this.previousX = grid[0]; + this.previousY = grid[1]; + } else if (this.phase != 2 && c.ready()) { + if (this.timer > 0.0F) { + this.timer += -1.0F; + if (this.timer > 0.0F) { + return; + } + } + + e.cancelled = true; + GuiInventory screen = (GuiInventory)c.minecraft().currentScreen; + InventoryPlayer inventory = c.player().inventory; + + while (true) { + while (this.phase == 0 || this.phase == 1) { + int currentPhase = this.phase; + int limit = this.phase == 0 ? 4 : 9; + if (this.flag(this.phase == 0 ? "equip_armor" : "sort_hotbar")) { + while (this.scan < limit) { + InventorySelection.Stack[] main = new InventorySelection.Stack[36]; + + for (int i = 0; i < 36; i++) { + main[i] = InventorySelection.Stack.of(inventory.getStackInSlot(i)); + } + + if (this.phase == 0) { + this.action = InventorySelection.planArmor(main, InventorySelection.Stack.of(inventory.getStackInSlot(39 - this.scan)), this.scan); + } else { + int category = this.choice(Integer.toString(this.scan + 1)); + this.action = InventorySelection.planHotbar(main, this.scan, category, this.flag("sort_hotbar_fallback"), this.processed); + if (this.action != null + || category != 0 + && main[this.scan] != null + && Math.max(0, main[this.scan].count) + * InventorySelection.policy(category, main[this.scan], this.flag("sort_hotbar_fallback")) + != 0) { + this.processed = this.processed | InventorySelection.processedBit(this.scan); + } + } + + if (this.action != null) { + this.delay(this.action.source); + this.resume = currentPhase; + this.phase = 3; + return; + } + + this.scan = this.scan + 1 & 0xFF; + } + } + + this.advance(currentPhase + 1); + } + + if (this.phase == 2) { + return; + } + + if (this.phase == 3) { + int button = this.action.kind == 1 ? this.action.destination : 0; + int mode = this.action.kind == 0 ? 1 : (this.action.kind == 1 ? 2 : 0); + InventoryActions.click(screen, this.action.source, button, mode); + this.processed = this.processed | InventorySelection.processedBit(this.scan); + if (this.resume != 1) { + this.scan = this.scan + 1 & 0xFF; + } + + if (this.action.kind == 2) { + this.delay(this.action.destination); + this.phase = 4; + this.action.source = this.action.destination; + return; + } + + this.phase = this.resume; + } else { + if (this.phase == 4) { + InventoryActions.click(screen, this.action.source, 0, 0); + this.delay(this.previousX + -2.0F, this.previousY); + this.phase = 5; + return; + } + + if (this.phase != 5) { + return; + } + + InventoryActions.click(screen, -999, 0, 0); + this.phase = this.resume; + } + } + } + } + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.advance(0); + this.timer = 0.0F; + this.previousX = 0.0F; + this.previousY = 0.0F; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/ItemUseFixModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/ItemUseFixModule.java new file mode 100644 index 0000000..0e5cb80 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/ItemUseFixModule.java @@ -0,0 +1,52 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; + +public final class ItemUseFixModule extends CatalogModule { + private boolean restoreBreaking; + + public ItemUseFixModule() { + super("itemusefix", "Item Use Fix", ModuleCategory.WORLD); + } + + @Override + public boolean listens(int type) { + return type == 14 || type == 15; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (!event.active && !event.cancelled && context.minecraft().playerController != null) { + if (event.type == 14) { + this.restoreBreaking = MinecraftFields.breaking(context.minecraft().playerController); + if (this.restoreBreaking) { + MinecraftFields.setBreaking(context.minecraft().playerController, false); + } + } else if (this.restoreBreaking) { + MinecraftFields.setBreaking(context.minecraft().playerController, true); + } + } + } + + private void restore(ClientContext context) { + if (this.restoreBreaking && context.minecraft().playerController != null) { + MinecraftFields.setBreaking(context.minecraft().playerController, true); + } + + this.restoreBreaking = false; + } + + @Override + protected void onDisable(ClientContext context) { + this.restore(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.restore(context); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/NoHitDelayModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoHitDelayModule.java new file mode 100644 index 0000000..eee0fc4 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoHitDelayModule.java @@ -0,0 +1,59 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.hook.GameHooks; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.util.MovingObjectPosition; + +public final class NoHitDelayModule extends CatalogModule { + public NoHitDelayModule() { + super("nohitdelay", "No Hit Delay", ModuleCategory.UTILITY); + } + + @Override + public boolean listens(int type) { + return type == 14; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (event.active) { + MovingObjectPosition hit = context.minecraft().objectMouseOver; + int kind = hit == null ? -1 : hit.typeOfHit.ordinal(); + int action = decide( + this.choice("mode"), true, MinecraftFields.leftClickCounter(context.minecraft()), kind, context.player() != null && context.player().isUsingItem() + ); + if (action == 1) { + MinecraftFields.setLeftClickCounter(context.minecraft(), 0); + } else if (action == 2 && context.player() != null) { + GameHooks.baseSwing(context.player()); + } + } + } + + public static int decide(int mode, boolean attack, int delay, int hitKind, boolean using) { + if (attack && delay > 0) { + if (mode == 1 && (hitKind == -1 || hitKind == 0)) { + return using ? 0 : 2; + } else { + return 1; + } + } else { + return 0; + } + } + + @Override + public String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/NoItemReleaseModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoItemReleaseModule.java new file mode 100644 index 0000000..2916d13 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoItemReleaseModule.java @@ -0,0 +1,89 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.C07PacketPlayerDigging; +import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; + +public final class NoItemReleaseModule extends CatalogModule { + private final NoItemReleaseModule.State state = new NoItemReleaseModule.State(); + + public NoItemReleaseModule() { + super("noitemrelease", "No Item Release", ModuleCategory.COMBAT); + } + + @Override + public boolean listens(int type) { + return type == 3; + } + + @Override + public synchronized void onEvent(ClientContext context, SemanticEvent event) { + if (event.packet instanceof C08PacketPlayerBlockPlacement) { + ItemStack stack = ((C08PacketPlayerBlockPlacement)event.packet).getStack(); + this.state.use(this.choice("mode"), stack != null && stack.getItem() != null ? Item.getIdFromItem(stack.getItem()) : null); + } else if (event.packet instanceof C07PacketPlayerDigging && this.state.release(((C07PacketPlayerDigging)event.packet).getStatus().ordinal())) { + event.dispatchMode = 2; + } + } + + @Override + protected synchronized void onDisable(ClientContext context) { + this.state.active = false; + } + + @Override + public synchronized void onWorldUnload(ClientContext context) { + this.state.active = false; + } + + @Override + public String statusText() { + if (!this.findSetting("mode").isConfigured()) { + return null; + } else { + int index = this.choice("mode"); + return StatusText.label(this.getName(), index); + } + } + + public static final class State { + public boolean active; + + public void use(int mode, Integer identifier) { + if (identifier == null) { + this.active = false; + } else { + int id = identifier; + int bit = id - 261; + boolean sword = Integer.compareUnsigned(bit, 23) < 0 && (4229312 >>> bit & 1) != 0; + if (sword) { + if (mode == 1) { + this.active = false; + return; + } + } else if (id == 261 || id == 346 || mode == 0) { + this.active = false; + return; + } + + this.active = id != 261 && id != 346; + } + } + + public boolean release(int action) { + if (!this.active) { + return false; + } else { + boolean cancelled = action == 5; + this.active = false; + return cancelled; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/NoUseDelayModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoUseDelayModule.java new file mode 100644 index 0000000..5aeb6e6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/NoUseDelayModule.java @@ -0,0 +1,91 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.settings.KeyBinding; + +public final class NoUseDelayModule extends CatalogModule { + private final NoUseDelayModule.State state = new NoUseDelayModule.State(0); + + public NoUseDelayModule() { + super("nousedelay", "No Use Delay", ModuleCategory.UTILITY); + } + + @Override + public boolean listens(int type) { + return type == 18; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (!context.inputReady()) { + this.state.changedSlot(false, 0); + } else { + KeyBinding use = context.minecraft().gameSettings.keyBindUseItem; + boolean active = use.isKeyDown(); + if (this.state.changedSlot(true, context.player().inventory.currentItem)) { + KeyState.restore(use); + } + + if (active && this.state.suppress(true, context.player().getItemInUseCount(), this.flag("allow_desync"))) { + KeyState.set(use, false); + } + } + } + + private void reset(ClientContext context) { + this.state.clear(); + KeyState.restore(context.minecraft().gameSettings.keyBindUseItem); + } + + @Override + protected void onDisable(ClientContext context) { + this.reset(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.reset(context); + } + + public static final class State { + public int countdown; + public int lastSlot; + + public State(int initialSlot) { + this.lastSlot = initialSlot; + } + + public boolean changedSlot(boolean ready, int selected) { + if (!ready) { + this.countdown = 0; + return false; + } else if (selected == this.lastSlot) { + return false; + } else { + this.lastSlot = selected; + this.countdown = 0; + return true; + } + } + + public boolean suppress(boolean activeSnapshot, int useCount, boolean allowDesync) { + if (!activeSnapshot) { + return false; + } else if (this.countdown <= 0) { + this.countdown = useCount; + return false; + } else { + this.countdown--; + return this.countdown == 0 || useCount == 0 && allowDesync; + } + } + + public void clear() { + this.countdown = 0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/PingFixModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/PingFixModule.java new file mode 100644 index 0000000..aadf876 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/PingFixModule.java @@ -0,0 +1,31 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.network.Packet; +import net.minecraft.network.play.client.C00PacketKeepAlive; +import net.minecraft.network.play.server.S00PacketKeepAlive; + +public final class PingFixModule extends CatalogModule { + public PingFixModule() { + super("pingfix", "Ping Fix", ModuleCategory.UTILITY); + } + + @Override + public boolean listens(int type) { + return type == 2 || type == 3; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (matches(event.type, event.packet)) { + event.dispatchMode = 3; + } + } + + public static boolean matches(int type, Packet packet) { + return type == 2 && packet instanceof S00PacketKeepAlive || type == 3 && packet instanceof C00PacketKeepAlive; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/RefillModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/RefillModule.java new file mode 100644 index 0000000..f6a04ef --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/RefillModule.java @@ -0,0 +1,351 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.inventory.RefillSelection; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import java.util.Arrays; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.item.ItemStack; + +public final strictfp class RefillModule extends CatalogModule { + private final RefillModule.State state = new RefillModule.State(); + private final ModuleManager modules; + private final RotationRandom.Smooth openRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth closeRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth speedRandom = new RotationRandom.Smooth(); + private final RotationRandom.Smooth speedGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth alternateGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth emptyGate = new RotationRandom.Smooth(); + private final RotationRandom.Smooth secondGate = new RotationRandom.Smooth(); + private final RotationRandom.Gaussian wave = new RotationRandom.Gaussian(); + + public RefillModule(ModuleManager modules) { + super("refill", "Refill", ModuleCategory.UTILITY); + this.modules = modules; + } + + @Override + public strictfp boolean listens(int type) { + return type == 5 || type == 25; + } + + @Override + protected strictfp void onEnable(ClientContext c) { + this.state.phase = 0; + } + + private static strictfp double subtractDelay(float setting, float sample) { + double extra = (double)setting - (double)sample; + return extra > 0.0 ? extra : 0.0; + } + + @Override + public strictfp void onEvent(final ClientContext c, SemanticEvent e) { + if (e.type == 25) { + RefillModule.Access access = new RefillModule.Access() { + @Override + public strictfp boolean screen() { + return c.minecraft().currentScreen != null; + } + + @Override + public strictfp boolean inventoryScreen() { + return c.minecraft().currentScreen instanceof GuiInventory; + } + + @Override + public strictfp boolean player() { + return c.player() != null; + } + + @Override + public strictfp int type(int slot) { + return InventoryActions.type(c.player().inventory.getStackInSlot(slot)); + } + + @Override + public strictfp int damage(int slot) { + ItemStack s = c.player().inventory.getStackInSlot(slot); + return s == null ? 0 : s.getItemDamage(); + } + + @Override + public strictfp void open() { + InventoryActions.press(c.minecraft().gameSettings.keyBindInventory); + } + + @Override + public strictfp void click(int slot, int button) { + InventoryActions.click((GuiInventory)c.minecraft().currentScreen, slot, button, 1); + } + + @Override + public strictfp void finish() { + RefillModule.this.modules.requestEnabled(RefillModule.this, false); + GuiScreen screen = c.minecraft().currentScreen; + if (screen != null) { + InventoryActions.escape(screen); + } + } + }; + if (this.state + .tick( + access, + new RefillModule.Policy(), + this.flag("refill_soup"), + this.flag("refill_potion"), + this.flag("refill_potion_non_health"), + this.number("delay_after_open"), + this.number("delay_before_close"), + this.number("speed"), + this.flag("smart_speed"), + this.choice("simulate_button") + )) { + e.cancelled = true; + } + } + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.state.clear(); + } + + public interface Access { + boolean screen(); + + boolean inventoryScreen(); + + boolean player(); + + int type(int var1); + + int damage(int var1); + + void open(); + + void click(int var1, int var2); + + void finish(); + } + + private final strictfp class Policy implements RefillModule.RandomPolicy { + private final double now = RotationRandom.now(); + private final RotationRandom r = RotationRandom.SHARED; + + private Policy() { + } + + @Override + public strictfp boolean skipEmpty() { + return this.r.chance(0.5F); + } + + @Override + public strictfp boolean chooseEmpty() { + return RefillModule.this.emptyGate.gate(0.05F, 0.1F, 20.0, this.now, this.r); + } + + @Override + public strictfp boolean chooseSecond() { + return RefillModule.this.secondGate.gate(0.05F, 0.1F, 10.0, this.now, this.r); + } + + @Override + public strictfp float index() { + return this.r.interval(0.0F, 27.0F); + } + + @Override + public strictfp float angle() { + return this.r.interval(0.0F, (float) Math.PI); + } + + @Override + public strictfp double openDelay(float setting) { + return RefillModule.subtractDelay(setting, RefillModule.this.openRandom.sample(0.0F, 2.0F, 30.0, this.now, this.r)); + } + + @Override + public strictfp double closeDelay(float setting) { + return RefillModule.subtractDelay(setting, RefillModule.this.closeRandom.sample(0.0F, 2.0F, 30.0, this.now, this.r)); + } + + @Override + public strictfp float multiplier(float speed) { + float result = RefillModule.this.speedRandom.sample(0.8F, 1.2F, 30.0, this.now, this.r) * speed; + double factor = (double)RefillModule.this.wave.sample(this.r) * 0.3; + result = (float)((double)result * ++factor); + if (RefillModule.this.speedGate.gate(0.04F, 0.08F, 30.0, this.now, this.r)) { + result /= this.r.interval(1.4F, 1.8F); + } + + return result; + } + + @Override + public strictfp boolean alternate() { + return RefillModule.this.alternateGate.gate(0.9F, 1.0F, 10.0, this.now, this.r); + } + } + + public interface RandomPolicy extends RefillSelection.Gates { + float index(); + + float angle(); + + double openDelay(float var1); + + double closeDelay(float var1); + + float multiplier(float var1); + + boolean alternate(); + } + + public static final class State { + public final byte[] mask = new byte[27]; + public int phase; + public int previous; + public int selected; + public int alternate; + public float timer; + public float angle; + + public strictfp boolean tick( + RefillModule.Access a, + RefillModule.RandomPolicy random, + boolean soups, + boolean pots, + boolean nonHealth, + float openDelay, + float closeDelay, + float speed, + boolean smart, + int simulate + ) { + boolean cancel = this.phase != 0; + if (!cancel || a.screen() && a.inventoryScreen()) { + if (this.timer > 0.0F) { + this.timer += -1.0F; + return cancel; + } else if (!(this.timer <= 0.0F)) { + return cancel; + } else { + int incomingButton = 0; + + while (this.phase != 4) { + int empty = 0; + if (a.player()) { + while (empty < 9 && a.type(empty) != 0) { + empty++; + } + } + + if (!a.player() || empty == 9) { + this.timer = (float)((double)this.timer + random.closeDelay(closeDelay)); + this.phase = 4; + if (!(this.timer <= 0.0F)) { + return cancel; + } else { + a.finish(); + return cancel; + } + } + + switch (this.phase) { + case 0: + this.phase = 1; + if (a.screen()) { + return cancel; + } + + for (int slot = 0; slot < 27; slot++) { + this.mask[slot] = (byte)RefillSelection.classify(a.type(slot + 9), a.damage(slot + 9), soups, pots, nonHealth); + } + + RefillSelection.Result candidate = RefillSelection.choose(this.mask, this.previous, this.angle, random); + this.angle = candidate.bearing; + if (candidate.slot == -1) { + a.finish(); + return cancel; + } + + a.open(); + return cancel; + case 1: + this.previous = NumericMath.truncateInt(random.index()); + this.angle = random.angle(); + this.phase = 2; + this.timer = (float)((double)this.timer + random.openDelay(openDelay)); + break; + case 2: + RefillSelection.Result result = RefillSelection.choose(this.mask, this.previous, this.angle, random); + this.selected = result.slot; + this.angle = result.bearing; + if (this.selected == -1) { + this.timer = (float)((double)this.timer + random.closeDelay(closeDelay)); + this.phase = 4; + return cancel; + } + + float multiplier = random.multiplier(speed); + float distance = smart ? result.score : 1.0F; + this.timer += distance / multiplier; + this.previous = this.selected; + this.phase = 3; + break; + case 3: + int button = simulate; + if (simulate >= 2) { + if (simulate == 2) { + button = this.alternate; + if (random.alternate()) { + this.alternate = this.alternate == 0 ? 1 : 0; + } + } else { + button = incomingButton; + } + } + + a.click(this.selected + 9, button); + this.mask[this.selected] = 0; + this.phase = 2; + incomingButton = button; + break; + default: + throw new IllegalStateException("Invalid refill phase"); + } + + if (!(this.timer <= 0.0F)) { + return cancel; + } + } + + a.finish(); + return cancel; + } + } else { + a.finish(); + return false; + } + } + + public strictfp void clear() { + this.phase = 0; + this.previous = 0; + this.selected = 0; + this.alternate = 0; + this.timer = 0.0F; + this.angle = 0.0F; + Arrays.fill(this.mask, (byte)0); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/TeamsModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/TeamsModule.java new file mode 100644 index 0000000..a913f4f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/TeamsModule.java @@ -0,0 +1,147 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; + +public final class TeamsModule extends CatalogModule { + public static final String[] COLORS = new String[]{ + "Black", + "Dark blue", + "Dark green", + "Dark aqua", + "Dark red", + "Dark purple", + "Gold", + "Light gray", + "Dark gray", + "Light blue", + "Light green", + "Light aqua", + "Light red", + "Light purple", + "Yellow", + "White" + }; + + public TeamsModule() { + super("teams", "Teams", ModuleCategory.UTILITY); + } + + private static boolean colorCode(char c) { + return (c - '0' & 65535) < 10 || (c - 'a' & 65535) < 6 || c == 'r'; + } + + private static boolean nameCharacter(char c) { + return c == '_' || (c - '0' & 65535) < 10 || ((c & '\uffdf') - 65 & 65535) < 26; + } + + public static char prefixColor(String text) { + char result = 0; + boolean section = false; + + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + boolean escaped = section; + section = c == 167; + if (c != 167) { + if (escaped) { + if (colorCode(c)) { + result = c; + } + } else if (nameCharacter(c)) { + return result; + } + } + } + + return '\u0000'; + } + + public static char trailingColor(String text) { + char selected = 0; + boolean valid = false; + + for (int i = text.length() - 1; i >= 0; i--) { + char c = text.charAt(i); + if (c == 167) { + if (valid) { + return selected; + } + + valid = false; + } else { + valid = colorCode(c); + if (valid) { + selected = c; + } + } + } + + return 'f'; + } + + public static char entityColor(Entity entity) { + char initial = prefixColor(entity.getName()); + if (initial != 0) { + return initial; + } else { + IChatComponent component = entity.getDisplayName(); + return component instanceof ChatComponentText ? trailingColor(((ChatComponentText)component).getChatComponentText_TextValue()) : 'f'; + } + } + + @Override + public boolean listens(int type) { + return type == 0; + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + if (context.ready()) { + char owner = entityColor(context.player()); + NetworkPlayerInfo info = context.minecraft().getNetHandler().getPlayerInfo(context.player().getUniqueID()); + if (info != null) { + if (info.getPlayerTeam() != null) { + owner = prefixColor(info.getPlayerTeam().getColorPrefix()); + if (owner == 0) { + owner = 'r'; + } + } else if (info.getDisplayName() instanceof ChatComponentText) { + owner = trailingColor(((ChatComponentText)info.getDisplayName()).getChatComponentText_TextValue()); + } + } + + for (EntityPlayer player : context.world().playerEntities) { + if (player != context.player()) { + char code = entityColor(player); + boolean member = this.flag("match_self_color") && code == owner; + int low = code & 255; + int index = ((byte)low >= 97 ? 169 : 208) + low & 0xFF; + if (!member && index < COLORS.length) { + member = this.names("team_colors").contains(COLORS[index]); + } + + RelationshipService.set(player, 1, member); + } + } + } + } + + @Override + protected void onDisable(ClientContext context) { + RelationshipService.clear(1); + } + + @Override + public void onWorldUnload(ClientContext context) { + RelationshipService.clear(1); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/utility/TimerModule.java b/SlinkyClient/src/main/java/dev/slinky/module/utility/TimerModule.java new file mode 100644 index 0000000..fbd196a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/utility/TimerModule.java @@ -0,0 +1,77 @@ +package dev.slinky.module.utility; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import org.lwjgl.input.Mouse; + +public final strictfp class TimerModule extends CatalogModule { + public TimerModule() { + super("timer", "Timer", ModuleCategory.UTILITY); + } + + @Override + public strictfp boolean listens(int type) { + return type == 1; + } + + public static strictfp float select( + float speed, + boolean requireMouse, + boolean pressed, + boolean requireFalling, + boolean onGround, + double motionY, + boolean requireDamage, + boolean ready, + int hurtTime + ) { + if (requireMouse && !pressed) { + return 1.0F; + } else if (!requireFalling || !onGround && !(motionY >= 0.0)) { + return !requireDamage || ready && hurtTime != 0 ? speed : 1.0F; + } else { + return 1.0F; + } + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + boolean ready = context.ready(); + boolean pressed = !this.flag("require_mouse") || Mouse.isButtonDown(context.minecraft().gameSettings.keyBindAttack.getKeyCode() == -99 ? 1 : 0); + float selected = select( + this.number("speed"), + this.flag("require_mouse"), + pressed, + this.flag("require_falling"), + !ready || context.player().onGround, + ready ? context.player().motionY : 0.0, + this.flag("require_damage"), + context.inputReady(), + ready ? context.player().hurtTime : 0 + ); + MinecraftFields.timer(context.minecraft()).timerSpeed = selected; + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.reset(context); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.reset(context); + } + + private strictfp void reset(ClientContext context) { + MinecraftFields.timer(context.minecraft()).timerSpeed = 1.0F; + } + + @Override + public strictfp String statusText() { + return !this.findSetting("speed").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("speed")); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/AutoToolModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/AutoToolModule.java new file mode 100644 index 0000000..6609c0b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/AutoToolModule.java @@ -0,0 +1,265 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ModuleActionService; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.inventory.ItemPolicyService; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.StringListSetting; +import java.util.Collections; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; + +public final class AutoToolModule extends CatalogModule { + public final AutoToolModule.State state = new AutoToolModule.State(); + private InventoryPlayer changedInventory; + + public AutoToolModule() { + super("autotool", "Auto Tool", ModuleCategory.WORLD); + this.itemPolicy("allowed_blocks"); + } + + @Override + public boolean listens(int type) { + return type == 25 || type == 26; + } + + @Override + public boolean settingVisible(String key) { + return !key.equals("allowed_blocks") || this.flag("restrict_allowed_blocks"); + } + + @Override + public void onEvent(final ClientContext context, SemanticEvent event) { + if (event.type == 26) { + this.cleanup(context); + ((StringListSetting)this.findSetting("allowed_blocks")).set(Collections.emptyList()); + } else if (context.ready()) { + final InventoryPlayer inventory = context.player().inventory; + AutoToolModule.Access access = new AutoToolModule.Access() { + private Block block; + + @Override + public int current() { + return inventory.currentItem; + } + + @Override + public boolean heldAllowed() { + ItemStack stack = inventory.getCurrentItem(); + return stack == null + ? AutoToolModule.this.flag("allow_using_fists") + : AutoToolModule.typeAllowed( + Item.getIdFromItem(stack.getItem()), + AutoToolModule.this.flag("allow_using_sword"), + AutoToolModule.this.flag("allow_using_tools"), + AutoToolModule.this.flag("allow_using_other") + ); + } + + @Override + public boolean usingItem() { + return context.player().isUsingItem(); + } + + @Override + public boolean attackDown() { + return KeyState.physical(context.minecraft().gameSettings.keyBindAttack); + } + + @Override + public boolean sneakDown() { + return context.minecraft().gameSettings.keyBindSneak.isKeyDown(); + } + + @Override + public boolean acquireBlock() { + MovingObjectPosition hit = context.minecraft().objectMouseOver; + if (hit != null && hit.typeOfHit == MovingObjectType.BLOCK) { + this.block = context.world().getBlockState(hit.getBlockPos()).getBlock(); + return this.block != null; + } else { + return false; + } + } + + @Override + public boolean blockAllowed() { + return ItemPolicyService.contains(AutoToolModule.this.names("allowed_blocks"), Block.getIdFromBlock(this.block)); + } + + @Override + public Float score(int index) { + ItemStack stack = inventory.getStackInSlot(index); + return stack == null ? null : stack.getStrVsBlock(this.block); + } + + @Override + public boolean claim() { + return ModuleActionService.claim(AutoToolModule.this); + } + + @Override + public void release() { + ModuleActionService.release(AutoToolModule.this); + } + + @Override + public void select(int slot) { + inventory.currentItem = slot; + AutoToolModule.this.changedInventory = inventory; + } + }; + this.state + .update(true, this.number("activation_time"), this.flag("switch_back"), this.flag("require_sneak"), this.flag("restrict_allowed_blocks"), access); + if (this.state.originalSlot == -1) { + this.changedInventory = null; + } + } + } + + @Override + protected void onDisable(ClientContext context) { + this.cleanup(context); + } + + @Override + public void onWorldUnload(ClientContext context) { + this.cleanup(context); + } + + private void cleanup(ClientContext context) { + ModuleActionService.release(this); + if (this.state.originalSlot != -1 && this.changedInventory != null) { + this.changedInventory.currentItem = this.state.originalSlot; + } + + this.state.originalSlot = -1; + this.state.cooldown = 0; + this.changedInventory = null; + } + + public static boolean typeAllowed(int id, boolean sword, boolean tool, boolean other) { + switch (id - 256) { + case 0: + case 1: + case 2: + case 13: + case 14: + case 15: + case 17: + case 18: + case 19: + case 21: + case 22: + case 23: + case 28: + case 29: + case 30: + case 103: + return tool; + case 11: + case 12: + case 16: + case 20: + case 27: + return sword; + default: + return other; + } + } + + public interface Access { + int current(); + + boolean heldAllowed(); + + boolean usingItem(); + + boolean attackDown(); + + boolean sneakDown(); + + boolean acquireBlock(); + + boolean blockAllowed(); + + Float score(int var1); + + boolean claim(); + + void release(); + + void select(int var1); + } + + public static final class State { + public int originalSlot = -1; + public int lastSelectedSlot; + public int cooldown; + + public void update(boolean ready, float delay, boolean switchBack, boolean requireSneak, boolean restrictBlocks, AutoToolModule.Access access) { + if (ready) { + int current = access.current(); + if (this.originalSlot != -1 && this.lastSelectedSlot != current) { + this.originalSlot = -1; + this.restore(access); + } else if ((this.originalSlot != -1 || access.heldAllowed()) + && !access.usingItem() + && access.attackDown() + && (!requireSneak || access.sneakDown()) + && access.acquireBlock() + && (!restrictBlocks || access.blockAllowed())) { + if (this.cooldown >= 1) { + this.cooldown--; + this.restore(access); + } else { + float best = 1.0F; + int bestIndex = current; + + for (int offset = 0; offset < 9; offset++) { + int index = (current + offset) % 9; + Float score = access.score(index); + if (score != null && score > best) { + best = score; + bestIndex = index; + } + } + + if (bestIndex != current) { + if (access.claim()) { + access.select(bestIndex); + this.lastSelectedSlot = bestIndex; + if (this.originalSlot == -1 && switchBack) { + this.originalSlot = current; + } + } + + if (bestIndex == -1) { + this.restore(access); + } + } + } + } else { + this.cooldown = NumericMath.truncateInt(delay); + this.restore(access); + } + } + } + + public void restore(AutoToolModule.Access access) { + access.release(); + if (this.originalSlot != -1) { + access.select(this.originalSlot); + this.originalSlot = -1; + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/BlockInModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/BlockInModule.java new file mode 100644 index 0000000..adfdbbf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/BlockInModule.java @@ -0,0 +1,285 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.DoubleNumeric; +import dev.slinky.client.numeric.FloatNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.placement.PlacementFrame; +import dev.slinky.client.placement.PlacementSelection; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; + +public final strictfp class BlockInModule extends CatalogModule { + private final BlockInModule.State state = new BlockInModule.State(); + private final ModuleManager modules; + + public BlockInModule(ModuleManager modules) { + super("blockin", "Block In", ModuleCategory.UTILITY); + this.modules = modules; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 5 || type == 13 || type == 16 || type == 18 || type == 26; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + PlacementFrame i = new PlacementFrame.Game(c, this.modules, this); + if (e.type == 26) { + this.state.clear(i); + PlacementSelection.release(this); + } else if (e.type == 5 && e.module == this) { + if (e.enabled && c.ready()) { + this.state.enable(c.player().rotationYaw); + } else if (!e.enabled) { + this.state.restore(i); + } + } else if (e.type == 13 && this.state.correcting) { + e.active = true; + e.remapMovement = true; + if (this.state.movement == 1) { + e.yaw = this.state.centerYaw; + e.pitch = this.state.centerPitch; + } + } else if (e.type == 16) { + this.state.input(i); + } else if (e.type == 18) { + this.state.update(i, this.number("speed"), this.flag("require_ground"), RotationRandom.SHARED, RotationRandom.now()); + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.state.clear(new PlacementFrame.Game(c, this.modules, this)); + PlacementSelection.release(this); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.onDisable(c); + } + + public static final class State { + public long placed; + public int direction; + public int movement; + public boolean correcting; + public boolean keysOwned; + public float centerYaw; + public float centerPitch; + public double previousY; + private final RotationRandom.Smooth pointA = new RotationRandom.Smooth(); + private final RotationRandom.Smooth pointB = new RotationRandom.Smooth(); + private final RotationRandom.Smooth sideA = new RotationRandom.Smooth(); + private final RotationRandom.Smooth sideB = new RotationRandom.Smooth(); + private final RotationRandom.Smooth speedA = new RotationRandom.Smooth(); + private final RotationRandom.Smooth speedB = new RotationRandom.Smooth(); + + private static strictfp float f(int a) { + return ActionConstants.f(a); + } + + private static strictfp double d(int a) { + return ActionConstants.d(a); + } + + private static strictfp double abs(double value) { + return Double.longBitsToDouble(Double.doubleToRawLongBits(value) & ActionConstants.longAt(1403024)); + } + + private static strictfp float smooth(RotationRandom.Smooth state, int bounds, int period, RotationRandom r, double now) { + return state.sample(f(bounds), f(bounds + 4), d(period), now, r); + } + + private static strictfp boolean allowed(PlacementFrame i, int x, int y, int z) { + int type = i.block(x, y, z); + return Integer.compareUnsigned(type, 31) <= 0 && (-2147482879 >>> (type & 31) & 1) != 0; + } + + public static strictfp boolean centered(Vec3 self) { + double x = abs(DoubleNumeric.remainder(self.xCoord, d(1403072))); + double z = abs(DoubleNumeric.remainder(self.zCoord, d(1403072))); + return d(1403080) >= x && x >= d(1403088) && z >= d(1403088) && d(1403080) >= z; + } + + public strictfp void enable(float yaw) { + this.placed = 0L; + int n = NumericMath.truncateInt(FloatNumeric.round(yaw / f(1402992))); + int aligned = (n < 0 ? n + 3 : n) & -4; + this.direction = n - aligned; + } + + public strictfp void input(PlacementFrame i) { + if (this.movement != 0) { + i.movement(this.movement); + this.keysOwned = true; + } + } + + public strictfp void restore(PlacementFrame i) { + if (this.keysOwned) { + i.restoreMovement(); + this.keysOwned = false; + } + + this.correcting = false; + this.movement = 0; + } + + private strictfp void cleanup(PlacementFrame i) { + i.disable(); + } + + public strictfp void update(PlacementFrame i, float speed, boolean requireGround, RotationRandom r, double now) { + this.correcting = false; + this.movement = 0; + if (!i.ready()) { + this.cleanup(i); + } else { + boolean ground = i.ground(); + if (requireGround && !ground) { + this.cleanup(i); + } else { + Vec3 self = i.position(); + double selfY = self.yCoord; + double fx = DoubleNumeric.floor(self.xCoord); + double fy = DoubleNumeric.floor(selfY) + d(1403008); + double fz = DoubleNumeric.floor(self.zCoord); + if (abs(selfY - this.previousY) > d(1403040)) { + this.placed = 0L; + } + + int x = NumericMath.truncateInt(fx); + int y = NumericMath.truncateInt(fy); + int z = NumericMath.truncateInt(fz); + this.previousY = selfY; + + int probe; + for (probe = 0; probe < 10 && (this.placed >>> probe & 4294967296L) == 0L; probe++) { + int offset = 1403776 + probe * 3; + if (!allowed(i, x + ActionConstants.byteAt(offset), y + ActionConstants.byteAt(offset + 1), z + ActionConstants.byteAt(offset + 2))) { + break; + } + } + + Vec3 target = null; + int bit = 0; + if (probe != 0 && probe != 10) { + bit = 32 + (probe >= 5 && probe <= 8 ? probe - 4 : 0); + int direct = probe >= 5 && probe <= 8 ? probe - 4 : probe; + if (direct == 1 || direct == 3) { + float yy = smooth(this.pointA, 1403108, 1403064, r, now) + (float)y; + int bounds = direct == 1 ? 1403100 : 1403116; + float zz = smooth(this.pointB, bounds, 1403064, r, now) + (float)z; + target = new Vec3((double)(x + (direct == 3 ? 1 : 0)), (double)yy, (double)zz); + } else if (direct != 2 && direct != 4) { + float xx = this.pointA.sample(f(1403060), f(1403096), d(1403064), now, r) + (float)x; + float zz = this.pointB.sample(f(1403060), f(1403096), d(1403064), now, r) + (float)z; + target = new Vec3((double)xx, (double)(y + 4), (double)zz); + } else { + int bounds = direct == 2 ? 1403116 : 1403100; + float xx = smooth(this.pointA, bounds, 1403064, r, now) + (float)x; + float yy = smooth(this.pointB, 1403108, 1403064, r, now) + (float)y; + target = new Vec3((double)xx, (double)yy, (double)(z + (direct == 4 ? 1 : 0))); + } + } else { + for (int attempt = 0; attempt < 4; attempt++) { + int dir = this.direction + attempt & 3; + int dx = ActionConstants.byteAt(1403806 + dir * 2); + int dz = ActionConstants.byteAt(1403807 + dir * 2); + int nx = x + dx; + int nz = z + dz; + AxisAlignedBB box = new AxisAlignedBB((double)nx, (double)y, (double)nz, (double)nx + d(1403816), (double)y + d(1403824), 1.0 + (double)nz); + if (!i.box().intersectsWith(box)) { + int level = 0; + + while ( + level < 3 + && (((int)this.placed >>> (dir * 3 + level & 31) & 1) != 0 || !allowed(i, nx, y + level, nz) || allowed(i, nx, y + level - 1, nz)) + ) { + level++; + } + + if (level != 3) { + int bounds = level != 0 ? 1403056 : 1403048; + double half = d(1403064); + float a = smooth(this.sideA, bounds, 1403064, r, now); + float b = smooth(this.sideB, bounds, 1403064, r, now); + target = new Vec3(half - (double)(a * (float)dx) + (double)nx, (double)(y + level), half - (double)(b * (float)dz) + (double)nz); + bit = dir * 3 + level; + break; + } + } + } + + if (target == null) { + if (ground && centered(self)) { + this.cleanup(i); + } + + return; + } + } + + if (!i.claim(500)) { + this.cleanup(i); + } else { + i.select(true, true); + if (!i.heldBlock()) { + this.cleanup(i); + } else { + float currentYaw = i.yaw() + i.offsetYaw(); + float currentPitch = i.pitch() + i.offsetPitch(); + float[] desired = RotationMath.angles(i.eye(), target); + float yaw = RotationMath.wrap(desired[0] - currentYaw); + float pitch = desired[1] - currentPitch; + double half = d(1403064); + float factor = (float)((double)speed * half + half); + float scaledYaw = yaw * factor; + float scaledPitch = pitch * factor; + float rx = this.speedA.sample(f(1403124), f(1403120), d(1403128), now, r); + float ry = this.speedB.sample(f(1403124), f(1403120), d(1403128), now, r); + rx = rx * f(1403136) * speed; + ry = f(1403136) * ry * speed; + float cx = RotationMath.clamp(Float.intBitsToFloat(Float.floatToRawIntBits(rx) ^ ActionConstants.intAt(1403152)), rx, yaw); + float cy = RotationMath.clamp(Float.intBitsToFloat(ActionConstants.intAt(1403152) ^ Float.floatToRawIntBits(ry)), ry, pitch); + float resultYaw = (cx - scaledYaw) * f(1403168) + scaledYaw; + float resultPitch = (cy - scaledPitch) * f(1403168) + scaledPitch; + i.publish(resultYaw, resultPitch); + float ax = Float.intBitsToFloat(Float.floatToRawIntBits(yaw - resultYaw) & ActionConstants.intAt(1403184)); + float ay = Float.intBitsToFloat(Float.floatToRawIntBits(pitch - resultPitch) & ActionConstants.intAt(1403184)); + if (f(1403200) > ay + ax) { + i.press(); + this.placed |= 1L << (bit & 63); + } + + this.correcting = true; + if (centered(self)) { + this.movement = 2; + } else { + Vec3 center = new Vec3(DoubleNumeric.floor(self.xCoord) + half, self.yCoord, DoubleNumeric.floor(self.zCoord) + half); + this.movement = 1; + float[] rotation = RotationMath.angles(self, center); + this.centerYaw = rotation[0]; + this.centerPitch = rotation[1]; + } + } + } + } + } + } + + public strictfp void clear(PlacementFrame i) { + this.restore(i); + this.placed = 0L; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/BridgeAssistModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/BridgeAssistModule.java new file mode 100644 index 0000000..7523721 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/BridgeAssistModule.java @@ -0,0 +1,424 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.numeric.DoubleNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.placement.PlacementSelection; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class BridgeAssistModule extends CatalogModule { + private final BridgeAssistModule.State state = new BridgeAssistModule.State(); + + public BridgeAssistModule() { + super("bridgeassist", "Bridge Assist", ModuleCategory.UTILITY); + } + + private strictfp BridgeAssistModule.Settings settings() { + BridgeAssistModule.Settings s = new BridgeAssistModule.Settings(); + s.requireSneak = this.flag("require_sneak"); + s.down = this.flag("require_looking_down"); + s.notForward = this.flag("require_not_forward"); + s.holding = this.flag("require_holding_blocks"); + s.jump = this.flag("sneak_on_jump"); + s.randomize = this.flag("randomize"); + s.avoidDouble = this.flag("avoid_double_sneak"); + s.edge = this.number("edge_offset"); + s.unsneak = this.number("unsneak_delay"); + s.select = this.choice("select_blocks"); + return s; + } + + private strictfp BridgeAssistModule.Input input(final ClientContext c) { + return new BridgeAssistModule.Input() { + @Override + public strictfp boolean ready() { + return c.inputReady(); + } + + @Override + public strictfp boolean physicalSneak() { + return KeyState.physical(c.minecraft().gameSettings.keyBindSneak); + } + + @Override + public strictfp boolean sneak() { + return c.minecraft().gameSettings.keyBindSneak.isKeyDown(); + } + + @Override + public strictfp boolean ground() { + return c.player().onGround; + } + + @Override + public strictfp boolean block() { + return ActionAccess.isBlock(c.player().getHeldItem()); + } + + @Override + public strictfp float pitch() { + return c.player().rotationPitch; + } + + @Override + public strictfp float yaw() { + return c.player().rotationYaw; + } + + @Override + public strictfp float forward() { + return c.player().moveForward; + } + + @Override + public strictfp double vertical() { + return c.player().motionY; + } + + @Override + public strictfp AxisAlignedBB box() { + return c.player().getEntityBoundingBox(); + } + + @Override + public strictfp double[] velocity() { + return new double[]{c.player().motionX, c.player().motionY, c.player().motionZ}; + } + + @Override + public strictfp boolean backward() { + return c.minecraft().gameSettings.keyBindBack.isKeyDown(); + } + + @Override + public strictfp boolean forwardKey() { + return c.minecraft().gameSettings.keyBindForward.isKeyDown(); + } + + @Override + public strictfp boolean left() { + return c.minecraft().gameSettings.keyBindLeft.isKeyDown(); + } + + @Override + public strictfp boolean right() { + return c.minecraft().gameSettings.keyBindRight.isKeyDown(); + } + + @Override + public strictfp float speed() { + return c.player().getAIMoveSpeed(); + } + + @Override + public strictfp boolean air(int x, int y, int z) { + return ActionAccess.registeredAir(c.world(), new BlockPos(x, y, z)); + } + + @Override + public strictfp void sneak(boolean v) { + KeyState.set(c.minecraft().gameSettings.keyBindSneak, v); + } + + @Override + public strictfp void restore() { + KeyState.restore(c.minecraft().gameSettings.keyBindSneak); + } + + @Override + public strictfp MovingObjectPosition hit() { + return c.minecraft().objectMouseOver; + } + + @Override + public strictfp Vec3 position() { + return new Vec3(c.player().posX, c.player().posY, c.player().posZ); + } + }; + } + + @Override + public strictfp boolean listens(int type) { + return type == 5 || type == 14 || type == 17 || type == 18 || type == 26; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + BridgeAssistModule.Input i = this.input(c); + if (e.type != 26 && (e.type != 5 || e.module != this || e.enabled)) { + if (e.type == 17) { + this.state.update(i, this.settings(), RotationRandom.SHARED, RotationRandom.now()); + } else if (e.type == 14 && !e.active && c.ready() && this.state.filter(i)) { + e.cancelled = true; + } else if (e.type == 18 && this.state.actionGate) { + PlacementSelection.select(c, this, this.choice("select_blocks") == 2, false); + } + } else { + this.state.clear(i); + PlacementSelection.release(this); + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.state.clear(this.input(c)); + PlacementSelection.release(this); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.onDisable(c); + } + + public interface Input { + boolean ready(); + + boolean physicalSneak(); + + boolean sneak(); + + boolean ground(); + + boolean block(); + + float pitch(); + + float yaw(); + + float forward(); + + double vertical(); + + AxisAlignedBB box(); + + double[] velocity(); + + boolean backward(); + + boolean forwardKey(); + + boolean left(); + + boolean right(); + + float speed(); + + boolean air(int var1, int var2, int var3); + + void sneak(boolean var1); + + void restore(); + + MovingObjectPosition hit(); + + Vec3 position(); + } + + public static final class Settings { + public boolean requireSneak; + public boolean down; + public boolean notForward; + public boolean holding; + public boolean jump; + public boolean randomize; + public boolean avoidDouble; + public float edge; + public float unsneak; + public int select; + } + + public static final class State { + public boolean owned; + public boolean inputGate; + public boolean actionGate; + public int cooldown; + public int grace; + public float countdown; + private final RotationRandom.Smooth edge = new RotationRandom.Smooth(); + private final RotationRandom.Smooth unsneak = new RotationRandom.Smooth(); + private final RotationRandom.Smooth extra = new RotationRandom.Smooth(); + + public strictfp boolean footprintAir(BridgeAssistModule.Input i, BridgeAssistModule.Settings s, RotationRandom r, double now) { + AxisAlignedBB b = i.box(); + double baseX = (b.minX + b.maxX) * ActionConstants.d(1378288); + double baseY = b.minY + ActionConstants.d(1378296); + double baseZ = (b.minZ + b.maxZ) * ActionConstants.d(1378288); + double radius = (double)s.edge; + if (s.randomize) { + radius -= (double)this.edge.sample(0.0F, ActionConstants.f(1378304), ActionConstants.d(1378312), now, r); + if (0.0 > radius) { + radius = 0.0; + } + } + + float forward = i.backward() ? ActionConstants.f(1378320) : 0.0F; + if (i.forwardKey()) { + forward += ActionConstants.f(1378324); + } + + float sideways = i.left() ? ActionConstants.f(1378320) : 0.0F; + if (i.right()) { + sideways += ActionConstants.f(1378324); + } + + double[] generated = RotationMath.movement(i.yaw(), forward, sideways, i.speed()); + double[] velocity = i.velocity(); + double x = baseX + (velocity[0] + generated[0]); + double y = baseY + velocity[1] + 0.0; + double z = baseZ + (velocity[2] + generated[1]); + int lowX = NumericMath.truncateInt(DoubleNumeric.floor(x - radius)); + int lowZ = NumericMath.truncateInt(DoubleNumeric.floor(z - radius)); + int iy = NumericMath.truncateInt(DoubleNumeric.floor(y)); + int highX = NumericMath.truncateInt(DoubleNumeric.floor(x + radius)); + int highZ = NumericMath.truncateInt(DoubleNumeric.floor(radius + z)); + return i.air(lowX, iy, lowZ) + && (lowZ == highZ || i.air(lowX, iy, highZ)) + && (lowX == highX || i.air(highX, iy, lowZ) && (lowZ == highZ || i.air(highX, iy, highZ))); + } + + public strictfp void update(BridgeAssistModule.Input i, BridgeAssistModule.Settings s, RotationRandom r, double now) { + this.inputGate = this.actionGate = false; + if (i.ready()) { + if (this.cooldown > 0) { + this.cooldown--; + } + + boolean physical = i.physicalSneak(); + if (s.requireSneak == physical && (!s.down || !(ActionConstants.f(1378240) > i.pitch())) && (!s.notForward || !(i.forward() > 0.0F))) { + this.actionGate = s.select != 0; + if (s.holding) { + if (i.block()) { + this.grace = 2; + } else { + if (this.grace <= 0) { + this.release(i); + return; + } + + this.grace--; + } + } + + this.owned = true; + boolean sneaking = i.sneak(); + if (sneaking) { + boolean countdownNeeded = false; + if (s.requireSneak) { + if (i.forward() >= 0.0F || this.cooldown <= 0) { + this.inputGate = s.avoidDouble; + return; + } + } else if (!i.ground() && (!s.jump || 0.0 > i.vertical())) { + countdownNeeded = true; + } + + if (!countdownNeeded && this.footprintAir(i, s, r, now)) { + this.inputGate = s.avoidDouble; + } else { + this.countdown = this.countdown + ActionConstants.f(1378244); + if (this.countdown > 0.0F) { + this.inputGate = s.avoidDouble; + } else { + i.sneak(false); + float next = s.unsneak; + if (s.randomize) { + next += this.unsneak.sample(ActionConstants.f(1378248), ActionConstants.f(1378252), ActionConstants.d(1378256), now, r); + if (this.extra.gate(ActionConstants.f(1378264), ActionConstants.f(1378268), ActionConstants.d(1378272), now, r)) { + next += r.interval(0.0F, ActionConstants.f(1378280)); + } + } + + this.countdown += next; + } + } + } else if (i.ground() || s.jump && !(0.0 > i.vertical())) { + if (this.footprintAir(i, s, r, now)) { + i.sneak(true); + this.inputGate = s.avoidDouble; + } + } + } else { + this.release(i); + } + } + } + + public strictfp void release(BridgeAssistModule.Input i) { + if (this.owned) { + i.restore(); + } + + this.owned = false; + } + + private static strictfp double absolute(double v) { + return Double.longBitsToDouble(Double.doubleToRawLongBits(v) & ActionConstants.longAt(1378192)); + } + + public strictfp boolean filter(BridgeAssistModule.Input i) { + if (this.cooldown == 20) { + return false; + } else { + MovingObjectPosition hit = i.hit(); + boolean cancel = false; + if (this.inputGate + && hit != null + && ActionAccess.hitKind(hit) == 1 + && hit.sideHit.ordinal() >= 2 + && i.ground() + && i.forwardKey() + && !i.left() + && !i.right()) { + float folded = Float.intBitsToFloat( + Float.floatToRawIntBits((float)DoubleNumeric.remainder((double)i.yaw(), ActionConstants.d(1378144))) & ActionConstants.intAt(1378160) + ); + if (!(ActionConstants.f(1378176) > folded) && !(folded > ActionConstants.f(1378180))) { + Vec3 self = i.position(); + Vec3 point = hit.hitVec; + double dy = point.yCoord - self.yCoord; + if (!(absolute(point.xCoord - self.xCoord) > ActionConstants.d(1378208)) + && !(ActionConstants.d(1378216) > dy) + && !(dy > 0.0) + && !(absolute(point.zCoord - self.zCoord) > ActionConstants.d(1378208))) { + BlockPos block = hit.getBlockPos().offset(hit.sideHit); + double unit = ActionConstants.d(1378208); + boolean inside = (double)block.getX() < self.xCoord + && self.xCoord < (double)block.getX() + unit + && (double)block.getZ() < self.zCoord + && self.zCoord < (double)block.getZ() + unit; + double margin = ActionConstants.d(inside ? 1378224 : 1378232); + double upper = unit - margin; + double rx = absolute(DoubleNumeric.remainder(point.xCoord, unit)); + double rz = absolute(DoubleNumeric.remainder(point.zCoord, unit)); + cancel = !(upper < rx) && !(rx < margin) || !(upper < rz) && !(rz < margin); + } + } + } + + if (!cancel && i.block()) { + this.cooldown = 20; + } + + return cancel; + } + } + + public strictfp void clear(BridgeAssistModule.Input i) { + this.release(i); + this.inputGate = this.actionGate = false; + this.cooldown = this.grace = 0; + this.countdown = 0.0F; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/ClutchModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/ClutchModule.java new file mode 100644 index 0000000..2501e58 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/ClutchModule.java @@ -0,0 +1,506 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.DoubleNumeric; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.numeric.NumericServices; +import dev.slinky.client.placement.PlacementFrame; +import dev.slinky.client.placement.PlacementGeometry; +import dev.slinky.client.placement.PlacementSelection; +import dev.slinky.client.rotation.RotationMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.ModuleManager; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +public final strictfp class ClutchModule extends CatalogModule { + private final ClutchModule.State state = new ClutchModule.State(); + private final ModuleManager modules; + + public ClutchModule(ModuleManager modules) { + super("clutch", "Clutch", ModuleCategory.UTILITY); + this.modules = modules; + } + + private strictfp ClutchModule.Settings settings() { + ClutchModule.Settings s = new ClutchModule.Settings(); + s.range = this.number("range"); + s.fov = this.number("max_aim_dist"); + s.height = this.number("min_height"); + s.clickSpeed = this.number("click_speed"); + s.randomization = this.number("randomization"); + s.aimSpeed = this.number("aim_speed"); + s.aimMult = this.number("aim_mult"); + s.aimStrength = this.number("aim_mult_strength"); + s.snapDelay = this.number("snapback_delay"); + s.snapDuration = this.number("snapback_duration"); + s.select = this.choice("select_blocks"); + s.sideways = this.flag("sideways_only"); + s.multipoint = this.flag("aim_multipoint"); + s.instantJump = this.flag("snapback_instant_on_jump"); + s.disableAfter = this.flag("snapback_disable_after"); + s.air = this.flag("require_air"); + s.damage = this.flag("require_damage"); + s.backwards = this.flag("require_backwards"); + return s; + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 13 || type == 18 || type == 26; + } + + @Override + public strictfp void onEvent(ClientContext c, SemanticEvent e) { + PlacementFrame i = new PlacementFrame.Game(c, this.modules, this); + if (e.type == 26) { + this.cleanup(); + } else { + if (e.type == 0) { + this.state.placementTick(i, this.number("click_speed")); + } else if (e.type == 18) { + this.state.update(i, this.settings(), RotationRandom.SHARED, RotationRandom.now()); + } else if (this.state.correctMovement) { + e.active = true; + e.remapMovement = true; + } + } + } + + private strictfp void cleanup() { + this.state.clear(); + PlacementSelection.release(this); + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.cleanup(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.cleanup(); + } + + public static final strictfp class Face { + public final Vec3 point; + public final float score; + + Face(Vec3 point, float score) { + this.point = point; + this.score = score; + } + } + + public static final class Settings { + public float range; + public float fov; + public float height; + public float clickSpeed; + public float randomization; + public float aimSpeed; + public float aimMult; + public float aimStrength; + public float snapDelay; + public float snapDuration; + public int select; + public boolean sideways; + public boolean multipoint; + public boolean instantJump; + public boolean disableAfter; + public boolean air; + public boolean damage; + public boolean backwards; + } + + public static final class State { + public float clickTimer; + public int x; + public int y; + public int z; + public int unhurt; + public int phase; + public int snapDelay; + public int snapRemaining; + public boolean placement; + public boolean centered; + public boolean correctMovement; + public boolean disableLatched; + public Vec3 selected = new Vec3(0.0, 0.0, 0.0); + public double jumpAccumulator; + private final RotationRandom.Smooth inward = new RotationRandom.Smooth(); + private final RotationRandom.Smooth jitterX = new RotationRandom.Smooth(); + private final RotationRandom.Smooth jitterZ = new RotationRandom.Smooth(); + private final RotationRandom.Smooth holeX = new RotationRandom.Smooth(); + private final RotationRandom.Smooth holeZ = new RotationRandom.Smooth(); + private final RotationRandom.Smooth pitchNoise = new RotationRandom.Smooth(); + private final RotationRandom.Segment speedX = new RotationRandom.Segment(); + private final RotationRandom.Segment speedZ = new RotationRandom.Segment(); + + private static strictfp float f(int a) { + return ActionConstants.f(a); + } + + private static strictfp double d(int a) { + return ActionConstants.d(a); + } + + private static strictfp float smooth(RotationRandom.Smooth s, float low, float high, double period, RotationRandom r, double now) { + return s.sample(low, high, period, now, r); + } + + public static strictfp boolean scoreRejected(float score, float best, long maximum, long distance) { + return score > best && maximum <= distance; + } + + public strictfp ClutchModule.Face face( + Vec3 eye, + float yaw, + float pitch, + Vec3 position, + int bx, + int by, + int bz, + int dx, + int dy, + int dz, + ClutchModule.Settings s, + RotationRandom r, + double now + ) { + float inner = smooth(this.inward, 0.0F, f(1401200), d(1401208), r, now); + float jx = smooth(this.jitterX, f(1401216), f(1401220), d(1401224), r, now); + float jz = smooth(this.jitterZ, f(1401216), f(1401220), d(1401224), r, now); + double[] jitter = new double[]{(double)(jz * s.randomization), (double)(jx * s.randomization)}; + if (!s.multipoint) { + double[] remainder = new double[]{DoubleNumeric.remainder(position.xCoord, d(1401208)), DoubleNumeric.remainder(position.zCoord, d(1401208))}; + double[] observed = new double[]{position.zCoord, position.xCoord}; + double[] previous = new double[]{this.selected.zCoord, this.selected.xCoord}; + + for (int lane = 0; lane < 2; lane++) { + long mask = ActionConstants.longAt(1401232 + lane * 8); + double value = Double.longBitsToDouble(Double.doubleToRawLongBits(remainder[lane]) & mask); + boolean beyond = d(1401248 + lane * 8) < value; + double adjustment = d(1401264 + lane * 8); + double changed = value + adjustment; + double folded = beyond ? Double.longBitsToDouble(Double.doubleToRawLongBits(changed) & mask) : value; + double weight = previous[lane] < observed[lane] ? adjustment : d(1401280 + lane * 8); + jitter[lane] += folded * weight; + } + } + + int ax = PlacementGeometry.magnitude(dx); + int az = PlacementGeometry.magnitude(dz); + double offset = (double)(s.randomization * inner) + d(1401296); + double inverse = d(1401208) - offset; + double xLow = offset; + double xHigh = inverse; + double zLow = (double)(dz >>> 31); + double zHigh = zLow; + if (Integer.compareUnsigned(az, ax) < 0) { + xLow = (double)(dx >>> 31); + xHigh = xLow; + zLow = offset; + zHigh = inverse; + } + + int blockX = dx + bx; + int blockY = dy + by; + int blockZ = dz + bz; + float pointX = RotationMath.clamp((float)(xLow + (double)blockX), (float)(xHigh + (double)blockX), (float)(jitter[1] + position.xCoord)); + double half = d(1401304); + double baseY = (double)blockY + half; + int magnitude = PlacementGeometry.magnitude(dx) + PlacementGeometry.magnitude(dz); + float pointY = RotationMath.clamp(0.0F, f(1401312), (float)((double)magnitude * half)); + float pointZ = RotationMath.clamp((float)(zLow + (double)blockZ), (float)(zHigh + (double)blockZ), (float)(jitter[0] + position.zCoord)); + Vec3 point = new Vec3((double)pointX, (double)pointY + baseY, (double)pointZ); + float[] desired = RotationMath.angles(eye, point); + float yawValue = Float.intBitsToFloat(Float.floatToRawIntBits(RotationMath.wrap(desired[0] - yaw)) & ActionConstants.intAt(1401328)); + float pitchValue = Float.intBitsToFloat(Float.floatToRawIntBits(desired[1] - pitch) & 2147483647); + return new ClutchModule.Face(point, yawValue + pitchValue); + } + + public strictfp void placementTick(PlacementFrame i, float cps) { + if (this.clickTimer > 0.0F) { + this.clickTimer = this.clickTimer + f(1400944); + if (this.clickTimer > 0.0F) { + return; + } + } + + this.clickTimer = f(1400948) / cps + this.clickTimer; + if (i.ready() && this.placement) { + MovingObjectPosition hit = i.hit(); + if (hit != null && hit.typeOfHit == MovingObjectType.BLOCK) { + BlockPos block = hit.getBlockPos(); + if (block.getX() == this.x && block.getY() == this.y && block.getZ() == this.z && this.centered != (hit.sideHit.ordinal() != 1)) { + i.press(); + Vec3 adjacent = ActionAccess.adjacentPosition(hit); + this.x = NumericMath.truncateInt(adjacent.xCoord); + this.y = NumericMath.truncateInt(adjacent.yCoord); + this.z = NumericMath.truncateInt(adjacent.zCoord); + } + } + } + } + + private strictfp boolean search( + PlacementFrame i, ClutchModule.Settings s, Vec3 eye, AxisAlignedBB b, float yaw, float pitch, RotationRandom r, double now + ) { + this.centered = false; + double gx = (b.minX + b.maxX) * d(1400984); + double gy = b.minY + d(1400992); + double gz = (b.minZ + b.maxZ) * d(1400984); + int ix = NumericMath.truncateInt(DoubleNumeric.floor(gx)); + int iy = NumericMath.truncateInt(DoubleNumeric.floor(gy)); + int iz = NumericMath.truncateInt(DoubleNumeric.floor(gz)); + if (s.height > 0.0F) { + int step = 1; + int queryY = iy; + + int compared; + do { + if (i.block(ix, queryY, iz) != 0) { + return false; + } + + compared = step++; + queryY--; + } while (s.height > (float)compared); + } + + Vec3 position = new Vec3(gx, gy, gz); + Vec3 bestTarget = eye; + int bestX = ix; + int bestY = iy; + int bestZ = iz; + float bestScore = f(1401000); + long maxDistance = -3L; + int count = ActionConstants.shortAt(1401472 + 2 * NumericMath.truncateInt(s.range)); + if ((double)this.y <= gy && i.block(this.x, this.y, this.z) != 0) { + ClutchModule.Face retained = this.face(eye, yaw, pitch, position, ix, iy, iz, this.x - ix, this.y - iy, this.z - iz, s, r, now); + if (!(retained.score > s.fov) && PlacementGeometry.squared(eye, retained.point) < d(1401008)) { + MovingObjectPosition hit = i.ray(eye, retained.point); + if (hit != null + && hit.getBlockPos() != null + && hit.getBlockPos().getX() == this.x + && hit.getBlockPos().getY() == this.y + && hit.getBlockPos().getZ() == this.z) { + bestTarget = retained.point; + bestX = this.x; + bestY = this.y; + bestZ = this.z; + bestScore = retained.score; + } + } + } + + if (bestScore != f(1401000) || Float.isNaN(bestScore)) { + int sum = (int)PlacementGeometry.absdiff(bestX, ix) + (int)PlacementGeometry.absdiff(bestY, iy) + (int)PlacementGeometry.absdiff(bestZ, iz); + maxDistance = Integer.toUnsignedLong(sum) - 2L; + } + + for (int k = 0; k < count; k++) { + int code = ActionConstants.shortAt(1401488 + 2 * k); + int dx = (code & 15) - 8; + int dy = (code >>> 4 & 15) - 8; + int dz = (code >>> 8 & 15) - 8; + int cx = ix + dx; + int cy = iy + dy; + int cz = iz + dz; + if (i.block(cx, cy, cz) != 0) { + if (dx == 0 && dz == 0) { + if (s.sideways) { + return false; + } + + float j = smooth(this.inward, 0.0F, f(1401016), d(1401024), r, now); + double inset = d(1401032) + (double)(j * s.randomization); + float sy = smooth(this.holeX, f(1401040), f(1401044), d(1401024), r, now); + float sz = smooth(this.holeZ, f(1401040), f(1401044), d(1401024), r, now); + float px = RotationMath.clamp((float)((double)cx + inset), (float)((double)(cx + 1) - inset), (float)(gx + (double)(sy * s.randomization))); + float pz = RotationMath.clamp((float)((double)cz + inset), (float)((double)(cz + 1) - inset), (float)(gz + (double)(sz * s.randomization))); + this.selected = new Vec3((double)px, d(1401024), (double)pz); + this.x = cx; + this.y = cy; + this.z = cz; + this.centered = true; + return true; + } + + long distance = (long)Math.abs(dx) + (long)Math.abs(dy) + (long)Math.abs(dz); + count = ActionConstants.shortAt(1401472 + 2 * (int)distance); + ClutchModule.Face candidate = this.face(eye, yaw, pitch, position, ix, iy, iz, dx, dy, dz, s, r, now); + if (!scoreRejected(candidate.score, bestScore, maxDistance, distance) && PlacementGeometry.squared(eye, candidate.point) < d(1401008)) { + bestTarget = candidate.point; + bestX = cx; + bestY = cy; + bestZ = cz; + bestScore = candidate.score; + } + } + } + + if (bestScore > s.fov) { + return false; + } else { + this.selected = bestTarget; + this.x = bestX; + this.y = bestY; + this.z = bestZ; + return true; + } + } + + public strictfp void update(PlacementFrame i, ClutchModule.Settings s, RotationRandom r, double now) { + this.placement = this.correctMovement = false; + if (i.ready()) { + boolean ground = i.ground(); + this.unhurt = i.hurt() == 0 ? this.unhurt + 1 : 0; + boolean phaseActive = this.phase > 0; + if (phaseActive) { + this.phase--; + } + + if (phaseActive && ground && i.rotationAvailable() && s.instantJump && i.jump()) { + float yaw = i.yaw() + i.offsetYaw(); + float pitch = i.pitch() + i.offsetPitch(); + double multiplier = this.jumpAccumulator < 0.0 ? d(1401184) : d(1401176); + float a = (float)((double)r.interval(f(1401192), f(1401196)) * multiplier); + float b = (float)((double)r.interval(f(1401192), f(1401196)) * multiplier); + this.jumpAccumulator += (double)a; + float outYaw = a * s.randomization + i.storedYaw() - yaw; + float outPitch = b * s.randomization + i.storedPitch() - pitch; + i.publish(RotationMath.wrap(outYaw), outPitch); + this.correctMovement = true; + this.snapDelay = NumericMath.truncateInt(s.snapDuration); + } else { + AxisAlignedBB box = i.box(); + Vec3 eye = i.eye(); + float yaw = i.yaw() + i.offsetYaw(); + float pitch = i.pitch() + i.offsetPitch(); + boolean doSearch = (!s.air || !ground) && (this.unhurt < 11 || !s.damage) && !i.mounted(); + if (doSearch && s.backwards) { + double[] velocity = i.velocity(); + double length = NumericServices.hypot(velocity[0], velocity[2]); + if (length == 0.0) { + doSearch = false; + } else { + float normalized = (float)((double)i.yaw() * d(1400960) / d(1400968) + d(1400960)); + float fx = RotationMath.sine(normalized); + float fy = RotationMath.cosine(normalized); + double ratio = NumericServices.acos(((double)fy * velocity[2] + (double)fx * velocity[0]) / length); + if (!(d(1400976) > ratio)) { + doSearch = false; + } + } + } + + boolean found = doSearch && this.search(i, s, eye, box, yaw, pitch, r, now); + if (found) { + if (s.select == 1 || s.select == 2) { + i.select(s.select == 2, false); + } + + this.placement = i.heldBlock(); + if (this.placement) { + float high = (float)((double)s.randomization * d(1400984) + d(1401024)); + this.snapDelay = NumericMath.truncateInt(r.interval(f(1401048), high) * s.snapDelay); + this.phase = 10; + this.disableLatched = s.disableAfter; + } + } + + if (!this.placement) { + if (this.snapDelay > 0) { + this.snapDelay--; + this.snapRemaining = NumericMath.truncateInt(s.snapDuration); + } else { + if (this.snapRemaining <= 0) { + if (this.disableLatched) { + i.disable(); + this.disableLatched = false; + } + + return; + } + + this.snapRemaining--; + } + } + + if (i.claim(1000)) { + this.correctMovement = true; + if (!this.placement) { + if (this.snapDelay <= 0) { + if (this.snapRemaining < 1) { + if (this.disableLatched) { + i.disable(); + this.disableLatched = false; + } + } else if (i.rotationAvailable()) { + float deltaYaw = RotationMath.wrap(i.storedYaw() - (i.yaw() + i.offsetYaw())); + float deltaPitch = i.storedPitch() - (i.pitch() + i.offsetPitch()); + float rate = (float)((double)f(1401048) / (double)this.snapRemaining); + i.publish(deltaYaw * rate, deltaPitch * rate); + } + } + } else { + Vec3 direction = PlacementGeometry.direction(i.yaw(), i.pitch()); + double extent = d(1401064); + Vec3 collision = new Vec3(extent * direction.xCoord, extent * direction.yCoord, extent * direction.zCoord); + double[] query = new double[]{ + (double)this.x + d(1401072), + (double)this.y + d(1401080), + (double)this.z + d(1401088), + (double)this.x + d(1401096), + (double)this.y + 1.0, + (double)this.z + d(1401056) + }; + Vec3 hit = PlacementGeometry.rayPoint(query, eye, collision); + if (hit == null || !(hit.yCoord < (double)this.y + d(1401104))) { + float[] desired = RotationMath.angles(eye, this.selected); + float deltaYaw = desired[0] - yaw; + float deltaPitch = desired[1] - pitch; + float gate = !((double)desired[1] > d(1401112)) + ? RotationMath.wrap(deltaYaw) + : smooth(this.pitchNoise, f(1401120), f(1401124), d(1400984), r, now) * s.randomization; + float low = (float)((double)s.randomization * d(1401128) + d(1401024)); + float high = f(1401048); + float a = this.speedX.sample(low, high, d(1401136), d(1401024), r) * s.aimSpeed; + float b = this.speedZ.sample(low, high, d(1401136), d(1401024), r) * s.aimSpeed; + float negativeA = Float.intBitsToFloat(Float.floatToRawIntBits(a) ^ ActionConstants.intAt(1401152)); + float negativeB = Float.intBitsToFloat(Float.floatToRawIntBits(b) ^ ActionConstants.intAt(1401152)); + float first = RotationMath.clamp(negativeA, a, gate); + float second = RotationMath.clamp(negativeB, b, deltaPitch); + float accumA = s.aimMult; + float accumB = s.aimMult; + accumA += this.speedX.sample(f(1401168), f(1401016), d(1401136), d(1401024), r); + accumB += this.speedZ.sample(f(1401168), f(1401016), d(1401136), d(1401024), r); + accumA *= gate; + accumB *= deltaPitch; + i.publish((accumA - first) * s.aimStrength + first, (accumB - second) * s.aimStrength + second); + } + } + } + } + } + } + + public strictfp void clear() { + this.placement = this.centered = this.correctMovement = this.disableLatched = false; + this.clickTimer = 0.0F; + this.x = this.y = this.z = this.unhurt = this.phase = this.snapDelay = this.snapRemaining = 0; + this.selected = new Vec3(0.0, 0.0, 0.0); + this.jumpAccumulator = 0.0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/FastMineModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/FastMineModule.java new file mode 100644 index 0000000..69cc28c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/FastMineModule.java @@ -0,0 +1,94 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.MinecraftFields; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.client.multiplayer.PlayerControllerMP; + +public final strictfp class FastMineModule extends CatalogModule { + private final FastMineModule.State state = new FastMineModule.State(); + + public FastMineModule() { + super("fastmine", "Fast Mine", ModuleCategory.WORLD); + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 18; + } + + public static strictfp float acceleratedProgress(float progress, float speed) { + float firstArgument = 1.0F / progress; + float secondArgument = (float)(1.0 / (double)speed / (double)progress); + long first = NumericMath.truncateLong(NumericMath.ceiling(firstArgument)); + long second = NumericMath.truncateLong(NumericMath.ceiling(secondArgument)); + long steps = first - second + 1L & 4294967295L; + return (float)steps * progress; + } + + @Override + public strictfp void onEvent(ClientContext context, SemanticEvent event) { + PlayerControllerMP controller = context.minecraft().playerController; + if (event.type == 0) { + if (controller == null) { + this.state.update(false, 0, 0.0F, 0.0F, false); + return; + } + + int before = MinecraftFields.blockHitDelay(controller); + int after = this.state.update(true, before, MinecraftFields.blockDamage(controller), this.number("break_delay"), this.flag("decr_block_hit_delay")); + if (after != before) { + MinecraftFields.setBlockHitDelay(controller, after); + } + } else if (controller != null) { + float progress = MinecraftFields.blockDamage(controller); + if (progress != 0.0F && this.state.savedProgress == 0.0F) { + MinecraftFields.setBlockDamage(controller, acceleratedProgress(progress, this.number("speed"))); + } + } + } + + @Override + protected strictfp void onDisable(ClientContext context) { + this.state.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext context) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + return !this.findSetting("speed").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("speed")); + } + + public static final class State { + public int lastDelay; + public float savedProgress; + + public strictfp int update(boolean controllerPresent, int current, float progress, float limit, boolean decrement) { + int result = current; + if (controllerPresent) { + this.savedProgress = progress; + if ((float)current > limit) { + result = NumericMath.truncateInt(limit); + } else if (current > 0 && decrement && current == this.lastDelay) { + result = current - 1; + } + } + + this.lastDelay = controllerPresent ? current : 0; + return result; + } + + public strictfp void clear() { + this.lastDelay = 0; + this.savedProgress = 0.0F; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/FastPlaceModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/FastPlaceModule.java new file mode 100644 index 0000000..0da6cf7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/FastPlaceModule.java @@ -0,0 +1,173 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.action.ActionAccess; +import dev.slinky.client.action.ActionConstants; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.KeyState; +import dev.slinky.client.inventory.InventoryActions; +import dev.slinky.client.numeric.NumericMath; +import dev.slinky.client.rotation.RotationRandom; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.module.catalog.StatusText; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.BlockPos; +import net.minecraft.util.MovingObjectPosition; + +public final strictfp class FastPlaceModule extends CatalogModule { + private final FastPlaceModule.State state = new FastPlaceModule.State(); + + public FastPlaceModule() { + super("fastplace", "Fast Place", ModuleCategory.UTILITY); + } + + @Override + public strictfp boolean listens(int type) { + return type == 0 || type == 26; + } + + @Override + public strictfp void onEvent(final ClientContext c, SemanticEvent e) { + if (e.type == 26) { + this.state.clear(); + } else { + this.state.update(new FastPlaceModule.Input() { + @Override + public strictfp boolean ready() { + return c.inputReady(); + } + + @Override + public strictfp boolean physical() { + return KeyState.physical(c.minecraft().gameSettings.keyBindUseItem); + } + + @Override + public strictfp int presses() { + return ActionAccess.presses(c.minecraft().gameSettings.keyBindUseItem); + } + + @Override + public strictfp boolean block() { + return ActionAccess.isBlock(c.player().getHeldItem()); + } + + @Override + public strictfp int itemType() { + return InventoryActions.type(c.player().getHeldItem()); + } + + @Override + public strictfp MovingObjectPosition hit() { + return c.minecraft().objectMouseOver; + } + + @Override + public strictfp AxisAlignedBB playerBox() { + return c.player().getEntityBoundingBox(); + } + + @Override + public strictfp void press() { + ActionAccess.increment(c.minecraft().gameSettings.keyBindUseItem); + } + }, this.number("max_cps"), this.number("activate_delay"), RotationRandom.SHARED, RotationRandom.now()); + } + } + + @Override + protected strictfp void onDisable(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp void onWorldUnload(ClientContext c) { + this.state.clear(); + } + + @Override + public strictfp String statusText() { + return !this.findSetting("max_cps").isConfigured() ? null : StatusText.number(this.getName(), (double)this.number("max_cps")); + } + + public interface Input { + boolean ready(); + + boolean physical(); + + int presses(); + + boolean block(); + + int itemType(); + + MovingObjectPosition hit(); + + AxisAlignedBB playerBox(); + + void press(); + } + + public static final class State { + public float timer; + public boolean previouslyPressed; + public int activationCountdown; + private final RotationRandom.Smooth gate = new RotationRandom.Smooth(); + + public strictfp void update(FastPlaceModule.Input access, float cps, float activationDelay, RotationRandom random, double now) { + if (!Float.isNaN(this.timer) && this.timer > 0.0F) { + this.timer = this.timer + ActionConstants.f(1379560); + if (!Float.isNaN(this.timer) && this.timer > 0.0F) { + return; + } + } + + if (access.ready()) { + boolean pressed = access.physical(); + boolean previous = this.previouslyPressed; + this.previouslyPressed = pressed; + if (!pressed) { + this.activationCountdown = NumericMath.truncateInt(activationDelay); + } else if (this.activationCountdown >= 1) { + this.activationCountdown--; + } else if (access.presses() <= 0 && !Float.isNaN(this.timer) && !(this.timer > 0.0F)) { + boolean phase = !previous; + + do { + this.timer = (float)((double)this.timer + ActionConstants.d(1379568) / (double)cps); + if (!phase && access.block()) { + MovingObjectPosition hit = access.hit(); + boolean useGate = hit == null || ActionAccess.hitKind(hit) != 1; + if (!useGate && access.itemType() != 65) { + BlockPos adjacent = hit.getBlockPos().offset(hit.sideHit); + double extent = ActionConstants.d(1379576); + AxisAlignedBB placed = new AxisAlignedBB( + (double)adjacent.getX(), + (double)adjacent.getY(), + (double)adjacent.getZ(), + (double)adjacent.getX() + extent, + (double)adjacent.getY() + extent, + (double)adjacent.getZ() + extent + ); + useGate = placed.intersectsWith(access.playerBox()); + } + + if (!useGate || this.gate.gate(ActionConstants.f(1379584), ActionConstants.f(1379588), ActionConstants.d(1379568), now, random)) { + access.press(); + } + } + + phase = false; + } while (!Float.isNaN(this.timer) && this.timer <= 0.0F); + } + } + } + + public strictfp void clear() { + this.timer = 0.0F; + this.previouslyPressed = false; + this.activationCountdown = 0; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/module/world/GhostHandModule.java b/SlinkyClient/src/main/java/dev/slinky/module/world/GhostHandModule.java new file mode 100644 index 0000000..b6bb608 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/module/world/GhostHandModule.java @@ -0,0 +1,111 @@ +package dev.slinky.module.world; + +import dev.slinky.client.ClientContext; +import dev.slinky.client.event.SemanticEvent; +import dev.slinky.client.input.AttackInput; +import dev.slinky.client.target.RelationshipService; +import dev.slinky.module.CatalogModule; +import dev.slinky.module.ModuleCategory; +import dev.slinky.setting.BooleanSetting; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public final class GhostHandModule extends CatalogModule { + public GhostHandModule() { + super("ghosthand", "Ghost Hand", ModuleCategory.COMBAT); + this.reorderSettings( + new String[]{ + "non_players", + "friendlies", + "bots", + "enemies", + "allow_using_sword", + "allow_using_tools", + "allow_using_fists", + "allow_using_buckets", + "allow_using_fns", + "allow_using_cobweb", + "allow_using_other", + "require_mouse_pressed" + } + ); + } + + @Override + public boolean listens(int type) { + return type == 8; + } + + public boolean swordExcluded() { + return !this.flag("allow_using_sword"); + } + + public void setSwordExcluded(boolean excluded) { + ((BooleanSetting)this.findSetting("allow_using_sword")).set(Boolean.valueOf(!excluded)); + } + + @Override + public void onEvent(ClientContext context, SemanticEvent event) { + event.queryOverride = true; + } + + public boolean canInteractThrough(ClientContext context, Entity target) { + if (!this.isEnabled() || !context.ready()) { + return false; + } else if (this.flag("require_mouse_pressed") && !AttackInput.pressed(context)) { + return false; + } else { + ItemStack held = context.player().getHeldItem(); + String key = held != null && held.getItem() != null ? itemGate(Item.getIdFromItem(held.getItem())) : "allow_using_fists"; + if (!this.flag(key)) { + return false; + } else { + return !(target instanceof EntityOtherPlayerMP) ? this.flag("non_players") : this.flag(relationshipGate(RelationshipService.flags(target))); + } + } + } + + public static String relationshipGate(int flags) { + return (flags & 2) != 0 ? "bots" : ((flags & 5) != 0 ? "friendlies" : "enemies"); + } + + public static String itemGate(int id) { + switch (id) { + case 30: + return "allow_using_cobweb"; + case 256: + case 257: + case 258: + case 269: + case 270: + case 271: + case 273: + case 274: + case 275: + case 277: + case 278: + case 279: + case 284: + case 285: + case 286: + case 359: + return "allow_using_tools"; + case 259: + return "allow_using_fns"; + case 267: + case 268: + case 272: + case 276: + case 283: + return "allow_using_sword"; + case 325: + case 326: + case 327: + return "allow_using_buckets"; + default: + return "allow_using_other"; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/BooleanSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/BooleanSetting.java new file mode 100644 index 0000000..fe8b1e9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/BooleanSetting.java @@ -0,0 +1,26 @@ +package dev.slinky.setting; + +public final class BooleanSetting extends Setting { + public BooleanSetting(String key, String label, boolean initialValue) { + super(key, label, initialValue); + } + + public boolean isEnabled() { + return this.get(); + } + + @Override + public String format() { + return Boolean.toString(this.get()); + } + + protected Boolean parse(String text) { + if ("true".equalsIgnoreCase(text) || "on".equalsIgnoreCase(text) || "1".equals(text)) { + return true; + } else if (!"false".equalsIgnoreCase(text) && !"off".equalsIgnoreCase(text) && !"0".equals(text)) { + throw new IllegalArgumentException("expected true/false, on/off, or 1/0"); + } else { + return false; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/ChoiceSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/ChoiceSetting.java new file mode 100644 index 0000000..8ff72bd --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/ChoiceSetting.java @@ -0,0 +1,61 @@ +package dev.slinky.setting; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class ChoiceSetting extends Setting { + private final List options; + + public ChoiceSetting(String key, String label, int initialValue, String... options) { + super(key, label, initialValue); + if (options != null && options.length != 0) { + List copy = new ArrayList<>(); + Collections.addAll(copy, options); + this.options = Collections.unmodifiableList(copy); + this.set(Integer.valueOf(initialValue)); + } else { + throw new IllegalArgumentException("choice setting needs at least one option"); + } + } + + public int index() { + return this.get(); + } + + public String selectedLabel() { + return this.options.get(this.get()); + } + + public List getOptions() { + return this.options; + } + + @Override + public String format() { + return this.selectedLabel(); + } + + protected Integer parse(String text) { + try { + return Integer.parseInt(text); + } catch (NumberFormatException var4) { + for (int i = 0; i < this.options.size(); i++) { + if (this.options.get(i).equalsIgnoreCase(text)) { + return i; + } + } + + throw new IllegalArgumentException("unknown option: " + text); + } + } + + protected Integer requireValid(Integer value) { + super.requireValid(value); + if (this.options == null || value >= 0 && value < this.options.size()) { + return value; + } else { + throw new IllegalArgumentException("choice index is out of range"); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/ColorSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/ColorSetting.java new file mode 100644 index 0000000..c50a6a6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/ColorSetting.java @@ -0,0 +1,50 @@ +package dev.slinky.setting; + +public final class ColorSetting extends Setting { + public ColorSetting(String key, String label) { + super(key, label, new ColorSetting.Value(0.0F, 0.0F, 0.0F)); + } + + @Override + public String format() { + ColorSetting.Value v = this.get(); + return Float.toString(v.red) + "," + v.green + "," + v.blue; + } + + protected ColorSetting.Value parse(String text) { + String[] parts = text.split(",", -1); + if (parts.length != 3) { + throw new IllegalArgumentException("color needs red,green,blue"); + } else { + return new ColorSetting.Value(Float.parseFloat(parts[0]), Float.parseFloat(parts[1]), Float.parseFloat(parts[2])); + } + } + + protected ColorSetting.Value requireValid(ColorSetting.Value value) { + super.requireValid(value); + + for (float lane : new float[]{value.red, value.green, value.blue}) { + if (!Float.isFinite(lane) || lane < 0.0F || lane > 1.0F) { + throw new IllegalArgumentException("color lanes must be finite and in [0,1]"); + } + } + + return value; + } + + public static final class Value { + public final float red; + public final float green; + public final float blue; + + public Value(float red, float green, float blue) { + this.red = red; + this.green = green; + this.blue = blue; + } + + public int argb() { + return 0xFF000000 | (int)(this.red * 255.0F) << 16 | (int)(this.green * 255.0F) << 8 | (int)(this.blue * 255.0F); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/NamedColorListSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/NamedColorListSetting.java new file mode 100644 index 0000000..632e00a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/NamedColorListSetting.java @@ -0,0 +1,112 @@ +package dev.slinky.setting; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import dev.slinky.config.ConfigurationJson; +import dev.slinky.config.json.JsonRuntime; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public final class NamedColorListSetting extends Setting> { + public NamedColorListSetting(String key, String label) { + super(key, label, Collections.emptyList()); + } + + @Override + public synchronized void restoreSaved() { + this.set(Collections.emptyList()); + } + + @Override + public String format() { + return this.encode().toString(); + } + + public JsonArray encode() { + JsonArray result = new JsonArray(); + + for (NamedColorListSetting.Entry entry : this.get()) { + JsonObject row = new JsonObject(); + JsonObject rgb = new JsonObject(); + rgb.addProperty("r", (double)entry.color.red); + rgb.addProperty("g", (double)entry.color.green); + rgb.addProperty("b", (double)entry.color.blue); + row.addProperty("name", entry.name); + row.add("color", rgb); + result.add(row); + } + + return result; + } + + protected List parse(String text) { + JsonArray rows; + try { + rows = ConfigurationJson.parseValue(JsonRuntime.cString(text)).getAsJsonArray(); + } catch (IOException var4) { + throw new IllegalArgumentException("Invalid color-list bytes", var4); + } + + return decodeRows(rows); + } + + public void loadRows(JsonArray rows) { + this.set(decodeRows(rows)); + } + + private static List decodeRows(JsonArray rows) { + List result = new ArrayList<>(); + + for (JsonElement element : rows) { + if (element.isJsonObject()) { + JsonObject row = element.getAsJsonObject(); + JsonElement name = row.get("name"); + if (name != null && name.isJsonPrimitive() && name.getAsJsonPrimitive().isString()) { + ColorSetting.Value color = new ColorSetting.Value(1.0F, 1.0F, 1.0F); + JsonElement value = row.get("color"); + if (value != null && value.isJsonObject()) { + JsonObject c = value.getAsJsonObject(); + + try { + for (String channel : new String[]{"r", "g", "b"}) { + JsonElement number = c.get(channel); + if (number == null || !number.isJsonPrimitive() || !number.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException("Color channel is not a JSON number"); + } + } + + float r = c.get("r").getAsFloat(); + float g = c.get("g").getAsFloat(); + float b = c.get("b").getAsFloat(); + if (r >= 0.0F && r <= 1.0F && g >= 0.0F && g <= 1.0F && b >= 0.0F && b <= 1.0F) { + color = new ColorSetting.Value(r, g, b); + } + } catch (RuntimeException var14) { + } + } + + result.add(new NamedColorListSetting.Entry(name.getAsString(), color)); + } + } + } + + return result; + } + + protected List requireValid(List value) { + return Collections.unmodifiableList(new ArrayList<>(super.requireValid(value))); + } + + public static final class Entry { + public final String name; + public final ColorSetting.Value color; + + public Entry(String name, ColorSetting.Value color) { + this.name = name; + this.color = color; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/NumberSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/NumberSetting.java new file mode 100644 index 0000000..582c88a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/NumberSetting.java @@ -0,0 +1,80 @@ +package dev.slinky.setting; + +public final class NumberSetting extends Setting { + private final double minimum; + private final double maximum; + private final double step; + + public NumberSetting(String key, String label, double initialValue, double minimum, double maximum, double step) { + super(key, label, initialValue); + if (!Double.isNaN(minimum) && !Double.isNaN(maximum) && !(minimum > maximum)) { + this.minimum = minimum; + this.maximum = maximum; + this.step = step; + this.set(Double.valueOf(initialValue)); + } else { + throw new IllegalArgumentException("invalid numeric range"); + } + } + + public double doubleValue() { + return this.get(); + } + + public float floatValue() { + return this.get().floatValue(); + } + + public int intValue() { + return this.get().intValue(); + } + + public double getMinimum() { + return this.minimum; + } + + public double getMaximum() { + return this.maximum; + } + + public double getStep() { + return this.step; + } + + public void loadNumber(double stored) { + float converted = (float)stored; + if (!Float.isNaN(converted)) { + float value = (float)this.minimum; + if (!((float)this.minimum > converted)) { + value = converted; + if ((float)this.maximum < converted) { + value = (float)this.maximum; + } + } + + this.set(Double.valueOf((double)value)); + } + } + + @Override + public String format() { + return Double.toString(this.get()); + } + + protected Double parse(String text) { + return Double.parseDouble(text); + } + + protected Double requireValid(Double value) { + super.requireValid(value); + if (!Double.isFinite(value) || value < this.minimum || value > this.maximum) { + throw new IllegalArgumentException("value must be between " + this.minimum + " and " + this.maximum); + } else if (this.step <= 0.0) { + return (double)value.floatValue(); + } else { + double steps = Math.rint((value - this.minimum) / this.step); + double snapped = this.minimum + steps * this.step; + return Math.max(this.minimum, Math.min(this.maximum, snapped)); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/RangeSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/RangeSetting.java new file mode 100644 index 0000000..f7b81b8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/RangeSetting.java @@ -0,0 +1,58 @@ +package dev.slinky.setting; + +public final class RangeSetting extends Setting { + private final double minimum; + private final double maximum; + + public double minimum() { + return this.minimum; + } + + public double maximum() { + return this.maximum; + } + + public RangeSetting(String key, String label, double lower, double upper, double minimum, double maximum) { + super(key, label, new RangeSetting.Value(lower, upper)); + this.minimum = minimum; + this.maximum = maximum; + this.set(new RangeSetting.Value(lower, upper)); + } + + @Override + public String format() { + return Double.toString(this.get().lower) + "," + Double.toString(this.get().upper); + } + + protected RangeSetting.Value parse(String text) { + String[] fields = text.split(",", -1); + if (fields.length != 2) { + throw new IllegalArgumentException("range must be lower,upper"); + } else { + return new RangeSetting.Value(Double.parseDouble(fields[0]), Double.parseDouble(fields[1])); + } + } + + protected RangeSetting.Value requireValid(RangeSetting.Value value) { + super.requireValid(value); + if (Double.isFinite(value.lower) + && Double.isFinite(value.upper) + && !(value.lower < this.minimum) + && !(value.upper > this.maximum) + && !(value.lower > value.upper)) { + return new RangeSetting.Value((double)((float)value.lower), (double)((float)value.upper)); + } else { + throw new IllegalArgumentException("invalid range"); + } + } + + public static final class Value { + public final double lower; + public final double upper; + + public Value(double lower, double upper) { + this.lower = lower; + this.upper = upper; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/Setting.java b/SlinkyClient/src/main/java/dev/slinky/setting/Setting.java new file mode 100644 index 0000000..f6e1e7b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/Setting.java @@ -0,0 +1,78 @@ +package dev.slinky.setting; + +public abstract class Setting { + private final String key; + private final String label; + private volatile T value; + private volatile boolean configured; + private T saved; + private boolean savedConfigured; + + protected Setting(String key, String label, T initialValue) { + if (key != null && !key.isEmpty()) { + this.key = key; + this.label = label == null ? key : label; + if (initialValue == null) { + throw new IllegalArgumentException("setting value must not be null"); + } else { + this.value = initialValue; + } + } else { + throw new IllegalArgumentException("setting key must not be empty"); + } + } + + public final String getKey() { + return this.key; + } + + public final String getLabel() { + return this.label; + } + + public final T get() { + return this.value; + } + + public final void set(T value) { + this.value = this.requireValid(value); + this.configured = true; + } + + public final boolean isConfigured() { + return this.configured; + } + + public final void markUnconfigured() { + this.configured = false; + } + + public final synchronized void saveCurrent() { + this.saved = this.value; + this.savedConfigured = this.configured; + } + + public synchronized void restoreSaved() { + if (this.savedConfigured) { + this.value = this.saved; + } + + this.configured = this.savedConfigured; + } + + public final void parseAndSet(String text) { + this.set(this.parse(text)); + } + + public abstract String format(); + + protected abstract T parse(String var1); + + protected T requireValid(T value) { + if (value == null) { + throw new IllegalArgumentException("setting value must not be null"); + } else { + return value; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/setting/StringListSetting.java b/SlinkyClient/src/main/java/dev/slinky/setting/StringListSetting.java new file mode 100644 index 0000000..e42ecc9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/setting/StringListSetting.java @@ -0,0 +1,79 @@ +package dev.slinky.setting; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.UnaryOperator; + +public final class StringListSetting extends Setting> { + private UnaryOperator> normalizer; + + public void normalizeWith(UnaryOperator> normalizer) { + this.normalizer = normalizer; + boolean configured = this.isConfigured(); + this.set(this.get()); + if (!configured) { + this.markUnconfigured(); + } + } + + public StringListSetting(String key, String label, List initialValue) { + super(key, label, new ArrayList<>(initialValue)); + this.set(initialValue); + } + + public List values() { + return this.get(); + } + + @Override + public synchronized void restoreSaved() { + this.set(Collections.emptyList()); + } + + public boolean containsIgnoreCase(String candidate) { + for (String value : this.get()) { + if (value.equalsIgnoreCase(candidate)) { + return true; + } + } + + return false; + } + + @Override + public String format() { + StringBuilder result = new StringBuilder(); + + for (String value : this.get()) { + if (result.length() > 0) { + result.append(','); + } + + result.append(value); + } + + return result.toString(); + } + + protected List parse(String text) { + List values = new ArrayList<>(); + if (text.trim().isEmpty()) { + return values; + } else { + for (String field : text.split(",", -1)) { + String value = field.trim(); + if (!value.isEmpty()) { + values.add(value); + } + } + + return values; + } + } + + protected List requireValid(List value) { + super.requireValid(value); + return Collections.unmodifiableList(new ArrayList<>(this.normalizer == null ? value : this.normalizer.apply(value))); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationVisitor.java new file mode 100644 index 0000000..a9aa5bf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationVisitor.java @@ -0,0 +1,58 @@ +package dev.slinky.shaded.asm; + +public abstract class AnnotationVisitor { + protected final int api; + protected AnnotationVisitor av; + + protected AnnotationVisitor(int api) { + this(api, null); + } + + protected AnnotationVisitor(int api, AnnotationVisitor annotationVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.av = annotationVisitor; + } + } + + public AnnotationVisitor getDelegate() { + return this.av; + } + + public void visit(String name, Object value) { + if (this.av != null) { + this.av.visit(name, value); + } + } + + public void visitEnum(String name, String descriptor, String value) { + if (this.av != null) { + this.av.visitEnum(name, descriptor, value); + } + } + + public AnnotationVisitor visitAnnotation(String name, String descriptor) { + return this.av != null ? this.av.visitAnnotation(name, descriptor) : null; + } + + public AnnotationVisitor visitArray(String name) { + return this.av != null ? this.av.visitArray(name) : null; + } + + public void visitEnd() { + if (this.av != null) { + this.av.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationWriter.java new file mode 100644 index 0000000..b2d9082 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/AnnotationWriter.java @@ -0,0 +1,289 @@ +package dev.slinky.shaded.asm; + +final class AnnotationWriter extends AnnotationVisitor { + private final SymbolTable symbolTable; + private final boolean useNamedValues; + private final ByteVector annotation; + private final int numElementValuePairsOffset; + private int numElementValuePairs; + private final AnnotationWriter previousAnnotation; + private AnnotationWriter nextAnnotation; + + AnnotationWriter(SymbolTable symbolTable, boolean useNamedValues, ByteVector annotation, AnnotationWriter previousAnnotation) { + super(589824); + this.symbolTable = symbolTable; + this.useNamedValues = useNamedValues; + this.annotation = annotation; + this.numElementValuePairsOffset = annotation.length == 0 ? -1 : annotation.length - 2; + this.previousAnnotation = previousAnnotation; + if (previousAnnotation != null) { + previousAnnotation.nextAnnotation = this; + } + } + + static AnnotationWriter create(SymbolTable symbolTable, String descriptor, AnnotationWriter previousAnnotation) { + ByteVector annotation = new ByteVector(); + annotation.putShort(symbolTable.addConstantUtf8(descriptor)).putShort(0); + return new AnnotationWriter(symbolTable, true, annotation, previousAnnotation); + } + + static AnnotationWriter create(SymbolTable symbolTable, int typeRef, TypePath typePath, String descriptor, AnnotationWriter previousAnnotation) { + ByteVector typeAnnotation = new ByteVector(); + TypeReference.putTarget(typeRef, typeAnnotation); + TypePath.put(typePath, typeAnnotation); + typeAnnotation.putShort(symbolTable.addConstantUtf8(descriptor)).putShort(0); + return new AnnotationWriter(symbolTable, true, typeAnnotation, previousAnnotation); + } + + @Override + public void visit(String name, Object value) { + this.numElementValuePairs++; + if (this.useNamedValues) { + this.annotation.putShort(this.symbolTable.addConstantUtf8(name)); + } + + if (value instanceof String) { + this.annotation.put12(115, this.symbolTable.addConstantUtf8((String)value)); + } else if (value instanceof Byte) { + this.annotation.put12(66, this.symbolTable.addConstantInteger((Byte)value).index); + } else if (value instanceof Boolean) { + int booleanValue = (Boolean)value ? 1 : 0; + this.annotation.put12(90, this.symbolTable.addConstantInteger(booleanValue).index); + } else if (value instanceof Character) { + this.annotation.put12(67, this.symbolTable.addConstantInteger((Character)value).index); + } else if (value instanceof Short) { + this.annotation.put12(83, this.symbolTable.addConstantInteger((Short)value).index); + } else if (value instanceof Type) { + this.annotation.put12(99, this.symbolTable.addConstantUtf8(((Type)value).getDescriptor())); + } else if (value instanceof byte[]) { + byte[] byteArray = (byte[])value; + this.annotation.put12(91, byteArray.length); + + for (byte byteValue : byteArray) { + this.annotation.put12(66, this.symbolTable.addConstantInteger(byteValue).index); + } + } else if (value instanceof boolean[]) { + boolean[] booleanArray = (boolean[])value; + this.annotation.put12(91, booleanArray.length); + + for (boolean booleanValue : booleanArray) { + this.annotation.put12(90, this.symbolTable.addConstantInteger(booleanValue ? 1 : 0).index); + } + } else if (value instanceof short[]) { + short[] shortArray = (short[])value; + this.annotation.put12(91, shortArray.length); + + for (short shortValue : shortArray) { + this.annotation.put12(83, this.symbolTable.addConstantInteger(shortValue).index); + } + } else if (value instanceof char[]) { + char[] charArray = (char[])value; + this.annotation.put12(91, charArray.length); + + for (char charValue : charArray) { + this.annotation.put12(67, this.symbolTable.addConstantInteger(charValue).index); + } + } else if (value instanceof int[]) { + int[] intArray = (int[])value; + this.annotation.put12(91, intArray.length); + + for (int intValue : intArray) { + this.annotation.put12(73, this.symbolTable.addConstantInteger(intValue).index); + } + } else if (value instanceof long[]) { + long[] longArray = (long[])value; + this.annotation.put12(91, longArray.length); + + for (long longValue : longArray) { + this.annotation.put12(74, this.symbolTable.addConstantLong(longValue).index); + } + } else if (value instanceof float[]) { + float[] floatArray = (float[])value; + this.annotation.put12(91, floatArray.length); + + for (float floatValue : floatArray) { + this.annotation.put12(70, this.symbolTable.addConstantFloat(floatValue).index); + } + } else if (value instanceof double[]) { + double[] doubleArray = (double[])value; + this.annotation.put12(91, doubleArray.length); + + for (double doubleValue : doubleArray) { + this.annotation.put12(68, this.symbolTable.addConstantDouble(doubleValue).index); + } + } else { + Symbol symbol = this.symbolTable.addConstant(value); + this.annotation.put12(".s.IFJDCS".charAt(symbol.tag), symbol.index); + } + } + + @Override + public void visitEnum(String name, String descriptor, String value) { + this.numElementValuePairs++; + if (this.useNamedValues) { + this.annotation.putShort(this.symbolTable.addConstantUtf8(name)); + } + + this.annotation.put12(101, this.symbolTable.addConstantUtf8(descriptor)).putShort(this.symbolTable.addConstantUtf8(value)); + } + + @Override + public AnnotationVisitor visitAnnotation(String name, String descriptor) { + this.numElementValuePairs++; + if (this.useNamedValues) { + this.annotation.putShort(this.symbolTable.addConstantUtf8(name)); + } + + this.annotation.put12(64, this.symbolTable.addConstantUtf8(descriptor)).putShort(0); + return new AnnotationWriter(this.symbolTable, true, this.annotation, null); + } + + @Override + public AnnotationVisitor visitArray(String name) { + this.numElementValuePairs++; + if (this.useNamedValues) { + this.annotation.putShort(this.symbolTable.addConstantUtf8(name)); + } + + this.annotation.put12(91, 0); + return new AnnotationWriter(this.symbolTable, false, this.annotation, null); + } + + @Override + public void visitEnd() { + if (this.numElementValuePairsOffset != -1) { + byte[] data = this.annotation.data; + data[this.numElementValuePairsOffset] = (byte)(this.numElementValuePairs >>> 8); + data[this.numElementValuePairsOffset + 1] = (byte)this.numElementValuePairs; + } + } + + int computeAnnotationsSize(String attributeName) { + if (attributeName != null) { + this.symbolTable.addConstantUtf8(attributeName); + } + + int attributeSize = 8; + + for (AnnotationWriter annotationWriter = this; annotationWriter != null; annotationWriter = annotationWriter.previousAnnotation) { + attributeSize += annotationWriter.annotation.length; + } + + return attributeSize; + } + + static int computeAnnotationsSize( + AnnotationWriter lastRuntimeVisibleAnnotation, + AnnotationWriter lastRuntimeInvisibleAnnotation, + AnnotationWriter lastRuntimeVisibleTypeAnnotation, + AnnotationWriter lastRuntimeInvisibleTypeAnnotation + ) { + int size = 0; + if (lastRuntimeVisibleAnnotation != null) { + size += lastRuntimeVisibleAnnotation.computeAnnotationsSize("RuntimeVisibleAnnotations"); + } + + if (lastRuntimeInvisibleAnnotation != null) { + size += lastRuntimeInvisibleAnnotation.computeAnnotationsSize("RuntimeInvisibleAnnotations"); + } + + if (lastRuntimeVisibleTypeAnnotation != null) { + size += lastRuntimeVisibleTypeAnnotation.computeAnnotationsSize("RuntimeVisibleTypeAnnotations"); + } + + if (lastRuntimeInvisibleTypeAnnotation != null) { + size += lastRuntimeInvisibleTypeAnnotation.computeAnnotationsSize("RuntimeInvisibleTypeAnnotations"); + } + + return size; + } + + void putAnnotations(int attributeNameIndex, ByteVector output) { + int attributeLength = 2; + int numAnnotations = 0; + AnnotationWriter annotationWriter = this; + + AnnotationWriter firstAnnotation; + for (firstAnnotation = null; annotationWriter != null; annotationWriter = annotationWriter.previousAnnotation) { + annotationWriter.visitEnd(); + attributeLength += annotationWriter.annotation.length; + numAnnotations++; + firstAnnotation = annotationWriter; + } + + output.putShort(attributeNameIndex); + output.putInt(attributeLength); + output.putShort(numAnnotations); + + for (AnnotationWriter var7 = firstAnnotation; var7 != null; var7 = var7.nextAnnotation) { + output.putByteArray(var7.annotation.data, 0, var7.annotation.length); + } + } + + static void putAnnotations( + SymbolTable symbolTable, + AnnotationWriter lastRuntimeVisibleAnnotation, + AnnotationWriter lastRuntimeInvisibleAnnotation, + AnnotationWriter lastRuntimeVisibleTypeAnnotation, + AnnotationWriter lastRuntimeInvisibleTypeAnnotation, + ByteVector output + ) { + if (lastRuntimeVisibleAnnotation != null) { + lastRuntimeVisibleAnnotation.putAnnotations(symbolTable.addConstantUtf8("RuntimeVisibleAnnotations"), output); + } + + if (lastRuntimeInvisibleAnnotation != null) { + lastRuntimeInvisibleAnnotation.putAnnotations(symbolTable.addConstantUtf8("RuntimeInvisibleAnnotations"), output); + } + + if (lastRuntimeVisibleTypeAnnotation != null) { + lastRuntimeVisibleTypeAnnotation.putAnnotations(symbolTable.addConstantUtf8("RuntimeVisibleTypeAnnotations"), output); + } + + if (lastRuntimeInvisibleTypeAnnotation != null) { + lastRuntimeInvisibleTypeAnnotation.putAnnotations(symbolTable.addConstantUtf8("RuntimeInvisibleTypeAnnotations"), output); + } + } + + static int computeParameterAnnotationsSize(String attributeName, AnnotationWriter[] annotationWriters, int annotableParameterCount) { + int attributeSize = 7 + 2 * annotableParameterCount; + + for (int i = 0; i < annotableParameterCount; i++) { + AnnotationWriter annotationWriter = annotationWriters[i]; + attributeSize += annotationWriter == null ? 0 : annotationWriter.computeAnnotationsSize(attributeName) - 8; + } + + return attributeSize; + } + + static void putParameterAnnotations(int attributeNameIndex, AnnotationWriter[] annotationWriters, int annotableParameterCount, ByteVector output) { + int attributeLength = 1 + 2 * annotableParameterCount; + + for (int i = 0; i < annotableParameterCount; i++) { + AnnotationWriter annotationWriter = annotationWriters[i]; + attributeLength += annotationWriter == null ? 0 : annotationWriter.computeAnnotationsSize(null) - 8; + } + + output.putShort(attributeNameIndex); + output.putInt(attributeLength); + output.putByte(annotableParameterCount); + + for (int i = 0; i < annotableParameterCount; i++) { + AnnotationWriter annotationWriter = annotationWriters[i]; + AnnotationWriter firstAnnotation = null; + + int numAnnotations; + for (numAnnotations = 0; annotationWriter != null; annotationWriter = annotationWriter.previousAnnotation) { + annotationWriter.visitEnd(); + numAnnotations++; + firstAnnotation = annotationWriter; + } + + output.putShort(numAnnotations); + + for (AnnotationWriter var11 = firstAnnotation; var11 != null; var11 = var11.nextAnnotation) { + output.putByteArray(var11.annotation.data, 0, var11.annotation.length); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Attribute.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Attribute.java new file mode 100644 index 0000000..9696ef0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Attribute.java @@ -0,0 +1,181 @@ +package dev.slinky.shaded.asm; + +public class Attribute { + public final String type; + private ByteVector cachedContent; + Attribute nextAttribute; + + protected Attribute(String type) { + this.type = type; + } + + public boolean isUnknown() { + return true; + } + + public boolean isCodeAttribute() { + return false; + } + + @Deprecated + protected Label[] getLabels() { + return new Label[0]; + } + + protected Attribute read(ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels) { + Attribute attribute = new Attribute(this.type); + attribute.cachedContent = new ByteVector(classReader.readBytes(offset, length)); + return attribute; + } + + public static Attribute read( + Attribute attribute, ClassReader classReader, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels + ) { + return attribute.read(classReader, offset, length, charBuffer, codeAttributeOffset, labels); + } + + public static Label readLabel(ClassReader classReader, int bytecodeOffset, Label[] labels) { + return classReader.readLabel(bytecodeOffset, labels); + } + + private ByteVector maybeWrite(ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) { + if (this.cachedContent == null) { + this.cachedContent = this.write(classWriter, code, codeLength, maxStack, maxLocals); + } + + return this.cachedContent; + } + + protected ByteVector write(ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) { + return this.cachedContent; + } + + public static byte[] write(Attribute attribute, ClassWriter classWriter, byte[] code, int codeLength, int maxStack, int maxLocals) { + ByteVector content = attribute.maybeWrite(classWriter, code, codeLength, maxStack, maxLocals); + byte[] result = new byte[content.length]; + System.arraycopy(content.data, 0, result, 0, content.length); + return result; + } + + final int getAttributeCount() { + int count = 0; + + for (Attribute attribute = this; attribute != null; attribute = attribute.nextAttribute) { + count++; + } + + return count; + } + + final int computeAttributesSize(SymbolTable symbolTable) { + byte[] code = null; + int codeLength = 0; + int maxStack = -1; + int maxLocals = -1; + return this.computeAttributesSize(symbolTable, code, 0, -1, -1); + } + + final int computeAttributesSize(SymbolTable symbolTable, byte[] code, int codeLength, int maxStack, int maxLocals) { + ClassWriter classWriter = symbolTable.classWriter; + int size = 0; + + for (Attribute attribute = this; attribute != null; attribute = attribute.nextAttribute) { + symbolTable.addConstantUtf8(attribute.type); + size += 6 + attribute.maybeWrite(classWriter, code, codeLength, maxStack, maxLocals).length; + } + + return size; + } + + static int computeAttributesSize(SymbolTable symbolTable, int accessFlags, int signatureIndex) { + int size = 0; + if ((accessFlags & 4096) != 0 && symbolTable.getMajorVersion() < 49) { + symbolTable.addConstantUtf8("Synthetic"); + size += 6; + } + + if (signatureIndex != 0) { + symbolTable.addConstantUtf8("Signature"); + size += 8; + } + + if ((accessFlags & 131072) != 0) { + symbolTable.addConstantUtf8("Deprecated"); + size += 6; + } + + return size; + } + + final void putAttributes(SymbolTable symbolTable, ByteVector output) { + byte[] code = null; + int codeLength = 0; + int maxStack = -1; + int maxLocals = -1; + this.putAttributes(symbolTable, code, 0, -1, -1, output); + } + + final void putAttributes(SymbolTable symbolTable, byte[] code, int codeLength, int maxStack, int maxLocals, ByteVector output) { + ClassWriter classWriter = symbolTable.classWriter; + + for (Attribute attribute = this; attribute != null; attribute = attribute.nextAttribute) { + ByteVector attributeContent = attribute.maybeWrite(classWriter, code, codeLength, maxStack, maxLocals); + output.putShort(symbolTable.addConstantUtf8(attribute.type)).putInt(attributeContent.length); + output.putByteArray(attributeContent.data, 0, attributeContent.length); + } + } + + static void putAttributes(SymbolTable symbolTable, int accessFlags, int signatureIndex, ByteVector output) { + if ((accessFlags & 4096) != 0 && symbolTable.getMajorVersion() < 49) { + output.putShort(symbolTable.addConstantUtf8("Synthetic")).putInt(0); + } + + if (signatureIndex != 0) { + output.putShort(symbolTable.addConstantUtf8("Signature")).putInt(2).putShort(signatureIndex); + } + + if ((accessFlags & 131072) != 0) { + output.putShort(symbolTable.addConstantUtf8("Deprecated")).putInt(0); + } + } + + static final class Set { + private static final int SIZE_INCREMENT = 6; + private int size; + private Attribute[] data = new Attribute[6]; + + void addAttributes(Attribute attributeList) { + for (Attribute attribute = attributeList; attribute != null; attribute = attribute.nextAttribute) { + if (!this.contains(attribute)) { + this.add(attribute); + } + } + } + + Attribute[] toArray() { + Attribute[] result = new Attribute[this.size]; + System.arraycopy(this.data, 0, result, 0, this.size); + return result; + } + + private boolean contains(Attribute attribute) { + for (int i = 0; i < this.size; i++) { + if (this.data[i].type.equals(attribute.type)) { + return true; + } + } + + return false; + } + + private void add(Attribute attribute) { + if (this.size >= this.data.length) { + Attribute[] newData = new Attribute[this.data.length + 6]; + System.arraycopy(this.data, 0, newData, 0, this.size); + this.data = newData; + } + + this.data[this.size++] = attribute; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ByteVector.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ByteVector.java new file mode 100644 index 0000000..fdf58c4 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ByteVector.java @@ -0,0 +1,244 @@ +package dev.slinky.shaded.asm; + +public class ByteVector { + byte[] data; + int length; + + public ByteVector() { + this.data = new byte[64]; + } + + public ByteVector(int initialCapacity) { + this.data = new byte[initialCapacity]; + } + + ByteVector(byte[] data) { + this.data = data; + this.length = data.length; + } + + public int size() { + return this.length; + } + + public ByteVector putByte(int byteValue) { + int currentLength = this.length; + if (currentLength + 1 > this.data.length) { + this.enlarge(1); + } + + this.data[currentLength++] = (byte)byteValue; + this.length = currentLength; + return this; + } + + final ByteVector put11(int byteValue1, int byteValue2) { + int currentLength = this.length; + if (currentLength + 2 > this.data.length) { + this.enlarge(2); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)byteValue1; + currentData[currentLength++] = (byte)byteValue2; + this.length = currentLength; + return this; + } + + public ByteVector putShort(int shortValue) { + int currentLength = this.length; + if (currentLength + 2 > this.data.length) { + this.enlarge(2); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)(shortValue >>> 8); + currentData[currentLength++] = (byte)shortValue; + this.length = currentLength; + return this; + } + + final ByteVector put12(int byteValue, int shortValue) { + int currentLength = this.length; + if (currentLength + 3 > this.data.length) { + this.enlarge(3); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)byteValue; + currentData[currentLength++] = (byte)(shortValue >>> 8); + currentData[currentLength++] = (byte)shortValue; + this.length = currentLength; + return this; + } + + final ByteVector put112(int byteValue1, int byteValue2, int shortValue) { + int currentLength = this.length; + if (currentLength + 4 > this.data.length) { + this.enlarge(4); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)byteValue1; + currentData[currentLength++] = (byte)byteValue2; + currentData[currentLength++] = (byte)(shortValue >>> 8); + currentData[currentLength++] = (byte)shortValue; + this.length = currentLength; + return this; + } + + public ByteVector putInt(int intValue) { + int currentLength = this.length; + if (currentLength + 4 > this.data.length) { + this.enlarge(4); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)(intValue >>> 24); + currentData[currentLength++] = (byte)(intValue >>> 16); + currentData[currentLength++] = (byte)(intValue >>> 8); + currentData[currentLength++] = (byte)intValue; + this.length = currentLength; + return this; + } + + final ByteVector put122(int byteValue, int shortValue1, int shortValue2) { + int currentLength = this.length; + if (currentLength + 5 > this.data.length) { + this.enlarge(5); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)byteValue; + currentData[currentLength++] = (byte)(shortValue1 >>> 8); + currentData[currentLength++] = (byte)shortValue1; + currentData[currentLength++] = (byte)(shortValue2 >>> 8); + currentData[currentLength++] = (byte)shortValue2; + this.length = currentLength; + return this; + } + + public ByteVector putLong(long longValue) { + int currentLength = this.length; + if (currentLength + 8 > this.data.length) { + this.enlarge(8); + } + + byte[] currentData = this.data; + int intValue = (int)(longValue >>> 32); + currentData[currentLength++] = (byte)(intValue >>> 24); + currentData[currentLength++] = (byte)(intValue >>> 16); + currentData[currentLength++] = (byte)(intValue >>> 8); + currentData[currentLength++] = (byte)intValue; + intValue = (int)longValue; + currentData[currentLength++] = (byte)(intValue >>> 24); + currentData[currentLength++] = (byte)(intValue >>> 16); + currentData[currentLength++] = (byte)(intValue >>> 8); + currentData[currentLength++] = (byte)intValue; + this.length = currentLength; + return this; + } + + public ByteVector putUTF8(String stringValue) { + int charLength = stringValue.length(); + if (charLength > 65535) { + throw new IllegalArgumentException("UTF8 string too large"); + } else { + int currentLength = this.length; + if (currentLength + 2 + charLength > this.data.length) { + this.enlarge(2 + charLength); + } + + byte[] currentData = this.data; + currentData[currentLength++] = (byte)(charLength >>> 8); + currentData[currentLength++] = (byte)charLength; + + for (int i = 0; i < charLength; i++) { + char charValue = stringValue.charAt(i); + if (charValue < 1 || charValue > 127) { + this.length = currentLength; + return this.encodeUtf8(stringValue, i, 65535); + } + + currentData[currentLength++] = (byte)charValue; + } + + this.length = currentLength; + return this; + } + } + + final ByteVector encodeUtf8(String stringValue, int offset, int maxByteLength) { + int charLength = stringValue.length(); + int byteLength = offset; + + for (int i = offset; i < charLength; i++) { + char charValue = stringValue.charAt(i); + if (charValue >= 1 && charValue <= 127) { + byteLength++; + } else if (charValue <= 2047) { + byteLength += 2; + } else { + byteLength += 3; + } + } + + if (byteLength > maxByteLength) { + throw new IllegalArgumentException("UTF8 string too large"); + } else { + int byteLengthOffset = this.length - offset - 2; + if (byteLengthOffset >= 0) { + this.data[byteLengthOffset] = (byte)(byteLength >>> 8); + this.data[byteLengthOffset + 1] = (byte)byteLength; + } + + if (this.length + byteLength - offset > this.data.length) { + this.enlarge(byteLength - offset); + } + + int currentLength = this.length; + + for (int ix = offset; ix < charLength; ix++) { + char charValue = stringValue.charAt(ix); + if (charValue >= 1 && charValue <= 127) { + this.data[currentLength++] = (byte)charValue; + } else if (charValue <= 2047) { + this.data[currentLength++] = (byte)(192 | charValue >> 6 & 31); + this.data[currentLength++] = (byte)(128 | charValue & '?'); + } else { + this.data[currentLength++] = (byte)(224 | charValue >> '\f' & 15); + this.data[currentLength++] = (byte)(128 | charValue >> 6 & 63); + this.data[currentLength++] = (byte)(128 | charValue & '?'); + } + } + + this.length = currentLength; + return this; + } + } + + public ByteVector putByteArray(byte[] byteArrayValue, int byteOffset, int byteLength) { + if (this.length + byteLength > this.data.length) { + this.enlarge(byteLength); + } + + if (byteArrayValue != null) { + System.arraycopy(byteArrayValue, byteOffset, this.data, this.length, byteLength); + } + + this.length += byteLength; + return this; + } + + private void enlarge(int size) { + if (this.length > this.data.length) { + throw new AssertionError("Internal error"); + } else { + int doubleCapacity = 2 * this.data.length; + int minimalCapacity = this.length + size; + byte[] newData = new byte[doubleCapacity > minimalCapacity ? doubleCapacity : minimalCapacity]; + System.arraycopy(this.data, 0, newData, 0, this.length); + this.data = newData; + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassReader.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassReader.java new file mode 100644 index 0000000..11f168e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassReader.java @@ -0,0 +1,2894 @@ +package dev.slinky.shaded.asm; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class ClassReader { + public static final int SKIP_CODE = 1; + public static final int SKIP_DEBUG = 2; + public static final int SKIP_FRAMES = 4; + public static final int EXPAND_FRAMES = 8; + static final int EXPAND_ASM_INSNS = 256; + private static final int MAX_BUFFER_SIZE = 1048576; + private static final int INPUT_STREAM_DATA_CHUNK_SIZE = 4096; + @Deprecated + public final byte[] b; + public final int header; + final byte[] classFileBuffer; + private final int[] cpInfoOffsets; + private final String[] constantUtf8Values; + private final ConstantDynamic[] constantDynamicValues; + private final int[] bootstrapMethodOffsets; + private final int maxStringLength; + + public ClassReader(byte[] classFile) { + this(classFile, 0, classFile.length); + } + + public ClassReader(byte[] classFileBuffer, int classFileOffset, int classFileLength) { + this(classFileBuffer, classFileOffset, true); + } + + ClassReader(byte[] classFileBuffer, int classFileOffset, boolean checkClassVersion) { + this.classFileBuffer = classFileBuffer; + this.b = classFileBuffer; + if (checkClassVersion && this.readShort(classFileOffset + 6) > 68) { + throw new IllegalArgumentException(stringConcat$0(this.readShort(classFileOffset + 6))); + } else { + int constantPoolCount = this.readUnsignedShort(classFileOffset + 8); + this.cpInfoOffsets = new int[constantPoolCount]; + this.constantUtf8Values = new String[constantPoolCount]; + int currentCpInfoIndex = 1; + int currentCpInfoOffset = classFileOffset + 10; + int currentMaxStringLength = 0; + boolean hasBootstrapMethods = false; + boolean hasConstantDynamic = false; + + while (currentCpInfoIndex < constantPoolCount) { + this.cpInfoOffsets[currentCpInfoIndex++] = currentCpInfoOffset + 1; + int cpInfoSize; + switch (classFileBuffer[currentCpInfoOffset]) { + case 1: + cpInfoSize = 3 + this.readUnsignedShort(currentCpInfoOffset + 1); + if (cpInfoSize > currentMaxStringLength) { + currentMaxStringLength = cpInfoSize; + } + break; + case 2: + case 13: + case 14: + default: + throw new IllegalArgumentException(); + case 3: + case 4: + case 9: + case 10: + case 11: + case 12: + cpInfoSize = 5; + break; + case 5: + case 6: + cpInfoSize = 9; + currentCpInfoIndex++; + break; + case 7: + case 8: + case 16: + case 19: + case 20: + cpInfoSize = 3; + break; + case 15: + cpInfoSize = 4; + break; + case 17: + cpInfoSize = 5; + hasBootstrapMethods = true; + hasConstantDynamic = true; + break; + case 18: + cpInfoSize = 5; + hasBootstrapMethods = true; + } + + currentCpInfoOffset += cpInfoSize; + } + + this.maxStringLength = currentMaxStringLength; + this.header = currentCpInfoOffset; + this.constantDynamicValues = hasConstantDynamic ? new ConstantDynamic[constantPoolCount] : null; + this.bootstrapMethodOffsets = hasBootstrapMethods ? this.readBootstrapMethodsAttribute(currentMaxStringLength) : null; + } + } + + public ClassReader(InputStream inputStream) throws IOException { + this(readStream(inputStream, false)); + } + + public ClassReader(String className) throws IOException { + this(readStream(ClassLoader.getSystemResourceAsStream(stringConcat$1(className.replace('.', '/'))), true)); + } + + private static byte[] readStream(InputStream inputStream, boolean close) throws IOException { + if (inputStream == null) { + throw new IOException("Class not found"); + } else { + int bufferSize = computeBufferSize(inputStream); + + byte[] var15; + try { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + label119: { + try { + byte[] data = new byte[bufferSize]; + + int bytesRead; + int readCount; + for (readCount = 0; (bytesRead = inputStream.read(data, 0, bufferSize)) != -1; readCount++) { + outputStream.write(data, 0, bytesRead); + } + + outputStream.flush(); + if (readCount == 1) { + var15 = data; + break label119; + } + + var15 = outputStream.toByteArray(); + } catch (Throwable var13) { + try { + outputStream.close(); + } catch (Throwable var12) { + } + + throw var13; + } + + outputStream.close(); + return var15; + } + + outputStream.close(); + } finally { + if (close) { + inputStream.close(); + } + } + + return var15; + } + } + + private static int computeBufferSize(InputStream inputStream) throws IOException { + int expectedLength = inputStream.available(); + return expectedLength < 256 ? 4096 : Math.min(expectedLength, 1048576); + } + + public int getAccess() { + return this.readUnsignedShort(this.header); + } + + public String getClassName() { + return this.readClass(this.header + 2, new char[this.maxStringLength]); + } + + public String getSuperName() { + return this.readClass(this.header + 4, new char[this.maxStringLength]); + } + + public String[] getInterfaces() { + int currentOffset = this.header + 6; + int interfacesCount = this.readUnsignedShort(currentOffset); + String[] interfaces = new String[interfacesCount]; + if (interfacesCount > 0) { + char[] charBuffer = new char[this.maxStringLength]; + + for (int i = 0; i < interfacesCount; i++) { + currentOffset += 2; + interfaces[i] = this.readClass(currentOffset, charBuffer); + } + } + + return interfaces; + } + + public void accept(ClassVisitor classVisitor, int parsingOptions) { + this.accept(classVisitor, new Attribute[0], parsingOptions); + } + + public void accept(ClassVisitor classVisitor, Attribute[] attributePrototypes, int parsingOptions) { + Context context = new Context(); + context.attributePrototypes = attributePrototypes; + context.parsingOptions = parsingOptions; + context.charBuffer = new char[this.maxStringLength]; + char[] charBuffer = context.charBuffer; + int currentOffset = this.header; + int accessFlags = this.readUnsignedShort(currentOffset); + String thisClass = this.readClass(currentOffset + 2, charBuffer); + String superClass = this.readClass(currentOffset + 4, charBuffer); + String[] interfaces = new String[this.readUnsignedShort(currentOffset + 6)]; + currentOffset += 8; + + for (int i = 0; i < interfaces.length; i++) { + interfaces[i] = this.readClass(currentOffset, charBuffer); + currentOffset += 2; + } + + int innerClassesOffset = 0; + int enclosingMethodOffset = 0; + String signature = null; + String sourceFile = null; + String sourceDebugExtension = null; + int runtimeVisibleAnnotationsOffset = 0; + int runtimeInvisibleAnnotationsOffset = 0; + int runtimeVisibleTypeAnnotationsOffset = 0; + int runtimeInvisibleTypeAnnotationsOffset = 0; + int moduleOffset = 0; + int modulePackagesOffset = 0; + String moduleMainClass = null; + String nestHostClass = null; + int nestMembersOffset = 0; + int permittedSubclassesOffset = 0; + int recordOffset = 0; + Attribute attributes = null; + int currentAttributeOffset = this.getFirstAttributeOffset(); + + for (int i = this.readUnsignedShort(currentAttributeOffset - 2); i > 0; i--) { + String attributeName = this.readUTF8(currentAttributeOffset, charBuffer); + int attributeLength = this.readInt(currentAttributeOffset + 2); + currentAttributeOffset += 6; + if ("SourceFile".equals(attributeName)) { + sourceFile = this.readUTF8(currentAttributeOffset, charBuffer); + } else if ("InnerClasses".equals(attributeName)) { + innerClassesOffset = currentAttributeOffset; + } else if ("EnclosingMethod".equals(attributeName)) { + enclosingMethodOffset = currentAttributeOffset; + } else if ("NestHost".equals(attributeName)) { + nestHostClass = this.readClass(currentAttributeOffset, charBuffer); + } else if ("NestMembers".equals(attributeName)) { + nestMembersOffset = currentAttributeOffset; + } else if ("PermittedSubclasses".equals(attributeName)) { + permittedSubclassesOffset = currentAttributeOffset; + } else if ("Signature".equals(attributeName)) { + signature = this.readUTF8(currentAttributeOffset, charBuffer); + } else if ("RuntimeVisibleAnnotations".equals(attributeName)) { + runtimeVisibleAnnotationsOffset = currentAttributeOffset; + } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) { + runtimeVisibleTypeAnnotationsOffset = currentAttributeOffset; + } else if ("Deprecated".equals(attributeName)) { + accessFlags |= 131072; + } else if ("Synthetic".equals(attributeName)) { + accessFlags |= 4096; + } else if ("SourceDebugExtension".equals(attributeName)) { + if (attributeLength > this.classFileBuffer.length - currentAttributeOffset) { + throw new IllegalArgumentException(); + } + + sourceDebugExtension = this.readUtf(currentAttributeOffset, attributeLength, new char[attributeLength]); + } else if ("RuntimeInvisibleAnnotations".equals(attributeName)) { + runtimeInvisibleAnnotationsOffset = currentAttributeOffset; + } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) { + runtimeInvisibleTypeAnnotationsOffset = currentAttributeOffset; + } else if ("Record".equals(attributeName)) { + recordOffset = currentAttributeOffset; + accessFlags |= 65536; + } else if ("Module".equals(attributeName)) { + moduleOffset = currentAttributeOffset; + } else if ("ModuleMainClass".equals(attributeName)) { + moduleMainClass = this.readClass(currentAttributeOffset, charBuffer); + } else if ("ModulePackages".equals(attributeName)) { + modulePackagesOffset = currentAttributeOffset; + } else if (!"BootstrapMethods".equals(attributeName)) { + Attribute attribute = this.readAttribute(attributePrototypes, attributeName, currentAttributeOffset, attributeLength, charBuffer, -1, null); + attribute.nextAttribute = attributes; + attributes = attribute; + } + + currentAttributeOffset += attributeLength; + } + + classVisitor.visit(this.readInt(this.cpInfoOffsets[1] - 7), accessFlags, thisClass, signature, superClass, interfaces); + if ((parsingOptions & 2) == 0 && (sourceFile != null || sourceDebugExtension != null)) { + classVisitor.visitSource(sourceFile, sourceDebugExtension); + } + + if (moduleOffset != 0) { + this.readModuleAttributes(classVisitor, context, moduleOffset, modulePackagesOffset, moduleMainClass); + } + + if (nestHostClass != null) { + classVisitor.visitNestHost(nestHostClass); + } + + if (enclosingMethodOffset != 0) { + String className = this.readClass(enclosingMethodOffset, charBuffer); + int methodIndex = this.readUnsignedShort(enclosingMethodOffset + 2); + String name = methodIndex == 0 ? null : this.readUTF8(this.cpInfoOffsets[methodIndex], charBuffer); + String type = methodIndex == 0 ? null : this.readUTF8(this.cpInfoOffsets[methodIndex] + 2, charBuffer); + classVisitor.visitOuterClass(className, name, type); + } + + if (runtimeVisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + classVisitor.visitAnnotation(annotationDescriptor, true), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeInvisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + classVisitor.visitAnnotation(annotationDescriptor, false), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeVisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + classVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + if (runtimeInvisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + classVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + while (attributes != null) { + Attribute nextAttribute = attributes.nextAttribute; + attributes.nextAttribute = null; + classVisitor.visitAttribute(attributes); + attributes = nextAttribute; + } + + if (nestMembersOffset != 0) { + int numberOfNestMembers = this.readUnsignedShort(nestMembersOffset); + + for (int currentNestMemberOffset = nestMembersOffset + 2; numberOfNestMembers-- > 0; currentNestMemberOffset += 2) { + classVisitor.visitNestMember(this.readClass(currentNestMemberOffset, charBuffer)); + } + } + + if (permittedSubclassesOffset != 0) { + int numberOfPermittedSubclasses = this.readUnsignedShort(permittedSubclassesOffset); + + for (int currentPermittedSubclassesOffset = permittedSubclassesOffset + 2; numberOfPermittedSubclasses-- > 0; currentPermittedSubclassesOffset += 2) { + classVisitor.visitPermittedSubclass(this.readClass(currentPermittedSubclassesOffset, charBuffer)); + } + } + + if (innerClassesOffset != 0) { + int numberOfClasses = this.readUnsignedShort(innerClassesOffset); + + for (int currentClassesOffset = innerClassesOffset + 2; numberOfClasses-- > 0; currentClassesOffset += 8) { + classVisitor.visitInnerClass( + this.readClass(currentClassesOffset, charBuffer), + this.readClass(currentClassesOffset + 2, charBuffer), + this.readUTF8(currentClassesOffset + 4, charBuffer), + this.readUnsignedShort(currentClassesOffset + 6) + ); + } + } + + if (recordOffset != 0) { + int recordComponentsCount = this.readUnsignedShort(recordOffset); + recordOffset += 2; + + while (recordComponentsCount-- > 0) { + recordOffset = this.readRecordComponent(classVisitor, context, recordOffset); + } + } + + int fieldsCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (fieldsCount-- > 0) { + currentOffset = this.readField(classVisitor, context, currentOffset); + } + + int methodsCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (methodsCount-- > 0) { + currentOffset = this.readMethod(classVisitor, context, currentOffset); + } + + classVisitor.visitEnd(); + } + + private void readModuleAttributes(ClassVisitor classVisitor, Context context, int moduleOffset, int modulePackagesOffset, String moduleMainClass) { + char[] buffer = context.charBuffer; + String moduleName = this.readModule(moduleOffset, buffer); + int moduleFlags = this.readUnsignedShort(moduleOffset + 2); + String moduleVersion = this.readUTF8(moduleOffset + 4, buffer); + int currentOffset = moduleOffset + 6; + ModuleVisitor moduleVisitor = classVisitor.visitModule(moduleName, moduleFlags, moduleVersion); + if (moduleVisitor != null) { + if (moduleMainClass != null) { + moduleVisitor.visitMainClass(moduleMainClass); + } + + if (modulePackagesOffset != 0) { + int packageCount = this.readUnsignedShort(modulePackagesOffset); + + for (int currentPackageOffset = modulePackagesOffset + 2; packageCount-- > 0; currentPackageOffset += 2) { + moduleVisitor.visitPackage(this.readPackage(currentPackageOffset, buffer)); + } + } + + int requiresCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (requiresCount-- > 0) { + String requires = this.readModule(currentOffset, buffer); + int requiresFlags = this.readUnsignedShort(currentOffset + 2); + String requiresVersion = this.readUTF8(currentOffset + 4, buffer); + currentOffset += 6; + moduleVisitor.visitRequire(requires, requiresFlags, requiresVersion); + } + + int exportsCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (exportsCount-- > 0) { + String exports = this.readPackage(currentOffset, buffer); + int exportsFlags = this.readUnsignedShort(currentOffset + 2); + int exportsToCount = this.readUnsignedShort(currentOffset + 4); + currentOffset += 6; + String[] exportsTo = null; + if (exportsToCount != 0) { + exportsTo = new String[exportsToCount]; + + for (int i = 0; i < exportsToCount; i++) { + exportsTo[i] = this.readModule(currentOffset, buffer); + currentOffset += 2; + } + } + + moduleVisitor.visitExport(exports, exportsFlags, exportsTo); + } + + int opensCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (opensCount-- > 0) { + String opens = this.readPackage(currentOffset, buffer); + int opensFlags = this.readUnsignedShort(currentOffset + 2); + int opensToCount = this.readUnsignedShort(currentOffset + 4); + currentOffset += 6; + String[] opensTo = null; + if (opensToCount != 0) { + opensTo = new String[opensToCount]; + + for (int i = 0; i < opensToCount; i++) { + opensTo[i] = this.readModule(currentOffset, buffer); + currentOffset += 2; + } + } + + moduleVisitor.visitOpen(opens, opensFlags, opensTo); + } + + int usesCount = this.readUnsignedShort(currentOffset); + + for (currentOffset += 2; usesCount-- > 0; currentOffset += 2) { + moduleVisitor.visitUse(this.readClass(currentOffset, buffer)); + } + + int providesCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (providesCount-- > 0) { + String provides = this.readClass(currentOffset, buffer); + int providesWithCount = this.readUnsignedShort(currentOffset + 2); + currentOffset += 4; + String[] providesWith = new String[providesWithCount]; + + for (int i = 0; i < providesWithCount; i++) { + providesWith[i] = this.readClass(currentOffset, buffer); + currentOffset += 2; + } + + moduleVisitor.visitProvide(provides, providesWith); + } + + moduleVisitor.visitEnd(); + } + } + + private int readRecordComponent(ClassVisitor classVisitor, Context context, int recordComponentOffset) { + char[] charBuffer = context.charBuffer; + String name = this.readUTF8(recordComponentOffset, charBuffer); + String descriptor = this.readUTF8(recordComponentOffset + 2, charBuffer); + int currentOffset = recordComponentOffset + 4; + String signature = null; + int runtimeVisibleAnnotationsOffset = 0; + int runtimeInvisibleAnnotationsOffset = 0; + int runtimeVisibleTypeAnnotationsOffset = 0; + int runtimeInvisibleTypeAnnotationsOffset = 0; + Attribute attributes = null; + int attributesCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (attributesCount-- > 0) { + String attributeName = this.readUTF8(currentOffset, charBuffer); + int attributeLength = this.readInt(currentOffset + 2); + currentOffset += 6; + if ("Signature".equals(attributeName)) { + signature = this.readUTF8(currentOffset, charBuffer); + } else if ("RuntimeVisibleAnnotations".equals(attributeName)) { + runtimeVisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) { + runtimeVisibleTypeAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleAnnotations".equals(attributeName)) { + runtimeInvisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) { + runtimeInvisibleTypeAnnotationsOffset = currentOffset; + } else { + Attribute attribute = this.readAttribute(context.attributePrototypes, attributeName, currentOffset, attributeLength, charBuffer, -1, null); + attribute.nextAttribute = attributes; + attributes = attribute; + } + + currentOffset += attributeLength; + } + + RecordComponentVisitor recordComponentVisitor = classVisitor.visitRecordComponent(name, descriptor, signature); + if (recordComponentVisitor == null) { + return currentOffset; + } else { + if (runtimeVisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + recordComponentVisitor.visitAnnotation(annotationDescriptor, true), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeInvisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + recordComponentVisitor.visitAnnotation(annotationDescriptor, false), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeVisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + recordComponentVisitor.visitTypeAnnotation( + context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true + ), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + if (runtimeInvisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + recordComponentVisitor.visitTypeAnnotation( + context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false + ), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + while (attributes != null) { + Attribute nextAttribute = attributes.nextAttribute; + attributes.nextAttribute = null; + recordComponentVisitor.visitAttribute(attributes); + attributes = nextAttribute; + } + + recordComponentVisitor.visitEnd(); + return currentOffset; + } + } + + private int readField(ClassVisitor classVisitor, Context context, int fieldInfoOffset) { + char[] charBuffer = context.charBuffer; + int accessFlags = this.readUnsignedShort(fieldInfoOffset); + String name = this.readUTF8(fieldInfoOffset + 2, charBuffer); + String descriptor = this.readUTF8(fieldInfoOffset + 4, charBuffer); + int currentOffset = fieldInfoOffset + 6; + Object constantValue = null; + String signature = null; + int runtimeVisibleAnnotationsOffset = 0; + int runtimeInvisibleAnnotationsOffset = 0; + int runtimeVisibleTypeAnnotationsOffset = 0; + int runtimeInvisibleTypeAnnotationsOffset = 0; + Attribute attributes = null; + int attributesCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (attributesCount-- > 0) { + String attributeName = this.readUTF8(currentOffset, charBuffer); + int attributeLength = this.readInt(currentOffset + 2); + currentOffset += 6; + if ("ConstantValue".equals(attributeName)) { + int constantvalueIndex = this.readUnsignedShort(currentOffset); + constantValue = constantvalueIndex == 0 ? null : this.readConst(constantvalueIndex, charBuffer); + } else if ("Signature".equals(attributeName)) { + signature = this.readUTF8(currentOffset, charBuffer); + } else if ("Deprecated".equals(attributeName)) { + accessFlags |= 131072; + } else if ("Synthetic".equals(attributeName)) { + accessFlags |= 4096; + } else if ("RuntimeVisibleAnnotations".equals(attributeName)) { + runtimeVisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) { + runtimeVisibleTypeAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleAnnotations".equals(attributeName)) { + runtimeInvisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) { + runtimeInvisibleTypeAnnotationsOffset = currentOffset; + } else { + Attribute attribute = this.readAttribute(context.attributePrototypes, attributeName, currentOffset, attributeLength, charBuffer, -1, null); + attribute.nextAttribute = attributes; + attributes = attribute; + } + + currentOffset += attributeLength; + } + + FieldVisitor fieldVisitor = classVisitor.visitField(accessFlags, name, descriptor, signature, constantValue); + if (fieldVisitor == null) { + return currentOffset; + } else { + if (runtimeVisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + fieldVisitor.visitAnnotation(annotationDescriptor, true), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeInvisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + fieldVisitor.visitAnnotation(annotationDescriptor, false), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeVisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + fieldVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + if (runtimeInvisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + fieldVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + while (attributes != null) { + Attribute nextAttribute = attributes.nextAttribute; + attributes.nextAttribute = null; + fieldVisitor.visitAttribute(attributes); + attributes = nextAttribute; + } + + fieldVisitor.visitEnd(); + return currentOffset; + } + } + + private int readMethod(ClassVisitor classVisitor, Context context, int methodInfoOffset) { + char[] charBuffer = context.charBuffer; + context.currentMethodAccessFlags = this.readUnsignedShort(methodInfoOffset); + context.currentMethodName = this.readUTF8(methodInfoOffset + 2, charBuffer); + context.currentMethodDescriptor = this.readUTF8(methodInfoOffset + 4, charBuffer); + int currentOffset = methodInfoOffset + 6; + int codeOffset = 0; + int exceptionsOffset = 0; + String[] exceptions = null; + boolean synthetic = false; + int signatureIndex = 0; + int runtimeVisibleAnnotationsOffset = 0; + int runtimeInvisibleAnnotationsOffset = 0; + int runtimeVisibleParameterAnnotationsOffset = 0; + int runtimeInvisibleParameterAnnotationsOffset = 0; + int runtimeVisibleTypeAnnotationsOffset = 0; + int runtimeInvisibleTypeAnnotationsOffset = 0; + int annotationDefaultOffset = 0; + int methodParametersOffset = 0; + Attribute attributes = null; + int attributesCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (attributesCount-- > 0) { + String attributeName = this.readUTF8(currentOffset, charBuffer); + int attributeLength = this.readInt(currentOffset + 2); + currentOffset += 6; + if ("Code".equals(attributeName)) { + if ((context.parsingOptions & 1) == 0) { + codeOffset = currentOffset; + } + } else if ("Exceptions".equals(attributeName)) { + exceptionsOffset = currentOffset; + exceptions = new String[this.readUnsignedShort(currentOffset)]; + int currentExceptionOffset = currentOffset + 2; + + for (int i = 0; i < exceptions.length; i++) { + exceptions[i] = this.readClass(currentExceptionOffset, charBuffer); + currentExceptionOffset += 2; + } + } else if ("Signature".equals(attributeName)) { + signatureIndex = this.readUnsignedShort(currentOffset); + } else if ("Deprecated".equals(attributeName)) { + context.currentMethodAccessFlags |= 131072; + } else if ("RuntimeVisibleAnnotations".equals(attributeName)) { + runtimeVisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) { + runtimeVisibleTypeAnnotationsOffset = currentOffset; + } else if ("AnnotationDefault".equals(attributeName)) { + annotationDefaultOffset = currentOffset; + } else if ("Synthetic".equals(attributeName)) { + synthetic = true; + context.currentMethodAccessFlags |= 4096; + } else if ("RuntimeInvisibleAnnotations".equals(attributeName)) { + runtimeInvisibleAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) { + runtimeInvisibleTypeAnnotationsOffset = currentOffset; + } else if ("RuntimeVisibleParameterAnnotations".equals(attributeName)) { + runtimeVisibleParameterAnnotationsOffset = currentOffset; + } else if ("RuntimeInvisibleParameterAnnotations".equals(attributeName)) { + runtimeInvisibleParameterAnnotationsOffset = currentOffset; + } else if ("MethodParameters".equals(attributeName)) { + methodParametersOffset = currentOffset; + } else { + Attribute attribute = this.readAttribute(context.attributePrototypes, attributeName, currentOffset, attributeLength, charBuffer, -1, null); + attribute.nextAttribute = attributes; + attributes = attribute; + } + + currentOffset += attributeLength; + } + + MethodVisitor methodVisitor = classVisitor.visitMethod( + context.currentMethodAccessFlags, + context.currentMethodName, + context.currentMethodDescriptor, + signatureIndex == 0 ? null : this.readUtf(signatureIndex, charBuffer), + exceptions + ); + if (methodVisitor == null) { + return currentOffset; + } else { + if (methodVisitor instanceof MethodWriter) { + MethodWriter methodWriter = (MethodWriter)methodVisitor; + if (methodWriter.canCopyMethodAttributes( + this, + synthetic, + (context.currentMethodAccessFlags & 131072) != 0, + this.readUnsignedShort(methodInfoOffset + 4), + signatureIndex, + exceptionsOffset + )) { + methodWriter.setMethodAttributesSource(methodInfoOffset, currentOffset - methodInfoOffset); + return currentOffset; + } + } + + if (methodParametersOffset != 0 && (context.parsingOptions & 2) == 0) { + int parametersCount = this.readByte(methodParametersOffset); + + for (int currentParameterOffset = methodParametersOffset + 1; parametersCount-- > 0; currentParameterOffset += 4) { + methodVisitor.visitParameter(this.readUTF8(currentParameterOffset, charBuffer), this.readUnsignedShort(currentParameterOffset + 2)); + } + } + + if (annotationDefaultOffset != 0) { + AnnotationVisitor annotationVisitor = methodVisitor.visitAnnotationDefault(); + this.readElementValue(annotationVisitor, annotationDefaultOffset, null, charBuffer); + if (annotationVisitor != null) { + annotationVisitor.visitEnd(); + } + } + + if (runtimeVisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + methodVisitor.visitAnnotation(annotationDescriptor, true), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeInvisibleAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + methodVisitor.visitAnnotation(annotationDescriptor, false), currentAnnotationOffset, true, charBuffer + ); + } + } + + if (runtimeVisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeVisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeVisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + methodVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + if (runtimeInvisibleTypeAnnotationsOffset != 0) { + int numAnnotations = this.readUnsignedShort(runtimeInvisibleTypeAnnotationsOffset); + int currentAnnotationOffset = runtimeInvisibleTypeAnnotationsOffset + 2; + + while (numAnnotations-- > 0) { + currentAnnotationOffset = this.readTypeAnnotationTarget(context, currentAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + currentAnnotationOffset = this.readElementValues( + methodVisitor.visitTypeAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + if (runtimeVisibleParameterAnnotationsOffset != 0) { + this.readParameterAnnotations(methodVisitor, context, runtimeVisibleParameterAnnotationsOffset, true); + } + + if (runtimeInvisibleParameterAnnotationsOffset != 0) { + this.readParameterAnnotations(methodVisitor, context, runtimeInvisibleParameterAnnotationsOffset, false); + } + + while (attributes != null) { + Attribute nextAttribute = attributes.nextAttribute; + attributes.nextAttribute = null; + methodVisitor.visitAttribute(attributes); + attributes = nextAttribute; + } + + if (codeOffset != 0) { + methodVisitor.visitCode(); + this.readCode(methodVisitor, context, codeOffset); + } + + methodVisitor.visitEnd(); + return currentOffset; + } + } + + private void readCode(MethodVisitor methodVisitor, Context context, int codeOffset) { + byte[] classBuffer = this.classFileBuffer; + char[] charBuffer = context.charBuffer; + int maxStack = this.readUnsignedShort(codeOffset); + int maxLocals = this.readUnsignedShort(codeOffset + 2); + int codeLength = this.readInt(codeOffset + 4); + int currentOffset = codeOffset + 8; + if (codeLength > this.classFileBuffer.length - currentOffset) { + throw new IllegalArgumentException(); + } else { + int bytecodeStartOffset = currentOffset; + int bytecodeEndOffset = currentOffset + codeLength; + Label[] labels = context.currentMethodLabels = new Label[codeLength + 1]; + + while (currentOffset < bytecodeEndOffset) { + int bytecodeOffset = currentOffset - bytecodeStartOffset; + int opcode = classBuffer[currentOffset] & 255; + switch (opcode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case 128: + case 129: + case 130: + case 131: + case 133: + case 134: + case 135: + case 136: + case 137: + case 138: + case 139: + case 140: + case 141: + case 142: + case 143: + case 144: + case 145: + case 146: + case 147: + case 148: + case 149: + case 150: + case 151: + case 152: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 190: + case 191: + case 194: + case 195: + currentOffset++; + break; + case 16: + case 18: + case 21: + case 22: + case 23: + case 24: + case 25: + case 54: + case 55: + case 56: + case 57: + case 58: + case 169: + case 188: + currentOffset += 2; + break; + case 17: + case 19: + case 20: + case 132: + case 178: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 187: + case 189: + case 192: + case 193: + currentOffset += 3; + break; + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 198: + case 199: + this.createLabel(bytecodeOffset + this.readShort(currentOffset + 1), labels); + currentOffset += 3; + break; + case 170: + currentOffset += 4 - (bytecodeOffset & 3); + this.createLabel(bytecodeOffset + this.readInt(currentOffset), labels); + int numTableEntries = this.readInt(currentOffset + 8) - this.readInt(currentOffset + 4) + 1; + + for (currentOffset += 12; numTableEntries-- > 0; currentOffset += 4) { + this.createLabel(bytecodeOffset + this.readInt(currentOffset), labels); + } + break; + case 171: + currentOffset += 4 - (bytecodeOffset & 3); + this.createLabel(bytecodeOffset + this.readInt(currentOffset), labels); + int numSwitchCases = this.readInt(currentOffset + 4); + + for (currentOffset += 8; numSwitchCases-- > 0; currentOffset += 8) { + this.createLabel(bytecodeOffset + this.readInt(currentOffset + 4), labels); + } + break; + case 185: + case 186: + currentOffset += 5; + break; + case 196: + switch (classBuffer[currentOffset + 1] & 0xFF) { + case 21: + case 22: + case 23: + case 24: + case 25: + case 54: + case 55: + case 56: + case 57: + case 58: + case 169: + currentOffset += 4; + continue; + case 132: + currentOffset += 6; + continue; + default: + throw new IllegalArgumentException(); + } + case 197: + currentOffset += 4; + break; + case 200: + case 201: + case 220: + this.createLabel(bytecodeOffset + this.readInt(currentOffset + 1), labels); + currentOffset += 5; + break; + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 211: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 218: + case 219: + this.createLabel(bytecodeOffset + this.readUnsignedShort(currentOffset + 1), labels); + currentOffset += 3; + break; + default: + throw new IllegalArgumentException(); + } + } + + int exceptionTableLength = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (exceptionTableLength-- > 0) { + Label start = this.createLabel(this.readUnsignedShort(currentOffset), labels); + Label end = this.createLabel(this.readUnsignedShort(currentOffset + 2), labels); + Label handler = this.createLabel(this.readUnsignedShort(currentOffset + 4), labels); + String catchType = this.readUTF8(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 6)], charBuffer); + currentOffset += 8; + methodVisitor.visitTryCatchBlock(start, end, handler, catchType); + } + + int stackMapFrameOffset = 0; + int stackMapTableEndOffset = 0; + boolean compressedFrames = true; + int localVariableTableOffset = 0; + int localVariableTypeTableOffset = 0; + int[] visibleTypeAnnotationOffsets = null; + int[] invisibleTypeAnnotationOffsets = null; + Attribute attributes = null; + int attributesCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (attributesCount-- > 0) { + String attributeName = this.readUTF8(currentOffset, charBuffer); + int attributeLength = this.readInt(currentOffset + 2); + currentOffset += 6; + if ("LocalVariableTable".equals(attributeName)) { + if ((context.parsingOptions & 2) == 0) { + localVariableTableOffset = currentOffset; + int localVariableTableLength = this.readUnsignedShort(currentOffset); + + for (int var67 = currentOffset + 2; localVariableTableLength-- > 0; var67 += 10) { + int startPc = this.readUnsignedShort(var67); + this.createDebugLabel(startPc, labels); + int length = this.readUnsignedShort(var67 + 2); + this.createDebugLabel(startPc + length, labels); + } + } + } else if ("LocalVariableTypeTable".equals(attributeName)) { + localVariableTypeTableOffset = currentOffset; + } else if ("LineNumberTable".equals(attributeName)) { + if ((context.parsingOptions & 2) == 0) { + int lineNumberTableLength = this.readUnsignedShort(currentOffset); + int var66 = currentOffset + 2; + + while (lineNumberTableLength-- > 0) { + int startPc = this.readUnsignedShort(var66); + int lineNumber = this.readUnsignedShort(var66 + 2); + var66 += 4; + this.createDebugLabel(startPc, labels); + labels[startPc].addLineNumber(lineNumber); + } + } + } else if ("RuntimeVisibleTypeAnnotations".equals(attributeName)) { + visibleTypeAnnotationOffsets = this.readTypeAnnotations(methodVisitor, context, currentOffset, true); + } else if ("RuntimeInvisibleTypeAnnotations".equals(attributeName)) { + invisibleTypeAnnotationOffsets = this.readTypeAnnotations(methodVisitor, context, currentOffset, false); + } else if ("StackMapTable".equals(attributeName)) { + if ((context.parsingOptions & 4) == 0) { + stackMapFrameOffset = currentOffset + 2; + stackMapTableEndOffset = currentOffset + attributeLength; + } + } else if ("StackMap".equals(attributeName)) { + if ((context.parsingOptions & 4) == 0) { + stackMapFrameOffset = currentOffset + 2; + stackMapTableEndOffset = currentOffset + attributeLength; + compressedFrames = false; + } + } else { + Attribute attribute = this.readAttribute( + context.attributePrototypes, attributeName, currentOffset, attributeLength, charBuffer, codeOffset, labels + ); + attribute.nextAttribute = attributes; + attributes = attribute; + } + + currentOffset += attributeLength; + } + + boolean expandFrames = (context.parsingOptions & 8) != 0; + if (stackMapFrameOffset != 0) { + context.currentFrameOffset = -1; + context.currentFrameType = 0; + context.currentFrameLocalCount = 0; + context.currentFrameLocalCountDelta = 0; + context.currentFrameLocalTypes = new Object[maxLocals]; + context.currentFrameStackCount = 0; + context.currentFrameStackTypes = new Object[maxStack]; + if (expandFrames) { + this.computeImplicitFrame(context); + } + + for (int offset = stackMapFrameOffset; offset < stackMapTableEndOffset - 2; offset++) { + if (classBuffer[offset] == 8) { + int potentialBytecodeOffset = this.readUnsignedShort(offset + 1); + if (potentialBytecodeOffset >= 0 + && potentialBytecodeOffset < codeLength + && (classBuffer[bytecodeStartOffset + potentialBytecodeOffset] & 255) == 187) { + this.createLabel(potentialBytecodeOffset, labels); + } + } + } + } + + if (expandFrames && (context.parsingOptions & 256) != 0) { + methodVisitor.visitFrame(-1, maxLocals, null, 0, null); + } + + int currentVisibleTypeAnnotationIndex = 0; + int currentVisibleTypeAnnotationBytecodeOffset = this.getTypeAnnotationBytecodeOffset(visibleTypeAnnotationOffsets, 0); + int currentInvisibleTypeAnnotationIndex = 0; + int currentInvisibleTypeAnnotationBytecodeOffset = this.getTypeAnnotationBytecodeOffset(invisibleTypeAnnotationOffsets, 0); + boolean insertFrame = false; + int wideJumpOpcodeDelta = (context.parsingOptions & 256) == 0 ? 33 : 0; + currentOffset = bytecodeStartOffset; + + while (currentOffset < bytecodeEndOffset) { + int currentBytecodeOffset = currentOffset - bytecodeStartOffset; + this.readBytecodeInstructionOffset(currentBytecodeOffset); + Label currentLabel = labels[currentBytecodeOffset]; + if (currentLabel != null) { + currentLabel.accept(methodVisitor, (context.parsingOptions & 2) == 0); + } + + while (stackMapFrameOffset != 0 && (context.currentFrameOffset == currentBytecodeOffset || context.currentFrameOffset == -1)) { + if (context.currentFrameOffset != -1) { + if (compressedFrames && !expandFrames) { + methodVisitor.visitFrame( + context.currentFrameType, + context.currentFrameLocalCountDelta, + context.currentFrameLocalTypes, + context.currentFrameStackCount, + context.currentFrameStackTypes + ); + } else { + methodVisitor.visitFrame( + -1, context.currentFrameLocalCount, context.currentFrameLocalTypes, context.currentFrameStackCount, context.currentFrameStackTypes + ); + } + + insertFrame = false; + } + + if (stackMapFrameOffset < stackMapTableEndOffset) { + stackMapFrameOffset = this.readStackMapFrame(stackMapFrameOffset, compressedFrames, expandFrames, context); + } else { + stackMapFrameOffset = 0; + } + } + + if (insertFrame) { + if ((context.parsingOptions & 8) != 0) { + methodVisitor.visitFrame(256, 0, null, 0, null); + } + + insertFrame = false; + } + + int opcode = classBuffer[currentOffset] & 255; + switch (opcode) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + case 127: + case 128: + case 129: + case 130: + case 131: + case 133: + case 134: + case 135: + case 136: + case 137: + case 138: + case 139: + case 140: + case 141: + case 142: + case 143: + case 144: + case 145: + case 146: + case 147: + case 148: + case 149: + case 150: + case 151: + case 152: + case 172: + case 173: + case 174: + case 175: + case 176: + case 177: + case 190: + case 191: + case 194: + case 195: + methodVisitor.visitInsn(opcode); + currentOffset++; + break; + case 16: + case 188: + methodVisitor.visitIntInsn(opcode, classBuffer[currentOffset + 1]); + currentOffset += 2; + break; + case 17: + methodVisitor.visitIntInsn(opcode, this.readShort(currentOffset + 1)); + currentOffset += 3; + break; + case 18: + methodVisitor.visitLdcInsn(this.readConst(classBuffer[currentOffset + 1] & 255, charBuffer)); + currentOffset += 2; + break; + case 19: + case 20: + methodVisitor.visitLdcInsn(this.readConst(this.readUnsignedShort(currentOffset + 1), charBuffer)); + currentOffset += 3; + break; + case 21: + case 22: + case 23: + case 24: + case 25: + case 54: + case 55: + case 56: + case 57: + case 58: + case 169: + methodVisitor.visitVarInsn(opcode, classBuffer[currentOffset + 1] & 255); + currentOffset += 2; + break; + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + opcode -= 26; + methodVisitor.visitVarInsn(21 + (opcode >> 2), opcode & 3); + currentOffset++; + break; + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + opcode -= 59; + methodVisitor.visitVarInsn(54 + (opcode >> 2), opcode & 3); + currentOffset++; + break; + case 132: + methodVisitor.visitIincInsn(classBuffer[currentOffset + 1] & 255, classBuffer[currentOffset + 2]); + currentOffset += 3; + break; + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 167: + case 168: + case 198: + case 199: + methodVisitor.visitJumpInsn(opcode, labels[currentBytecodeOffset + this.readShort(currentOffset + 1)]); + currentOffset += 3; + break; + case 170: + currentOffset += 4 - (currentBytecodeOffset & 3); + Label defaultLabel = labels[currentBytecodeOffset + this.readInt(currentOffset)]; + int low = this.readInt(currentOffset + 4); + int high = this.readInt(currentOffset + 8); + currentOffset += 12; + Label[] table = new Label[high - low + 1]; + + for (int i = 0; i < table.length; i++) { + table[i] = labels[currentBytecodeOffset + this.readInt(currentOffset)]; + currentOffset += 4; + } + + methodVisitor.visitTableSwitchInsn(low, high, defaultLabel, table); + break; + case 171: + currentOffset += 4 - (currentBytecodeOffset & 3); + Label lookupDefaultLabel = labels[currentBytecodeOffset + this.readInt(currentOffset)]; + int numPairs = this.readInt(currentOffset + 4); + currentOffset += 8; + int[] keys = new int[numPairs]; + Label[] values = new Label[numPairs]; + + for (int i = 0; i < numPairs; i++) { + keys[i] = this.readInt(currentOffset); + values[i] = labels[currentBytecodeOffset + this.readInt(currentOffset + 4)]; + currentOffset += 8; + } + + methodVisitor.visitLookupSwitchInsn(lookupDefaultLabel, keys, values); + break; + case 178: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 185: + int cpInfoOffset = this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]; + int nameAndTypeCpInfoOffset = this.cpInfoOffsets[this.readUnsignedShort(cpInfoOffset + 2)]; + String owner = this.readClass(cpInfoOffset, charBuffer); + String name = this.readUTF8(nameAndTypeCpInfoOffset, charBuffer); + String descriptor = this.readUTF8(nameAndTypeCpInfoOffset + 2, charBuffer); + if (opcode < 182) { + methodVisitor.visitFieldInsn(opcode, owner, name, descriptor); + } else { + boolean isInterface = classBuffer[cpInfoOffset - 1] == 11; + methodVisitor.visitMethodInsn(opcode, owner, name, descriptor, isInterface); + } + + if (opcode == 185) { + currentOffset += 5; + } else { + currentOffset += 3; + } + break; + case 186: + int cpInfoOffsetx = this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]; + int nameAndTypeCpInfoOffsetx = this.cpInfoOffsets[this.readUnsignedShort(cpInfoOffsetx + 2)]; + String namex = this.readUTF8(nameAndTypeCpInfoOffsetx, charBuffer); + String descriptorx = this.readUTF8(nameAndTypeCpInfoOffsetx + 2, charBuffer); + int bootstrapMethodOffset = this.bootstrapMethodOffsets[this.readUnsignedShort(cpInfoOffsetx)]; + Handle handle = (Handle)this.readConst(this.readUnsignedShort(bootstrapMethodOffset), charBuffer); + Object[] bootstrapMethodArguments = new Object[this.readUnsignedShort(bootstrapMethodOffset + 2)]; + bootstrapMethodOffset += 4; + + for (int i = 0; i < bootstrapMethodArguments.length; i++) { + bootstrapMethodArguments[i] = this.readConst(this.readUnsignedShort(bootstrapMethodOffset), charBuffer); + bootstrapMethodOffset += 2; + } + + methodVisitor.visitInvokeDynamicInsn(namex, descriptorx, handle, bootstrapMethodArguments); + currentOffset += 5; + break; + case 187: + case 189: + case 192: + case 193: + methodVisitor.visitTypeInsn(opcode, this.readClass(currentOffset + 1, charBuffer)); + currentOffset += 3; + break; + case 196: + opcode = classBuffer[currentOffset + 1] & 255; + if (opcode == 132) { + methodVisitor.visitIincInsn(this.readUnsignedShort(currentOffset + 2), this.readShort(currentOffset + 4)); + currentOffset += 6; + } else { + methodVisitor.visitVarInsn(opcode, this.readUnsignedShort(currentOffset + 2)); + currentOffset += 4; + } + break; + case 197: + methodVisitor.visitMultiANewArrayInsn(this.readClass(currentOffset + 1, charBuffer), classBuffer[currentOffset + 3] & 255); + currentOffset += 4; + break; + case 200: + case 201: + methodVisitor.visitJumpInsn(opcode - wideJumpOpcodeDelta, labels[currentBytecodeOffset + this.readInt(currentOffset + 1)]); + currentOffset += 5; + break; + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 209: + case 210: + case 211: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 218: + case 219: + opcode = opcode < 218 ? opcode - 49 : opcode - 20; + Label target = labels[currentBytecodeOffset + this.readUnsignedShort(currentOffset + 1)]; + if (opcode != 167 && opcode != 168) { + opcode = opcode < 167 ? (opcode + 1 ^ 1) - 1 : opcode ^ 1; + Label endif = this.createLabel(currentBytecodeOffset + 3, labels); + methodVisitor.visitJumpInsn(opcode, endif); + methodVisitor.visitJumpInsn(200, target); + insertFrame = true; + } else { + methodVisitor.visitJumpInsn(opcode + 33, target); + } + + currentOffset += 3; + break; + case 220: + methodVisitor.visitJumpInsn(200, labels[currentBytecodeOffset + this.readInt(currentOffset + 1)]); + insertFrame = true; + currentOffset += 5; + break; + default: + throw new AssertionError(); + } + + for (; + visibleTypeAnnotationOffsets != null + && currentVisibleTypeAnnotationIndex < visibleTypeAnnotationOffsets.length + && currentVisibleTypeAnnotationBytecodeOffset <= currentBytecodeOffset; + currentVisibleTypeAnnotationBytecodeOffset = this.getTypeAnnotationBytecodeOffset( + visibleTypeAnnotationOffsets, ++currentVisibleTypeAnnotationIndex + ) + ) { + if (currentVisibleTypeAnnotationBytecodeOffset == currentBytecodeOffset) { + int currentAnnotationOffset = this.readTypeAnnotationTarget(context, visibleTypeAnnotationOffsets[currentVisibleTypeAnnotationIndex]); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + this.readElementValues( + methodVisitor.visitInsnAnnotation(context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, true), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + + for (; + invisibleTypeAnnotationOffsets != null + && currentInvisibleTypeAnnotationIndex < invisibleTypeAnnotationOffsets.length + && currentInvisibleTypeAnnotationBytecodeOffset <= currentBytecodeOffset; + currentInvisibleTypeAnnotationBytecodeOffset = this.getTypeAnnotationBytecodeOffset( + invisibleTypeAnnotationOffsets, ++currentInvisibleTypeAnnotationIndex + ) + ) { + if (currentInvisibleTypeAnnotationBytecodeOffset == currentBytecodeOffset) { + int currentAnnotationOffset = this.readTypeAnnotationTarget(context, invisibleTypeAnnotationOffsets[currentInvisibleTypeAnnotationIndex]); + String annotationDescriptor = this.readUTF8(currentAnnotationOffset, charBuffer); + currentAnnotationOffset += 2; + this.readElementValues( + methodVisitor.visitInsnAnnotation( + context.currentTypeAnnotationTarget, context.currentTypeAnnotationTargetPath, annotationDescriptor, false + ), + currentAnnotationOffset, + true, + charBuffer + ); + } + } + } + + if (labels[codeLength] != null) { + methodVisitor.visitLabel(labels[codeLength]); + } + + if (localVariableTableOffset != 0 && (context.parsingOptions & 2) == 0) { + int[] typeTable = null; + if (localVariableTypeTableOffset != 0) { + typeTable = new int[this.readUnsignedShort(localVariableTypeTableOffset) * 3]; + currentOffset = localVariableTypeTableOffset + 2; + + for (int typeTableIndex = typeTable.length; typeTableIndex > 0; currentOffset += 10) { + typeTableIndex--; + typeTable[typeTableIndex] = currentOffset + 6; + typeTableIndex--; + typeTable[typeTableIndex] = this.readUnsignedShort(currentOffset + 8); + typeTableIndex--; + typeTable[typeTableIndex] = this.readUnsignedShort(currentOffset); + } + } + + int localVariableTableLength = this.readUnsignedShort(localVariableTableOffset); + currentOffset = localVariableTableOffset + 2; + + while (localVariableTableLength-- > 0) { + int startPc = this.readUnsignedShort(currentOffset); + int length = this.readUnsignedShort(currentOffset + 2); + String namex = this.readUTF8(currentOffset + 4, charBuffer); + String descriptorx = this.readUTF8(currentOffset + 6, charBuffer); + int index = this.readUnsignedShort(currentOffset + 8); + currentOffset += 10; + String signature = null; + if (typeTable != null) { + for (int i = 0; i < typeTable.length; i += 3) { + if (typeTable[i] == startPc && typeTable[i + 1] == index) { + signature = this.readUTF8(typeTable[i + 2], charBuffer); + break; + } + } + } + + methodVisitor.visitLocalVariable(namex, descriptorx, signature, labels[startPc], labels[startPc + length], index); + } + } + + if (visibleTypeAnnotationOffsets != null) { + for (int typeAnnotationOffset : visibleTypeAnnotationOffsets) { + int targetType = this.readByte(typeAnnotationOffset); + if (targetType == 64 || targetType == 65) { + currentOffset = this.readTypeAnnotationTarget(context, typeAnnotationOffset); + String annotationDescriptor = this.readUTF8(currentOffset, charBuffer); + currentOffset += 2; + this.readElementValues( + methodVisitor.visitLocalVariableAnnotation( + context.currentTypeAnnotationTarget, + context.currentTypeAnnotationTargetPath, + context.currentLocalVariableAnnotationRangeStarts, + context.currentLocalVariableAnnotationRangeEnds, + context.currentLocalVariableAnnotationRangeIndices, + annotationDescriptor, + true + ), + currentOffset, + true, + charBuffer + ); + } + } + } + + if (invisibleTypeAnnotationOffsets != null) { + for (int typeAnnotationOffsetx : invisibleTypeAnnotationOffsets) { + int targetType = this.readByte(typeAnnotationOffsetx); + if (targetType == 64 || targetType == 65) { + currentOffset = this.readTypeAnnotationTarget(context, typeAnnotationOffsetx); + String annotationDescriptor = this.readUTF8(currentOffset, charBuffer); + currentOffset += 2; + this.readElementValues( + methodVisitor.visitLocalVariableAnnotation( + context.currentTypeAnnotationTarget, + context.currentTypeAnnotationTargetPath, + context.currentLocalVariableAnnotationRangeStarts, + context.currentLocalVariableAnnotationRangeEnds, + context.currentLocalVariableAnnotationRangeIndices, + annotationDescriptor, + false + ), + currentOffset, + true, + charBuffer + ); + } + } + } + + while (attributes != null) { + Attribute nextAttribute = attributes.nextAttribute; + attributes.nextAttribute = null; + methodVisitor.visitAttribute(attributes); + attributes = nextAttribute; + } + + methodVisitor.visitMaxs(maxStack, maxLocals); + } + } + + protected void readBytecodeInstructionOffset(int bytecodeOffset) { + } + + protected Label readLabel(int bytecodeOffset, Label[] labels) { + if (labels[bytecodeOffset] == null) { + labels[bytecodeOffset] = new Label(); + } + + return labels[bytecodeOffset]; + } + + private Label createLabel(int bytecodeOffset, Label[] labels) { + Label label = this.readLabel(bytecodeOffset, labels); + label.flags = (short)(label.flags & -2); + return label; + } + + private void createDebugLabel(int bytecodeOffset, Label[] labels) { + if (labels[bytecodeOffset] == null) { + Label var10000 = this.readLabel(bytecodeOffset, labels); + var10000.flags = (short)(var10000.flags | 1); + } + } + + private int[] readTypeAnnotations(MethodVisitor methodVisitor, Context context, int runtimeTypeAnnotationsOffset, boolean visible) { + char[] charBuffer = context.charBuffer; + int[] typeAnnotationsOffsets = new int[this.readUnsignedShort(runtimeTypeAnnotationsOffset)]; + int currentOffset = runtimeTypeAnnotationsOffset + 2; + + for (int i = 0; i < typeAnnotationsOffsets.length; i++) { + typeAnnotationsOffsets[i] = currentOffset; + int targetType = this.readInt(currentOffset); + switch (targetType >>> 24) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 19: + case 20: + case 21: + case 22: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + default: + throw new IllegalArgumentException(); + case 16: + case 17: + case 18: + case 23: + case 66: + case 67: + case 68: + case 69: + case 70: + currentOffset += 3; + break; + case 64: + case 65: + int tableLength = this.readUnsignedShort(currentOffset + 1); + currentOffset += 3; + + while (tableLength-- > 0) { + int startPc = this.readUnsignedShort(currentOffset); + int length = this.readUnsignedShort(currentOffset + 2); + currentOffset += 6; + this.createLabel(startPc, context.currentMethodLabels); + this.createLabel(startPc + length, context.currentMethodLabels); + } + break; + case 71: + case 72: + case 73: + case 74: + case 75: + currentOffset += 4; + } + + int pathLength = this.readByte(currentOffset); + if (targetType >>> 24 == 66) { + TypePath path = pathLength == 0 ? null : new TypePath(this.classFileBuffer, currentOffset); + currentOffset += 1 + 2 * pathLength; + String annotationDescriptor = this.readUTF8(currentOffset, charBuffer); + currentOffset += 2; + currentOffset = this.readElementValues( + methodVisitor.visitTryCatchAnnotation(targetType & -256, path, annotationDescriptor, visible), currentOffset, true, charBuffer + ); + } else { + currentOffset += 3 + 2 * pathLength; + currentOffset = this.readElementValues(null, currentOffset, true, charBuffer); + } + } + + return typeAnnotationsOffsets; + } + + private int getTypeAnnotationBytecodeOffset(int[] typeAnnotationOffsets, int typeAnnotationIndex) { + return typeAnnotationOffsets != null + && typeAnnotationIndex < typeAnnotationOffsets.length + && this.readByte(typeAnnotationOffsets[typeAnnotationIndex]) >= 67 + ? this.readUnsignedShort(typeAnnotationOffsets[typeAnnotationIndex] + 1) + : -1; + } + + private int readTypeAnnotationTarget(Context context, int typeAnnotationOffset) { + int targetType = this.readInt(typeAnnotationOffset); + int currentOffset; + switch (targetType >>> 24) { + case 0: + case 1: + case 22: + targetType &= -65536; + currentOffset = typeAnnotationOffset + 2; + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + default: + throw new IllegalArgumentException(); + case 16: + case 17: + case 18: + case 23: + case 66: + targetType &= -256; + currentOffset = typeAnnotationOffset + 3; + break; + case 19: + case 20: + case 21: + targetType &= -16777216; + currentOffset = typeAnnotationOffset + 1; + break; + case 64: + case 65: + targetType &= -16777216; + int tableLength = this.readUnsignedShort(typeAnnotationOffset + 1); + currentOffset = typeAnnotationOffset + 3; + context.currentLocalVariableAnnotationRangeStarts = new Label[tableLength]; + context.currentLocalVariableAnnotationRangeEnds = new Label[tableLength]; + context.currentLocalVariableAnnotationRangeIndices = new int[tableLength]; + + for (int i = 0; i < tableLength; i++) { + int startPc = this.readUnsignedShort(currentOffset); + int length = this.readUnsignedShort(currentOffset + 2); + int index = this.readUnsignedShort(currentOffset + 4); + currentOffset += 6; + context.currentLocalVariableAnnotationRangeStarts[i] = this.createLabel(startPc, context.currentMethodLabels); + context.currentLocalVariableAnnotationRangeEnds[i] = this.createLabel(startPc + length, context.currentMethodLabels); + context.currentLocalVariableAnnotationRangeIndices[i] = index; + } + break; + case 67: + case 68: + case 69: + case 70: + targetType &= -16777216; + currentOffset = typeAnnotationOffset + 3; + break; + case 71: + case 72: + case 73: + case 74: + case 75: + targetType &= -16776961; + currentOffset = typeAnnotationOffset + 4; + } + + context.currentTypeAnnotationTarget = targetType; + int pathLength = this.readByte(currentOffset); + context.currentTypeAnnotationTargetPath = pathLength == 0 ? null : new TypePath(this.classFileBuffer, currentOffset); + return currentOffset + 1 + 2 * pathLength; + } + + private void readParameterAnnotations(MethodVisitor methodVisitor, Context context, int runtimeParameterAnnotationsOffset, boolean visible) { + int currentOffset = runtimeParameterAnnotationsOffset + 1; + int numParameters = this.classFileBuffer[runtimeParameterAnnotationsOffset] & 255; + methodVisitor.visitAnnotableParameterCount(numParameters, visible); + char[] charBuffer = context.charBuffer; + + for (int i = 0; i < numParameters; i++) { + int numAnnotations = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (numAnnotations-- > 0) { + String annotationDescriptor = this.readUTF8(currentOffset, charBuffer); + currentOffset += 2; + currentOffset = this.readElementValues(methodVisitor.visitParameterAnnotation(i, annotationDescriptor, visible), currentOffset, true, charBuffer); + } + } + } + + private int readElementValues(AnnotationVisitor annotationVisitor, int annotationOffset, boolean named, char[] charBuffer) { + int numElementValuePairs = this.readUnsignedShort(annotationOffset); + int currentOffset = annotationOffset + 2; + if (named) { + while (numElementValuePairs-- > 0) { + String elementName = this.readUTF8(currentOffset, charBuffer); + currentOffset = this.readElementValue(annotationVisitor, currentOffset + 2, elementName, charBuffer); + } + } else { + while (numElementValuePairs-- > 0) { + currentOffset = this.readElementValue(annotationVisitor, currentOffset, null, charBuffer); + } + } + + if (annotationVisitor != null) { + annotationVisitor.visitEnd(); + } + + return currentOffset; + } + + private int readElementValue(AnnotationVisitor annotationVisitor, int elementValueOffset, String elementName, char[] charBuffer) { + if (annotationVisitor == null) { + switch (this.classFileBuffer[elementValueOffset] & 0xFF) { + case 64: + return this.readElementValues(null, elementValueOffset + 3, true, charBuffer); + case 91: + return this.readElementValues(null, elementValueOffset + 1, false, charBuffer); + case 101: + return elementValueOffset + 5; + default: + return elementValueOffset + 3; + } + } else { + int currentOffset = elementValueOffset + 1; + switch (this.classFileBuffer[elementValueOffset] & 0xFF) { + case 64: + currentOffset = this.readElementValues( + annotationVisitor.visitAnnotation(elementName, this.readUTF8(currentOffset, charBuffer)), currentOffset + 2, true, charBuffer + ); + break; + case 65: + case 69: + case 71: + case 72: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 100: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + default: + throw new IllegalArgumentException(); + case 66: + annotationVisitor.visit(elementName, (byte)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset)])); + currentOffset += 2; + break; + case 67: + annotationVisitor.visit(elementName, (char)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset)])); + currentOffset += 2; + break; + case 68: + case 70: + case 73: + case 74: + annotationVisitor.visit(elementName, this.readConst(this.readUnsignedShort(currentOffset), charBuffer)); + currentOffset += 2; + break; + case 83: + annotationVisitor.visit(elementName, (short)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset)])); + currentOffset += 2; + break; + case 90: + annotationVisitor.visit(elementName, this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset)]) == 0 ? Boolean.FALSE : Boolean.TRUE); + currentOffset += 2; + break; + case 91: + int numValues = this.readUnsignedShort(currentOffset); + currentOffset += 2; + if (numValues == 0) { + return this.readElementValues(annotationVisitor.visitArray(elementName), currentOffset - 2, false, charBuffer); + } + + switch (this.classFileBuffer[currentOffset] & 0xFF) { + case 66: + byte[] byteValues = new byte[numValues]; + + for (int i = 0; i < numValues; i++) { + byteValues[i] = (byte)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, byteValues); + return currentOffset; + case 67: + char[] charValues = new char[numValues]; + + for (int i = 0; i < numValues; i++) { + charValues[i] = (char)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, charValues); + return currentOffset; + case 68: + double[] doubleValues = new double[numValues]; + + for (int i = 0; i < numValues; i++) { + doubleValues[i] = Double.longBitsToDouble(this.readLong(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)])); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, doubleValues); + return currentOffset; + case 69: + case 71: + case 72: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + default: + currentOffset = this.readElementValues(annotationVisitor.visitArray(elementName), currentOffset - 2, false, charBuffer); + return currentOffset; + case 70: + float[] floatValues = new float[numValues]; + + for (int i = 0; i < numValues; i++) { + floatValues[i] = Float.intBitsToFloat(this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)])); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, floatValues); + return currentOffset; + case 73: + int[] intValues = new int[numValues]; + + for (int i = 0; i < numValues; i++) { + intValues[i] = this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, intValues); + return currentOffset; + case 74: + long[] longValues = new long[numValues]; + + for (int i = 0; i < numValues; i++) { + longValues[i] = this.readLong(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, longValues); + return currentOffset; + case 83: + short[] shortValues = new short[numValues]; + + for (int i = 0; i < numValues; i++) { + shortValues[i] = (short)this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]); + currentOffset += 3; + } + + annotationVisitor.visit(elementName, shortValues); + return currentOffset; + case 90: + boolean[] booleanValues = new boolean[numValues]; + + for (int i = 0; i < numValues; i++) { + booleanValues[i] = this.readInt(this.cpInfoOffsets[this.readUnsignedShort(currentOffset + 1)]) != 0; + currentOffset += 3; + } + + annotationVisitor.visit(elementName, booleanValues); + return currentOffset; + } + case 99: + annotationVisitor.visit(elementName, Type.getType(this.readUTF8(currentOffset, charBuffer))); + currentOffset += 2; + break; + case 101: + annotationVisitor.visitEnum(elementName, this.readUTF8(currentOffset, charBuffer), this.readUTF8(currentOffset + 2, charBuffer)); + currentOffset += 4; + break; + case 115: + annotationVisitor.visit(elementName, this.readUTF8(currentOffset, charBuffer)); + currentOffset += 2; + } + + return currentOffset; + } + } + + private void computeImplicitFrame(Context context) { + String methodDescriptor = context.currentMethodDescriptor; + Object[] locals = context.currentFrameLocalTypes; + int numLocal = 0; + if ((context.currentMethodAccessFlags & 8) == 0) { + if ("".equals(context.currentMethodName)) { + locals[numLocal++] = Opcodes.UNINITIALIZED_THIS; + } else { + locals[numLocal++] = this.readClass(this.header + 2, context.charBuffer); + } + } + + int currentMethodDescritorOffset = 1; + + while (true) { + int currentArgumentDescriptorStartOffset = currentMethodDescritorOffset; + switch (methodDescriptor.charAt(currentMethodDescritorOffset++)) { + case 'B': + case 'C': + case 'I': + case 'S': + case 'Z': + locals[numLocal++] = Opcodes.INTEGER; + break; + case 'D': + locals[numLocal++] = Opcodes.DOUBLE; + break; + case 'E': + case 'G': + case 'H': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + default: + context.currentFrameLocalCount = numLocal; + return; + case 'F': + locals[numLocal++] = Opcodes.FLOAT; + break; + case 'J': + locals[numLocal++] = Opcodes.LONG; + break; + case 'L': + while (methodDescriptor.charAt(currentMethodDescritorOffset) != ';') { + currentMethodDescritorOffset++; + } + + locals[numLocal++] = methodDescriptor.substring(currentArgumentDescriptorStartOffset + 1, currentMethodDescritorOffset++); + break; + case '[': + while (methodDescriptor.charAt(currentMethodDescritorOffset) == '[') { + currentMethodDescritorOffset++; + } + + if (methodDescriptor.charAt(currentMethodDescritorOffset) == 'L') { + currentMethodDescritorOffset++; + + while (methodDescriptor.charAt(currentMethodDescritorOffset) != ';') { + currentMethodDescritorOffset++; + } + } + + locals[numLocal++] = methodDescriptor.substring(currentArgumentDescriptorStartOffset, ++currentMethodDescritorOffset); + } + } + } + + private int readStackMapFrame(int stackMapFrameOffset, boolean compressed, boolean expand, Context context) { + int currentOffset = stackMapFrameOffset; + char[] charBuffer = context.charBuffer; + Label[] labels = context.currentMethodLabels; + int frameType; + if (compressed) { + currentOffset = stackMapFrameOffset + 1; + frameType = this.classFileBuffer[stackMapFrameOffset] & 255; + } else { + frameType = 255; + context.currentFrameOffset = -1; + } + + context.currentFrameLocalCountDelta = 0; + int offsetDelta; + if (frameType < 64) { + offsetDelta = frameType; + context.currentFrameType = 3; + context.currentFrameStackCount = 0; + } else if (frameType < 128) { + offsetDelta = frameType - 64; + currentOffset = this.readVerificationTypeInfo(currentOffset, context.currentFrameStackTypes, 0, charBuffer, labels); + context.currentFrameType = 4; + context.currentFrameStackCount = 1; + } else { + if (frameType < 247) { + throw new IllegalArgumentException(); + } + + offsetDelta = this.readUnsignedShort(currentOffset); + currentOffset += 2; + if (frameType == 247) { + currentOffset = this.readVerificationTypeInfo(currentOffset, context.currentFrameStackTypes, 0, charBuffer, labels); + context.currentFrameType = 4; + context.currentFrameStackCount = 1; + } else if (frameType >= 248 && frameType < 251) { + context.currentFrameType = 2; + context.currentFrameLocalCountDelta = 251 - frameType; + context.currentFrameLocalCount = context.currentFrameLocalCount - context.currentFrameLocalCountDelta; + context.currentFrameStackCount = 0; + } else if (frameType == 251) { + context.currentFrameType = 3; + context.currentFrameStackCount = 0; + } else if (frameType < 255) { + int local = expand ? context.currentFrameLocalCount : 0; + + for (int k = frameType - 251; k > 0; k--) { + currentOffset = this.readVerificationTypeInfo(currentOffset, context.currentFrameLocalTypes, local++, charBuffer, labels); + } + + context.currentFrameType = 1; + context.currentFrameLocalCountDelta = frameType - 251; + context.currentFrameLocalCount = context.currentFrameLocalCount + context.currentFrameLocalCountDelta; + context.currentFrameStackCount = 0; + } else { + int numberOfLocals = this.readUnsignedShort(currentOffset); + currentOffset += 2; + context.currentFrameType = 0; + context.currentFrameLocalCountDelta = numberOfLocals; + context.currentFrameLocalCount = numberOfLocals; + + for (int local = 0; local < numberOfLocals; local++) { + currentOffset = this.readVerificationTypeInfo(currentOffset, context.currentFrameLocalTypes, local, charBuffer, labels); + } + + int numberOfStackItems = this.readUnsignedShort(currentOffset); + currentOffset += 2; + context.currentFrameStackCount = numberOfStackItems; + + for (int stack = 0; stack < numberOfStackItems; stack++) { + currentOffset = this.readVerificationTypeInfo(currentOffset, context.currentFrameStackTypes, stack, charBuffer, labels); + } + } + } + + context.currentFrameOffset += offsetDelta + 1; + this.createLabel(context.currentFrameOffset, labels); + return currentOffset; + } + + private int readVerificationTypeInfo(int verificationTypeInfoOffset, Object[] frame, int index, char[] charBuffer, Label[] labels) { + int currentOffset = verificationTypeInfoOffset + 1; + int tag = this.classFileBuffer[verificationTypeInfoOffset] & 255; + switch (tag) { + case 0: + frame[index] = Opcodes.TOP; + break; + case 1: + frame[index] = Opcodes.INTEGER; + break; + case 2: + frame[index] = Opcodes.FLOAT; + break; + case 3: + frame[index] = Opcodes.DOUBLE; + break; + case 4: + frame[index] = Opcodes.LONG; + break; + case 5: + frame[index] = Opcodes.NULL; + break; + case 6: + frame[index] = Opcodes.UNINITIALIZED_THIS; + break; + case 7: + frame[index] = this.readClass(currentOffset, charBuffer); + currentOffset += 2; + break; + case 8: + frame[index] = this.createLabel(this.readUnsignedShort(currentOffset), labels); + currentOffset += 2; + break; + default: + throw new IllegalArgumentException(); + } + + return currentOffset; + } + + final int getFirstAttributeOffset() { + int currentOffset = this.header + 8 + this.readUnsignedShort(this.header + 6) * 2; + int fieldsCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (fieldsCount-- > 0) { + int attributesCount = this.readUnsignedShort(currentOffset + 6); + currentOffset += 8; + + while (attributesCount-- > 0) { + currentOffset += 6 + this.readInt(currentOffset + 2); + } + } + + int methodsCount = this.readUnsignedShort(currentOffset); + currentOffset += 2; + + while (methodsCount-- > 0) { + int attributesCount = this.readUnsignedShort(currentOffset + 6); + currentOffset += 8; + + while (attributesCount-- > 0) { + currentOffset += 6 + this.readInt(currentOffset + 2); + } + } + + return currentOffset + 2; + } + + private int[] readBootstrapMethodsAttribute(int maxStringLength) { + char[] charBuffer = new char[maxStringLength]; + int currentAttributeOffset = this.getFirstAttributeOffset(); + + for (int i = this.readUnsignedShort(currentAttributeOffset - 2); i > 0; i--) { + String attributeName = this.readUTF8(currentAttributeOffset, charBuffer); + int attributeLength = this.readInt(currentAttributeOffset + 2); + currentAttributeOffset += 6; + if ("BootstrapMethods".equals(attributeName)) { + int[] result = new int[this.readUnsignedShort(currentAttributeOffset)]; + int currentBootstrapMethodOffset = currentAttributeOffset + 2; + + for (int j = 0; j < result.length; j++) { + result[j] = currentBootstrapMethodOffset; + currentBootstrapMethodOffset += 4 + this.readUnsignedShort(currentBootstrapMethodOffset + 2) * 2; + } + + return result; + } + + currentAttributeOffset += attributeLength; + } + + throw new IllegalArgumentException(); + } + + private Attribute readAttribute( + Attribute[] attributePrototypes, String type, int offset, int length, char[] charBuffer, int codeAttributeOffset, Label[] labels + ) { + for (Attribute attributePrototype : attributePrototypes) { + if (attributePrototype.type.equals(type)) { + return attributePrototype.read(this, offset, length, charBuffer, codeAttributeOffset, labels); + } + } + + return new Attribute(type).read(this, offset, length, null, -1, null); + } + + public int getItemCount() { + return this.cpInfoOffsets.length; + } + + public int getItem(int constantPoolEntryIndex) { + return this.cpInfoOffsets[constantPoolEntryIndex]; + } + + public int getMaxStringLength() { + return this.maxStringLength; + } + + public int readByte(int offset) { + return this.classFileBuffer[offset] & 0xFF; + } + + public byte[] readBytes(int offset, int length) { + byte[] result = new byte[length]; + System.arraycopy(this.classFileBuffer, offset, result, 0, length); + return result; + } + + public int readUnsignedShort(int offset) { + byte[] classBuffer = this.classFileBuffer; + return (classBuffer[offset] & 0xFF) << 8 | classBuffer[offset + 1] & 0xFF; + } + + public short readShort(int offset) { + byte[] classBuffer = this.classFileBuffer; + return (short)((classBuffer[offset] & 255) << 8 | classBuffer[offset + 1] & 255); + } + + public int readInt(int offset) { + byte[] classBuffer = this.classFileBuffer; + return (classBuffer[offset] & 0xFF) << 24 + | (classBuffer[offset + 1] & 0xFF) << 16 + | (classBuffer[offset + 2] & 0xFF) << 8 + | classBuffer[offset + 3] & 0xFF; + } + + public long readLong(int offset) { + long l1 = (long)this.readInt(offset); + long l0 = (long)this.readInt(offset + 4) & 4294967295L; + return l1 << 32 | l0; + } + + public String readUTF8(int offset, char[] charBuffer) { + int constantPoolEntryIndex = this.readUnsignedShort(offset); + return offset != 0 && constantPoolEntryIndex != 0 ? this.readUtf(constantPoolEntryIndex, charBuffer) : null; + } + + final String readUtf(int constantPoolEntryIndex, char[] charBuffer) { + String value = this.constantUtf8Values[constantPoolEntryIndex]; + if (value != null) { + return value; + } else { + int cpInfoOffset = this.cpInfoOffsets[constantPoolEntryIndex]; + return this.constantUtf8Values[constantPoolEntryIndex] = this.readUtf(cpInfoOffset + 2, this.readUnsignedShort(cpInfoOffset), charBuffer); + } + } + + private String readUtf(int utfOffset, int utfLength, char[] charBuffer) { + int currentOffset = utfOffset; + int endOffset = utfOffset + utfLength; + int strLength = 0; + byte[] classBuffer = this.classFileBuffer; + + while (currentOffset < endOffset) { + int currentByte = classBuffer[currentOffset++]; + if ((currentByte & 128) == 0) { + charBuffer[strLength++] = (char)(currentByte & 127); + } else if ((currentByte & 224) == 192) { + charBuffer[strLength++] = (char)(((currentByte & 31) << 6) + (classBuffer[currentOffset++] & 63)); + } else { + charBuffer[strLength++] = (char)(((currentByte & 15) << 12) + ((classBuffer[currentOffset++] & 63) << 6) + (classBuffer[currentOffset++] & 63)); + } + } + + return new String(charBuffer, 0, strLength); + } + + private String readStringish(int offset, char[] charBuffer) { + return this.readUTF8(this.cpInfoOffsets[this.readUnsignedShort(offset)], charBuffer); + } + + public String readClass(int offset, char[] charBuffer) { + return this.readStringish(offset, charBuffer); + } + + public String readModule(int offset, char[] charBuffer) { + return this.readStringish(offset, charBuffer); + } + + public String readPackage(int offset, char[] charBuffer) { + return this.readStringish(offset, charBuffer); + } + + private ConstantDynamic readConstantDynamic(int constantPoolEntryIndex, char[] charBuffer) { + ConstantDynamic constantDynamic = this.constantDynamicValues[constantPoolEntryIndex]; + if (constantDynamic != null) { + return constantDynamic; + } else { + int cpInfoOffset = this.cpInfoOffsets[constantPoolEntryIndex]; + int nameAndTypeCpInfoOffset = this.cpInfoOffsets[this.readUnsignedShort(cpInfoOffset + 2)]; + String name = this.readUTF8(nameAndTypeCpInfoOffset, charBuffer); + String descriptor = this.readUTF8(nameAndTypeCpInfoOffset + 2, charBuffer); + int bootstrapMethodOffset = this.bootstrapMethodOffsets[this.readUnsignedShort(cpInfoOffset)]; + Handle handle = (Handle)this.readConst(this.readUnsignedShort(bootstrapMethodOffset), charBuffer); + Object[] bootstrapMethodArguments = new Object[this.readUnsignedShort(bootstrapMethodOffset + 2)]; + bootstrapMethodOffset += 4; + + for (int i = 0; i < bootstrapMethodArguments.length; i++) { + bootstrapMethodArguments[i] = this.readConst(this.readUnsignedShort(bootstrapMethodOffset), charBuffer); + bootstrapMethodOffset += 2; + } + + return this.constantDynamicValues[constantPoolEntryIndex] = new ConstantDynamic(name, descriptor, handle, bootstrapMethodArguments); + } + } + + public Object readConst(int constantPoolEntryIndex, char[] charBuffer) { + int cpInfoOffset = this.cpInfoOffsets[constantPoolEntryIndex]; + switch (this.classFileBuffer[cpInfoOffset - 1]) { + case 3: + return this.readInt(cpInfoOffset); + case 4: + return Float.intBitsToFloat(this.readInt(cpInfoOffset)); + case 5: + return this.readLong(cpInfoOffset); + case 6: + return Double.longBitsToDouble(this.readLong(cpInfoOffset)); + case 7: + return Type.getObjectType(this.readUTF8(cpInfoOffset, charBuffer)); + case 8: + return this.readUTF8(cpInfoOffset, charBuffer); + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + default: + throw new IllegalArgumentException(); + case 15: + int referenceKind = this.readByte(cpInfoOffset); + int referenceCpInfoOffset = this.cpInfoOffsets[this.readUnsignedShort(cpInfoOffset + 1)]; + int nameAndTypeCpInfoOffset = this.cpInfoOffsets[this.readUnsignedShort(referenceCpInfoOffset + 2)]; + String owner = this.readClass(referenceCpInfoOffset, charBuffer); + String name = this.readUTF8(nameAndTypeCpInfoOffset, charBuffer); + String descriptor = this.readUTF8(nameAndTypeCpInfoOffset + 2, charBuffer); + boolean isInterface = this.classFileBuffer[referenceCpInfoOffset - 1] == 11; + return new Handle(referenceKind, owner, name, descriptor, isInterface); + case 16: + return Type.getMethodType(this.readUTF8(cpInfoOffset, charBuffer)); + case 17: + return this.readConstantDynamic(constantPoolEntryIndex, charBuffer); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(short s) { + return "Unsupported class file major version " + s; + } + + private static String stringConcat$1(String string) { + return string + ".class"; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassTooLargeException.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassTooLargeException.java new file mode 100644 index 0000000..06f57cc --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassTooLargeException.java @@ -0,0 +1,26 @@ +package dev.slinky.shaded.asm; + +public final class ClassTooLargeException extends IndexOutOfBoundsException { + private static final long serialVersionUID = 160715609518896765L; + private final String className; + private final int constantPoolCount; + + public ClassTooLargeException(String className, int constantPoolCount) { + super(stringConcat$0(className)); + this.className = className; + this.constantPoolCount = constantPoolCount; + } + + public String getClassName() { + return this.className; + } + + public int getConstantPoolCount() { + return this.constantPoolCount; + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string) { + return "Class too large: " + string; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassVisitor.java new file mode 100644 index 0000000..4fbbc58 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassVisitor.java @@ -0,0 +1,138 @@ +package dev.slinky.shaded.asm; + +public abstract class ClassVisitor { + protected final int api; + protected ClassVisitor cv; + + protected ClassVisitor(int api) { + this(api, null); + } + + protected ClassVisitor(int api, ClassVisitor classVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.cv = classVisitor; + } + } + + public ClassVisitor getDelegate() { + return this.cv; + } + + public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { + if (this.api < 524288 && (access & 65536) != 0) { + throw new UnsupportedOperationException("Records requires ASM8"); + } else { + if (this.cv != null) { + this.cv.visit(version, access, name, signature, superName, interfaces); + } + } + } + + public void visitSource(String source, String debug) { + if (this.cv != null) { + this.cv.visitSource(source, debug); + } + } + + public ModuleVisitor visitModule(String name, int access, String version) { + if (this.api < 393216) { + throw new UnsupportedOperationException("Module requires ASM6"); + } else { + return this.cv != null ? this.cv.visitModule(name, access, version) : null; + } + } + + public void visitNestHost(String nestHost) { + if (this.api < 458752) { + throw new UnsupportedOperationException("NestHost requires ASM7"); + } else { + if (this.cv != null) { + this.cv.visitNestHost(nestHost); + } + } + } + + public void visitOuterClass(String owner, String name, String descriptor) { + if (this.cv != null) { + this.cv.visitOuterClass(owner, name, descriptor); + } + } + + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return this.cv != null ? this.cv.visitAnnotation(descriptor, visible) : null; + } + + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + if (this.api < 327680) { + throw new UnsupportedOperationException("TypeAnnotation requires ASM5"); + } else { + return this.cv != null ? this.cv.visitTypeAnnotation(typeRef, typePath, descriptor, visible) : null; + } + } + + public void visitAttribute(Attribute attribute) { + if (this.cv != null) { + this.cv.visitAttribute(attribute); + } + } + + public void visitNestMember(String nestMember) { + if (this.api < 458752) { + throw new UnsupportedOperationException("NestMember requires ASM7"); + } else { + if (this.cv != null) { + this.cv.visitNestMember(nestMember); + } + } + } + + public void visitPermittedSubclass(String permittedSubclass) { + if (this.api < 589824) { + throw new UnsupportedOperationException("PermittedSubclasses requires ASM9"); + } else { + if (this.cv != null) { + this.cv.visitPermittedSubclass(permittedSubclass); + } + } + } + + public void visitInnerClass(String name, String outerName, String innerName, int access) { + if (this.cv != null) { + this.cv.visitInnerClass(name, outerName, innerName, access); + } + } + + public RecordComponentVisitor visitRecordComponent(String name, String descriptor, String signature) { + if (this.api < 524288) { + throw new UnsupportedOperationException("Record requires ASM8"); + } else { + return this.cv != null ? this.cv.visitRecordComponent(name, descriptor, signature) : null; + } + } + + public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { + return this.cv != null ? this.cv.visitField(access, name, descriptor, signature, value) : null; + } + + public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { + return this.cv != null ? this.cv.visitMethod(access, name, descriptor, signature, exceptions) : null; + } + + public void visitEnd() { + if (this.cv != null) { + this.cv.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassWriter.java new file mode 100644 index 0000000..cd7d27c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ClassWriter.java @@ -0,0 +1,605 @@ +package dev.slinky.shaded.asm; + +public class ClassWriter extends ClassVisitor { + public static final int COMPUTE_MAXS = 1; + public static final int COMPUTE_FRAMES = 2; + private final int flags; + private int version; + private final SymbolTable symbolTable; + private int accessFlags; + private int thisClass; + private int superClass; + private int interfaceCount; + private int[] interfaces; + private FieldWriter firstField; + private FieldWriter lastField; + private MethodWriter firstMethod; + private MethodWriter lastMethod; + private int numberOfInnerClasses; + private ByteVector innerClasses; + private int enclosingClassIndex; + private int enclosingMethodIndex; + private int signatureIndex; + private int sourceFileIndex; + private ByteVector debugExtension; + private AnnotationWriter lastRuntimeVisibleAnnotation; + private AnnotationWriter lastRuntimeInvisibleAnnotation; + private AnnotationWriter lastRuntimeVisibleTypeAnnotation; + private AnnotationWriter lastRuntimeInvisibleTypeAnnotation; + private ModuleWriter moduleWriter; + private int nestHostClassIndex; + private int numberOfNestMemberClasses; + private ByteVector nestMemberClasses; + private int numberOfPermittedSubclasses; + private ByteVector permittedSubclasses; + private RecordComponentWriter firstRecordComponent; + private RecordComponentWriter lastRecordComponent; + private Attribute firstAttribute; + private int compute; + + public ClassWriter(int flags) { + this(null, flags); + } + + public ClassWriter(ClassReader classReader, int flags) { + super(589824); + this.flags = flags; + this.symbolTable = classReader == null ? new SymbolTable(this) : new SymbolTable(this, classReader); + this.setFlags(flags); + } + + public boolean hasFlags(int flags) { + return (this.flags & flags) == flags; + } + + @Override + public final void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { + this.version = version; + this.accessFlags = access; + this.thisClass = this.symbolTable.setMajorVersionAndClassName(version & 65535, name); + if (signature != null) { + this.signatureIndex = this.symbolTable.addConstantUtf8(signature); + } + + this.superClass = superName == null ? 0 : this.symbolTable.addConstantClass(superName).index; + if (interfaces != null && interfaces.length > 0) { + this.interfaceCount = interfaces.length; + this.interfaces = new int[this.interfaceCount]; + + for (int i = 0; i < this.interfaceCount; i++) { + this.interfaces[i] = this.symbolTable.addConstantClass(interfaces[i]).index; + } + } + + if (this.compute == 1 && (version & 65535) >= 51) { + this.compute = 2; + } + } + + @Override + public final void visitSource(String file, String debug) { + if (file != null) { + this.sourceFileIndex = this.symbolTable.addConstantUtf8(file); + } + + if (debug != null) { + this.debugExtension = new ByteVector().encodeUtf8(debug, 0, Integer.MAX_VALUE); + } + } + + @Override + public final ModuleVisitor visitModule(String name, int access, String version) { + return this.moduleWriter = new ModuleWriter( + this.symbolTable, this.symbolTable.addConstantModule(name).index, access, version == null ? 0 : this.symbolTable.addConstantUtf8(version) + ); + } + + @Override + public final void visitNestHost(String nestHost) { + this.nestHostClassIndex = this.symbolTable.addConstantClass(nestHost).index; + } + + @Override + public final void visitOuterClass(String owner, String name, String descriptor) { + this.enclosingClassIndex = this.symbolTable.addConstantClass(owner).index; + if (name != null && descriptor != null) { + this.enclosingMethodIndex = this.symbolTable.addConstantNameAndType(name, descriptor); + } + } + + @Override + public final AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return visible + ? (this.lastRuntimeVisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeVisibleAnnotation)) + : (this.lastRuntimeInvisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeInvisibleAnnotation)); + } + + @Override + public final AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public final void visitAttribute(Attribute attribute) { + attribute.nextAttribute = this.firstAttribute; + this.firstAttribute = attribute; + } + + @Override + public final void visitNestMember(String nestMember) { + if (this.nestMemberClasses == null) { + this.nestMemberClasses = new ByteVector(); + } + + this.numberOfNestMemberClasses++; + this.nestMemberClasses.putShort(this.symbolTable.addConstantClass(nestMember).index); + } + + @Override + public final void visitPermittedSubclass(String permittedSubclass) { + if (this.permittedSubclasses == null) { + this.permittedSubclasses = new ByteVector(); + } + + this.numberOfPermittedSubclasses++; + this.permittedSubclasses.putShort(this.symbolTable.addConstantClass(permittedSubclass).index); + } + + @Override + public final void visitInnerClass(String name, String outerName, String innerName, int access) { + if (this.innerClasses == null) { + this.innerClasses = new ByteVector(); + } + + Symbol nameSymbol = this.symbolTable.addConstantClass(name); + if (nameSymbol.info == 0) { + this.numberOfInnerClasses++; + this.innerClasses.putShort(nameSymbol.index); + this.innerClasses.putShort(outerName == null ? 0 : this.symbolTable.addConstantClass(outerName).index); + this.innerClasses.putShort(innerName == null ? 0 : this.symbolTable.addConstantUtf8(innerName)); + this.innerClasses.putShort(access); + nameSymbol.info = this.numberOfInnerClasses; + } + } + + @Override + public final RecordComponentVisitor visitRecordComponent(String name, String descriptor, String signature) { + RecordComponentWriter recordComponentWriter = new RecordComponentWriter(this.symbolTable, name, descriptor, signature); + if (this.firstRecordComponent == null) { + this.firstRecordComponent = recordComponentWriter; + } else { + this.lastRecordComponent.delegate = recordComponentWriter; + } + + return this.lastRecordComponent = recordComponentWriter; + } + + @Override + public final FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { + FieldWriter fieldWriter = new FieldWriter(this.symbolTable, access, name, descriptor, signature, value); + if (this.firstField == null) { + this.firstField = fieldWriter; + } else { + this.lastField.fv = fieldWriter; + } + + return this.lastField = fieldWriter; + } + + @Override + public final MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { + MethodWriter methodWriter = new MethodWriter(this.symbolTable, access, name, descriptor, signature, exceptions, this.compute); + if (this.firstMethod == null) { + this.firstMethod = methodWriter; + } else { + this.lastMethod.mv = methodWriter; + } + + return this.lastMethod = methodWriter; + } + + @Override + public final void visitEnd() { + } + + public byte[] toByteArray() { + int size = 24 + 2 * this.interfaceCount; + int fieldsCount = 0; + + for (FieldWriter fieldWriter = this.firstField; fieldWriter != null; fieldWriter = (FieldWriter)fieldWriter.fv) { + fieldsCount++; + size += fieldWriter.computeFieldInfoSize(); + } + + int methodsCount = 0; + + for (MethodWriter methodWriter = this.firstMethod; methodWriter != null; methodWriter = (MethodWriter)methodWriter.mv) { + methodsCount++; + size += methodWriter.computeMethodInfoSize(); + } + + int attributesCount = 0; + if (this.innerClasses != null) { + attributesCount++; + size += 8 + this.innerClasses.length; + this.symbolTable.addConstantUtf8("InnerClasses"); + } + + if (this.enclosingClassIndex != 0) { + attributesCount++; + size += 10; + this.symbolTable.addConstantUtf8("EnclosingMethod"); + } + + if ((this.accessFlags & 4096) != 0 && (this.version & 65535) < 49) { + attributesCount++; + size += 6; + this.symbolTable.addConstantUtf8("Synthetic"); + } + + if (this.signatureIndex != 0) { + attributesCount++; + size += 8; + this.symbolTable.addConstantUtf8("Signature"); + } + + if (this.sourceFileIndex != 0) { + attributesCount++; + size += 8; + this.symbolTable.addConstantUtf8("SourceFile"); + } + + if (this.debugExtension != null) { + attributesCount++; + size += 6 + this.debugExtension.length; + this.symbolTable.addConstantUtf8("SourceDebugExtension"); + } + + if ((this.accessFlags & 131072) != 0) { + attributesCount++; + size += 6; + this.symbolTable.addConstantUtf8("Deprecated"); + } + + if (this.lastRuntimeVisibleAnnotation != null) { + attributesCount++; + size += this.lastRuntimeVisibleAnnotation.computeAnnotationsSize("RuntimeVisibleAnnotations"); + } + + if (this.lastRuntimeInvisibleAnnotation != null) { + attributesCount++; + size += this.lastRuntimeInvisibleAnnotation.computeAnnotationsSize("RuntimeInvisibleAnnotations"); + } + + if (this.lastRuntimeVisibleTypeAnnotation != null) { + attributesCount++; + size += this.lastRuntimeVisibleTypeAnnotation.computeAnnotationsSize("RuntimeVisibleTypeAnnotations"); + } + + if (this.lastRuntimeInvisibleTypeAnnotation != null) { + attributesCount++; + size += this.lastRuntimeInvisibleTypeAnnotation.computeAnnotationsSize("RuntimeInvisibleTypeAnnotations"); + } + + if (this.symbolTable.computeBootstrapMethodsSize() > 0) { + attributesCount++; + size += this.symbolTable.computeBootstrapMethodsSize(); + } + + if (this.moduleWriter != null) { + attributesCount += this.moduleWriter.getAttributeCount(); + size += this.moduleWriter.computeAttributesSize(); + } + + if (this.nestHostClassIndex != 0) { + attributesCount++; + size += 8; + this.symbolTable.addConstantUtf8("NestHost"); + } + + if (this.nestMemberClasses != null) { + attributesCount++; + size += 8 + this.nestMemberClasses.length; + this.symbolTable.addConstantUtf8("NestMembers"); + } + + if (this.permittedSubclasses != null) { + attributesCount++; + size += 8 + this.permittedSubclasses.length; + this.symbolTable.addConstantUtf8("PermittedSubclasses"); + } + + int recordComponentCount = 0; + int recordSize = 0; + if ((this.accessFlags & 65536) != 0 || this.firstRecordComponent != null) { + for (RecordComponentWriter recordComponentWriter = this.firstRecordComponent; + recordComponentWriter != null; + recordComponentWriter = (RecordComponentWriter)recordComponentWriter.delegate + ) { + recordComponentCount++; + recordSize += recordComponentWriter.computeRecordComponentInfoSize(); + } + + attributesCount++; + size += 8 + recordSize; + this.symbolTable.addConstantUtf8("Record"); + } + + if (this.firstAttribute != null) { + attributesCount += this.firstAttribute.getAttributeCount(); + size += this.firstAttribute.computeAttributesSize(this.symbolTable); + } + + size += this.symbolTable.getConstantPoolLength(); + int constantPoolCount = this.symbolTable.getConstantPoolCount(); + if (constantPoolCount > 65535) { + throw new ClassTooLargeException(this.symbolTable.getClassName(), constantPoolCount); + } else { + ByteVector result = new ByteVector(size); + result.putInt(-889275714).putInt(this.version); + this.symbolTable.putConstantPool(result); + int mask = (this.version & 65535) < 49 ? 4096 : 0; + result.putShort(this.accessFlags & ~mask).putShort(this.thisClass).putShort(this.superClass); + result.putShort(this.interfaceCount); + + for (int i = 0; i < this.interfaceCount; i++) { + result.putShort(this.interfaces[i]); + } + + result.putShort(fieldsCount); + + for (FieldWriter var16 = this.firstField; var16 != null; var16 = (FieldWriter)var16.fv) { + var16.putFieldInfo(result); + } + + result.putShort(methodsCount); + boolean hasFrames = false; + boolean hasAsmInstructions = false; + + for (MethodWriter var17 = this.firstMethod; var17 != null; var17 = (MethodWriter)var17.mv) { + hasFrames |= var17.hasFrames(); + hasAsmInstructions |= var17.hasAsmInstructions(); + var17.putMethodInfo(result); + } + + result.putShort(attributesCount); + if (this.innerClasses != null) { + result.putShort(this.symbolTable.addConstantUtf8("InnerClasses")) + .putInt(this.innerClasses.length + 2) + .putShort(this.numberOfInnerClasses) + .putByteArray(this.innerClasses.data, 0, this.innerClasses.length); + } + + if (this.enclosingClassIndex != 0) { + result.putShort(this.symbolTable.addConstantUtf8("EnclosingMethod")) + .putInt(4) + .putShort(this.enclosingClassIndex) + .putShort(this.enclosingMethodIndex); + } + + if ((this.accessFlags & 4096) != 0 && (this.version & 65535) < 49) { + result.putShort(this.symbolTable.addConstantUtf8("Synthetic")).putInt(0); + } + + if (this.signatureIndex != 0) { + result.putShort(this.symbolTable.addConstantUtf8("Signature")).putInt(2).putShort(this.signatureIndex); + } + + if (this.sourceFileIndex != 0) { + result.putShort(this.symbolTable.addConstantUtf8("SourceFile")).putInt(2).putShort(this.sourceFileIndex); + } + + if (this.debugExtension != null) { + int length = this.debugExtension.length; + result.putShort(this.symbolTable.addConstantUtf8("SourceDebugExtension")).putInt(length).putByteArray(this.debugExtension.data, 0, length); + } + + if ((this.accessFlags & 131072) != 0) { + result.putShort(this.symbolTable.addConstantUtf8("Deprecated")).putInt(0); + } + + AnnotationWriter.putAnnotations( + this.symbolTable, + this.lastRuntimeVisibleAnnotation, + this.lastRuntimeInvisibleAnnotation, + this.lastRuntimeVisibleTypeAnnotation, + this.lastRuntimeInvisibleTypeAnnotation, + result + ); + this.symbolTable.putBootstrapMethods(result); + if (this.moduleWriter != null) { + this.moduleWriter.putAttributes(result); + } + + if (this.nestHostClassIndex != 0) { + result.putShort(this.symbolTable.addConstantUtf8("NestHost")).putInt(2).putShort(this.nestHostClassIndex); + } + + if (this.nestMemberClasses != null) { + result.putShort(this.symbolTable.addConstantUtf8("NestMembers")) + .putInt(this.nestMemberClasses.length + 2) + .putShort(this.numberOfNestMemberClasses) + .putByteArray(this.nestMemberClasses.data, 0, this.nestMemberClasses.length); + } + + if (this.permittedSubclasses != null) { + result.putShort(this.symbolTable.addConstantUtf8("PermittedSubclasses")) + .putInt(this.permittedSubclasses.length + 2) + .putShort(this.numberOfPermittedSubclasses) + .putByteArray(this.permittedSubclasses.data, 0, this.permittedSubclasses.length); + } + + if ((this.accessFlags & 65536) != 0 || this.firstRecordComponent != null) { + result.putShort(this.symbolTable.addConstantUtf8("Record")).putInt(recordSize + 2).putShort(recordComponentCount); + + for (RecordComponentWriter recordComponentWriter = this.firstRecordComponent; + recordComponentWriter != null; + recordComponentWriter = (RecordComponentWriter)recordComponentWriter.delegate + ) { + recordComponentWriter.putRecordComponentInfo(result); + } + } + + if (this.firstAttribute != null) { + this.firstAttribute.putAttributes(this.symbolTable, result); + } + + return hasAsmInstructions ? this.replaceAsmInstructions(result.data, hasFrames) : result.data; + } + } + + private byte[] replaceAsmInstructions(byte[] classFile, boolean hasFrames) { + Attribute[] attributes = this.getAttributePrototypes(); + this.firstField = null; + this.lastField = null; + this.firstMethod = null; + this.lastMethod = null; + this.lastRuntimeVisibleAnnotation = null; + this.lastRuntimeInvisibleAnnotation = null; + this.lastRuntimeVisibleTypeAnnotation = null; + this.lastRuntimeInvisibleTypeAnnotation = null; + this.moduleWriter = null; + this.nestHostClassIndex = 0; + this.numberOfNestMemberClasses = 0; + this.nestMemberClasses = null; + this.numberOfPermittedSubclasses = 0; + this.permittedSubclasses = null; + this.firstRecordComponent = null; + this.lastRecordComponent = null; + this.firstAttribute = null; + this.compute = hasFrames ? 3 : 0; + new ClassReader(classFile, 0, false).accept(this, attributes, (hasFrames ? 8 : 0) | 256); + return this.toByteArray(); + } + + private Attribute[] getAttributePrototypes() { + Attribute.Set attributePrototypes = new Attribute.Set(); + attributePrototypes.addAttributes(this.firstAttribute); + + for (FieldWriter fieldWriter = this.firstField; fieldWriter != null; fieldWriter = (FieldWriter)fieldWriter.fv) { + fieldWriter.collectAttributePrototypes(attributePrototypes); + } + + for (MethodWriter methodWriter = this.firstMethod; methodWriter != null; methodWriter = (MethodWriter)methodWriter.mv) { + methodWriter.collectAttributePrototypes(attributePrototypes); + } + + for (RecordComponentWriter recordComponentWriter = this.firstRecordComponent; + recordComponentWriter != null; + recordComponentWriter = (RecordComponentWriter)recordComponentWriter.delegate + ) { + recordComponentWriter.collectAttributePrototypes(attributePrototypes); + } + + return attributePrototypes.toArray(); + } + + public int newConst(Object value) { + return this.symbolTable.addConstant(value).index; + } + + public int newUTF8(String value) { + return this.symbolTable.addConstantUtf8(value); + } + + public int newClass(String value) { + return this.symbolTable.addConstantClass(value).index; + } + + public int newMethodType(String methodDescriptor) { + return this.symbolTable.addConstantMethodType(methodDescriptor).index; + } + + public int newModule(String moduleName) { + return this.symbolTable.addConstantModule(moduleName).index; + } + + public int newPackage(String packageName) { + return this.symbolTable.addConstantPackage(packageName).index; + } + + @Deprecated + public int newHandle(int tag, String owner, String name, String descriptor) { + return this.newHandle(tag, owner, name, descriptor, tag == 9); + } + + public int newHandle(int tag, String owner, String name, String descriptor, boolean isInterface) { + return this.symbolTable.addConstantMethodHandle(tag, owner, name, descriptor, isInterface).index; + } + + public int newConstantDynamic(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + return this.symbolTable.addConstantDynamic(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments).index; + } + + public int newInvokeDynamic(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + return this.symbolTable.addConstantInvokeDynamic(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments).index; + } + + public int newField(String owner, String name, String descriptor) { + return this.symbolTable.addConstantFieldref(owner, name, descriptor).index; + } + + public int newMethod(String owner, String name, String descriptor, boolean isInterface) { + return this.symbolTable.addConstantMethodref(owner, name, descriptor, isInterface).index; + } + + public int newNameType(String name, String descriptor) { + return this.symbolTable.addConstantNameAndType(name, descriptor); + } + + public final void setFlags(int flags) { + if ((flags & 2) != 0) { + this.compute = 4; + } else if ((flags & 1) != 0) { + this.compute = 1; + } else { + this.compute = 0; + } + } + + protected String getCommonSuperClass(String type1, String type2) { + ClassLoader classLoader = this.getClassLoader(); + + Class class1; + try { + class1 = Class.forName(type1.replace('/', '.'), false, classLoader); + } catch (ClassNotFoundException var8) { + throw new TypeNotPresentException(type1, var8); + } + + Class class2; + try { + class2 = Class.forName(type2.replace('/', '.'), false, classLoader); + } catch (ClassNotFoundException var7) { + throw new TypeNotPresentException(type2, var7); + } + + if (class1.isAssignableFrom(class2)) { + return type1; + } else if (class2.isAssignableFrom(class1)) { + return type2; + } else if (!class1.isInterface() && !class2.isInterface()) { + do { + class1 = class1.getSuperclass(); + } while (!class1.isAssignableFrom(class2)); + + return class1.getName().replace('.', '/'); + } else { + return "java/lang/Object"; + } + } + + protected ClassLoader getClassLoader() { + return this.getClass().getClassLoader(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ConstantDynamic.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ConstantDynamic.java new file mode 100644 index 0000000..a361655 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ConstantDynamic.java @@ -0,0 +1,79 @@ +package dev.slinky.shaded.asm; + +import java.util.Arrays; + +public final class ConstantDynamic { + private final String name; + private final String descriptor; + private final Handle bootstrapMethod; + private final Object[] bootstrapMethodArguments; + + public ConstantDynamic(String name, String descriptor, Handle bootstrapMethod, Object... bootstrapMethodArguments) { + this.name = name; + this.descriptor = descriptor; + this.bootstrapMethod = bootstrapMethod; + this.bootstrapMethodArguments = bootstrapMethodArguments; + } + + public String getName() { + return this.name; + } + + public String getDescriptor() { + return this.descriptor; + } + + public Handle getBootstrapMethod() { + return this.bootstrapMethod; + } + + public int getBootstrapMethodArgumentCount() { + return this.bootstrapMethodArguments.length; + } + + public Object getBootstrapMethodArgument(int index) { + return this.bootstrapMethodArguments[index]; + } + + Object[] getBootstrapMethodArgumentsUnsafe() { + return this.bootstrapMethodArguments; + } + + public int getSize() { + char firstCharOfDescriptor = this.descriptor.charAt(0); + return firstCharOfDescriptor != 74 && firstCharOfDescriptor != 68 ? 1 : 2; + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } else if (!(object instanceof ConstantDynamic)) { + return false; + } else { + ConstantDynamic constantDynamic = (ConstantDynamic)object; + return this.name.equals(constantDynamic.name) + && this.descriptor.equals(constantDynamic.descriptor) + && this.bootstrapMethod.equals(constantDynamic.bootstrapMethod) + && Arrays.equals(this.bootstrapMethodArguments, constantDynamic.bootstrapMethodArguments); + } + } + + @Override + public int hashCode() { + return this.name.hashCode() + ^ Integer.rotateLeft(this.descriptor.hashCode(), 8) + ^ Integer.rotateLeft(this.bootstrapMethod.hashCode(), 16) + ^ Integer.rotateLeft(Arrays.hashCode(this.bootstrapMethodArguments), 24); + } + + @Override + public String toString() { + return stringConcat$0(this.name, this.descriptor, this.bootstrapMethod, Arrays.toString(this.bootstrapMethodArguments)); + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string, String string2, Handle handle, String string3) { + return string + " : " + string2 + " " + handle + " " + string3; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Constants.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Constants.java new file mode 100644 index 0000000..2f55b43 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Constants.java @@ -0,0 +1,174 @@ +package dev.slinky.shaded.asm; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.regex.Pattern; + +final class Constants { + static final String CONSTANT_VALUE = "ConstantValue"; + static final String CODE = "Code"; + static final String STACK_MAP_TABLE = "StackMapTable"; + static final String EXCEPTIONS = "Exceptions"; + static final String INNER_CLASSES = "InnerClasses"; + static final String ENCLOSING_METHOD = "EnclosingMethod"; + static final String SYNTHETIC = "Synthetic"; + static final String SIGNATURE = "Signature"; + static final String SOURCE_FILE = "SourceFile"; + static final String SOURCE_DEBUG_EXTENSION = "SourceDebugExtension"; + static final String LINE_NUMBER_TABLE = "LineNumberTable"; + static final String LOCAL_VARIABLE_TABLE = "LocalVariableTable"; + static final String LOCAL_VARIABLE_TYPE_TABLE = "LocalVariableTypeTable"; + static final String DEPRECATED = "Deprecated"; + static final String RUNTIME_VISIBLE_ANNOTATIONS = "RuntimeVisibleAnnotations"; + static final String RUNTIME_INVISIBLE_ANNOTATIONS = "RuntimeInvisibleAnnotations"; + static final String RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS = "RuntimeVisibleParameterAnnotations"; + static final String RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = "RuntimeInvisibleParameterAnnotations"; + static final String RUNTIME_VISIBLE_TYPE_ANNOTATIONS = "RuntimeVisibleTypeAnnotations"; + static final String RUNTIME_INVISIBLE_TYPE_ANNOTATIONS = "RuntimeInvisibleTypeAnnotations"; + static final String ANNOTATION_DEFAULT = "AnnotationDefault"; + static final String BOOTSTRAP_METHODS = "BootstrapMethods"; + static final String METHOD_PARAMETERS = "MethodParameters"; + static final String MODULE = "Module"; + static final String MODULE_PACKAGES = "ModulePackages"; + static final String MODULE_MAIN_CLASS = "ModuleMainClass"; + static final String NEST_HOST = "NestHost"; + static final String NEST_MEMBERS = "NestMembers"; + static final String PERMITTED_SUBCLASSES = "PermittedSubclasses"; + static final String RECORD = "Record"; + static final int ACC_CONSTRUCTOR = 262144; + static final int F_INSERT = 256; + static final int LDC_W = 19; + static final int LDC2_W = 20; + static final int ILOAD_0 = 26; + static final int ILOAD_1 = 27; + static final int ILOAD_2 = 28; + static final int ILOAD_3 = 29; + static final int LLOAD_0 = 30; + static final int LLOAD_1 = 31; + static final int LLOAD_2 = 32; + static final int LLOAD_3 = 33; + static final int FLOAD_0 = 34; + static final int FLOAD_1 = 35; + static final int FLOAD_2 = 36; + static final int FLOAD_3 = 37; + static final int DLOAD_0 = 38; + static final int DLOAD_1 = 39; + static final int DLOAD_2 = 40; + static final int DLOAD_3 = 41; + static final int ALOAD_0 = 42; + static final int ALOAD_1 = 43; + static final int ALOAD_2 = 44; + static final int ALOAD_3 = 45; + static final int ISTORE_0 = 59; + static final int ISTORE_1 = 60; + static final int ISTORE_2 = 61; + static final int ISTORE_3 = 62; + static final int LSTORE_0 = 63; + static final int LSTORE_1 = 64; + static final int LSTORE_2 = 65; + static final int LSTORE_3 = 66; + static final int FSTORE_0 = 67; + static final int FSTORE_1 = 68; + static final int FSTORE_2 = 69; + static final int FSTORE_3 = 70; + static final int DSTORE_0 = 71; + static final int DSTORE_1 = 72; + static final int DSTORE_2 = 73; + static final int DSTORE_3 = 74; + static final int ASTORE_0 = 75; + static final int ASTORE_1 = 76; + static final int ASTORE_2 = 77; + static final int ASTORE_3 = 78; + static final int WIDE = 196; + static final int GOTO_W = 200; + static final int JSR_W = 201; + static final int WIDE_JUMP_OPCODE_DELTA = 33; + static final int ASM_OPCODE_DELTA = 49; + static final int ASM_IFNULL_OPCODE_DELTA = 20; + static final int ASM_IFEQ = 202; + static final int ASM_IFNE = 203; + static final int ASM_IFLT = 204; + static final int ASM_IFGE = 205; + static final int ASM_IFGT = 206; + static final int ASM_IFLE = 207; + static final int ASM_IF_ICMPEQ = 208; + static final int ASM_IF_ICMPNE = 209; + static final int ASM_IF_ICMPLT = 210; + static final int ASM_IF_ICMPGE = 211; + static final int ASM_IF_ICMPGT = 212; + static final int ASM_IF_ICMPLE = 213; + static final int ASM_IF_ACMPEQ = 214; + static final int ASM_IF_ACMPNE = 215; + static final int ASM_GOTO = 216; + static final int ASM_JSR = 217; + static final int ASM_IFNULL = 218; + static final int ASM_IFNONNULL = 219; + static final int ASM_GOTO_W = 220; + + private Constants() { + } + + static void checkAsmExperimental(Object caller) { + Class callerClass = caller.getClass(); + String internalName = callerClass.getName().replace('.', '/'); + if (!isWhitelisted(internalName)) { + checkIsPreview(callerClass.getClassLoader().getResourceAsStream(stringConcat$0(internalName))); + } + } + + static boolean isWhitelisted(String internalName) { + if (!internalName.startsWith("dev/slinky/shaded/asm/")) { + return false; + } else { + String member = "(Annotation|Class|Field|Method|Module|RecordComponent|Signature)"; + return internalName.contains("Test$") + || Pattern.matches(stringConcat$1(member), internalName) + || Pattern.matches(stringConcat$2(member), internalName); + } + } + + static void checkIsPreview(InputStream classInputStream) { + if (classInputStream == null) { + throw new IllegalStateException("Bytecode not available, can't check class version"); + } else { + int minorVersion; + try { + DataInputStream callerClassStream = new DataInputStream(classInputStream); + + try { + callerClassStream.readInt(); + minorVersion = callerClassStream.readUnsignedShort(); + } catch (Throwable var6) { + try { + callerClassStream.close(); + } catch (Throwable var5) { + } + + throw var6; + } + + callerClassStream.close(); + } catch (IOException var7) { + throw new IllegalStateException("I/O error, can't check class version", var7); + } + + if (minorVersion != 65535) { + throw new IllegalStateException("ASM10_EXPERIMENTAL can only be used by classes compiled with --enable-preview"); + } + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string) { + return string + ".class"; + } + + private static String stringConcat$1(String string) { + return "dev/slinky/shaded/asm/util/Trace" + string + "Visitor(\\$.*)?"; + } + + private static String stringConcat$2(String string) { + return "dev/slinky/shaded/asm/util/Check" + string + "Adapter(\\$.*)?"; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Context.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Context.java new file mode 100644 index 0000000..6c8ac24 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Context.java @@ -0,0 +1,23 @@ +package dev.slinky.shaded.asm; + +final class Context { + Attribute[] attributePrototypes; + int parsingOptions; + char[] charBuffer; + int currentMethodAccessFlags; + String currentMethodName; + String currentMethodDescriptor; + Label[] currentMethodLabels; + int currentTypeAnnotationTarget; + TypePath currentTypeAnnotationTargetPath; + Label[] currentLocalVariableAnnotationRangeStarts; + Label[] currentLocalVariableAnnotationRangeEnds; + int[] currentLocalVariableAnnotationRangeIndices; + int currentFrameOffset; + int currentFrameType; + int currentFrameLocalCount; + int currentFrameLocalCountDelta; + Object[] currentFrameLocalTypes; + int currentFrameStackCount; + Object[] currentFrameStackTypes; +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/CurrentFrame.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/CurrentFrame.java new file mode 100644 index 0000000..aa326aa --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/CurrentFrame.java @@ -0,0 +1,15 @@ +package dev.slinky.shaded.asm; + +final class CurrentFrame extends Frame { + CurrentFrame(Label owner) { + super(owner); + } + + @Override + void execute(int opcode, int arg, Symbol symbolArg, SymbolTable symbolTable) { + super.execute(opcode, arg, symbolArg, symbolTable); + Frame successor = new Frame(null); + this.merge(symbolTable, successor, 0); + this.copyFrom(successor); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Edge.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Edge.java new file mode 100644 index 0000000..ed69671 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Edge.java @@ -0,0 +1,15 @@ +package dev.slinky.shaded.asm; + +final class Edge { + static final int JUMP = 0; + static final int EXCEPTION = Integer.MAX_VALUE; + final int info; + final Label successor; + Edge nextEdge; + + Edge(int info, Label successor, Edge nextEdge) { + this.info = info; + this.successor = successor; + this.nextEdge = nextEdge; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldVisitor.java new file mode 100644 index 0000000..cb9e3f0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldVisitor.java @@ -0,0 +1,56 @@ +package dev.slinky.shaded.asm; + +public abstract class FieldVisitor { + protected final int api; + protected FieldVisitor fv; + + protected FieldVisitor(int api) { + this(api, null); + } + + protected FieldVisitor(int api, FieldVisitor fieldVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.fv = fieldVisitor; + } + } + + public FieldVisitor getDelegate() { + return this.fv; + } + + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return this.fv != null ? this.fv.visitAnnotation(descriptor, visible) : null; + } + + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + return this.fv != null ? this.fv.visitTypeAnnotation(typeRef, typePath, descriptor, visible) : null; + } + } + + public void visitAttribute(Attribute attribute) { + if (this.fv != null) { + this.fv.visitAttribute(attribute); + } + } + + public void visitEnd() { + if (this.fv != null) { + this.fv.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldWriter.java new file mode 100644 index 0000000..c130ea3 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/FieldWriter.java @@ -0,0 +1,144 @@ +package dev.slinky.shaded.asm; + +final class FieldWriter extends FieldVisitor { + private final SymbolTable symbolTable; + private final int accessFlags; + private final int nameIndex; + private final int descriptorIndex; + private int signatureIndex; + private int constantValueIndex; + private AnnotationWriter lastRuntimeVisibleAnnotation; + private AnnotationWriter lastRuntimeInvisibleAnnotation; + private AnnotationWriter lastRuntimeVisibleTypeAnnotation; + private AnnotationWriter lastRuntimeInvisibleTypeAnnotation; + private Attribute firstAttribute; + + FieldWriter(SymbolTable symbolTable, int access, String name, String descriptor, String signature, Object constantValue) { + super(589824); + this.symbolTable = symbolTable; + this.accessFlags = access; + this.nameIndex = symbolTable.addConstantUtf8(name); + this.descriptorIndex = symbolTable.addConstantUtf8(descriptor); + if (signature != null) { + this.signatureIndex = symbolTable.addConstantUtf8(signature); + } + + if (constantValue != null) { + this.constantValueIndex = symbolTable.addConstant(constantValue).index; + } + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return visible + ? (this.lastRuntimeVisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeVisibleAnnotation)) + : (this.lastRuntimeInvisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeInvisibleAnnotation)); + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitAttribute(Attribute attribute) { + attribute.nextAttribute = this.firstAttribute; + this.firstAttribute = attribute; + } + + @Override + public void visitEnd() { + } + + int computeFieldInfoSize() { + int size = 8; + if (this.constantValueIndex != 0) { + this.symbolTable.addConstantUtf8("ConstantValue"); + size += 8; + } + + size += Attribute.computeAttributesSize(this.symbolTable, this.accessFlags, this.signatureIndex); + size += AnnotationWriter.computeAnnotationsSize( + this.lastRuntimeVisibleAnnotation, this.lastRuntimeInvisibleAnnotation, this.lastRuntimeVisibleTypeAnnotation, this.lastRuntimeInvisibleTypeAnnotation + ); + if (this.firstAttribute != null) { + size += this.firstAttribute.computeAttributesSize(this.symbolTable); + } + + return size; + } + + void putFieldInfo(ByteVector output) { + boolean useSyntheticAttribute = this.symbolTable.getMajorVersion() < 49; + int mask = useSyntheticAttribute ? 4096 : 0; + output.putShort(this.accessFlags & ~mask).putShort(this.nameIndex).putShort(this.descriptorIndex); + int attributesCount = 0; + if (this.constantValueIndex != 0) { + attributesCount++; + } + + if ((this.accessFlags & 4096) != 0 && useSyntheticAttribute) { + attributesCount++; + } + + if (this.signatureIndex != 0) { + attributesCount++; + } + + if ((this.accessFlags & 131072) != 0) { + attributesCount++; + } + + if (this.lastRuntimeVisibleAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeInvisibleAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeVisibleTypeAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeInvisibleTypeAnnotation != null) { + attributesCount++; + } + + if (this.firstAttribute != null) { + attributesCount += this.firstAttribute.getAttributeCount(); + } + + output.putShort(attributesCount); + if (this.constantValueIndex != 0) { + output.putShort(this.symbolTable.addConstantUtf8("ConstantValue")).putInt(2).putShort(this.constantValueIndex); + } + + Attribute.putAttributes(this.symbolTable, this.accessFlags, this.signatureIndex, output); + AnnotationWriter.putAnnotations( + this.symbolTable, + this.lastRuntimeVisibleAnnotation, + this.lastRuntimeInvisibleAnnotation, + this.lastRuntimeVisibleTypeAnnotation, + this.lastRuntimeInvisibleTypeAnnotation, + output + ); + if (this.firstAttribute != null) { + this.firstAttribute.putAttributes(this.symbolTable, output); + } + } + + final void collectAttributePrototypes(Attribute.Set attributePrototypes) { + attributePrototypes.addAttributes(this.firstAttribute); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Frame.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Frame.java new file mode 100644 index 0000000..442e70e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Frame.java @@ -0,0 +1,1142 @@ +package dev.slinky.shaded.asm; + +class Frame { + static final int SAME_FRAME = 0; + static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64; + static final int RESERVED = 128; + static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247; + static final int CHOP_FRAME = 248; + static final int SAME_FRAME_EXTENDED = 251; + static final int APPEND_FRAME = 252; + static final int FULL_FRAME = 255; + static final int ITEM_TOP = 0; + static final int ITEM_INTEGER = 1; + static final int ITEM_FLOAT = 2; + static final int ITEM_DOUBLE = 3; + static final int ITEM_LONG = 4; + static final int ITEM_NULL = 5; + static final int ITEM_UNINITIALIZED_THIS = 6; + static final int ITEM_OBJECT = 7; + static final int ITEM_UNINITIALIZED = 8; + private static final int ITEM_ASM_BOOLEAN = 9; + private static final int ITEM_ASM_BYTE = 10; + private static final int ITEM_ASM_CHAR = 11; + private static final int ITEM_ASM_SHORT = 12; + private static final int DIM_SIZE = 6; + private static final int KIND_SIZE = 4; + private static final int FLAGS_SIZE = 2; + private static final int VALUE_SIZE = 20; + private static final int DIM_SHIFT = 26; + private static final int KIND_SHIFT = 22; + private static final int FLAGS_SHIFT = 20; + private static final int DIM_MASK = -67108864; + private static final int KIND_MASK = 62914560; + private static final int VALUE_MASK = 1048575; + private static final int ARRAY_OF = 67108864; + private static final int ELEMENT_OF = -67108864; + private static final int CONSTANT_KIND = 4194304; + private static final int REFERENCE_KIND = 8388608; + private static final int UNINITIALIZED_KIND = 12582912; + private static final int FORWARD_UNINITIALIZED_KIND = 16777216; + private static final int LOCAL_KIND = 20971520; + private static final int STACK_KIND = 25165824; + private static final int TOP_IF_LONG_OR_DOUBLE_FLAG = 1048576; + private static final int TOP = 4194304; + private static final int BOOLEAN = 4194313; + private static final int BYTE = 4194314; + private static final int CHAR = 4194315; + private static final int SHORT = 4194316; + private static final int INTEGER = 4194305; + private static final int FLOAT = 4194306; + private static final int LONG = 4194308; + private static final int DOUBLE = 4194307; + private static final int NULL = 4194309; + private static final int UNINITIALIZED_THIS = 4194310; + Label owner; + private int[] inputLocals; + private int[] inputStack; + private int[] outputLocals; + private int[] outputStack; + private short outputStackStart; + private short outputStackTop; + private int initializationCount; + private int[] initializations; + + Frame(Label owner) { + this.owner = owner; + } + + final void copyFrom(Frame frame) { + this.inputLocals = frame.inputLocals; + this.inputStack = frame.inputStack; + this.outputStackStart = 0; + this.outputLocals = frame.outputLocals; + this.outputStack = frame.outputStack; + this.outputStackTop = frame.outputStackTop; + this.initializationCount = frame.initializationCount; + this.initializations = frame.initializations; + } + + static int getAbstractTypeFromApiFormat(SymbolTable symbolTable, Object type) { + if (type instanceof Integer) { + return 4194304 | (Integer)type; + } else if (type instanceof String) { + String descriptor = Type.getObjectType((String)type).getDescriptor(); + return getAbstractTypeFromDescriptor(symbolTable, descriptor, 0); + } else { + Label label = (Label)type; + return (label.flags & 4) != 0 + ? 12582912 | symbolTable.addUninitializedType("", label.bytecodeOffset) + : 16777216 | symbolTable.addForwardUninitializedType("", label); + } + } + + static int getAbstractTypeFromInternalName(SymbolTable symbolTable, String internalName) { + return 8388608 | symbolTable.addType(internalName); + } + + private static int getAbstractTypeFromDescriptor(SymbolTable symbolTable, String buffer, int offset) { + switch (buffer.charAt(offset)) { + case 'B': + case 'C': + case 'I': + case 'S': + case 'Z': + return 4194305; + case 'D': + return 4194307; + case 'E': + case 'G': + case 'H': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'W': + case 'X': + case 'Y': + default: + throw new IllegalArgumentException(stringConcat$1(buffer.substring(offset))); + case 'F': + return 4194306; + case 'J': + return 4194308; + case 'L': + String internalName = buffer.substring(offset + 1, buffer.length() - 1); + return 8388608 | symbolTable.addType(internalName); + case 'V': + return 0; + case '[': + int elementDescriptorOffset = offset + 1; + + while (buffer.charAt(elementDescriptorOffset) == '[') { + elementDescriptorOffset++; + } + + int typeValue; + switch (buffer.charAt(elementDescriptorOffset)) { + case 'B': + typeValue = 4194314; + break; + case 'C': + typeValue = 4194315; + break; + case 'D': + typeValue = 4194307; + break; + case 'E': + case 'G': + case 'H': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + default: + throw new IllegalArgumentException(stringConcat$0(buffer.substring(elementDescriptorOffset))); + case 'F': + typeValue = 4194306; + break; + case 'I': + typeValue = 4194305; + break; + case 'J': + typeValue = 4194308; + break; + case 'L': + String internalNamex = buffer.substring(elementDescriptorOffset + 1, buffer.length() - 1); + typeValue = 8388608 | symbolTable.addType(internalNamex); + break; + case 'S': + typeValue = 4194316; + break; + case 'Z': + typeValue = 4194313; + } + + return elementDescriptorOffset - offset << 26 | typeValue; + } + } + + final void setInputFrameFromDescriptor(SymbolTable symbolTable, int access, String descriptor, int maxLocals) { + this.inputLocals = new int[maxLocals]; + this.inputStack = new int[0]; + int inputLocalIndex = 0; + if ((access & 8) == 0) { + if ((access & 262144) == 0) { + this.inputLocals[inputLocalIndex++] = 8388608 | symbolTable.addType(symbolTable.getClassName()); + } else { + this.inputLocals[inputLocalIndex++] = 4194310; + } + } + + for (Type argumentType : Type.getArgumentTypes(descriptor)) { + int abstractType = getAbstractTypeFromDescriptor(symbolTable, argumentType.getDescriptor(), 0); + this.inputLocals[inputLocalIndex++] = abstractType; + if (abstractType == 4194308 || abstractType == 4194307) { + this.inputLocals[inputLocalIndex++] = 4194304; + } + } + + while (inputLocalIndex < maxLocals) { + this.inputLocals[inputLocalIndex++] = 4194304; + } + } + + final void setInputFrameFromApiFormat(SymbolTable symbolTable, int numLocal, Object[] local, int numStack, Object[] stack) { + int inputLocalIndex = 0; + + for (int i = 0; i < numLocal; i++) { + this.inputLocals[inputLocalIndex++] = getAbstractTypeFromApiFormat(symbolTable, local[i]); + if (local[i] == Opcodes.LONG || local[i] == Opcodes.DOUBLE) { + this.inputLocals[inputLocalIndex++] = 4194304; + } + } + + while (inputLocalIndex < this.inputLocals.length) { + this.inputLocals[inputLocalIndex++] = 4194304; + } + + int numStackTop = 0; + + for (int ix = 0; ix < numStack; ix++) { + if (stack[ix] == Opcodes.LONG || stack[ix] == Opcodes.DOUBLE) { + numStackTop++; + } + } + + this.inputStack = new int[numStack + numStackTop]; + int inputStackIndex = 0; + + for (int ixx = 0; ixx < numStack; ixx++) { + this.inputStack[inputStackIndex++] = getAbstractTypeFromApiFormat(symbolTable, stack[ixx]); + if (stack[ixx] == Opcodes.LONG || stack[ixx] == Opcodes.DOUBLE) { + this.inputStack[inputStackIndex++] = 4194304; + } + } + + this.outputStackTop = 0; + this.initializationCount = 0; + } + + final int getInputStackSize() { + return this.inputStack.length; + } + + private int getLocal(int localIndex) { + if (this.outputLocals != null && localIndex < this.outputLocals.length) { + int abstractType = this.outputLocals[localIndex]; + if (abstractType == 0) { + abstractType = this.outputLocals[localIndex] = 20971520 | localIndex; + } + + return abstractType; + } else { + return 20971520 | localIndex; + } + } + + private void setLocal(int localIndex, int abstractType) { + if (this.outputLocals == null) { + this.outputLocals = new int[10]; + } + + int outputLocalsLength = this.outputLocals.length; + if (localIndex >= outputLocalsLength) { + int[] newOutputLocals = new int[Math.max(localIndex + 1, 2 * outputLocalsLength)]; + System.arraycopy(this.outputLocals, 0, newOutputLocals, 0, outputLocalsLength); + this.outputLocals = newOutputLocals; + } + + this.outputLocals[localIndex] = abstractType; + } + + private void push(int abstractType) { + if (this.outputStack == null) { + this.outputStack = new int[10]; + } + + int outputStackLength = this.outputStack.length; + if (this.outputStackTop >= outputStackLength) { + int[] newOutputStack = new int[Math.max(this.outputStackTop + 1, 2 * outputStackLength)]; + System.arraycopy(this.outputStack, 0, newOutputStack, 0, outputStackLength); + this.outputStack = newOutputStack; + } + + this.outputStack[this.outputStackTop++] = abstractType; + short outputStackSize = (short)(this.outputStackStart + this.outputStackTop); + if (outputStackSize > this.owner.outputStackMax) { + this.owner.outputStackMax = outputStackSize; + } + } + + private void push(SymbolTable symbolTable, String descriptor) { + int typeDescriptorOffset = descriptor.charAt(0) == '(' ? Type.getReturnTypeOffset(descriptor) : 0; + int abstractType = getAbstractTypeFromDescriptor(symbolTable, descriptor, typeDescriptorOffset); + if (abstractType != 0) { + this.push(abstractType); + if (abstractType == 4194308 || abstractType == 4194307) { + this.push(4194304); + } + } + } + + private int pop() { + return this.outputStackTop > 0 ? this.outputStack[--this.outputStackTop] : 25165824 | -(--this.outputStackStart); + } + + private void pop(int elements) { + if (this.outputStackTop >= elements) { + this.outputStackTop = (short)(this.outputStackTop - elements); + } else { + this.outputStackStart = (short)(this.outputStackStart - (elements - this.outputStackTop)); + this.outputStackTop = 0; + } + } + + private void pop(String descriptor) { + char firstDescriptorChar = descriptor.charAt(0); + if (firstDescriptorChar == '(') { + this.pop((Type.getArgumentsAndReturnSizes(descriptor) >> 2) - 1); + } else if (firstDescriptorChar != 'J' && firstDescriptorChar != 'D') { + this.pop(1); + } else { + this.pop(2); + } + } + + private void addInitializedType(int abstractType) { + if (this.initializations == null) { + this.initializations = new int[2]; + } + + int initializationsLength = this.initializations.length; + if (this.initializationCount >= initializationsLength) { + int[] newInitializations = new int[Math.max(this.initializationCount + 1, 2 * initializationsLength)]; + System.arraycopy(this.initializations, 0, newInitializations, 0, initializationsLength); + this.initializations = newInitializations; + } + + this.initializations[this.initializationCount++] = abstractType; + } + + private int getInitializedType(SymbolTable symbolTable, int abstractType) { + if (abstractType == 4194310 || (abstractType & -4194304) == 12582912 || (abstractType & -4194304) == 16777216) { + for (int i = 0; i < this.initializationCount; i++) { + int initializedType = this.initializations[i]; + int dim = initializedType & -67108864; + int kind = initializedType & 62914560; + int value = initializedType & 1048575; + if (kind == 20971520) { + initializedType = dim + this.inputLocals[value]; + } else if (kind == 25165824) { + initializedType = dim + this.inputStack[this.inputStack.length - value]; + } + + if (abstractType == initializedType) { + if (abstractType == 4194310) { + return 8388608 | symbolTable.addType(symbolTable.getClassName()); + } + + return 8388608 | symbolTable.addType(symbolTable.getType(abstractType & 1048575).value); + } + } + } + + return abstractType; + } + + void execute(int opcode, int arg, Symbol argSymbol, SymbolTable symbolTable) { + switch (opcode) { + case 0: + case 116: + case 117: + case 118: + case 119: + case 145: + case 146: + case 147: + case 167: + case 177: + break; + case 1: + this.push(4194309); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 16: + case 17: + case 21: + this.push(4194305); + break; + case 9: + case 10: + case 22: + this.push(4194308); + this.push(4194304); + break; + case 11: + case 12: + case 13: + case 23: + this.push(4194306); + break; + case 14: + case 15: + case 24: + this.push(4194307); + this.push(4194304); + break; + case 18: + switch (argSymbol.tag) { + case 3: + this.push(4194305); + return; + case 4: + this.push(4194306); + return; + case 5: + this.push(4194308); + this.push(4194304); + return; + case 6: + this.push(4194307); + this.push(4194304); + return; + case 7: + this.push(8388608 | symbolTable.addType("java/lang/Class")); + return; + case 8: + this.push(8388608 | symbolTable.addType("java/lang/String")); + return; + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + default: + throw new AssertionError(); + case 15: + this.push(8388608 | symbolTable.addType("java/lang/invoke/MethodHandle")); + return; + case 16: + this.push(8388608 | symbolTable.addType("java/lang/invoke/MethodType")); + return; + case 17: + this.push(symbolTable, argSymbol.value); + return; + } + case 19: + case 20: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 196: + default: + throw new IllegalArgumentException(); + case 25: + this.push(this.getLocal(arg)); + break; + case 46: + case 51: + case 52: + case 53: + case 96: + case 100: + case 104: + case 108: + case 112: + case 120: + case 122: + case 124: + case 126: + case 128: + case 130: + case 136: + case 142: + case 149: + case 150: + this.pop(2); + this.push(4194305); + break; + case 47: + case 143: + this.pop(2); + this.push(4194308); + this.push(4194304); + break; + case 48: + case 98: + case 102: + case 106: + case 110: + case 114: + case 137: + case 144: + this.pop(2); + this.push(4194306); + break; + case 49: + case 138: + this.pop(2); + this.push(4194307); + this.push(4194304); + break; + case 50: { + this.pop(1); + int abstractType1 = this.pop(); + this.push(abstractType1 == 4194309 ? abstractType1 : -67108864 + abstractType1); + break; + } + case 54: + case 56: + case 58: { + int abstractType1 = this.pop(); + this.setLocal(arg, abstractType1); + if (arg > 0) { + int previousLocalType = this.getLocal(arg - 1); + if (previousLocalType != 4194308 && previousLocalType != 4194307) { + if ((previousLocalType & 62914560) == 20971520 || (previousLocalType & 62914560) == 25165824) { + this.setLocal(arg - 1, previousLocalType | 1048576); + } + } else { + this.setLocal(arg - 1, 4194304); + } + } + break; + } + case 55: + case 57: { + this.pop(1); + int abstractType1 = this.pop(); + this.setLocal(arg, abstractType1); + this.setLocal(arg + 1, 4194304); + if (arg > 0) { + int previousLocalType = this.getLocal(arg - 1); + if (previousLocalType != 4194308 && previousLocalType != 4194307) { + if ((previousLocalType & 62914560) == 20971520 || (previousLocalType & 62914560) == 25165824) { + this.setLocal(arg - 1, previousLocalType | 1048576); + } + } else { + this.setLocal(arg - 1, 4194304); + } + } + break; + } + case 79: + case 81: + case 83: + case 84: + case 85: + case 86: + this.pop(3); + break; + case 80: + case 82: + this.pop(4); + break; + case 87: + case 153: + case 154: + case 155: + case 156: + case 157: + case 158: + case 170: + case 171: + case 172: + case 174: + case 176: + case 191: + case 194: + case 195: + case 198: + case 199: + this.pop(1); + break; + case 88: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 165: + case 166: + case 173: + case 175: + this.pop(2); + break; + case 89: { + int abstractType1 = this.pop(); + this.push(abstractType1); + this.push(abstractType1); + break; + } + case 90: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + this.push(abstractType1); + this.push(abstractType2); + this.push(abstractType1); + break; + } + case 91: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + int abstractType3 = this.pop(); + this.push(abstractType1); + this.push(abstractType3); + this.push(abstractType2); + this.push(abstractType1); + break; + } + case 92: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + this.push(abstractType2); + this.push(abstractType1); + this.push(abstractType2); + this.push(abstractType1); + break; + } + case 93: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + int abstractType3 = this.pop(); + this.push(abstractType2); + this.push(abstractType1); + this.push(abstractType3); + this.push(abstractType2); + this.push(abstractType1); + break; + } + case 94: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + int abstractType3 = this.pop(); + int abstractType4 = this.pop(); + this.push(abstractType2); + this.push(abstractType1); + this.push(abstractType4); + this.push(abstractType3); + this.push(abstractType2); + this.push(abstractType1); + break; + } + case 95: { + int abstractType1 = this.pop(); + int abstractType2 = this.pop(); + this.push(abstractType1); + this.push(abstractType2); + break; + } + case 97: + case 101: + case 105: + case 109: + case 113: + case 127: + case 129: + case 131: + this.pop(4); + this.push(4194308); + this.push(4194304); + break; + case 99: + case 103: + case 107: + case 111: + case 115: + this.pop(4); + this.push(4194307); + this.push(4194304); + break; + case 121: + case 123: + case 125: + this.pop(3); + this.push(4194308); + this.push(4194304); + break; + case 132: + this.setLocal(arg, 4194305); + break; + case 133: + case 140: + this.pop(1); + this.push(4194308); + this.push(4194304); + break; + case 134: + this.pop(1); + this.push(4194306); + break; + case 135: + case 141: + this.pop(1); + this.push(4194307); + this.push(4194304); + break; + case 139: + case 190: + case 193: + this.pop(1); + this.push(4194305); + break; + case 148: + case 151: + case 152: + this.pop(4); + this.push(4194305); + break; + case 168: + case 169: + throw new IllegalArgumentException("JSR/RET are not supported with computeFrames option"); + case 178: + this.push(symbolTable, argSymbol.value); + break; + case 179: + this.pop(argSymbol.value); + break; + case 180: + this.pop(1); + this.push(symbolTable, argSymbol.value); + break; + case 181: + this.pop(argSymbol.value); + this.pop(); + break; + case 182: + case 183: + case 184: + case 185: + this.pop(argSymbol.value); + if (opcode != 184) { + int abstractType1x = this.pop(); + if (opcode == 183 && argSymbol.name.charAt(0) == '<') { + this.addInitializedType(abstractType1x); + } + } + + this.push(symbolTable, argSymbol.value); + break; + case 186: + this.pop(argSymbol.value); + this.push(symbolTable, argSymbol.value); + break; + case 187: + this.push(12582912 | symbolTable.addUninitializedType(argSymbol.value, arg)); + break; + case 188: + this.pop(); + switch (arg) { + case 4: + this.push(71303177); + return; + case 5: + this.push(71303179); + return; + case 6: + this.push(71303170); + return; + case 7: + this.push(71303171); + return; + case 8: + this.push(71303178); + return; + case 9: + this.push(71303180); + return; + case 10: + this.push(71303169); + return; + case 11: + this.push(71303172); + return; + default: + throw new IllegalArgumentException(); + } + case 189: + String arrayElementType = argSymbol.value; + this.pop(); + if (arrayElementType.charAt(0) == '[') { + this.push(symbolTable, stringConcat$2(arrayElementType)); + } else { + this.push(75497472 | symbolTable.addType(arrayElementType)); + } + break; + case 192: + String castType = argSymbol.value; + this.pop(); + if (castType.charAt(0) == '[') { + this.push(symbolTable, castType); + } else { + this.push(8388608 | symbolTable.addType(castType)); + } + break; + case 197: + this.pop(arg); + this.push(symbolTable, argSymbol.value); + } + } + + private int getConcreteOutputType(int abstractOutputType, int numStack) { + int dim = abstractOutputType & -67108864; + int kind = abstractOutputType & 62914560; + if (kind == 20971520) { + int concreteOutputType = dim + this.inputLocals[abstractOutputType & 1048575]; + if ((abstractOutputType & 1048576) != 0 && (concreteOutputType == 4194308 || concreteOutputType == 4194307)) { + concreteOutputType = 4194304; + } + + return concreteOutputType; + } else if (kind != 25165824) { + return abstractOutputType; + } else { + int concreteOutputType = dim + this.inputStack[numStack - (abstractOutputType & 1048575)]; + if ((abstractOutputType & 1048576) != 0 && (concreteOutputType == 4194308 || concreteOutputType == 4194307)) { + concreteOutputType = 4194304; + } + + return concreteOutputType; + } + } + + final boolean merge(SymbolTable symbolTable, Frame dstFrame, int catchTypeIndex) { + boolean frameChanged = false; + int numLocal = this.inputLocals.length; + int numStack = this.inputStack.length; + if (dstFrame.inputLocals == null) { + dstFrame.inputLocals = new int[numLocal]; + frameChanged = true; + } + + for (int i = 0; i < numLocal; i++) { + int concreteOutputType; + if (this.outputLocals != null && i < this.outputLocals.length) { + int abstractOutputType = this.outputLocals[i]; + if (abstractOutputType == 0) { + concreteOutputType = this.inputLocals[i]; + } else { + concreteOutputType = this.getConcreteOutputType(abstractOutputType, numStack); + } + } else { + concreteOutputType = this.inputLocals[i]; + } + + if (this.initializations != null) { + concreteOutputType = this.getInitializedType(symbolTable, concreteOutputType); + } + + frameChanged |= merge(symbolTable, concreteOutputType, dstFrame.inputLocals, i); + } + + if (catchTypeIndex <= 0) { + int numInputStack = this.inputStack.length + this.outputStackStart; + if (dstFrame.inputStack == null) { + dstFrame.inputStack = new int[numInputStack + this.outputStackTop]; + frameChanged = true; + } + + for (int i = 0; i < numInputStack; i++) { + int concreteOutputTypex = this.inputStack[i]; + if (this.initializations != null) { + concreteOutputTypex = this.getInitializedType(symbolTable, concreteOutputTypex); + } + + frameChanged |= merge(symbolTable, concreteOutputTypex, dstFrame.inputStack, i); + } + + for (int i = 0; i < this.outputStackTop; i++) { + int abstractOutputType = this.outputStack[i]; + int concreteOutputTypex = this.getConcreteOutputType(abstractOutputType, numStack); + if (this.initializations != null) { + concreteOutputTypex = this.getInitializedType(symbolTable, concreteOutputTypex); + } + + frameChanged |= merge(symbolTable, concreteOutputTypex, dstFrame.inputStack, numInputStack + i); + } + + return frameChanged; + } else { + for (int i = 0; i < numLocal; i++) { + frameChanged |= merge(symbolTable, this.inputLocals[i], dstFrame.inputLocals, i); + } + + if (dstFrame.inputStack == null) { + dstFrame.inputStack = new int[1]; + frameChanged = true; + } + + return frameChanged | merge(symbolTable, catchTypeIndex, dstFrame.inputStack, 0); + } + } + + private static boolean merge(SymbolTable symbolTable, int sourceType, int[] dstTypes, int dstIndex) { + int dstType = dstTypes[dstIndex]; + if (dstType == sourceType) { + return false; + } else { + int srcType = sourceType; + if ((sourceType & 67108863) == 4194309) { + if (dstType == 4194309) { + return false; + } + + srcType = 4194309; + } + + if (dstType == 0) { + dstTypes[dstIndex] = srcType; + return true; + } else { + int mergedType; + if ((dstType & -67108864) == 0 && (dstType & 62914560) != 8388608) { + if (dstType == 4194309) { + mergedType = (srcType & -67108864) == 0 && (srcType & 62914560) != 8388608 ? 4194304 : srcType; + } else { + mergedType = 4194304; + } + } else { + if (srcType == 4194309) { + return false; + } + + if ((srcType & -4194304) == (dstType & -4194304)) { + if ((dstType & 62914560) == 8388608) { + mergedType = srcType & -67108864 | 8388608 | symbolTable.addMergedType(srcType & 1048575, dstType & 1048575); + } else { + int mergedDim = -67108864 + (srcType & -67108864); + mergedType = mergedDim | 8388608 | symbolTable.addType("java/lang/Object"); + } + } else if ((srcType & -67108864) == 0 && (srcType & 62914560) != 8388608) { + mergedType = 4194304; + } else { + int srcDim = srcType & -67108864; + if (srcDim != 0 && (srcType & 62914560) != 8388608) { + srcDim += -67108864; + } + + int dstDim = dstType & -67108864; + if (dstDim != 0 && (dstType & 62914560) != 8388608) { + dstDim += -67108864; + } + + mergedType = Math.min(srcDim, dstDim) | 8388608 | symbolTable.addType("java/lang/Object"); + } + } + + if (mergedType != dstType) { + dstTypes[dstIndex] = mergedType; + return true; + } else { + return false; + } + } + } + } + + final void accept(MethodWriter methodWriter) { + int[] localTypes = this.inputLocals; + int numLocal = 0; + int numTrailingTop = 0; + int i = 0; + + while (i < localTypes.length) { + int localType = localTypes[i]; + i += localType != 4194308 && localType != 4194307 ? 1 : 2; + if (localType == 4194304) { + numTrailingTop++; + } else { + numLocal += numTrailingTop + 1; + numTrailingTop = 0; + } + } + + int[] stackTypes = this.inputStack; + int numStack = 0; + + for (int var10 = 0; var10 < stackTypes.length; numStack++) { + int stackType = stackTypes[var10]; + var10 += stackType != 4194308 && stackType != 4194307 ? 1 : 2; + } + + int frameIndex = methodWriter.visitFrameStart(this.owner.bytecodeOffset, numLocal, numStack); + i = 0; + + while (numLocal-- > 0) { + int localType = localTypes[i]; + i += localType != 4194308 && localType != 4194307 ? 1 : 2; + methodWriter.visitAbstractType(frameIndex++, localType); + } + + i = 0; + + while (numStack-- > 0) { + int stackType = stackTypes[i]; + i += stackType != 4194308 && stackType != 4194307 ? 1 : 2; + methodWriter.visitAbstractType(frameIndex++, stackType); + } + + methodWriter.visitFrameEnd(); + } + + static void putAbstractType(SymbolTable symbolTable, int abstractType, ByteVector output) { + int arrayDimensions = (abstractType & -67108864) >> 26; + if (arrayDimensions == 0) { + int typeValue = abstractType & 1048575; + switch (abstractType & 62914560) { + case 4194304: + output.putByte(typeValue); + break; + case 8388608: + output.putByte(7).putShort(symbolTable.addConstantClass(symbolTable.getType(typeValue).value).index); + break; + case 12582912: + output.putByte(8).putShort((int)symbolTable.getType(typeValue).data); + break; + case 16777216: + output.putByte(8); + symbolTable.getForwardUninitializedLabel(typeValue).put(output); + break; + default: + throw new AssertionError(); + } + } else { + StringBuilder typeDescriptor = new StringBuilder(); + + while (arrayDimensions-- > 0) { + typeDescriptor.append('['); + } + + if ((abstractType & 62914560) == 8388608) { + typeDescriptor.append('L').append(symbolTable.getType(abstractType & 1048575).value).append(';'); + } else { + switch (abstractType & 1048575) { + case 1: + typeDescriptor.append('I'); + break; + case 2: + typeDescriptor.append('F'); + break; + case 3: + typeDescriptor.append('D'); + break; + case 4: + typeDescriptor.append('J'); + break; + case 5: + case 6: + case 7: + case 8: + default: + throw new AssertionError(); + case 9: + typeDescriptor.append('Z'); + break; + case 10: + typeDescriptor.append('B'); + break; + case 11: + typeDescriptor.append('C'); + break; + case 12: + typeDescriptor.append('S'); + } + } + + output.putByte(7).putShort(symbolTable.addConstantClass(typeDescriptor.toString()).index); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string) { + return "Invalid descriptor fragment: " + string; + } + + private static String stringConcat$1(String string) { + return "Invalid descriptor: " + string; + } + + private static String stringConcat$2(String string) { + return "[" + string; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handle.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handle.java new file mode 100644 index 0000000..26e1ab9 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handle.java @@ -0,0 +1,73 @@ +package dev.slinky.shaded.asm; + +public final class Handle { + private final int tag; + private final String owner; + private final String name; + private final String descriptor; + private final boolean isInterface; + + @Deprecated + public Handle(int tag, String owner, String name, String descriptor) { + this(tag, owner, name, descriptor, tag == 9); + } + + public Handle(int tag, String owner, String name, String descriptor, boolean isInterface) { + this.tag = tag; + this.owner = owner; + this.name = name; + this.descriptor = descriptor; + this.isInterface = isInterface; + } + + public int getTag() { + return this.tag; + } + + public String getOwner() { + return this.owner; + } + + public String getName() { + return this.name; + } + + public String getDesc() { + return this.descriptor; + } + + public boolean isInterface() { + return this.isInterface; + } + + @Override + public boolean equals(Object object) { + if (object == this) { + return true; + } else if (!(object instanceof Handle)) { + return false; + } else { + Handle handle = (Handle)object; + return this.tag == handle.tag + && this.isInterface == handle.isInterface + && this.owner.equals(handle.owner) + && this.name.equals(handle.name) + && this.descriptor.equals(handle.descriptor); + } + } + + @Override + public int hashCode() { + return this.tag + (this.isInterface ? 64 : 0) + this.owner.hashCode() * this.name.hashCode() * this.descriptor.hashCode(); + } + + @Override + public String toString() { + return stringConcat$0(this.owner, this.name, this.descriptor, this.tag, this.isInterface ? " itf" : ""); + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string, String string2, String string3, int n, String string4) { + return string + "." + string2 + string3 + " (" + n + string4 + ")"; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handler.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handler.java new file mode 100644 index 0000000..e40f51a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Handler.java @@ -0,0 +1,70 @@ +package dev.slinky.shaded.asm; + +final class Handler { + final Label startPc; + final Label endPc; + final Label handlerPc; + final int catchType; + final String catchTypeDescriptor; + Handler nextHandler; + + Handler(Label startPc, Label endPc, Label handlerPc, int catchType, String catchTypeDescriptor) { + this.startPc = startPc; + this.endPc = endPc; + this.handlerPc = handlerPc; + this.catchType = catchType; + this.catchTypeDescriptor = catchTypeDescriptor; + } + + Handler(Handler handler, Label startPc, Label endPc) { + this(startPc, endPc, handler.handlerPc, handler.catchType, handler.catchTypeDescriptor); + this.nextHandler = handler.nextHandler; + } + + static Handler removeRange(Handler firstHandler, Label start, Label end) { + if (firstHandler == null) { + return null; + } else { + firstHandler.nextHandler = removeRange(firstHandler.nextHandler, start, end); + int handlerStart = firstHandler.startPc.bytecodeOffset; + int handlerEnd = firstHandler.endPc.bytecodeOffset; + int rangeStart = start.bytecodeOffset; + int rangeEnd = end == null ? Integer.MAX_VALUE : end.bytecodeOffset; + if (rangeStart >= handlerEnd || rangeEnd <= handlerStart) { + return firstHandler; + } else if (rangeStart <= handlerStart) { + return rangeEnd >= handlerEnd ? firstHandler.nextHandler : new Handler(firstHandler, end, firstHandler.endPc); + } else if (rangeEnd >= handlerEnd) { + return new Handler(firstHandler, firstHandler.startPc, start); + } else { + firstHandler.nextHandler = new Handler(firstHandler, end, firstHandler.endPc); + return new Handler(firstHandler, firstHandler.startPc, start); + } + } + } + + static int getExceptionTableLength(Handler firstHandler) { + int length = 0; + + for (Handler handler = firstHandler; handler != null; handler = handler.nextHandler) { + length++; + } + + return length; + } + + static int getExceptionTableSize(Handler firstHandler) { + return 2 + 8 * getExceptionTableLength(firstHandler); + } + + static void putExceptionTable(Handler firstHandler, ByteVector output) { + output.putShort(getExceptionTableLength(firstHandler)); + + for (Handler handler = firstHandler; handler != null; handler = handler.nextHandler) { + output.putShort(handler.startPc.bytecodeOffset) + .putShort(handler.endPc.bytecodeOffset) + .putShort(handler.handlerPc.bytecodeOffset) + .putShort(handler.catchType); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Label.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Label.java new file mode 100644 index 0000000..54cb5db --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Label.java @@ -0,0 +1,227 @@ +package dev.slinky.shaded.asm; + +public class Label { + static final int FLAG_DEBUG_ONLY = 1; + static final int FLAG_JUMP_TARGET = 2; + static final int FLAG_RESOLVED = 4; + static final int FLAG_REACHABLE = 8; + static final int FLAG_SUBROUTINE_CALLER = 16; + static final int FLAG_SUBROUTINE_START = 32; + static final int FLAG_SUBROUTINE_END = 64; + static final int FLAG_LINE_NUMBER = 128; + static final int LINE_NUMBERS_CAPACITY_INCREMENT = 4; + static final int FORWARD_REFERENCES_CAPACITY_INCREMENT = 6; + static final int FORWARD_REFERENCE_TYPE_MASK = -268435456; + static final int FORWARD_REFERENCE_TYPE_SHORT = 268435456; + static final int FORWARD_REFERENCE_TYPE_WIDE = 536870912; + static final int FORWARD_REFERENCE_TYPE_STACK_MAP = 805306368; + static final int FORWARD_REFERENCE_HANDLE_MASK = 268435455; + static final Label EMPTY_LIST = new Label(); + public Object info; + short flags; + private short lineNumber; + private int[] otherLineNumbers; + int bytecodeOffset; + private int[] forwardReferences; + short inputStackSize; + short outputStackSize; + short outputStackMax; + short subroutineId; + Frame frame; + Label nextBasicBlock; + Edge outgoingEdges; + Label nextListElement; + + public int getOffset() { + if ((this.flags & 4) == 0) { + throw new IllegalStateException("Label offset position has not been resolved yet"); + } else { + return this.bytecodeOffset; + } + } + + final Label getCanonicalInstance() { + return this.frame == null ? this : this.frame.owner; + } + + final void addLineNumber(int lineNumber) { + if ((this.flags & 128) == 0) { + this.flags = (short)(this.flags | 128); + this.lineNumber = (short)lineNumber; + } else { + if (this.otherLineNumbers == null) { + this.otherLineNumbers = new int[4]; + } + + int otherLineNumberIndex = ++this.otherLineNumbers[0]; + if (otherLineNumberIndex >= this.otherLineNumbers.length) { + int[] newLineNumbers = new int[this.otherLineNumbers.length + 4]; + System.arraycopy(this.otherLineNumbers, 0, newLineNumbers, 0, this.otherLineNumbers.length); + this.otherLineNumbers = newLineNumbers; + } + + this.otherLineNumbers[otherLineNumberIndex] = lineNumber; + } + } + + final void accept(MethodVisitor methodVisitor, boolean visitLineNumbers) { + methodVisitor.visitLabel(this); + if (visitLineNumbers && (this.flags & 128) != 0) { + methodVisitor.visitLineNumber(this.lineNumber & '\uffff', this); + if (this.otherLineNumbers != null) { + for (int i = 1; i <= this.otherLineNumbers[0]; i++) { + methodVisitor.visitLineNumber(this.otherLineNumbers[i], this); + } + } + } + } + + final void put(ByteVector code, int sourceInsnBytecodeOffset, boolean wideReference) { + if ((this.flags & 4) == 0) { + if (wideReference) { + this.addForwardReference(sourceInsnBytecodeOffset, 536870912, code.length); + code.putInt(-1); + } else { + this.addForwardReference(sourceInsnBytecodeOffset, 268435456, code.length); + code.putShort(-1); + } + } else if (wideReference) { + code.putInt(this.bytecodeOffset - sourceInsnBytecodeOffset); + } else { + code.putShort(this.bytecodeOffset - sourceInsnBytecodeOffset); + } + } + + final void put(ByteVector stackMapTableEntries) { + if ((this.flags & 4) == 0) { + this.addForwardReference(0, 805306368, stackMapTableEntries.length); + } + + stackMapTableEntries.putShort(this.bytecodeOffset); + } + + private void addForwardReference(int sourceInsnBytecodeOffset, int referenceType, int referenceHandle) { + if (this.forwardReferences == null) { + this.forwardReferences = new int[6]; + } + + int lastElementIndex = this.forwardReferences[0]; + if (lastElementIndex + 2 >= this.forwardReferences.length) { + int[] newValues = new int[this.forwardReferences.length + 6]; + System.arraycopy(this.forwardReferences, 0, newValues, 0, this.forwardReferences.length); + this.forwardReferences = newValues; + } + + lastElementIndex++; + this.forwardReferences[lastElementIndex] = sourceInsnBytecodeOffset; + lastElementIndex++; + this.forwardReferences[lastElementIndex] = referenceType | referenceHandle; + this.forwardReferences[0] = lastElementIndex; + } + + final boolean resolve(byte[] code, ByteVector stackMapTableEntries, int bytecodeOffset) { + this.flags = (short)(this.flags | 4); + this.bytecodeOffset = bytecodeOffset; + if (this.forwardReferences == null) { + return false; + } else { + boolean hasAsmInstructions = false; + + for (int i = this.forwardReferences[0]; i > 0; i -= 2) { + int sourceInsnBytecodeOffset = this.forwardReferences[i - 1]; + int reference = this.forwardReferences[i]; + int relativeOffset = bytecodeOffset - sourceInsnBytecodeOffset; + int handle = reference & 268435455; + if ((reference & -268435456) == 268435456) { + if (relativeOffset < -32768 || relativeOffset > 32767) { + int opcode = code[sourceInsnBytecodeOffset] & 255; + if (opcode < 198) { + code[sourceInsnBytecodeOffset] = (byte)(opcode + 49); + } else { + code[sourceInsnBytecodeOffset] = (byte)(opcode + 20); + } + + hasAsmInstructions = true; + } + + code[handle++] = (byte)(relativeOffset >>> 8); + code[handle] = (byte)relativeOffset; + } else if ((reference & -268435456) == 536870912) { + code[handle++] = (byte)(relativeOffset >>> 24); + code[handle++] = (byte)(relativeOffset >>> 16); + code[handle++] = (byte)(relativeOffset >>> 8); + code[handle] = (byte)relativeOffset; + } else { + stackMapTableEntries.data[handle++] = (byte)(bytecodeOffset >>> 8); + stackMapTableEntries.data[handle] = (byte)bytecodeOffset; + } + } + + return hasAsmInstructions; + } + } + + final void markSubroutine(short subroutineId) { + Label listOfBlocksToProcess = this; + this.nextListElement = EMPTY_LIST; + + while (listOfBlocksToProcess != EMPTY_LIST) { + Label basicBlock = listOfBlocksToProcess; + listOfBlocksToProcess = listOfBlocksToProcess.nextListElement; + basicBlock.nextListElement = null; + if (basicBlock.subroutineId == 0) { + basicBlock.subroutineId = subroutineId; + listOfBlocksToProcess = basicBlock.pushSuccessors(listOfBlocksToProcess); + } + } + } + + final void addSubroutineRetSuccessors(Label subroutineCaller) { + Label listOfProcessedBlocks = EMPTY_LIST; + Label listOfBlocksToProcess = this; + this.nextListElement = EMPTY_LIST; + + while (listOfBlocksToProcess != EMPTY_LIST) { + Label var5 = listOfBlocksToProcess.nextListElement; + listOfBlocksToProcess.nextListElement = listOfProcessedBlocks; + listOfProcessedBlocks = listOfBlocksToProcess; + if ((listOfBlocksToProcess.flags & 64) != 0 && listOfBlocksToProcess.subroutineId != subroutineCaller.subroutineId) { + listOfBlocksToProcess.outgoingEdges = new Edge( + listOfBlocksToProcess.outputStackSize, subroutineCaller.outgoingEdges.successor, listOfBlocksToProcess.outgoingEdges + ); + } + + listOfBlocksToProcess = listOfBlocksToProcess.pushSuccessors(var5); + } + + while (listOfProcessedBlocks != EMPTY_LIST) { + Label newListOfProcessedBlocks = listOfProcessedBlocks.nextListElement; + listOfProcessedBlocks.nextListElement = null; + listOfProcessedBlocks = newListOfProcessedBlocks; + } + } + + private Label pushSuccessors(Label listOfLabelsToProcess) { + Label newListOfLabelsToProcess = listOfLabelsToProcess; + + for (Edge outgoingEdge = this.outgoingEdges; outgoingEdge != null; outgoingEdge = outgoingEdge.nextEdge) { + boolean isJsrTarget = (this.flags & 16) != 0 && outgoingEdge == this.outgoingEdges.nextEdge; + if (!isJsrTarget && outgoingEdge.successor.nextListElement == null) { + outgoingEdge.successor.nextListElement = newListOfLabelsToProcess; + newListOfLabelsToProcess = outgoingEdge.successor; + } + } + + return newListOfLabelsToProcess; + } + + @Override + public String toString() { + return stringConcat$0(System.identityHashCode(this)); + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "L" + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodTooLargeException.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodTooLargeException.java new file mode 100644 index 0000000..8e84b5c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodTooLargeException.java @@ -0,0 +1,38 @@ +package dev.slinky.shaded.asm; + +public final class MethodTooLargeException extends IndexOutOfBoundsException { + private static final long serialVersionUID = 6807380416709738314L; + private final String className; + private final String methodName; + private final String descriptor; + private final int codeSize; + + public MethodTooLargeException(String className, String methodName, String descriptor, int codeSize) { + super(stringConcat$0(className, methodName, descriptor)); + this.className = className; + this.methodName = methodName; + this.descriptor = descriptor; + this.codeSize = codeSize; + } + + public String getClassName() { + return this.className; + } + + public String getMethodName() { + return this.methodName; + } + + public String getDescriptor() { + return this.descriptor; + } + + public int getCodeSize() { + return this.codeSize; + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string, String string2, String string3) { + return "Method too large: " + string + "." + string2 + " " + string3; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodVisitor.java new file mode 100644 index 0000000..b0574c0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodVisitor.java @@ -0,0 +1,253 @@ +package dev.slinky.shaded.asm; + +public abstract class MethodVisitor { + private static final String REQUIRES_ASM5 = "This feature requires ASM5"; + protected final int api; + protected MethodVisitor mv; + + protected MethodVisitor(int api) { + this(api, null); + } + + protected MethodVisitor(int api, MethodVisitor methodVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.mv = methodVisitor; + } + } + + public MethodVisitor getDelegate() { + return this.mv; + } + + public void visitParameter(String name, int access) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + if (this.mv != null) { + this.mv.visitParameter(name, access); + } + } + } + + public AnnotationVisitor visitAnnotationDefault() { + return this.mv != null ? this.mv.visitAnnotationDefault() : null; + } + + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return this.mv != null ? this.mv.visitAnnotation(descriptor, visible) : null; + } + + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + return this.mv != null ? this.mv.visitTypeAnnotation(typeRef, typePath, descriptor, visible) : null; + } + } + + public void visitAnnotableParameterCount(int parameterCount, boolean visible) { + if (this.mv != null) { + this.mv.visitAnnotableParameterCount(parameterCount, visible); + } + } + + public AnnotationVisitor visitParameterAnnotation(int parameter, String descriptor, boolean visible) { + return this.mv != null ? this.mv.visitParameterAnnotation(parameter, descriptor, visible) : null; + } + + public void visitAttribute(Attribute attribute) { + if (this.mv != null) { + this.mv.visitAttribute(attribute); + } + } + + public void visitCode() { + if (this.mv != null) { + this.mv.visitCode(); + } + } + + public void visitFrame(int type, int numLocal, Object[] local, int numStack, Object[] stack) { + if (this.mv != null) { + this.mv.visitFrame(type, numLocal, local, numStack, stack); + } + } + + public void visitInsn(int opcode) { + if (this.mv != null) { + this.mv.visitInsn(opcode); + } + } + + public void visitIntInsn(int opcode, int operand) { + if (this.mv != null) { + this.mv.visitIntInsn(opcode, operand); + } + } + + public void visitVarInsn(int opcode, int varIndex) { + if (this.mv != null) { + this.mv.visitVarInsn(opcode, varIndex); + } + } + + public void visitTypeInsn(int opcode, String type) { + if (this.mv != null) { + this.mv.visitTypeInsn(opcode, type); + } + } + + public void visitFieldInsn(int opcode, String owner, String name, String descriptor) { + if (this.mv != null) { + this.mv.visitFieldInsn(opcode, owner, name, descriptor); + } + } + + @Deprecated + public void visitMethodInsn(int opcode, String owner, String name, String descriptor) { + int opcodeAndSource = opcode | (this.api < 327680 ? 256 : 0); + this.visitMethodInsn(opcodeAndSource, owner, name, descriptor, opcode == 185); + } + + public void visitMethodInsn(int opcode, String owner, String name, String descriptor, boolean isInterface) { + if (this.api < 327680 && (opcode & 256) == 0) { + if (isInterface != (opcode == 185)) { + throw new UnsupportedOperationException("INVOKESPECIAL/STATIC on interfaces requires ASM5"); + } else { + this.visitMethodInsn(opcode, owner, name, descriptor); + } + } else { + if (this.mv != null) { + this.mv.visitMethodInsn(opcode & -257, owner, name, descriptor, isInterface); + } + } + } + + public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + if (this.mv != null) { + this.mv.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments); + } + } + } + + public void visitJumpInsn(int opcode, Label label) { + if (this.mv != null) { + this.mv.visitJumpInsn(opcode, label); + } + } + + public void visitLabel(Label label) { + if (this.mv != null) { + this.mv.visitLabel(label); + } + } + + public void visitLdcInsn(Object value) { + if (this.api >= 327680 || !(value instanceof Handle) && (!(value instanceof Type) || ((Type)value).getSort() != 11)) { + if (this.api < 458752 && value instanceof ConstantDynamic) { + throw new UnsupportedOperationException("This feature requires ASM7"); + } else { + if (this.mv != null) { + this.mv.visitLdcInsn(value); + } + } + } else { + throw new UnsupportedOperationException("This feature requires ASM5"); + } + } + + public void visitIincInsn(int varIndex, int increment) { + if (this.mv != null) { + this.mv.visitIincInsn(varIndex, increment); + } + } + + public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) { + if (this.mv != null) { + this.mv.visitTableSwitchInsn(min, max, dflt, labels); + } + } + + public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) { + if (this.mv != null) { + this.mv.visitLookupSwitchInsn(dflt, keys, labels); + } + } + + public void visitMultiANewArrayInsn(String descriptor, int numDimensions) { + if (this.mv != null) { + this.mv.visitMultiANewArrayInsn(descriptor, numDimensions); + } + } + + public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + return this.mv != null ? this.mv.visitInsnAnnotation(typeRef, typePath, descriptor, visible) : null; + } + } + + public void visitTryCatchBlock(Label start, Label end, Label handler, String type) { + if (this.mv != null) { + this.mv.visitTryCatchBlock(start, end, handler, type); + } + } + + public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + return this.mv != null ? this.mv.visitTryCatchAnnotation(typeRef, typePath, descriptor, visible) : null; + } + } + + public void visitLocalVariable(String name, String descriptor, String signature, Label start, Label end, int index) { + if (this.mv != null) { + this.mv.visitLocalVariable(name, descriptor, signature, start, end, index); + } + } + + public AnnotationVisitor visitLocalVariableAnnotation( + int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String descriptor, boolean visible + ) { + if (this.api < 327680) { + throw new UnsupportedOperationException("This feature requires ASM5"); + } else { + return this.mv != null ? this.mv.visitLocalVariableAnnotation(typeRef, typePath, start, end, index, descriptor, visible) : null; + } + } + + public void visitLineNumber(int line, Label start) { + if (this.mv != null) { + this.mv.visitLineNumber(line, start); + } + } + + public void visitMaxs(int maxStack, int maxLocals) { + if (this.mv != null) { + this.mv.visitMaxs(maxStack, maxLocals); + } + } + + public void visitEnd() { + if (this.mv != null) { + this.mv.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodWriter.java new file mode 100644 index 0000000..920dc44 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/MethodWriter.java @@ -0,0 +1,1722 @@ +package dev.slinky.shaded.asm; + +final class MethodWriter extends MethodVisitor { + static final int COMPUTE_NOTHING = 0; + static final int COMPUTE_MAX_STACK_AND_LOCAL = 1; + static final int COMPUTE_MAX_STACK_AND_LOCAL_FROM_FRAMES = 2; + static final int COMPUTE_INSERTED_FRAMES = 3; + static final int COMPUTE_ALL_FRAMES = 4; + private static final int NA = 0; + private static final int[] STACK_SIZE_DELTA = new int[]{ + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 1, + 1, + 1, + 2, + 2, + 1, + 1, + 1, + 0, + 0, + 1, + 2, + 1, + 2, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -1, + 0, + -1, + 0, + -1, + -1, + -1, + -1, + -1, + -2, + -1, + -2, + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -3, + -4, + -3, + -4, + -3, + -3, + -3, + -3, + -1, + -2, + 1, + 1, + 1, + 2, + 2, + 2, + 0, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + -1, + -2, + 0, + 0, + 0, + 0, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -2, + -1, + -2, + -1, + -2, + 0, + 1, + 0, + 1, + -1, + -1, + 0, + 0, + 1, + 1, + -1, + 0, + -1, + 0, + 0, + 0, + -3, + -1, + -1, + -3, + -3, + -1, + -1, + -1, + -1, + -1, + -1, + -2, + -2, + -2, + -2, + -2, + -2, + -2, + -2, + 0, + 1, + 0, + -1, + -1, + -1, + -2, + -1, + -2, + -1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + -1, + -1, + 0, + 0, + -1, + -1, + 0, + 0 + }; + private final SymbolTable symbolTable; + private final int accessFlags; + private final int nameIndex; + private final String name; + private final int descriptorIndex; + private final String descriptor; + private int maxStack; + private int maxLocals; + private final ByteVector code = new ByteVector(); + private Handler firstHandler; + private Handler lastHandler; + private int lineNumberTableLength; + private ByteVector lineNumberTable; + private int localVariableTableLength; + private ByteVector localVariableTable; + private int localVariableTypeTableLength; + private ByteVector localVariableTypeTable; + private int stackMapTableNumberOfEntries; + private ByteVector stackMapTableEntries; + private AnnotationWriter lastCodeRuntimeVisibleTypeAnnotation; + private AnnotationWriter lastCodeRuntimeInvisibleTypeAnnotation; + private Attribute firstCodeAttribute; + private final int numberOfExceptions; + private final int[] exceptionIndexTable; + private final int signatureIndex; + private AnnotationWriter lastRuntimeVisibleAnnotation; + private AnnotationWriter lastRuntimeInvisibleAnnotation; + private int visibleAnnotableParameterCount; + private AnnotationWriter[] lastRuntimeVisibleParameterAnnotations; + private int invisibleAnnotableParameterCount; + private AnnotationWriter[] lastRuntimeInvisibleParameterAnnotations; + private AnnotationWriter lastRuntimeVisibleTypeAnnotation; + private AnnotationWriter lastRuntimeInvisibleTypeAnnotation; + private ByteVector defaultValue; + private int parametersCount; + private ByteVector parameters; + private Attribute firstAttribute; + private final int compute; + private Label firstBasicBlock; + private Label lastBasicBlock; + private Label currentBasicBlock; + private int relativeStackSize; + private int maxRelativeStackSize; + private int currentLocals; + private int previousFrameOffset; + private int[] previousFrame; + private int[] currentFrame; + private boolean hasSubroutines; + private boolean hasAsmInstructions; + private int lastBytecodeOffset; + private int sourceOffset; + private int sourceLength; + + MethodWriter(SymbolTable symbolTable, int access, String name, String descriptor, String signature, String[] exceptions, int compute) { + super(589824); + this.symbolTable = symbolTable; + this.accessFlags = "".equals(name) ? access | 262144 : access; + this.nameIndex = symbolTable.addConstantUtf8(name); + this.name = name; + this.descriptorIndex = symbolTable.addConstantUtf8(descriptor); + this.descriptor = descriptor; + this.signatureIndex = signature == null ? 0 : symbolTable.addConstantUtf8(signature); + if (exceptions != null && exceptions.length > 0) { + this.numberOfExceptions = exceptions.length; + this.exceptionIndexTable = new int[this.numberOfExceptions]; + + for (int i = 0; i < this.numberOfExceptions; i++) { + this.exceptionIndexTable[i] = symbolTable.addConstantClass(exceptions[i]).index; + } + } else { + this.numberOfExceptions = 0; + this.exceptionIndexTable = null; + } + + this.compute = compute; + if (compute != 0) { + int argumentsSize = Type.getArgumentsAndReturnSizes(descriptor) >> 2; + if ((access & 8) != 0) { + argumentsSize--; + } + + this.maxLocals = argumentsSize; + this.currentLocals = argumentsSize; + this.firstBasicBlock = new Label(); + this.visitLabel(this.firstBasicBlock); + } + } + + boolean hasFrames() { + return this.stackMapTableNumberOfEntries > 0; + } + + boolean hasAsmInstructions() { + return this.hasAsmInstructions; + } + + @Override + public void visitParameter(String name, int access) { + if (this.parameters == null) { + this.parameters = new ByteVector(); + } + + this.parametersCount++; + this.parameters.putShort(name == null ? 0 : this.symbolTable.addConstantUtf8(name)).putShort(access); + } + + @Override + public AnnotationVisitor visitAnnotationDefault() { + this.defaultValue = new ByteVector(); + return new AnnotationWriter(this.symbolTable, false, this.defaultValue, null); + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return visible + ? (this.lastRuntimeVisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeVisibleAnnotation)) + : (this.lastRuntimeInvisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeInvisibleAnnotation)); + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitAnnotableParameterCount(int parameterCount, boolean visible) { + if (visible) { + this.visibleAnnotableParameterCount = parameterCount; + } else { + this.invisibleAnnotableParameterCount = parameterCount; + } + } + + @Override + public AnnotationVisitor visitParameterAnnotation(int parameter, String annotationDescriptor, boolean visible) { + if (visible) { + if (this.lastRuntimeVisibleParameterAnnotations == null) { + this.lastRuntimeVisibleParameterAnnotations = new AnnotationWriter[Type.getArgumentCount(this.descriptor)]; + } + + return this.lastRuntimeVisibleParameterAnnotations[parameter] = AnnotationWriter.create( + this.symbolTable, annotationDescriptor, this.lastRuntimeVisibleParameterAnnotations[parameter] + ); + } else { + if (this.lastRuntimeInvisibleParameterAnnotations == null) { + this.lastRuntimeInvisibleParameterAnnotations = new AnnotationWriter[Type.getArgumentCount(this.descriptor)]; + } + + return this.lastRuntimeInvisibleParameterAnnotations[parameter] = AnnotationWriter.create( + this.symbolTable, annotationDescriptor, this.lastRuntimeInvisibleParameterAnnotations[parameter] + ); + } + } + + @Override + public void visitAttribute(Attribute attribute) { + if (attribute.isCodeAttribute()) { + attribute.nextAttribute = this.firstCodeAttribute; + this.firstCodeAttribute = attribute; + } else { + attribute.nextAttribute = this.firstAttribute; + this.firstAttribute = attribute; + } + } + + @Override + public void visitCode() { + } + + @Override + public void visitFrame(int type, int numLocal, Object[] local, int numStack, Object[] stack) { + if (this.compute != 4) { + if (this.compute == 3) { + if (this.currentBasicBlock.frame == null) { + this.currentBasicBlock.frame = new CurrentFrame(this.currentBasicBlock); + this.currentBasicBlock.frame.setInputFrameFromDescriptor(this.symbolTable, this.accessFlags, this.descriptor, numLocal); + this.currentBasicBlock.frame.accept(this); + } else { + if (type == -1) { + this.currentBasicBlock.frame.setInputFrameFromApiFormat(this.symbolTable, numLocal, local, numStack, stack); + } + + this.currentBasicBlock.frame.accept(this); + } + } else if (type == -1) { + if (this.previousFrame == null) { + int argumentsSize = Type.getArgumentsAndReturnSizes(this.descriptor) >> 2; + Frame implicitFirstFrame = new Frame(new Label()); + implicitFirstFrame.setInputFrameFromDescriptor(this.symbolTable, this.accessFlags, this.descriptor, argumentsSize); + implicitFirstFrame.accept(this); + } + + this.currentLocals = numLocal; + int frameIndex = this.visitFrameStart(this.code.length, numLocal, numStack); + + for (int i = 0; i < numLocal; i++) { + this.currentFrame[frameIndex++] = Frame.getAbstractTypeFromApiFormat(this.symbolTable, local[i]); + } + + for (int i = 0; i < numStack; i++) { + this.currentFrame[frameIndex++] = Frame.getAbstractTypeFromApiFormat(this.symbolTable, stack[i]); + } + + this.visitFrameEnd(); + } else { + if (this.symbolTable.getMajorVersion() < 50) { + throw new IllegalArgumentException("Class versions V1_5 or less must use F_NEW frames."); + } + + int offsetDelta; + if (this.stackMapTableEntries == null) { + this.stackMapTableEntries = new ByteVector(); + offsetDelta = this.code.length; + } else { + offsetDelta = this.code.length - this.previousFrameOffset - 1; + if (offsetDelta < 0) { + if (type == 3) { + return; + } + + throw new IllegalStateException(); + } + } + + switch (type) { + case 0: + this.currentLocals = numLocal; + this.stackMapTableEntries.putByte(255).putShort(offsetDelta).putShort(numLocal); + + for (int i = 0; i < numLocal; i++) { + this.putFrameType(local[i]); + } + + this.stackMapTableEntries.putShort(numStack); + + for (int i = 0; i < numStack; i++) { + this.putFrameType(stack[i]); + } + break; + case 1: + this.currentLocals += numLocal; + this.stackMapTableEntries.putByte(251 + numLocal).putShort(offsetDelta); + + for (int i = 0; i < numLocal; i++) { + this.putFrameType(local[i]); + } + break; + case 2: + this.currentLocals -= numLocal; + this.stackMapTableEntries.putByte(251 - numLocal).putShort(offsetDelta); + break; + case 3: + if (offsetDelta < 64) { + this.stackMapTableEntries.putByte(offsetDelta); + } else { + this.stackMapTableEntries.putByte(251).putShort(offsetDelta); + } + break; + case 4: + if (offsetDelta < 64) { + this.stackMapTableEntries.putByte(64 + offsetDelta); + } else { + this.stackMapTableEntries.putByte(247).putShort(offsetDelta); + } + + this.putFrameType(stack[0]); + break; + default: + throw new IllegalArgumentException(); + } + + this.previousFrameOffset = this.code.length; + this.stackMapTableNumberOfEntries++; + } + + if (this.compute == 2) { + this.relativeStackSize = numStack; + + for (int i = 0; i < numStack; i++) { + if (stack[i] == Opcodes.LONG || stack[i] == Opcodes.DOUBLE) { + this.relativeStackSize++; + } + } + + if (this.relativeStackSize > this.maxRelativeStackSize) { + this.maxRelativeStackSize = this.relativeStackSize; + } + } + + this.maxStack = Math.max(this.maxStack, numStack); + this.maxLocals = Math.max(this.maxLocals, this.currentLocals); + } + } + + @Override + public void visitInsn(int opcode) { + this.lastBytecodeOffset = this.code.length; + this.code.putByte(opcode); + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + int size = this.relativeStackSize + STACK_SIZE_DELTA[opcode]; + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } else { + this.currentBasicBlock.frame.execute(opcode, 0, null, null); + } + + if (opcode >= 172 && opcode <= 177 || opcode == 191) { + this.endCurrentBasicBlockWithNoSuccessor(); + } + } + } + + @Override + public void visitIntInsn(int opcode, int operand) { + this.lastBytecodeOffset = this.code.length; + if (opcode == 17) { + this.code.put12(opcode, operand); + } else { + this.code.put11(opcode, operand); + } + + if (this.currentBasicBlock != null) { + if (this.compute == 4 || this.compute == 3) { + this.currentBasicBlock.frame.execute(opcode, operand, null, null); + } else if (opcode != 188) { + int size = this.relativeStackSize + 1; + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } + } + } + + @Override + public void visitVarInsn(int opcode, int varIndex) { + this.lastBytecodeOffset = this.code.length; + if (varIndex < 4 && opcode != 169) { + int optimizedOpcode; + if (opcode < 54) { + optimizedOpcode = 26 + (opcode - 21 << 2) + varIndex; + } else { + optimizedOpcode = 59 + (opcode - 54 << 2) + varIndex; + } + + this.code.putByte(optimizedOpcode); + } else if (varIndex >= 256) { + this.code.putByte(196).put12(opcode, varIndex); + } else { + this.code.put11(opcode, varIndex); + } + + if (this.currentBasicBlock != null) { + if (this.compute == 4 || this.compute == 3) { + this.currentBasicBlock.frame.execute(opcode, varIndex, null, null); + } else if (opcode == 169) { + this.currentBasicBlock.flags = (short)(this.currentBasicBlock.flags | 64); + this.currentBasicBlock.outputStackSize = (short)this.relativeStackSize; + this.endCurrentBasicBlockWithNoSuccessor(); + } else { + int size = this.relativeStackSize + STACK_SIZE_DELTA[opcode]; + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } + } + + if (this.compute != 0) { + int currentMaxLocals; + if (opcode != 22 && opcode != 24 && opcode != 55 && opcode != 57) { + currentMaxLocals = varIndex + 1; + } else { + currentMaxLocals = varIndex + 2; + } + + if (currentMaxLocals > this.maxLocals) { + this.maxLocals = currentMaxLocals; + } + } + + if (opcode >= 54 && this.compute == 4 && this.firstHandler != null) { + this.visitLabel(new Label()); + } + } + + @Override + public void visitTypeInsn(int opcode, String type) { + this.lastBytecodeOffset = this.code.length; + Symbol typeSymbol = this.symbolTable.addConstantClass(type); + this.code.put12(opcode, typeSymbol.index); + if (this.currentBasicBlock != null) { + if (this.compute == 4 || this.compute == 3) { + this.currentBasicBlock.frame.execute(opcode, this.lastBytecodeOffset, typeSymbol, this.symbolTable); + } else if (opcode == 187) { + int size = this.relativeStackSize + 1; + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } + } + } + + @Override + public void visitFieldInsn(int opcode, String owner, String name, String descriptor) { + this.lastBytecodeOffset = this.code.length; + Symbol fieldrefSymbol = this.symbolTable.addConstantFieldref(owner, name, descriptor); + this.code.put12(opcode, fieldrefSymbol.index); + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + int size; + label72: { + char firstDescChar = descriptor.charAt(0); + switch (opcode) { + case 178: + size = this.relativeStackSize + (firstDescChar != 'D' && firstDescChar != 'J' ? 1 : 2); + break label72; + case 179: + size = this.relativeStackSize + (firstDescChar != 'D' && firstDescChar != 'J' ? -1 : -2); + break label72; + case 180: + size = this.relativeStackSize + (firstDescChar != 'D' && firstDescChar != 'J' ? 0 : 1); + break label72; + case 181: + } + + size = this.relativeStackSize + (firstDescChar != 'D' && firstDescChar != 'J' ? -2 : -3); + } + + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } else { + this.currentBasicBlock.frame.execute(opcode, 0, fieldrefSymbol, this.symbolTable); + } + } + } + + @Override + public void visitMethodInsn(int opcode, String owner, String name, String descriptor, boolean isInterface) { + this.lastBytecodeOffset = this.code.length; + Symbol methodrefSymbol = this.symbolTable.addConstantMethodref(owner, name, descriptor, isInterface); + if (opcode == 185) { + this.code.put12(185, methodrefSymbol.index).put11(methodrefSymbol.getArgumentsAndReturnSizes() >> 2, 0); + } else { + this.code.put12(opcode, methodrefSymbol.index); + } + + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + int argumentsAndReturnSize = methodrefSymbol.getArgumentsAndReturnSizes(); + int stackSizeDelta = (argumentsAndReturnSize & 3) - (argumentsAndReturnSize >> 2); + int size; + if (opcode == 184) { + size = this.relativeStackSize + stackSizeDelta + 1; + } else { + size = this.relativeStackSize + stackSizeDelta; + } + + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } else { + this.currentBasicBlock.frame.execute(opcode, 0, methodrefSymbol, this.symbolTable); + } + } + } + + @Override + public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + this.lastBytecodeOffset = this.code.length; + Symbol invokeDynamicSymbol = this.symbolTable.addConstantInvokeDynamic(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments); + this.code.put12(186, invokeDynamicSymbol.index); + this.code.putShort(0); + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + int argumentsAndReturnSize = invokeDynamicSymbol.getArgumentsAndReturnSizes(); + int stackSizeDelta = (argumentsAndReturnSize & 3) - (argumentsAndReturnSize >> 2) + 1; + int size = this.relativeStackSize + stackSizeDelta; + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } else { + this.currentBasicBlock.frame.execute(186, 0, invokeDynamicSymbol, this.symbolTable); + } + } + } + + @Override + public void visitJumpInsn(int opcode, Label label) { + this.lastBytecodeOffset = this.code.length; + int baseOpcode = opcode >= 200 ? opcode - 33 : opcode; + boolean nextInsnIsJumpTarget = false; + if ((label.flags & 4) != 0 && label.bytecodeOffset - this.code.length < -32768) { + if (baseOpcode == 167) { + this.code.putByte(200); + } else if (baseOpcode == 168) { + this.code.putByte(201); + } else { + this.code.putByte(baseOpcode >= 198 ? baseOpcode ^ 1 : (baseOpcode + 1 ^ 1) - 1); + this.code.putShort(8); + this.code.putByte(220); + this.hasAsmInstructions = true; + nextInsnIsJumpTarget = true; + } + + label.put(this.code, this.code.length - 1, true); + } else if (baseOpcode != opcode) { + this.code.putByte(opcode); + label.put(this.code, this.code.length - 1, true); + } else { + this.code.putByte(baseOpcode); + label.put(this.code, this.code.length - 1, false); + } + + if (this.currentBasicBlock != null) { + Label nextBasicBlock = null; + if (this.compute == 4) { + this.currentBasicBlock.frame.execute(baseOpcode, 0, null, null); + Label var10000 = label.getCanonicalInstance(); + var10000.flags = (short)(var10000.flags | 2); + this.addSuccessorToCurrentBasicBlock(0, label); + if (baseOpcode != 167) { + nextBasicBlock = new Label(); + } + } else if (this.compute == 3) { + this.currentBasicBlock.frame.execute(baseOpcode, 0, null, null); + } else if (this.compute == 2) { + this.relativeStackSize = this.relativeStackSize + STACK_SIZE_DELTA[baseOpcode]; + } else if (baseOpcode == 168) { + if ((label.flags & 32) == 0) { + label.flags = (short)(label.flags | 32); + this.hasSubroutines = true; + } + + this.currentBasicBlock.flags = (short)(this.currentBasicBlock.flags | 16); + this.addSuccessorToCurrentBasicBlock(this.relativeStackSize + 1, label); + nextBasicBlock = new Label(); + } else { + this.relativeStackSize = this.relativeStackSize + STACK_SIZE_DELTA[baseOpcode]; + this.addSuccessorToCurrentBasicBlock(this.relativeStackSize, label); + } + + if (nextBasicBlock != null) { + if (nextInsnIsJumpTarget) { + nextBasicBlock.flags = (short)(nextBasicBlock.flags | 2); + } + + this.visitLabel(nextBasicBlock); + } + + if (baseOpcode == 167) { + this.endCurrentBasicBlockWithNoSuccessor(); + } + } + } + + @Override + public void visitLabel(Label label) { + this.hasAsmInstructions = this.hasAsmInstructions | label.resolve(this.code.data, this.stackMapTableEntries, this.code.length); + if ((label.flags & 1) == 0) { + if (this.compute == 4) { + if (this.currentBasicBlock != null) { + if (label.bytecodeOffset == this.currentBasicBlock.bytecodeOffset) { + this.currentBasicBlock.flags = (short)(this.currentBasicBlock.flags | label.flags & 2); + label.frame = this.currentBasicBlock.frame; + return; + } + + this.addSuccessorToCurrentBasicBlock(0, label); + } + + if (this.lastBasicBlock != null) { + if (label.bytecodeOffset == this.lastBasicBlock.bytecodeOffset) { + this.lastBasicBlock.flags = (short)(this.lastBasicBlock.flags | label.flags & 2); + label.frame = this.lastBasicBlock.frame; + this.currentBasicBlock = this.lastBasicBlock; + return; + } + + this.lastBasicBlock.nextBasicBlock = label; + } + + this.lastBasicBlock = label; + this.currentBasicBlock = label; + label.frame = new Frame(label); + } else if (this.compute == 3) { + if (this.currentBasicBlock == null) { + this.currentBasicBlock = label; + } else { + this.currentBasicBlock.frame.owner = label; + } + } else if (this.compute == 1) { + if (this.currentBasicBlock != null) { + this.currentBasicBlock.outputStackMax = (short)this.maxRelativeStackSize; + this.addSuccessorToCurrentBasicBlock(this.relativeStackSize, label); + } + + this.currentBasicBlock = label; + this.relativeStackSize = 0; + this.maxRelativeStackSize = 0; + if (this.lastBasicBlock != null) { + this.lastBasicBlock.nextBasicBlock = label; + } + + this.lastBasicBlock = label; + } else if (this.compute == 2 && this.currentBasicBlock == null) { + this.currentBasicBlock = label; + } + } + } + + @Override + public void visitLdcInsn(Object value) { + this.lastBytecodeOffset = this.code.length; + Symbol constantSymbol = this.symbolTable.addConstant(value); + int constantIndex = constantSymbol.index; + char firstDescriptorChar; + boolean isLongOrDouble = constantSymbol.tag == 5 + || constantSymbol.tag == 6 + || constantSymbol.tag == 17 && ((firstDescriptorChar = constantSymbol.value.charAt(0)) == 'J' || firstDescriptorChar == 'D'); + if (isLongOrDouble) { + this.code.put12(20, constantIndex); + } else if (constantIndex >= 256) { + this.code.put12(19, constantIndex); + } else { + this.code.put11(18, constantIndex); + } + + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + int size = this.relativeStackSize + (isLongOrDouble ? 2 : 1); + if (size > this.maxRelativeStackSize) { + this.maxRelativeStackSize = size; + } + + this.relativeStackSize = size; + } else { + this.currentBasicBlock.frame.execute(18, 0, constantSymbol, this.symbolTable); + } + } + } + + @Override + public void visitIincInsn(int varIndex, int increment) { + this.lastBytecodeOffset = this.code.length; + if (varIndex <= 255 && increment <= 127 && increment >= -128) { + this.code.putByte(132).put11(varIndex, increment); + } else { + this.code.putByte(196).put12(132, varIndex).putShort(increment); + } + + if (this.currentBasicBlock != null && (this.compute == 4 || this.compute == 3)) { + this.currentBasicBlock.frame.execute(132, varIndex, null, null); + } + + if (this.compute != 0) { + int currentMaxLocals = varIndex + 1; + if (currentMaxLocals > this.maxLocals) { + this.maxLocals = currentMaxLocals; + } + } + } + + @Override + public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) { + this.lastBytecodeOffset = this.code.length; + this.code.putByte(170).putByteArray(null, 0, (4 - this.code.length % 4) % 4); + dflt.put(this.code, this.lastBytecodeOffset, true); + this.code.putInt(min).putInt(max); + + for (Label label : labels) { + label.put(this.code, this.lastBytecodeOffset, true); + } + + this.visitSwitchInsn(dflt, labels); + } + + @Override + public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) { + this.lastBytecodeOffset = this.code.length; + this.code.putByte(171).putByteArray(null, 0, (4 - this.code.length % 4) % 4); + dflt.put(this.code, this.lastBytecodeOffset, true); + this.code.putInt(labels.length); + + for (int i = 0; i < labels.length; i++) { + this.code.putInt(keys[i]); + labels[i].put(this.code, this.lastBytecodeOffset, true); + } + + this.visitSwitchInsn(dflt, labels); + } + + private void visitSwitchInsn(Label dflt, Label[] labels) { + if (this.currentBasicBlock != null) { + if (this.compute == 4) { + this.currentBasicBlock.frame.execute(171, 0, null, null); + this.addSuccessorToCurrentBasicBlock(0, dflt); + Label var10000 = dflt.getCanonicalInstance(); + var10000.flags = (short)(var10000.flags | 2); + + for (Label label : labels) { + this.addSuccessorToCurrentBasicBlock(0, label); + var10000 = label.getCanonicalInstance(); + var10000.flags = (short)(var10000.flags | 2); + } + } else if (this.compute == 1) { + this.relativeStackSize--; + this.addSuccessorToCurrentBasicBlock(this.relativeStackSize, dflt); + + for (Label label : labels) { + this.addSuccessorToCurrentBasicBlock(this.relativeStackSize, label); + } + } + + this.endCurrentBasicBlockWithNoSuccessor(); + } + } + + @Override + public void visitMultiANewArrayInsn(String descriptor, int numDimensions) { + this.lastBytecodeOffset = this.code.length; + Symbol descSymbol = this.symbolTable.addConstantClass(descriptor); + this.code.put12(197, descSymbol.index).putByte(numDimensions); + if (this.currentBasicBlock != null) { + if (this.compute != 4 && this.compute != 3) { + this.relativeStackSize += 1 - numDimensions; + } else { + this.currentBasicBlock.frame.execute(197, numDimensions, descSymbol, this.symbolTable); + } + } + } + + @Override + public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastCodeRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef & -16776961 | this.lastBytecodeOffset << 8, typePath, descriptor, this.lastCodeRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastCodeRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef & -16776961 | this.lastBytecodeOffset << 8, typePath, descriptor, this.lastCodeRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitTryCatchBlock(Label start, Label end, Label handler, String type) { + Handler newHandler = new Handler(start, end, handler, type != null ? this.symbolTable.addConstantClass(type).index : 0, type); + if (this.firstHandler == null) { + this.firstHandler = newHandler; + } else { + this.lastHandler.nextHandler = newHandler; + } + + this.lastHandler = newHandler; + } + + @Override + public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastCodeRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastCodeRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastCodeRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastCodeRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitLocalVariable(String name, String descriptor, String signature, Label start, Label end, int index) { + if (signature != null) { + if (this.localVariableTypeTable == null) { + this.localVariableTypeTable = new ByteVector(); + } + + this.localVariableTypeTableLength++; + this.localVariableTypeTable + .putShort(start.bytecodeOffset) + .putShort(end.bytecodeOffset - start.bytecodeOffset) + .putShort(this.symbolTable.addConstantUtf8(name)) + .putShort(this.symbolTable.addConstantUtf8(signature)) + .putShort(index); + } + + if (this.localVariableTable == null) { + this.localVariableTable = new ByteVector(); + } + + this.localVariableTableLength++; + this.localVariableTable + .putShort(start.bytecodeOffset) + .putShort(end.bytecodeOffset - start.bytecodeOffset) + .putShort(this.symbolTable.addConstantUtf8(name)) + .putShort(this.symbolTable.addConstantUtf8(descriptor)) + .putShort(index); + if (this.compute != 0) { + char firstDescChar = descriptor.charAt(0); + int currentMaxLocals = index + (firstDescChar != 'J' && firstDescChar != 'D' ? 1 : 2); + if (currentMaxLocals > this.maxLocals) { + this.maxLocals = currentMaxLocals; + } + } + } + + @Override + public AnnotationVisitor visitLocalVariableAnnotation( + int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String descriptor, boolean visible + ) { + ByteVector typeAnnotation = new ByteVector(); + typeAnnotation.putByte(typeRef >>> 24).putShort(start.length); + + for (int i = 0; i < start.length; i++) { + typeAnnotation.putShort(start[i].bytecodeOffset).putShort(end[i].bytecodeOffset - start[i].bytecodeOffset).putShort(index[i]); + } + + TypePath.put(typePath, typeAnnotation); + typeAnnotation.putShort(this.symbolTable.addConstantUtf8(descriptor)).putShort(0); + return visible + ? (this.lastCodeRuntimeVisibleTypeAnnotation = new AnnotationWriter(this.symbolTable, true, typeAnnotation, this.lastCodeRuntimeVisibleTypeAnnotation)) + : ( + this.lastCodeRuntimeInvisibleTypeAnnotation = new AnnotationWriter( + this.symbolTable, true, typeAnnotation, this.lastCodeRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitLineNumber(int line, Label start) { + if (this.lineNumberTable == null) { + this.lineNumberTable = new ByteVector(); + } + + this.lineNumberTableLength++; + this.lineNumberTable.putShort(start.bytecodeOffset); + this.lineNumberTable.putShort(line); + } + + @Override + public void visitMaxs(int maxStack, int maxLocals) { + if (this.compute == 4) { + this.computeAllFrames(); + } else if (this.compute == 1) { + this.computeMaxStackAndLocal(); + } else if (this.compute == 2) { + this.maxStack = this.maxRelativeStackSize; + } else { + this.maxStack = maxStack; + this.maxLocals = maxLocals; + } + } + + private void computeAllFrames() { + for (Handler handler = this.firstHandler; handler != null; handler = handler.nextHandler) { + String catchTypeDescriptor = handler.catchTypeDescriptor == null ? "java/lang/Throwable" : handler.catchTypeDescriptor; + int catchType = Frame.getAbstractTypeFromInternalName(this.symbolTable, catchTypeDescriptor); + Label handlerBlock = handler.handlerPc.getCanonicalInstance(); + handlerBlock.flags = (short)(handlerBlock.flags | 2); + Label handlerRangeBlock = handler.startPc.getCanonicalInstance(); + + for (Label handlerRangeEnd = handler.endPc.getCanonicalInstance(); + handlerRangeBlock != handlerRangeEnd; + handlerRangeBlock = handlerRangeBlock.nextBasicBlock + ) { + handlerRangeBlock.outgoingEdges = new Edge(catchType, handlerBlock, handlerRangeBlock.outgoingEdges); + } + } + + Frame firstFrame = this.firstBasicBlock.frame; + firstFrame.setInputFrameFromDescriptor(this.symbolTable, this.accessFlags, this.descriptor, this.maxLocals); + firstFrame.accept(this); + Label listOfBlocksToProcess = this.firstBasicBlock; + listOfBlocksToProcess.nextListElement = Label.EMPTY_LIST; + int maxStackSize = 0; + + while (listOfBlocksToProcess != Label.EMPTY_LIST) { + Label basicBlock = listOfBlocksToProcess; + listOfBlocksToProcess = listOfBlocksToProcess.nextListElement; + basicBlock.nextListElement = null; + basicBlock.flags = (short)(basicBlock.flags | 8); + int maxBlockStackSize = basicBlock.frame.getInputStackSize() + basicBlock.outputStackMax; + if (maxBlockStackSize > maxStackSize) { + maxStackSize = maxBlockStackSize; + } + + for (Edge outgoingEdge = basicBlock.outgoingEdges; outgoingEdge != null; outgoingEdge = outgoingEdge.nextEdge) { + Label successorBlock = outgoingEdge.successor.getCanonicalInstance(); + boolean successorBlockChanged = basicBlock.frame.merge(this.symbolTable, successorBlock.frame, outgoingEdge.info); + if (successorBlockChanged && successorBlock.nextListElement == null) { + successorBlock.nextListElement = listOfBlocksToProcess; + listOfBlocksToProcess = successorBlock; + } + } + } + + for (Label basicBlock = this.firstBasicBlock; basicBlock != null; basicBlock = basicBlock.nextBasicBlock) { + if ((basicBlock.flags & 10) == 10) { + basicBlock.frame.accept(this); + } + + if ((basicBlock.flags & 8) == 0) { + Label nextBasicBlock = basicBlock.nextBasicBlock; + int startOffset = basicBlock.bytecodeOffset; + int endOffset = (nextBasicBlock == null ? this.code.length : nextBasicBlock.bytecodeOffset) - 1; + if (endOffset >= startOffset) { + for (int i = startOffset; i < endOffset; i++) { + this.code.data[i] = 0; + } + + this.code.data[endOffset] = -65; + int frameIndex = this.visitFrameStart(startOffset, 0, 1); + this.currentFrame[frameIndex] = Frame.getAbstractTypeFromInternalName(this.symbolTable, "java/lang/Throwable"); + this.visitFrameEnd(); + this.firstHandler = Handler.removeRange(this.firstHandler, basicBlock, nextBasicBlock); + maxStackSize = Math.max(maxStackSize, 1); + } + } + } + + this.maxStack = maxStackSize; + } + + private void computeMaxStackAndLocal() { + for (Handler handler = this.firstHandler; handler != null; handler = handler.nextHandler) { + Label handlerBlock = handler.handlerPc; + Label handlerRangeBlock = handler.startPc; + + for (Label handlerRangeEnd = handler.endPc; handlerRangeBlock != handlerRangeEnd; handlerRangeBlock = handlerRangeBlock.nextBasicBlock) { + if ((handlerRangeBlock.flags & 16) == 0) { + handlerRangeBlock.outgoingEdges = new Edge(Integer.MAX_VALUE, handlerBlock, handlerRangeBlock.outgoingEdges); + } else { + handlerRangeBlock.outgoingEdges.nextEdge.nextEdge = new Edge(Integer.MAX_VALUE, handlerBlock, handlerRangeBlock.outgoingEdges.nextEdge.nextEdge); + } + } + } + + if (this.hasSubroutines) { + short numSubroutines = 1; + this.firstBasicBlock.markSubroutine(numSubroutines); + + for (short currentSubroutine = 1; currentSubroutine <= numSubroutines; currentSubroutine++) { + for (Label basicBlock = this.firstBasicBlock; basicBlock != null; basicBlock = basicBlock.nextBasicBlock) { + if ((basicBlock.flags & 16) != 0 && basicBlock.subroutineId == currentSubroutine) { + Label jsrTarget = basicBlock.outgoingEdges.nextEdge.successor; + if (jsrTarget.subroutineId == 0) { + jsrTarget.markSubroutine(++numSubroutines); + } + } + } + } + + for (Label basicBlockx = this.firstBasicBlock; basicBlockx != null; basicBlockx = basicBlockx.nextBasicBlock) { + if ((basicBlockx.flags & 16) != 0) { + Label subroutine = basicBlockx.outgoingEdges.nextEdge.successor; + subroutine.addSubroutineRetSuccessors(basicBlockx); + } + } + } + + Label listOfBlocksToProcess = this.firstBasicBlock; + listOfBlocksToProcess.nextListElement = Label.EMPTY_LIST; + int maxStackSize = this.maxStack; + + while (listOfBlocksToProcess != Label.EMPTY_LIST) { + Label basicBlockxx = listOfBlocksToProcess; + listOfBlocksToProcess = listOfBlocksToProcess.nextListElement; + int inputStackTop = basicBlockxx.inputStackSize; + int maxBlockStackSize = inputStackTop + basicBlockxx.outputStackMax; + if (maxBlockStackSize > maxStackSize) { + maxStackSize = maxBlockStackSize; + } + + Edge outgoingEdge = basicBlockxx.outgoingEdges; + if ((basicBlockxx.flags & 16) != 0) { + outgoingEdge = outgoingEdge.nextEdge; + } + + for (; outgoingEdge != null; outgoingEdge = outgoingEdge.nextEdge) { + Label successorBlock = outgoingEdge.successor; + if (successorBlock.nextListElement == null) { + successorBlock.inputStackSize = (short)(outgoingEdge.info == Integer.MAX_VALUE ? 1 : inputStackTop + outgoingEdge.info); + successorBlock.nextListElement = listOfBlocksToProcess; + listOfBlocksToProcess = successorBlock; + } + } + } + + this.maxStack = maxStackSize; + } + + @Override + public void visitEnd() { + } + + private void addSuccessorToCurrentBasicBlock(int info, Label successor) { + this.currentBasicBlock.outgoingEdges = new Edge(info, successor, this.currentBasicBlock.outgoingEdges); + } + + private void endCurrentBasicBlockWithNoSuccessor() { + if (this.compute == 4) { + Label nextBasicBlock = new Label(); + nextBasicBlock.frame = new Frame(nextBasicBlock); + nextBasicBlock.resolve(this.code.data, this.stackMapTableEntries, this.code.length); + this.lastBasicBlock.nextBasicBlock = nextBasicBlock; + this.lastBasicBlock = nextBasicBlock; + this.currentBasicBlock = null; + } else if (this.compute == 1) { + this.currentBasicBlock.outputStackMax = (short)this.maxRelativeStackSize; + this.currentBasicBlock = null; + } + } + + int visitFrameStart(int offset, int numLocal, int numStack) { + int frameLength = 3 + numLocal + numStack; + if (this.currentFrame == null || this.currentFrame.length < frameLength) { + this.currentFrame = new int[frameLength]; + } + + this.currentFrame[0] = offset; + this.currentFrame[1] = numLocal; + this.currentFrame[2] = numStack; + return 3; + } + + void visitAbstractType(int frameIndex, int abstractType) { + this.currentFrame[frameIndex] = abstractType; + } + + void visitFrameEnd() { + if (this.previousFrame != null) { + if (this.stackMapTableEntries == null) { + this.stackMapTableEntries = new ByteVector(); + } + + this.putFrame(); + this.stackMapTableNumberOfEntries++; + } + + this.previousFrame = this.currentFrame; + this.currentFrame = null; + } + + private void putFrame() { + int numLocal = this.currentFrame[1]; + int numStack = this.currentFrame[2]; + if (this.symbolTable.getMajorVersion() < 50) { + this.stackMapTableEntries.putShort(this.currentFrame[0]).putShort(numLocal); + this.putAbstractTypes(3, 3 + numLocal); + this.stackMapTableEntries.putShort(numStack); + this.putAbstractTypes(3 + numLocal, 3 + numLocal + numStack); + } else { + int offsetDelta = this.stackMapTableNumberOfEntries == 0 ? this.currentFrame[0] : this.currentFrame[0] - this.previousFrame[0] - 1; + int previousNumlocal = this.previousFrame[1]; + int numLocalDelta = numLocal - previousNumlocal; + int type = 255; + if (numStack == 0) { + switch (numLocalDelta) { + case -3: + case -2: + case -1: + type = 248; + break; + case 0: + type = offsetDelta < 64 ? 0 : 251; + break; + case 1: + case 2: + case 3: + type = 252; + } + } else if (numLocalDelta == 0 && numStack == 1) { + type = offsetDelta < 63 ? 64 : 247; + } + + if (type != 255) { + int frameIndex = 3; + + for (int i = 0; i < previousNumlocal && i < numLocal; i++) { + if (this.currentFrame[frameIndex] != this.previousFrame[frameIndex]) { + type = 255; + break; + } + + frameIndex++; + } + } + + switch (type) { + case 0: + this.stackMapTableEntries.putByte(offsetDelta); + break; + case 64: + this.stackMapTableEntries.putByte(64 + offsetDelta); + this.putAbstractTypes(3 + numLocal, 4 + numLocal); + break; + case 247: + this.stackMapTableEntries.putByte(247).putShort(offsetDelta); + this.putAbstractTypes(3 + numLocal, 4 + numLocal); + break; + case 248: + this.stackMapTableEntries.putByte(251 + numLocalDelta).putShort(offsetDelta); + break; + case 251: + this.stackMapTableEntries.putByte(251).putShort(offsetDelta); + break; + case 252: + this.stackMapTableEntries.putByte(251 + numLocalDelta).putShort(offsetDelta); + this.putAbstractTypes(3 + previousNumlocal, 3 + numLocal); + break; + case 255: + default: + this.stackMapTableEntries.putByte(255).putShort(offsetDelta).putShort(numLocal); + this.putAbstractTypes(3, 3 + numLocal); + this.stackMapTableEntries.putShort(numStack); + this.putAbstractTypes(3 + numLocal, 3 + numLocal + numStack); + } + } + } + + private void putAbstractTypes(int start, int end) { + for (int i = start; i < end; i++) { + Frame.putAbstractType(this.symbolTable, this.currentFrame[i], this.stackMapTableEntries); + } + } + + private void putFrameType(Object type) { + if (type instanceof Integer) { + this.stackMapTableEntries.putByte((Integer)type); + } else if (type instanceof String) { + this.stackMapTableEntries.putByte(7).putShort(this.symbolTable.addConstantClass((String)type).index); + } else { + this.stackMapTableEntries.putByte(8); + ((Label)type).put(this.stackMapTableEntries); + } + } + + boolean canCopyMethodAttributes( + ClassReader source, boolean hasSyntheticAttribute, boolean hasDeprecatedAttribute, int descriptorIndex, int signatureIndex, int exceptionsOffset + ) { + if (source == this.symbolTable.getSource() + && descriptorIndex == this.descriptorIndex + && signatureIndex == this.signatureIndex + && hasDeprecatedAttribute == ((this.accessFlags & 131072) != 0)) { + boolean needSyntheticAttribute = this.symbolTable.getMajorVersion() < 49 && (this.accessFlags & 4096) != 0; + if (hasSyntheticAttribute != needSyntheticAttribute) { + return false; + } else { + if (exceptionsOffset == 0) { + if (this.numberOfExceptions != 0) { + return false; + } + } else if (source.readUnsignedShort(exceptionsOffset) == this.numberOfExceptions) { + int currentExceptionOffset = exceptionsOffset + 2; + + for (int i = 0; i < this.numberOfExceptions; i++) { + if (source.readUnsignedShort(currentExceptionOffset) != this.exceptionIndexTable[i]) { + return false; + } + + currentExceptionOffset += 2; + } + } + + return true; + } + } else { + return false; + } + } + + void setMethodAttributesSource(int methodInfoOffset, int methodInfoLength) { + this.sourceOffset = methodInfoOffset + 6; + this.sourceLength = methodInfoLength - 6; + } + + int computeMethodInfoSize() { + if (this.sourceOffset != 0) { + return 6 + this.sourceLength; + } else { + int size = 8; + if (this.code.length > 0) { + if (this.code.length > 65535) { + throw new MethodTooLargeException(this.symbolTable.getClassName(), this.name, this.descriptor, this.code.length); + } + + this.symbolTable.addConstantUtf8("Code"); + size += 16 + this.code.length + Handler.getExceptionTableSize(this.firstHandler); + if (this.stackMapTableEntries != null) { + boolean useStackMapTable = this.symbolTable.getMajorVersion() >= 50; + this.symbolTable.addConstantUtf8(useStackMapTable ? "StackMapTable" : "StackMap"); + size += 8 + this.stackMapTableEntries.length; + } + + if (this.lineNumberTable != null) { + this.symbolTable.addConstantUtf8("LineNumberTable"); + size += 8 + this.lineNumberTable.length; + } + + if (this.localVariableTable != null) { + this.symbolTable.addConstantUtf8("LocalVariableTable"); + size += 8 + this.localVariableTable.length; + } + + if (this.localVariableTypeTable != null) { + this.symbolTable.addConstantUtf8("LocalVariableTypeTable"); + size += 8 + this.localVariableTypeTable.length; + } + + if (this.lastCodeRuntimeVisibleTypeAnnotation != null) { + size += this.lastCodeRuntimeVisibleTypeAnnotation.computeAnnotationsSize("RuntimeVisibleTypeAnnotations"); + } + + if (this.lastCodeRuntimeInvisibleTypeAnnotation != null) { + size += this.lastCodeRuntimeInvisibleTypeAnnotation.computeAnnotationsSize("RuntimeInvisibleTypeAnnotations"); + } + + if (this.firstCodeAttribute != null) { + size += this.firstCodeAttribute.computeAttributesSize(this.symbolTable, this.code.data, this.code.length, this.maxStack, this.maxLocals); + } + } + + if (this.numberOfExceptions > 0) { + this.symbolTable.addConstantUtf8("Exceptions"); + size += 8 + 2 * this.numberOfExceptions; + } + + size += Attribute.computeAttributesSize(this.symbolTable, this.accessFlags, this.signatureIndex); + size += AnnotationWriter.computeAnnotationsSize( + this.lastRuntimeVisibleAnnotation, + this.lastRuntimeInvisibleAnnotation, + this.lastRuntimeVisibleTypeAnnotation, + this.lastRuntimeInvisibleTypeAnnotation + ); + if (this.lastRuntimeVisibleParameterAnnotations != null) { + size += AnnotationWriter.computeParameterAnnotationsSize( + "RuntimeVisibleParameterAnnotations", + this.lastRuntimeVisibleParameterAnnotations, + this.visibleAnnotableParameterCount == 0 ? this.lastRuntimeVisibleParameterAnnotations.length : this.visibleAnnotableParameterCount + ); + } + + if (this.lastRuntimeInvisibleParameterAnnotations != null) { + size += AnnotationWriter.computeParameterAnnotationsSize( + "RuntimeInvisibleParameterAnnotations", + this.lastRuntimeInvisibleParameterAnnotations, + this.invisibleAnnotableParameterCount == 0 ? this.lastRuntimeInvisibleParameterAnnotations.length : this.invisibleAnnotableParameterCount + ); + } + + if (this.defaultValue != null) { + this.symbolTable.addConstantUtf8("AnnotationDefault"); + size += 6 + this.defaultValue.length; + } + + if (this.parameters != null) { + this.symbolTable.addConstantUtf8("MethodParameters"); + size += 7 + this.parameters.length; + } + + if (this.firstAttribute != null) { + size += this.firstAttribute.computeAttributesSize(this.symbolTable); + } + + return size; + } + } + + void putMethodInfo(ByteVector output) { + boolean useSyntheticAttribute = this.symbolTable.getMajorVersion() < 49; + int mask = useSyntheticAttribute ? 4096 : 0; + output.putShort(this.accessFlags & ~mask).putShort(this.nameIndex).putShort(this.descriptorIndex); + if (this.sourceOffset != 0) { + output.putByteArray(this.symbolTable.getSource().classFileBuffer, this.sourceOffset, this.sourceLength); + } else { + int attributeCount = 0; + if (this.code.length > 0) { + attributeCount++; + } + + if (this.numberOfExceptions > 0) { + attributeCount++; + } + + if ((this.accessFlags & 4096) != 0 && useSyntheticAttribute) { + attributeCount++; + } + + if (this.signatureIndex != 0) { + attributeCount++; + } + + if ((this.accessFlags & 131072) != 0) { + attributeCount++; + } + + if (this.lastRuntimeVisibleAnnotation != null) { + attributeCount++; + } + + if (this.lastRuntimeInvisibleAnnotation != null) { + attributeCount++; + } + + if (this.lastRuntimeVisibleParameterAnnotations != null) { + attributeCount++; + } + + if (this.lastRuntimeInvisibleParameterAnnotations != null) { + attributeCount++; + } + + if (this.lastRuntimeVisibleTypeAnnotation != null) { + attributeCount++; + } + + if (this.lastRuntimeInvisibleTypeAnnotation != null) { + attributeCount++; + } + + if (this.defaultValue != null) { + attributeCount++; + } + + if (this.parameters != null) { + attributeCount++; + } + + if (this.firstAttribute != null) { + attributeCount += this.firstAttribute.getAttributeCount(); + } + + output.putShort(attributeCount); + if (this.code.length > 0) { + int size = 10 + this.code.length + Handler.getExceptionTableSize(this.firstHandler); + int codeAttributeCount = 0; + if (this.stackMapTableEntries != null) { + size += 8 + this.stackMapTableEntries.length; + codeAttributeCount++; + } + + if (this.lineNumberTable != null) { + size += 8 + this.lineNumberTable.length; + codeAttributeCount++; + } + + if (this.localVariableTable != null) { + size += 8 + this.localVariableTable.length; + codeAttributeCount++; + } + + if (this.localVariableTypeTable != null) { + size += 8 + this.localVariableTypeTable.length; + codeAttributeCount++; + } + + if (this.lastCodeRuntimeVisibleTypeAnnotation != null) { + size += this.lastCodeRuntimeVisibleTypeAnnotation.computeAnnotationsSize("RuntimeVisibleTypeAnnotations"); + codeAttributeCount++; + } + + if (this.lastCodeRuntimeInvisibleTypeAnnotation != null) { + size += this.lastCodeRuntimeInvisibleTypeAnnotation.computeAnnotationsSize("RuntimeInvisibleTypeAnnotations"); + codeAttributeCount++; + } + + if (this.firstCodeAttribute != null) { + size += this.firstCodeAttribute.computeAttributesSize(this.symbolTable, this.code.data, this.code.length, this.maxStack, this.maxLocals); + codeAttributeCount += this.firstCodeAttribute.getAttributeCount(); + } + + output.putShort(this.symbolTable.addConstantUtf8("Code")) + .putInt(size) + .putShort(this.maxStack) + .putShort(this.maxLocals) + .putInt(this.code.length) + .putByteArray(this.code.data, 0, this.code.length); + Handler.putExceptionTable(this.firstHandler, output); + output.putShort(codeAttributeCount); + if (this.stackMapTableEntries != null) { + boolean useStackMapTable = this.symbolTable.getMajorVersion() >= 50; + output.putShort(this.symbolTable.addConstantUtf8(useStackMapTable ? "StackMapTable" : "StackMap")) + .putInt(2 + this.stackMapTableEntries.length) + .putShort(this.stackMapTableNumberOfEntries) + .putByteArray(this.stackMapTableEntries.data, 0, this.stackMapTableEntries.length); + } + + if (this.lineNumberTable != null) { + output.putShort(this.symbolTable.addConstantUtf8("LineNumberTable")) + .putInt(2 + this.lineNumberTable.length) + .putShort(this.lineNumberTableLength) + .putByteArray(this.lineNumberTable.data, 0, this.lineNumberTable.length); + } + + if (this.localVariableTable != null) { + output.putShort(this.symbolTable.addConstantUtf8("LocalVariableTable")) + .putInt(2 + this.localVariableTable.length) + .putShort(this.localVariableTableLength) + .putByteArray(this.localVariableTable.data, 0, this.localVariableTable.length); + } + + if (this.localVariableTypeTable != null) { + output.putShort(this.symbolTable.addConstantUtf8("LocalVariableTypeTable")) + .putInt(2 + this.localVariableTypeTable.length) + .putShort(this.localVariableTypeTableLength) + .putByteArray(this.localVariableTypeTable.data, 0, this.localVariableTypeTable.length); + } + + if (this.lastCodeRuntimeVisibleTypeAnnotation != null) { + this.lastCodeRuntimeVisibleTypeAnnotation.putAnnotations(this.symbolTable.addConstantUtf8("RuntimeVisibleTypeAnnotations"), output); + } + + if (this.lastCodeRuntimeInvisibleTypeAnnotation != null) { + this.lastCodeRuntimeInvisibleTypeAnnotation.putAnnotations(this.symbolTable.addConstantUtf8("RuntimeInvisibleTypeAnnotations"), output); + } + + if (this.firstCodeAttribute != null) { + this.firstCodeAttribute.putAttributes(this.symbolTable, this.code.data, this.code.length, this.maxStack, this.maxLocals, output); + } + } + + if (this.numberOfExceptions > 0) { + output.putShort(this.symbolTable.addConstantUtf8("Exceptions")).putInt(2 + 2 * this.numberOfExceptions).putShort(this.numberOfExceptions); + + for (int exceptionIndex : this.exceptionIndexTable) { + output.putShort(exceptionIndex); + } + } + + Attribute.putAttributes(this.symbolTable, this.accessFlags, this.signatureIndex, output); + AnnotationWriter.putAnnotations( + this.symbolTable, + this.lastRuntimeVisibleAnnotation, + this.lastRuntimeInvisibleAnnotation, + this.lastRuntimeVisibleTypeAnnotation, + this.lastRuntimeInvisibleTypeAnnotation, + output + ); + if (this.lastRuntimeVisibleParameterAnnotations != null) { + AnnotationWriter.putParameterAnnotations( + this.symbolTable.addConstantUtf8("RuntimeVisibleParameterAnnotations"), + this.lastRuntimeVisibleParameterAnnotations, + this.visibleAnnotableParameterCount == 0 ? this.lastRuntimeVisibleParameterAnnotations.length : this.visibleAnnotableParameterCount, + output + ); + } + + if (this.lastRuntimeInvisibleParameterAnnotations != null) { + AnnotationWriter.putParameterAnnotations( + this.symbolTable.addConstantUtf8("RuntimeInvisibleParameterAnnotations"), + this.lastRuntimeInvisibleParameterAnnotations, + this.invisibleAnnotableParameterCount == 0 ? this.lastRuntimeInvisibleParameterAnnotations.length : this.invisibleAnnotableParameterCount, + output + ); + } + + if (this.defaultValue != null) { + output.putShort(this.symbolTable.addConstantUtf8("AnnotationDefault")) + .putInt(this.defaultValue.length) + .putByteArray(this.defaultValue.data, 0, this.defaultValue.length); + } + + if (this.parameters != null) { + output.putShort(this.symbolTable.addConstantUtf8("MethodParameters")) + .putInt(1 + this.parameters.length) + .putByte(this.parametersCount) + .putByteArray(this.parameters.data, 0, this.parameters.length); + } + + if (this.firstAttribute != null) { + this.firstAttribute.putAttributes(this.symbolTable, output); + } + } + } + + final void collectAttributePrototypes(Attribute.Set attributePrototypes) { + attributePrototypes.addAttributes(this.firstAttribute); + attributePrototypes.addAttributes(this.firstCodeAttribute); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleVisitor.java new file mode 100644 index 0000000..f86b3ed --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleVisitor.java @@ -0,0 +1,80 @@ +package dev.slinky.shaded.asm; + +public abstract class ModuleVisitor { + protected final int api; + protected ModuleVisitor mv; + + protected ModuleVisitor(int api) { + this(api, null); + } + + protected ModuleVisitor(int api, ModuleVisitor moduleVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.mv = moduleVisitor; + } + } + + public ModuleVisitor getDelegate() { + return this.mv; + } + + public void visitMainClass(String mainClass) { + if (this.mv != null) { + this.mv.visitMainClass(mainClass); + } + } + + public void visitPackage(String packaze) { + if (this.mv != null) { + this.mv.visitPackage(packaze); + } + } + + public void visitRequire(String module, int access, String version) { + if (this.mv != null) { + this.mv.visitRequire(module, access, version); + } + } + + public void visitExport(String packaze, int access, String... modules) { + if (this.mv != null) { + this.mv.visitExport(packaze, access, modules); + } + } + + public void visitOpen(String packaze, int access, String... modules) { + if (this.mv != null) { + this.mv.visitOpen(packaze, access, modules); + } + } + + public void visitUse(String service) { + if (this.mv != null) { + this.mv.visitUse(service); + } + } + + public void visitProvide(String service, String... providers) { + if (this.mv != null) { + this.mv.visitProvide(service, providers); + } + } + + public void visitEnd() { + if (this.mv != null) { + this.mv.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleWriter.java new file mode 100644 index 0000000..88cb5d2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/ModuleWriter.java @@ -0,0 +1,158 @@ +package dev.slinky.shaded.asm; + +final class ModuleWriter extends ModuleVisitor { + private final SymbolTable symbolTable; + private final int moduleNameIndex; + private final int moduleFlags; + private final int moduleVersionIndex; + private int requiresCount; + private final ByteVector requires; + private int exportsCount; + private final ByteVector exports; + private int opensCount; + private final ByteVector opens; + private int usesCount; + private final ByteVector usesIndex; + private int providesCount; + private final ByteVector provides; + private int packageCount; + private final ByteVector packageIndex; + private int mainClassIndex; + + ModuleWriter(SymbolTable symbolTable, int name, int access, int version) { + super(589824); + this.symbolTable = symbolTable; + this.moduleNameIndex = name; + this.moduleFlags = access; + this.moduleVersionIndex = version; + this.requires = new ByteVector(); + this.exports = new ByteVector(); + this.opens = new ByteVector(); + this.usesIndex = new ByteVector(); + this.provides = new ByteVector(); + this.packageIndex = new ByteVector(); + } + + @Override + public void visitMainClass(String mainClass) { + this.mainClassIndex = this.symbolTable.addConstantClass(mainClass).index; + } + + @Override + public void visitPackage(String packaze) { + this.packageIndex.putShort(this.symbolTable.addConstantPackage(packaze).index); + this.packageCount++; + } + + @Override + public void visitRequire(String module, int access, String version) { + this.requires + .putShort(this.symbolTable.addConstantModule(module).index) + .putShort(access) + .putShort(version == null ? 0 : this.symbolTable.addConstantUtf8(version)); + this.requiresCount++; + } + + @Override + public void visitExport(String packaze, int access, String... modules) { + this.exports.putShort(this.symbolTable.addConstantPackage(packaze).index).putShort(access); + if (modules == null) { + this.exports.putShort(0); + } else { + this.exports.putShort(modules.length); + + for (String module : modules) { + this.exports.putShort(this.symbolTable.addConstantModule(module).index); + } + } + + this.exportsCount++; + } + + @Override + public void visitOpen(String packaze, int access, String... modules) { + this.opens.putShort(this.symbolTable.addConstantPackage(packaze).index).putShort(access); + if (modules == null) { + this.opens.putShort(0); + } else { + this.opens.putShort(modules.length); + + for (String module : modules) { + this.opens.putShort(this.symbolTable.addConstantModule(module).index); + } + } + + this.opensCount++; + } + + @Override + public void visitUse(String service) { + this.usesIndex.putShort(this.symbolTable.addConstantClass(service).index); + this.usesCount++; + } + + @Override + public void visitProvide(String service, String... providers) { + this.provides.putShort(this.symbolTable.addConstantClass(service).index); + this.provides.putShort(providers.length); + + for (String provider : providers) { + this.provides.putShort(this.symbolTable.addConstantClass(provider).index); + } + + this.providesCount++; + } + + @Override + public void visitEnd() { + } + + int getAttributeCount() { + return 1 + (this.packageCount > 0 ? 1 : 0) + (this.mainClassIndex > 0 ? 1 : 0); + } + + int computeAttributesSize() { + this.symbolTable.addConstantUtf8("Module"); + int size = 22 + this.requires.length + this.exports.length + this.opens.length + this.usesIndex.length + this.provides.length; + if (this.packageCount > 0) { + this.symbolTable.addConstantUtf8("ModulePackages"); + size += 8 + this.packageIndex.length; + } + + if (this.mainClassIndex > 0) { + this.symbolTable.addConstantUtf8("ModuleMainClass"); + size += 8; + } + + return size; + } + + void putAttributes(ByteVector output) { + int moduleAttributeLength = 16 + this.requires.length + this.exports.length + this.opens.length + this.usesIndex.length + this.provides.length; + output.putShort(this.symbolTable.addConstantUtf8("Module")) + .putInt(moduleAttributeLength) + .putShort(this.moduleNameIndex) + .putShort(this.moduleFlags) + .putShort(this.moduleVersionIndex) + .putShort(this.requiresCount) + .putByteArray(this.requires.data, 0, this.requires.length) + .putShort(this.exportsCount) + .putByteArray(this.exports.data, 0, this.exports.length) + .putShort(this.opensCount) + .putByteArray(this.opens.data, 0, this.opens.length) + .putShort(this.usesCount) + .putByteArray(this.usesIndex.data, 0, this.usesIndex.length) + .putShort(this.providesCount) + .putByteArray(this.provides.data, 0, this.provides.length); + if (this.packageCount > 0) { + output.putShort(this.symbolTable.addConstantUtf8("ModulePackages")) + .putInt(2 + this.packageIndex.length) + .putShort(this.packageCount) + .putByteArray(this.packageIndex.data, 0, this.packageIndex.length); + } + + if (this.mainClassIndex > 0) { + output.putShort(this.symbolTable.addConstantUtf8("ModuleMainClass")).putInt(2).putShort(this.mainClassIndex); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Opcodes.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Opcodes.java new file mode 100644 index 0000000..b893f0a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Opcodes.java @@ -0,0 +1,251 @@ +package dev.slinky.shaded.asm; + +public interface Opcodes { + int ASM4 = 262144; + int ASM5 = 327680; + int ASM6 = 393216; + int ASM7 = 458752; + int ASM8 = 524288; + int ASM9 = 589824; + @Deprecated + int ASM10_EXPERIMENTAL = 17432576; + int SOURCE_DEPRECATED = 256; + int SOURCE_MASK = 256; + int V1_1 = 196653; + int V1_2 = 46; + int V1_3 = 47; + int V1_4 = 48; + int V1_5 = 49; + int V1_6 = 50; + int V1_7 = 51; + int V1_8 = 52; + int V9 = 53; + int V10 = 54; + int V11 = 55; + int V12 = 56; + int V13 = 57; + int V14 = 58; + int V15 = 59; + int V16 = 60; + int V17 = 61; + int V18 = 62; + int V19 = 63; + int V20 = 64; + int V21 = 65; + int V22 = 66; + int V23 = 67; + int V24 = 68; + int V_PREVIEW = -65536; + int ACC_PUBLIC = 1; + int ACC_PRIVATE = 2; + int ACC_PROTECTED = 4; + int ACC_STATIC = 8; + int ACC_FINAL = 16; + int ACC_SUPER = 32; + int ACC_SYNCHRONIZED = 32; + int ACC_OPEN = 32; + int ACC_TRANSITIVE = 32; + int ACC_VOLATILE = 64; + int ACC_BRIDGE = 64; + int ACC_STATIC_PHASE = 64; + int ACC_VARARGS = 128; + int ACC_TRANSIENT = 128; + int ACC_NATIVE = 256; + int ACC_INTERFACE = 512; + int ACC_ABSTRACT = 1024; + int ACC_STRICT = 2048; + int ACC_SYNTHETIC = 4096; + int ACC_ANNOTATION = 8192; + int ACC_ENUM = 16384; + int ACC_MANDATED = 32768; + int ACC_MODULE = 32768; + int ACC_RECORD = 65536; + int ACC_DEPRECATED = 131072; + int T_BOOLEAN = 4; + int T_CHAR = 5; + int T_FLOAT = 6; + int T_DOUBLE = 7; + int T_BYTE = 8; + int T_SHORT = 9; + int T_INT = 10; + int T_LONG = 11; + int H_GETFIELD = 1; + int H_GETSTATIC = 2; + int H_PUTFIELD = 3; + int H_PUTSTATIC = 4; + int H_INVOKEVIRTUAL = 5; + int H_INVOKESTATIC = 6; + int H_INVOKESPECIAL = 7; + int H_NEWINVOKESPECIAL = 8; + int H_INVOKEINTERFACE = 9; + int F_NEW = -1; + int F_FULL = 0; + int F_APPEND = 1; + int F_CHOP = 2; + int F_SAME = 3; + int F_SAME1 = 4; + Integer TOP = 0; + Integer INTEGER = 1; + Integer FLOAT = 2; + Integer DOUBLE = 3; + Integer LONG = 4; + Integer NULL = 5; + Integer UNINITIALIZED_THIS = 6; + int NOP = 0; + int ACONST_NULL = 1; + int ICONST_M1 = 2; + int ICONST_0 = 3; + int ICONST_1 = 4; + int ICONST_2 = 5; + int ICONST_3 = 6; + int ICONST_4 = 7; + int ICONST_5 = 8; + int LCONST_0 = 9; + int LCONST_1 = 10; + int FCONST_0 = 11; + int FCONST_1 = 12; + int FCONST_2 = 13; + int DCONST_0 = 14; + int DCONST_1 = 15; + int BIPUSH = 16; + int SIPUSH = 17; + int LDC = 18; + int ILOAD = 21; + int LLOAD = 22; + int FLOAD = 23; + int DLOAD = 24; + int ALOAD = 25; + int IALOAD = 46; + int LALOAD = 47; + int FALOAD = 48; + int DALOAD = 49; + int AALOAD = 50; + int BALOAD = 51; + int CALOAD = 52; + int SALOAD = 53; + int ISTORE = 54; + int LSTORE = 55; + int FSTORE = 56; + int DSTORE = 57; + int ASTORE = 58; + int IASTORE = 79; + int LASTORE = 80; + int FASTORE = 81; + int DASTORE = 82; + int AASTORE = 83; + int BASTORE = 84; + int CASTORE = 85; + int SASTORE = 86; + int POP = 87; + int POP2 = 88; + int DUP = 89; + int DUP_X1 = 90; + int DUP_X2 = 91; + int DUP2 = 92; + int DUP2_X1 = 93; + int DUP2_X2 = 94; + int SWAP = 95; + int IADD = 96; + int LADD = 97; + int FADD = 98; + int DADD = 99; + int ISUB = 100; + int LSUB = 101; + int FSUB = 102; + int DSUB = 103; + int IMUL = 104; + int LMUL = 105; + int FMUL = 106; + int DMUL = 107; + int IDIV = 108; + int LDIV = 109; + int FDIV = 110; + int DDIV = 111; + int IREM = 112; + int LREM = 113; + int FREM = 114; + int DREM = 115; + int INEG = 116; + int LNEG = 117; + int FNEG = 118; + int DNEG = 119; + int ISHL = 120; + int LSHL = 121; + int ISHR = 122; + int LSHR = 123; + int IUSHR = 124; + int LUSHR = 125; + int IAND = 126; + int LAND = 127; + int IOR = 128; + int LOR = 129; + int IXOR = 130; + int LXOR = 131; + int IINC = 132; + int I2L = 133; + int I2F = 134; + int I2D = 135; + int L2I = 136; + int L2F = 137; + int L2D = 138; + int F2I = 139; + int F2L = 140; + int F2D = 141; + int D2I = 142; + int D2L = 143; + int D2F = 144; + int I2B = 145; + int I2C = 146; + int I2S = 147; + int LCMP = 148; + int FCMPL = 149; + int FCMPG = 150; + int DCMPL = 151; + int DCMPG = 152; + int IFEQ = 153; + int IFNE = 154; + int IFLT = 155; + int IFGE = 156; + int IFGT = 157; + int IFLE = 158; + int IF_ICMPEQ = 159; + int IF_ICMPNE = 160; + int IF_ICMPLT = 161; + int IF_ICMPGE = 162; + int IF_ICMPGT = 163; + int IF_ICMPLE = 164; + int IF_ACMPEQ = 165; + int IF_ACMPNE = 166; + int GOTO = 167; + int JSR = 168; + int RET = 169; + int TABLESWITCH = 170; + int LOOKUPSWITCH = 171; + int IRETURN = 172; + int LRETURN = 173; + int FRETURN = 174; + int DRETURN = 175; + int ARETURN = 176; + int RETURN = 177; + int GETSTATIC = 178; + int PUTSTATIC = 179; + int GETFIELD = 180; + int PUTFIELD = 181; + int INVOKEVIRTUAL = 182; + int INVOKESPECIAL = 183; + int INVOKESTATIC = 184; + int INVOKEINTERFACE = 185; + int INVOKEDYNAMIC = 186; + int NEW = 187; + int NEWARRAY = 188; + int ANEWARRAY = 189; + int ARRAYLENGTH = 190; + int ATHROW = 191; + int CHECKCAST = 192; + int INSTANCEOF = 193; + int MONITORENTER = 194; + int MONITOREXIT = 195; + int MULTIANEWARRAY = 197; + int IFNULL = 198; + int IFNONNULL = 199; +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentVisitor.java new file mode 100644 index 0000000..9a09f18 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentVisitor.java @@ -0,0 +1,52 @@ +package dev.slinky.shaded.asm; + +public abstract class RecordComponentVisitor { + protected final int api; + protected RecordComponentVisitor delegate; + + protected RecordComponentVisitor(int api) { + this(api, null); + } + + protected RecordComponentVisitor(int api, RecordComponentVisitor recordComponentVisitor) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + if (api == 17432576) { + Constants.checkAsmExperimental(this); + } + + this.api = api; + this.delegate = recordComponentVisitor; + } + } + + public RecordComponentVisitor getDelegate() { + return this.delegate; + } + + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return this.delegate != null ? this.delegate.visitAnnotation(descriptor, visible) : null; + } + + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return this.delegate != null ? this.delegate.visitTypeAnnotation(typeRef, typePath, descriptor, visible) : null; + } + + public void visitAttribute(Attribute attribute) { + if (this.delegate != null) { + this.delegate.visitAttribute(attribute); + } + } + + public void visitEnd() { + if (this.delegate != null) { + this.delegate.visitEnd(); + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentWriter.java new file mode 100644 index 0000000..b0b4815 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/RecordComponentWriter.java @@ -0,0 +1,114 @@ +package dev.slinky.shaded.asm; + +final class RecordComponentWriter extends RecordComponentVisitor { + private final SymbolTable symbolTable; + private final int nameIndex; + private final int descriptorIndex; + private int signatureIndex; + private AnnotationWriter lastRuntimeVisibleAnnotation; + private AnnotationWriter lastRuntimeInvisibleAnnotation; + private AnnotationWriter lastRuntimeVisibleTypeAnnotation; + private AnnotationWriter lastRuntimeInvisibleTypeAnnotation; + private Attribute firstAttribute; + + RecordComponentWriter(SymbolTable symbolTable, String name, String descriptor, String signature) { + super(589824); + this.symbolTable = symbolTable; + this.nameIndex = symbolTable.addConstantUtf8(name); + this.descriptorIndex = symbolTable.addConstantUtf8(descriptor); + if (signature != null) { + this.signatureIndex = symbolTable.addConstantUtf8(signature); + } + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + return visible + ? (this.lastRuntimeVisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeVisibleAnnotation)) + : (this.lastRuntimeInvisibleAnnotation = AnnotationWriter.create(this.symbolTable, descriptor, this.lastRuntimeInvisibleAnnotation)); + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + return visible + ? ( + this.lastRuntimeVisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeVisibleTypeAnnotation + ) + ) + : ( + this.lastRuntimeInvisibleTypeAnnotation = AnnotationWriter.create( + this.symbolTable, typeRef, typePath, descriptor, this.lastRuntimeInvisibleTypeAnnotation + ) + ); + } + + @Override + public void visitAttribute(Attribute attribute) { + attribute.nextAttribute = this.firstAttribute; + this.firstAttribute = attribute; + } + + @Override + public void visitEnd() { + } + + int computeRecordComponentInfoSize() { + int size = 6; + size += Attribute.computeAttributesSize(this.symbolTable, 0, this.signatureIndex); + size += AnnotationWriter.computeAnnotationsSize( + this.lastRuntimeVisibleAnnotation, this.lastRuntimeInvisibleAnnotation, this.lastRuntimeVisibleTypeAnnotation, this.lastRuntimeInvisibleTypeAnnotation + ); + if (this.firstAttribute != null) { + size += this.firstAttribute.computeAttributesSize(this.symbolTable); + } + + return size; + } + + void putRecordComponentInfo(ByteVector output) { + output.putShort(this.nameIndex).putShort(this.descriptorIndex); + int attributesCount = 0; + if (this.signatureIndex != 0) { + attributesCount++; + } + + if (this.lastRuntimeVisibleAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeInvisibleAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeVisibleTypeAnnotation != null) { + attributesCount++; + } + + if (this.lastRuntimeInvisibleTypeAnnotation != null) { + attributesCount++; + } + + if (this.firstAttribute != null) { + attributesCount += this.firstAttribute.getAttributeCount(); + } + + output.putShort(attributesCount); + Attribute.putAttributes(this.symbolTable, 0, this.signatureIndex, output); + AnnotationWriter.putAnnotations( + this.symbolTable, + this.lastRuntimeVisibleAnnotation, + this.lastRuntimeInvisibleAnnotation, + this.lastRuntimeVisibleTypeAnnotation, + this.lastRuntimeInvisibleTypeAnnotation, + output + ); + if (this.firstAttribute != null) { + this.firstAttribute.putAttributes(this.symbolTable, output); + } + } + + final void collectAttributePrototypes(Attribute.Set attributePrototypes) { + attributePrototypes.addAttributes(this.firstAttribute); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Symbol.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Symbol.java new file mode 100644 index 0000000..5530767 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Symbol.java @@ -0,0 +1,50 @@ +package dev.slinky.shaded.asm; + +abstract class Symbol { + static final int CONSTANT_CLASS_TAG = 7; + static final int CONSTANT_FIELDREF_TAG = 9; + static final int CONSTANT_METHODREF_TAG = 10; + static final int CONSTANT_INTERFACE_METHODREF_TAG = 11; + static final int CONSTANT_STRING_TAG = 8; + static final int CONSTANT_INTEGER_TAG = 3; + static final int CONSTANT_FLOAT_TAG = 4; + static final int CONSTANT_LONG_TAG = 5; + static final int CONSTANT_DOUBLE_TAG = 6; + static final int CONSTANT_NAME_AND_TYPE_TAG = 12; + static final int CONSTANT_UTF8_TAG = 1; + static final int CONSTANT_METHOD_HANDLE_TAG = 15; + static final int CONSTANT_METHOD_TYPE_TAG = 16; + static final int CONSTANT_DYNAMIC_TAG = 17; + static final int CONSTANT_INVOKE_DYNAMIC_TAG = 18; + static final int CONSTANT_MODULE_TAG = 19; + static final int CONSTANT_PACKAGE_TAG = 20; + static final int BOOTSTRAP_METHOD_TAG = 64; + static final int TYPE_TAG = 128; + static final int UNINITIALIZED_TYPE_TAG = 129; + static final int FORWARD_UNINITIALIZED_TYPE_TAG = 130; + static final int MERGED_TYPE_TAG = 131; + final int index; + final int tag; + final String owner; + final String name; + final String value; + final long data; + int info; + + Symbol(int index, int tag, String owner, String name, String value, long data) { + this.index = index; + this.tag = tag; + this.owner = owner; + this.name = name; + this.value = value; + this.data = data; + } + + int getArgumentsAndReturnSizes() { + if (this.info == 0) { + this.info = Type.getArgumentsAndReturnSizes(this.value); + } + + return this.info; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/SymbolTable.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/SymbolTable.java new file mode 100644 index 0000000..adb6634 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/SymbolTable.java @@ -0,0 +1,779 @@ +package dev.slinky.shaded.asm; + +final class SymbolTable { + final ClassWriter classWriter; + private final ClassReader sourceClassReader; + private int majorVersion; + private String className; + private int entryCount; + private SymbolTable.Entry[] entries; + private int constantPoolCount; + private ByteVector constantPool; + private int bootstrapMethodCount; + private ByteVector bootstrapMethods; + private int typeCount; + private SymbolTable.Entry[] typeTable; + private int labelCount; + private SymbolTable.LabelEntry[] labelTable; + private SymbolTable.LabelEntry[] labelEntries; + + SymbolTable(ClassWriter classWriter) { + this.classWriter = classWriter; + this.sourceClassReader = null; + this.entries = new SymbolTable.Entry[256]; + this.constantPoolCount = 1; + this.constantPool = new ByteVector(); + } + + SymbolTable(ClassWriter classWriter, ClassReader classReader) { + this.classWriter = classWriter; + this.sourceClassReader = classReader; + byte[] inputBytes = classReader.classFileBuffer; + int constantPoolOffset = classReader.getItem(1) - 1; + int constantPoolLength = classReader.header - constantPoolOffset; + this.constantPoolCount = classReader.getItemCount(); + this.constantPool = new ByteVector(constantPoolLength); + this.constantPool.putByteArray(inputBytes, constantPoolOffset, constantPoolLength); + this.entries = new SymbolTable.Entry[this.constantPoolCount * 2]; + char[] charBuffer = new char[classReader.getMaxStringLength()]; + boolean hasBootstrapMethods = false; + int itemIndex = 1; + + while (itemIndex < this.constantPoolCount) { + int itemOffset = classReader.getItem(itemIndex); + int itemTag = inputBytes[itemOffset - 1]; + switch (itemTag) { + case 1: + this.addConstantUtf8(itemIndex, classReader.readUtf(itemIndex, charBuffer)); + break; + case 2: + case 13: + case 14: + default: + throw new IllegalArgumentException(); + case 3: + case 4: + this.addConstantIntegerOrFloat(itemIndex, itemTag, classReader.readInt(itemOffset)); + break; + case 5: + case 6: + this.addConstantLongOrDouble(itemIndex, itemTag, classReader.readLong(itemOffset)); + break; + case 7: + case 8: + case 16: + case 19: + case 20: + this.addConstantUtf8Reference(itemIndex, itemTag, classReader.readUTF8(itemOffset, charBuffer)); + break; + case 9: + case 10: + case 11: { + int nameAndTypeItemOffset = classReader.getItem(classReader.readUnsignedShort(itemOffset + 2)); + this.addConstantMemberReference( + itemIndex, + itemTag, + classReader.readClass(itemOffset, charBuffer), + classReader.readUTF8(nameAndTypeItemOffset, charBuffer), + classReader.readUTF8(nameAndTypeItemOffset + 2, charBuffer) + ); + break; + } + case 12: + this.addConstantNameAndType(itemIndex, classReader.readUTF8(itemOffset, charBuffer), classReader.readUTF8(itemOffset + 2, charBuffer)); + break; + case 15: { + int memberRefItemOffset = classReader.getItem(classReader.readUnsignedShort(itemOffset + 1)); + int nameAndTypeItemOffset = classReader.getItem(classReader.readUnsignedShort(memberRefItemOffset + 2)); + this.addConstantMethodHandle( + itemIndex, + classReader.readByte(itemOffset), + classReader.readClass(memberRefItemOffset, charBuffer), + classReader.readUTF8(nameAndTypeItemOffset, charBuffer), + classReader.readUTF8(nameAndTypeItemOffset + 2, charBuffer), + classReader.readByte(memberRefItemOffset - 1) == 11 + ); + break; + } + case 17: + case 18: { + hasBootstrapMethods = true; + int nameAndTypeItemOffset = classReader.getItem(classReader.readUnsignedShort(itemOffset + 2)); + this.addConstantDynamicOrInvokeDynamicReference( + itemTag, + itemIndex, + classReader.readUTF8(nameAndTypeItemOffset, charBuffer), + classReader.readUTF8(nameAndTypeItemOffset + 2, charBuffer), + classReader.readUnsignedShort(itemOffset) + ); + } + } + + itemIndex += itemTag != 5 && itemTag != 6 ? 1 : 2; + } + + if (hasBootstrapMethods) { + this.copyBootstrapMethods(classReader, charBuffer); + } + } + + private void copyBootstrapMethods(ClassReader classReader, char[] charBuffer) { + byte[] inputBytes = classReader.classFileBuffer; + int currentAttributeOffset = classReader.getFirstAttributeOffset(); + + for (int i = classReader.readUnsignedShort(currentAttributeOffset - 2); i > 0; i--) { + String attributeName = classReader.readUTF8(currentAttributeOffset, charBuffer); + if ("BootstrapMethods".equals(attributeName)) { + this.bootstrapMethodCount = classReader.readUnsignedShort(currentAttributeOffset + 6); + break; + } + + currentAttributeOffset += 6 + classReader.readInt(currentAttributeOffset + 2); + } + + if (this.bootstrapMethodCount > 0) { + int bootstrapMethodsOffset = currentAttributeOffset + 8; + int bootstrapMethodsLength = classReader.readInt(currentAttributeOffset + 2) - 2; + this.bootstrapMethods = new ByteVector(bootstrapMethodsLength); + this.bootstrapMethods.putByteArray(inputBytes, bootstrapMethodsOffset, bootstrapMethodsLength); + int currentOffset = bootstrapMethodsOffset; + + for (int i = 0; i < this.bootstrapMethodCount; i++) { + int offset = currentOffset - bootstrapMethodsOffset; + int bootstrapMethodRef = classReader.readUnsignedShort(currentOffset); + currentOffset += 2; + int numBootstrapArguments = classReader.readUnsignedShort(currentOffset); + currentOffset += 2; + int hashCode = classReader.readConst(bootstrapMethodRef, charBuffer).hashCode(); + + while (numBootstrapArguments-- > 0) { + int bootstrapArgument = classReader.readUnsignedShort(currentOffset); + currentOffset += 2; + hashCode ^= classReader.readConst(bootstrapArgument, charBuffer).hashCode(); + } + + this.add(new SymbolTable.Entry(i, 64, (long)offset, hashCode & 2147483647)); + } + } + } + + ClassReader getSource() { + return this.sourceClassReader; + } + + int getMajorVersion() { + return this.majorVersion; + } + + String getClassName() { + return this.className; + } + + int setMajorVersionAndClassName(int majorVersion, String className) { + this.majorVersion = majorVersion; + this.className = className; + return this.addConstantClass(className).index; + } + + int getConstantPoolCount() { + return this.constantPoolCount; + } + + int getConstantPoolLength() { + return this.constantPool.length; + } + + void putConstantPool(ByteVector output) { + output.putShort(this.constantPoolCount).putByteArray(this.constantPool.data, 0, this.constantPool.length); + } + + int computeBootstrapMethodsSize() { + if (this.bootstrapMethods != null) { + this.addConstantUtf8("BootstrapMethods"); + return 8 + this.bootstrapMethods.length; + } else { + return 0; + } + } + + void putBootstrapMethods(ByteVector output) { + if (this.bootstrapMethods != null) { + output.putShort(this.addConstantUtf8("BootstrapMethods")) + .putInt(this.bootstrapMethods.length + 2) + .putShort(this.bootstrapMethodCount) + .putByteArray(this.bootstrapMethods.data, 0, this.bootstrapMethods.length); + } + } + + private SymbolTable.Entry get(int hashCode) { + return this.entries[hashCode % this.entries.length]; + } + + private SymbolTable.Entry put(SymbolTable.Entry entry) { + if (this.entryCount > this.entries.length * 3 / 4) { + int currentCapacity = this.entries.length; + int newCapacity = currentCapacity * 2 + 1; + SymbolTable.Entry[] newEntries = new SymbolTable.Entry[newCapacity]; + + for (int i = currentCapacity - 1; i >= 0; i--) { + SymbolTable.Entry currentEntry = this.entries[i]; + + while (currentEntry != null) { + int newCurrentEntryIndex = currentEntry.hashCode % newCapacity; + SymbolTable.Entry nextEntry = currentEntry.next; + currentEntry.next = newEntries[newCurrentEntryIndex]; + newEntries[newCurrentEntryIndex] = currentEntry; + currentEntry = nextEntry; + } + } + + this.entries = newEntries; + } + + this.entryCount++; + int index = entry.hashCode % this.entries.length; + entry.next = this.entries[index]; + return this.entries[index] = entry; + } + + private void add(SymbolTable.Entry entry) { + this.entryCount++; + int index = entry.hashCode % this.entries.length; + entry.next = this.entries[index]; + this.entries[index] = entry; + } + + Symbol addConstant(Object value) { + if (value instanceof Integer) { + return this.addConstantInteger((Integer)value); + } else if (value instanceof Byte) { + return this.addConstantInteger(((Byte)value).intValue()); + } else if (value instanceof Character) { + return this.addConstantInteger((Character)value); + } else if (value instanceof Short) { + return this.addConstantInteger(((Short)value).intValue()); + } else if (value instanceof Boolean) { + return this.addConstantInteger((Boolean)value ? 1 : 0); + } else if (value instanceof Float) { + return this.addConstantFloat((Float)value); + } else if (value instanceof Long) { + return this.addConstantLong((Long)value); + } else if (value instanceof Double) { + return this.addConstantDouble((Double)value); + } else if (value instanceof String) { + return this.addConstantString((String)value); + } else if (value instanceof Type) { + Type type = (Type)value; + int typeSort = type.getSort(); + if (typeSort == 10) { + return this.addConstantClass(type.getInternalName()); + } else { + return typeSort == 11 ? this.addConstantMethodType(type.getDescriptor()) : this.addConstantClass(type.getDescriptor()); + } + } else if (value instanceof Handle) { + Handle handle = (Handle)value; + return this.addConstantMethodHandle(handle.getTag(), handle.getOwner(), handle.getName(), handle.getDesc(), handle.isInterface()); + } else if (value instanceof ConstantDynamic) { + ConstantDynamic constantDynamic = (ConstantDynamic)value; + return this.addConstantDynamic( + constantDynamic.getName(), + constantDynamic.getDescriptor(), + constantDynamic.getBootstrapMethod(), + constantDynamic.getBootstrapMethodArgumentsUnsafe() + ); + } else { + throw new IllegalArgumentException(stringConcat$0(value)); + } + } + + Symbol addConstantClass(String value) { + return this.addConstantUtf8Reference(7, value); + } + + Symbol addConstantFieldref(String owner, String name, String descriptor) { + return this.addConstantMemberReference(9, owner, name, descriptor); + } + + Symbol addConstantMethodref(String owner, String name, String descriptor, boolean isInterface) { + int tag = isInterface ? 11 : 10; + return this.addConstantMemberReference(tag, owner, name, descriptor); + } + + private SymbolTable.Entry addConstantMemberReference(int tag, String owner, String name, String descriptor) { + int hashCode = hash(tag, owner, name, descriptor); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == tag && entry.hashCode == hashCode && entry.owner.equals(owner) && entry.name.equals(name) && entry.value.equals(descriptor)) { + return entry; + } + } + + this.constantPool.put122(tag, this.addConstantClass(owner).index, this.addConstantNameAndType(name, descriptor)); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, tag, owner, name, descriptor, 0L, hashCode)); + } + + private void addConstantMemberReference(int index, int tag, String owner, String name, String descriptor) { + this.add(new SymbolTable.Entry(index, tag, owner, name, descriptor, 0L, hash(tag, owner, name, descriptor))); + } + + Symbol addConstantString(String value) { + return this.addConstantUtf8Reference(8, value); + } + + Symbol addConstantInteger(int value) { + return this.addConstantIntegerOrFloat(3, value); + } + + Symbol addConstantFloat(float value) { + return this.addConstantIntegerOrFloat(4, Float.floatToRawIntBits(value)); + } + + private Symbol addConstantIntegerOrFloat(int tag, int value) { + int hashCode = hash(tag, value); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == tag && entry.hashCode == hashCode && entry.data == (long)value) { + return entry; + } + } + + this.constantPool.putByte(tag).putInt(value); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, tag, (long)value, hashCode)); + } + + private void addConstantIntegerOrFloat(int index, int tag, int value) { + this.add(new SymbolTable.Entry(index, tag, (long)value, hash(tag, value))); + } + + Symbol addConstantLong(long value) { + return this.addConstantLongOrDouble(5, value); + } + + Symbol addConstantDouble(double value) { + return this.addConstantLongOrDouble(6, Double.doubleToRawLongBits(value)); + } + + private Symbol addConstantLongOrDouble(int tag, long value) { + int hashCode = hash(tag, value); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == tag && entry.hashCode == hashCode && entry.data == value) { + return entry; + } + } + + int index = this.constantPoolCount; + this.constantPool.putByte(tag).putLong(value); + this.constantPoolCount += 2; + return this.put(new SymbolTable.Entry(index, tag, value, hashCode)); + } + + private void addConstantLongOrDouble(int index, int tag, long value) { + this.add(new SymbolTable.Entry(index, tag, value, hash(tag, value))); + } + + int addConstantNameAndType(String name, String descriptor) { + int tag = 12; + int hashCode = hash(12, name, descriptor); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 12 && entry.hashCode == hashCode && entry.name.equals(name) && entry.value.equals(descriptor)) { + return entry.index; + } + } + + this.constantPool.put122(12, this.addConstantUtf8(name), this.addConstantUtf8(descriptor)); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, 12, name, descriptor, hashCode)).index; + } + + private void addConstantNameAndType(int index, String name, String descriptor) { + int tag = 12; + this.add(new SymbolTable.Entry(index, 12, name, descriptor, hash(12, name, descriptor))); + } + + int addConstantUtf8(String value) { + int hashCode = hash(1, value); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 1 && entry.hashCode == hashCode && entry.value.equals(value)) { + return entry.index; + } + } + + this.constantPool.putByte(1).putUTF8(value); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, 1, value, hashCode)).index; + } + + private void addConstantUtf8(int index, String value) { + this.add(new SymbolTable.Entry(index, 1, value, hash(1, value))); + } + + Symbol addConstantMethodHandle(int referenceKind, String owner, String name, String descriptor, boolean isInterface) { + int tag = 15; + int data = getConstantMethodHandleSymbolData(referenceKind, isInterface); + int hashCode = hash(15, owner, name, descriptor, data); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 15 + && entry.hashCode == hashCode + && entry.data == (long)data + && entry.owner.equals(owner) + && entry.name.equals(name) + && entry.value.equals(descriptor)) { + return entry; + } + } + + if (referenceKind <= 4) { + this.constantPool.put112(15, referenceKind, this.addConstantFieldref(owner, name, descriptor).index); + } else { + this.constantPool.put112(15, referenceKind, this.addConstantMethodref(owner, name, descriptor, isInterface).index); + } + + return this.put(new SymbolTable.Entry(this.constantPoolCount++, 15, owner, name, descriptor, (long)data, hashCode)); + } + + private void addConstantMethodHandle(int index, int referenceKind, String owner, String name, String descriptor, boolean isInterface) { + int tag = 15; + int data = getConstantMethodHandleSymbolData(referenceKind, isInterface); + int hashCode = hash(15, owner, name, descriptor, data); + this.add(new SymbolTable.Entry(index, 15, owner, name, descriptor, (long)data, hashCode)); + } + + private static int getConstantMethodHandleSymbolData(int referenceKind, boolean isInterface) { + return referenceKind > 4 && isInterface ? referenceKind << 8 : referenceKind; + } + + Symbol addConstantMethodType(String methodDescriptor) { + return this.addConstantUtf8Reference(16, methodDescriptor); + } + + Symbol addConstantDynamic(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + Symbol bootstrapMethod = this.addBootstrapMethod(bootstrapMethodHandle, bootstrapMethodArguments); + return this.addConstantDynamicOrInvokeDynamicReference(17, name, descriptor, bootstrapMethod.index); + } + + Symbol addConstantInvokeDynamic(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + Symbol bootstrapMethod = this.addBootstrapMethod(bootstrapMethodHandle, bootstrapMethodArguments); + return this.addConstantDynamicOrInvokeDynamicReference(18, name, descriptor, bootstrapMethod.index); + } + + private Symbol addConstantDynamicOrInvokeDynamicReference(int tag, String name, String descriptor, int bootstrapMethodIndex) { + int hashCode = hash(tag, name, descriptor, bootstrapMethodIndex); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == tag + && entry.hashCode == hashCode + && entry.data == (long)bootstrapMethodIndex + && entry.name.equals(name) + && entry.value.equals(descriptor)) { + return entry; + } + } + + this.constantPool.put122(tag, bootstrapMethodIndex, this.addConstantNameAndType(name, descriptor)); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, tag, null, name, descriptor, (long)bootstrapMethodIndex, hashCode)); + } + + private void addConstantDynamicOrInvokeDynamicReference(int tag, int index, String name, String descriptor, int bootstrapMethodIndex) { + int hashCode = hash(tag, name, descriptor, bootstrapMethodIndex); + this.add(new SymbolTable.Entry(index, tag, null, name, descriptor, (long)bootstrapMethodIndex, hashCode)); + } + + Symbol addConstantModule(String moduleName) { + return this.addConstantUtf8Reference(19, moduleName); + } + + Symbol addConstantPackage(String packageName) { + return this.addConstantUtf8Reference(20, packageName); + } + + private Symbol addConstantUtf8Reference(int tag, String value) { + int hashCode = hash(tag, value); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == tag && entry.hashCode == hashCode && entry.value.equals(value)) { + return entry; + } + } + + this.constantPool.put12(tag, this.addConstantUtf8(value)); + return this.put(new SymbolTable.Entry(this.constantPoolCount++, tag, value, hashCode)); + } + + private void addConstantUtf8Reference(int index, int tag, String value) { + this.add(new SymbolTable.Entry(index, tag, value, hash(tag, value))); + } + + Symbol addBootstrapMethod(Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + ByteVector bootstrapMethodsAttribute = this.bootstrapMethods; + if (bootstrapMethodsAttribute == null) { + bootstrapMethodsAttribute = this.bootstrapMethods = new ByteVector(); + } + + int numBootstrapArguments = bootstrapMethodArguments.length; + int[] bootstrapMethodArgumentIndexes = new int[numBootstrapArguments]; + + for (int i = 0; i < numBootstrapArguments; i++) { + bootstrapMethodArgumentIndexes[i] = this.addConstant(bootstrapMethodArguments[i]).index; + } + + int bootstrapMethodOffset = bootstrapMethodsAttribute.length; + bootstrapMethodsAttribute.putShort( + this.addConstantMethodHandle( + bootstrapMethodHandle.getTag(), + bootstrapMethodHandle.getOwner(), + bootstrapMethodHandle.getName(), + bootstrapMethodHandle.getDesc(), + bootstrapMethodHandle.isInterface() + ) + .index + ); + bootstrapMethodsAttribute.putShort(numBootstrapArguments); + + for (int i = 0; i < numBootstrapArguments; i++) { + bootstrapMethodsAttribute.putShort(bootstrapMethodArgumentIndexes[i]); + } + + int bootstrapMethodlength = bootstrapMethodsAttribute.length - bootstrapMethodOffset; + int hashCode = bootstrapMethodHandle.hashCode(); + + for (Object bootstrapMethodArgument : bootstrapMethodArguments) { + hashCode ^= bootstrapMethodArgument.hashCode(); + } + + hashCode &= Integer.MAX_VALUE; + return this.addBootstrapMethod(bootstrapMethodOffset, bootstrapMethodlength, hashCode); + } + + private Symbol addBootstrapMethod(int offset, int length, int hashCode) { + byte[] bootstrapMethodsData = this.bootstrapMethods.data; + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 64 && entry.hashCode == hashCode) { + int otherOffset = (int)entry.data; + boolean isSameBootstrapMethod = true; + + for (int i = 0; i < length; i++) { + if (bootstrapMethodsData[offset + i] != bootstrapMethodsData[otherOffset + i]) { + isSameBootstrapMethod = false; + break; + } + } + + if (isSameBootstrapMethod) { + this.bootstrapMethods.length = offset; + return entry; + } + } + } + + return this.put(new SymbolTable.Entry(this.bootstrapMethodCount++, 64, (long)offset, hashCode)); + } + + Symbol getType(int typeIndex) { + return this.typeTable[typeIndex]; + } + + Label getForwardUninitializedLabel(int typeIndex) { + return this.labelTable[(int)this.typeTable[typeIndex].data].label; + } + + int addType(String value) { + int hashCode = hash(128, value); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 128 && entry.hashCode == hashCode && entry.value.equals(value)) { + return entry.index; + } + } + + return this.addTypeInternal(new SymbolTable.Entry(this.typeCount, 128, value, hashCode)); + } + + int addUninitializedType(String value, int bytecodeOffset) { + int hashCode = hash(129, value, bytecodeOffset); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 129 && entry.hashCode == hashCode && entry.data == (long)bytecodeOffset && entry.value.equals(value)) { + return entry.index; + } + } + + return this.addTypeInternal(new SymbolTable.Entry(this.typeCount, 129, value, (long)bytecodeOffset, hashCode)); + } + + int addForwardUninitializedType(String value, Label label) { + int labelIndex = this.getOrAddLabelEntry(label).index; + int hashCode = hash(130, value, labelIndex); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 130 && entry.hashCode == hashCode && entry.data == (long)labelIndex && entry.value.equals(value)) { + return entry.index; + } + } + + return this.addTypeInternal(new SymbolTable.Entry(this.typeCount, 130, value, (long)labelIndex, hashCode)); + } + + int addMergedType(int typeTableIndex1, int typeTableIndex2) { + long data = typeTableIndex1 < typeTableIndex2 ? (long)typeTableIndex1 | (long)typeTableIndex2 << 32 : (long)typeTableIndex2 | (long)typeTableIndex1 << 32; + int hashCode = hash(131, typeTableIndex1 + typeTableIndex2); + + for (SymbolTable.Entry entry = this.get(hashCode); entry != null; entry = entry.next) { + if (entry.tag == 131 && entry.hashCode == hashCode && entry.data == data) { + return entry.info; + } + } + + String type1 = this.typeTable[typeTableIndex1].value; + String type2 = this.typeTable[typeTableIndex2].value; + int commonSuperTypeIndex = this.addType(this.classWriter.getCommonSuperClass(type1, type2)); + this.put(new SymbolTable.Entry(this.typeCount, 131, data, hashCode)).info = commonSuperTypeIndex; + return commonSuperTypeIndex; + } + + private int addTypeInternal(SymbolTable.Entry entry) { + if (this.typeTable == null) { + this.typeTable = new SymbolTable.Entry[16]; + } + + if (this.typeCount == this.typeTable.length) { + SymbolTable.Entry[] newTypeTable = new SymbolTable.Entry[2 * this.typeTable.length]; + System.arraycopy(this.typeTable, 0, newTypeTable, 0, this.typeTable.length); + this.typeTable = newTypeTable; + } + + this.typeTable[this.typeCount++] = entry; + return this.put(entry).index; + } + + private SymbolTable.LabelEntry getOrAddLabelEntry(Label label) { + if (this.labelEntries == null) { + this.labelEntries = new SymbolTable.LabelEntry[16]; + this.labelTable = new SymbolTable.LabelEntry[16]; + } + + int hashCode = System.identityHashCode(label); + SymbolTable.LabelEntry labelEntry = this.labelEntries[hashCode % this.labelEntries.length]; + + while (labelEntry != null && labelEntry.label != label) { + labelEntry = labelEntry.next; + } + + if (labelEntry != null) { + return labelEntry; + } else { + if (this.labelCount > this.labelEntries.length * 3 / 4) { + int currentCapacity = this.labelEntries.length; + int newCapacity = currentCapacity * 2 + 1; + SymbolTable.LabelEntry[] newLabelEntries = new SymbolTable.LabelEntry[newCapacity]; + + for (int i = currentCapacity - 1; i >= 0; i--) { + SymbolTable.LabelEntry currentEntry = this.labelEntries[i]; + + while (currentEntry != null) { + int newCurrentEntryIndex = System.identityHashCode(currentEntry.label) % newCapacity; + SymbolTable.LabelEntry nextEntry = currentEntry.next; + currentEntry.next = newLabelEntries[newCurrentEntryIndex]; + newLabelEntries[newCurrentEntryIndex] = currentEntry; + currentEntry = nextEntry; + } + } + + this.labelEntries = newLabelEntries; + } + + if (this.labelCount == this.labelTable.length) { + SymbolTable.LabelEntry[] newLabelTable = new SymbolTable.LabelEntry[2 * this.labelTable.length]; + System.arraycopy(this.labelTable, 0, newLabelTable, 0, this.labelTable.length); + this.labelTable = newLabelTable; + } + + labelEntry = new SymbolTable.LabelEntry(this.labelCount, label); + int index = hashCode % this.labelEntries.length; + labelEntry.next = this.labelEntries[index]; + this.labelEntries[index] = labelEntry; + this.labelTable[this.labelCount++] = labelEntry; + return labelEntry; + } + } + + private static int hash(int tag, int value) { + return 2147483647 & tag + value; + } + + private static int hash(int tag, long value) { + return 2147483647 & tag + (int)value + (int)(value >>> 32); + } + + private static int hash(int tag, String value) { + return 2147483647 & tag + value.hashCode(); + } + + private static int hash(int tag, String value1, int value2) { + return 2147483647 & tag + value1.hashCode() + value2; + } + + private static int hash(int tag, String value1, String value2) { + return 2147483647 & tag + value1.hashCode() * value2.hashCode(); + } + + private static int hash(int tag, String value1, String value2, int value3) { + return 2147483647 & tag + value1.hashCode() * value2.hashCode() * (value3 + 1); + } + + private static int hash(int tag, String value1, String value2, String value3) { + return 2147483647 & tag + value1.hashCode() * value2.hashCode() * value3.hashCode(); + } + + private static int hash(int tag, String value1, String value2, String value3, int value4) { + return 2147483647 & tag + value1.hashCode() * value2.hashCode() * value3.hashCode() * value4; + } + + private static final class Entry extends Symbol { + final int hashCode; + SymbolTable.Entry next; + + Entry(int index, int tag, String owner, String name, String value, long data, int hashCode) { + super(index, tag, owner, name, value, data); + this.hashCode = hashCode; + } + + Entry(int index, int tag, String value, int hashCode) { + super(index, tag, null, null, value, 0L); + this.hashCode = hashCode; + } + + Entry(int index, int tag, String value, long data, int hashCode) { + super(index, tag, null, null, value, data); + this.hashCode = hashCode; + } + + Entry(int index, int tag, String name, String value, int hashCode) { + super(index, tag, null, name, value, 0L); + this.hashCode = hashCode; + } + + Entry(int index, int tag, long data, int hashCode) { + super(index, tag, null, null, null, data); + this.hashCode = hashCode; + } + } + + private static final class LabelEntry { + final int index; + final Label label; + SymbolTable.LabelEntry next; + + LabelEntry(int index, Label label) { + this.index = index; + this.label = label; + } + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(Object object) { + return "value " + object; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Type.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Type.java new file mode 100644 index 0000000..d909e7e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/Type.java @@ -0,0 +1,564 @@ +package dev.slinky.shaded.asm; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; + +public final class Type { + public static final int VOID = 0; + public static final int BOOLEAN = 1; + public static final int CHAR = 2; + public static final int BYTE = 3; + public static final int SHORT = 4; + public static final int INT = 5; + public static final int FLOAT = 6; + public static final int LONG = 7; + public static final int DOUBLE = 8; + public static final int ARRAY = 9; + public static final int OBJECT = 10; + public static final int METHOD = 11; + private static final int INTERNAL = 12; + private static final String PRIMITIVE_DESCRIPTORS = "VZCBSIFJD"; + public static final Type VOID_TYPE = new Type(0, "VZCBSIFJD", 0, 1); + public static final Type BOOLEAN_TYPE = new Type(1, "VZCBSIFJD", 1, 2); + public static final Type CHAR_TYPE = new Type(2, "VZCBSIFJD", 2, 3); + public static final Type BYTE_TYPE = new Type(3, "VZCBSIFJD", 3, 4); + public static final Type SHORT_TYPE = new Type(4, "VZCBSIFJD", 4, 5); + public static final Type INT_TYPE = new Type(5, "VZCBSIFJD", 5, 6); + public static final Type FLOAT_TYPE = new Type(6, "VZCBSIFJD", 6, 7); + public static final Type LONG_TYPE = new Type(7, "VZCBSIFJD", 7, 8); + public static final Type DOUBLE_TYPE = new Type(8, "VZCBSIFJD", 8, 9); + private final int sort; + private final String valueBuffer; + private final int valueBegin; + private final int valueEnd; + + private Type(int sort, String valueBuffer, int valueBegin, int valueEnd) { + this.sort = sort; + this.valueBuffer = valueBuffer; + this.valueBegin = valueBegin; + this.valueEnd = valueEnd; + } + + public static Type getType(String typeDescriptor) { + return getTypeInternal(typeDescriptor, 0, typeDescriptor.length()); + } + + public static Type getType(Class clazz) { + if (clazz.isPrimitive()) { + if (clazz == int.class) { + return INT_TYPE; + } else if (clazz == void.class) { + return VOID_TYPE; + } else if (clazz == boolean.class) { + return BOOLEAN_TYPE; + } else if (clazz == byte.class) { + return BYTE_TYPE; + } else if (clazz == char.class) { + return CHAR_TYPE; + } else if (clazz == short.class) { + return SHORT_TYPE; + } else if (clazz == double.class) { + return DOUBLE_TYPE; + } else if (clazz == float.class) { + return FLOAT_TYPE; + } else if (clazz == long.class) { + return LONG_TYPE; + } else { + throw new AssertionError(); + } + } else { + return getType(getDescriptor(clazz)); + } + } + + public static Type getType(Constructor constructor) { + return getType(getConstructorDescriptor(constructor)); + } + + public static Type getType(Method method) { + return getType(getMethodDescriptor(method)); + } + + public Type getElementType() { + int numDimensions = this.getDimensions(); + return getTypeInternal(this.valueBuffer, this.valueBegin + numDimensions, this.valueEnd); + } + + public static Type getObjectType(String internalName) { + return new Type(internalName.charAt(0) == '[' ? 9 : 12, internalName, 0, internalName.length()); + } + + public static Type getMethodType(String methodDescriptor) { + return new Type(11, methodDescriptor, 0, methodDescriptor.length()); + } + + public static Type getMethodType(Type returnType, Type... argumentTypes) { + return getType(getMethodDescriptor(returnType, argumentTypes)); + } + + public Type[] getArgumentTypes() { + return getArgumentTypes(this.getDescriptor()); + } + + public static Type[] getArgumentTypes(String methodDescriptor) { + int numArgumentTypes = getArgumentCount(methodDescriptor); + Type[] argumentTypes = new Type[numArgumentTypes]; + int currentOffset = 1; + int currentArgumentTypeIndex = 0; + + while (methodDescriptor.charAt(currentOffset) != ')') { + int currentArgumentTypeOffset = currentOffset; + + while (methodDescriptor.charAt(currentOffset) == '[') { + currentOffset++; + } + + if (methodDescriptor.charAt(currentOffset++) == 'L') { + int semiColumnOffset = methodDescriptor.indexOf(59, currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); + } + + argumentTypes[currentArgumentTypeIndex++] = getTypeInternal(methodDescriptor, currentArgumentTypeOffset, currentOffset); + } + + return argumentTypes; + } + + public static Type[] getArgumentTypes(Method method) { + Class[] classes = method.getParameterTypes(); + Type[] types = new Type[classes.length]; + + for (int i = classes.length - 1; i >= 0; i--) { + types[i] = getType(classes[i]); + } + + return types; + } + + public Type getReturnType() { + return getReturnType(this.getDescriptor()); + } + + public static Type getReturnType(String methodDescriptor) { + return getTypeInternal(methodDescriptor, getReturnTypeOffset(methodDescriptor), methodDescriptor.length()); + } + + public static Type getReturnType(Method method) { + return getType(method.getReturnType()); + } + + static int getReturnTypeOffset(String methodDescriptor) { + int currentOffset = 1; + + while (methodDescriptor.charAt(currentOffset) != ')') { + while (methodDescriptor.charAt(currentOffset) == '[') { + currentOffset++; + } + + if (methodDescriptor.charAt(currentOffset++) == 'L') { + int semiColumnOffset = methodDescriptor.indexOf(59, currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); + } + } + + return currentOffset + 1; + } + + private static Type getTypeInternal(String descriptorBuffer, int descriptorBegin, int descriptorEnd) { + switch (descriptorBuffer.charAt(descriptorBegin)) { + case '(': + return new Type(11, descriptorBuffer, descriptorBegin, descriptorEnd); + case 'B': + return BYTE_TYPE; + case 'C': + return CHAR_TYPE; + case 'D': + return DOUBLE_TYPE; + case 'F': + return FLOAT_TYPE; + case 'I': + return INT_TYPE; + case 'J': + return LONG_TYPE; + case 'L': + return new Type(10, descriptorBuffer, descriptorBegin + 1, descriptorEnd - 1); + case 'S': + return SHORT_TYPE; + case 'V': + return VOID_TYPE; + case 'Z': + return BOOLEAN_TYPE; + case '[': + return new Type(9, descriptorBuffer, descriptorBegin, descriptorEnd); + default: + throw new IllegalArgumentException(stringConcat$0(descriptorBuffer)); + } + } + + public String getClassName() { + switch (this.sort) { + case 0: + return "void"; + case 1: + return "boolean"; + case 2: + return "char"; + case 3: + return "byte"; + case 4: + return "short"; + case 5: + return "int"; + case 6: + return "float"; + case 7: + return "long"; + case 8: + return "double"; + case 9: + StringBuilder stringBuilder = new StringBuilder(this.getElementType().getClassName()); + + for (int i = this.getDimensions(); i > 0; i--) { + stringBuilder.append("[]"); + } + + return stringBuilder.toString(); + case 10: + case 12: + return this.valueBuffer.substring(this.valueBegin, this.valueEnd).replace('/', '.'); + case 11: + default: + throw new AssertionError(); + } + } + + public String getInternalName() { + return this.valueBuffer.substring(this.valueBegin, this.valueEnd); + } + + public static String getInternalName(Class clazz) { + return clazz.getName().replace('.', '/'); + } + + public String getDescriptor() { + if (this.sort == 10) { + return this.valueBuffer.substring(this.valueBegin - 1, this.valueEnd + 1); + } else { + return this.sort == 12 + ? stringConcat$1(this.valueBuffer.substring(this.valueBegin, this.valueEnd)) + : this.valueBuffer.substring(this.valueBegin, this.valueEnd); + } + } + + public static String getDescriptor(Class clazz) { + StringBuilder stringBuilder = new StringBuilder(); + appendDescriptor(clazz, stringBuilder); + return stringBuilder.toString(); + } + + public static String getConstructorDescriptor(Constructor constructor) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append('('); + Class[] parameters = constructor.getParameterTypes(); + + for (Class parameter : parameters) { + appendDescriptor(parameter, stringBuilder); + } + + return stringBuilder.append(")V").toString(); + } + + public static String getMethodDescriptor(Type returnType, Type... argumentTypes) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append('('); + + for (Type argumentType : argumentTypes) { + argumentType.appendDescriptor(stringBuilder); + } + + stringBuilder.append(')'); + returnType.appendDescriptor(stringBuilder); + return stringBuilder.toString(); + } + + public static String getMethodDescriptor(Method method) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append('('); + Class[] parameters = method.getParameterTypes(); + + for (Class parameter : parameters) { + appendDescriptor(parameter, stringBuilder); + } + + stringBuilder.append(')'); + appendDescriptor(method.getReturnType(), stringBuilder); + return stringBuilder.toString(); + } + + private void appendDescriptor(StringBuilder stringBuilder) { + if (this.sort == 10) { + stringBuilder.append(this.valueBuffer, this.valueBegin - 1, this.valueEnd + 1); + } else if (this.sort == 12) { + stringBuilder.append('L').append(this.valueBuffer, this.valueBegin, this.valueEnd).append(';'); + } else { + stringBuilder.append(this.valueBuffer, this.valueBegin, this.valueEnd); + } + } + + private static void appendDescriptor(Class clazz, StringBuilder stringBuilder) { + Class currentClass; + for (currentClass = clazz; currentClass.isArray(); currentClass = currentClass.getComponentType()) { + stringBuilder.append('['); + } + + if (currentClass.isPrimitive()) { + char descriptor; + if (currentClass == int.class) { + descriptor = 'I'; + } else if (currentClass == void.class) { + descriptor = 'V'; + } else if (currentClass == boolean.class) { + descriptor = 'Z'; + } else if (currentClass == byte.class) { + descriptor = 'B'; + } else if (currentClass == char.class) { + descriptor = 'C'; + } else if (currentClass == short.class) { + descriptor = 'S'; + } else if (currentClass == double.class) { + descriptor = 'D'; + } else if (currentClass == float.class) { + descriptor = 'F'; + } else { + if (currentClass != long.class) { + throw new AssertionError(); + } + + descriptor = 'J'; + } + + stringBuilder.append(descriptor); + } else { + stringBuilder.append('L').append(getInternalName(currentClass)).append(';'); + } + } + + public int getSort() { + return this.sort == 12 ? 10 : this.sort; + } + + public int getDimensions() { + int numDimensions = 1; + + while (this.valueBuffer.charAt(this.valueBegin + numDimensions) == '[') { + numDimensions++; + } + + return numDimensions; + } + + public int getSize() { + switch (this.sort) { + case 0: + return 0; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 9: + case 10: + case 12: + return 1; + case 7: + case 8: + return 2; + case 11: + default: + throw new AssertionError(); + } + } + + public int getArgumentCount() { + return getArgumentCount(this.getDescriptor()); + } + + public static int getArgumentCount(String methodDescriptor) { + int argumentCount = 0; + + for (int currentOffset = 1; methodDescriptor.charAt(currentOffset) != ')'; argumentCount++) { + while (methodDescriptor.charAt(currentOffset) == '[') { + currentOffset++; + } + + if (methodDescriptor.charAt(currentOffset++) == 'L') { + int semiColumnOffset = methodDescriptor.indexOf(59, currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); + } + } + + return argumentCount; + } + + public int getArgumentsAndReturnSizes() { + return getArgumentsAndReturnSizes(this.getDescriptor()); + } + + public static int getArgumentsAndReturnSizes(String methodDescriptor) { + int argumentsSize = 1; + int currentOffset = 1; + + for (int currentChar = methodDescriptor.charAt(currentOffset); currentChar != 41; currentChar = methodDescriptor.charAt(currentOffset)) { + if (currentChar != 74 && currentChar != 68) { + while (methodDescriptor.charAt(currentOffset) == '[') { + currentOffset++; + } + + if (methodDescriptor.charAt(currentOffset++) == 'L') { + int semiColumnOffset = methodDescriptor.indexOf(59, currentOffset); + currentOffset = Math.max(currentOffset, semiColumnOffset + 1); + } + + argumentsSize++; + } else { + currentOffset++; + argumentsSize += 2; + } + } + + int var5 = methodDescriptor.charAt(currentOffset + 1); + if (var5 == 'V') { + return argumentsSize << 2; + } else { + int returnSize = var5 != 'J' && var5 != 'D' ? 1 : 2; + return argumentsSize << 2 | returnSize; + } + } + + public int getOpcode(int opcode) { + if (opcode != 46 && opcode != 79) { + switch (this.sort) { + case 0: + if (opcode != 172) { + throw new UnsupportedOperationException(); + } + + return 177; + case 1: + case 2: + case 3: + case 4: + case 5: + return opcode; + case 6: + return opcode + 2; + case 7: + return opcode + 1; + case 8: + return opcode + 3; + case 9: + case 10: + case 12: + if (opcode != 21 && opcode != 54 && opcode != 172) { + throw new UnsupportedOperationException(); + } + + return opcode + 4; + case 11: + throw new UnsupportedOperationException(); + default: + throw new AssertionError(); + } + } else { + switch (this.sort) { + case 0: + case 11: + throw new UnsupportedOperationException(); + case 1: + case 3: + return opcode + 5; + case 2: + return opcode + 6; + case 4: + return opcode + 7; + case 5: + return opcode; + case 6: + return opcode + 2; + case 7: + return opcode + 1; + case 8: + return opcode + 3; + case 9: + case 10: + case 12: + return opcode + 4; + default: + throw new AssertionError(); + } + } + } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } else if (!(object instanceof Type)) { + return false; + } else { + Type other = (Type)object; + if ((this.sort == 12 ? 10 : this.sort) != (other.sort == 12 ? 10 : other.sort)) { + return false; + } else { + int begin = this.valueBegin; + int end = this.valueEnd; + int otherBegin = other.valueBegin; + int otherEnd = other.valueEnd; + if (end - begin != otherEnd - otherBegin) { + return false; + } else { + int i = begin; + + for (int j = otherBegin; i < end; j++) { + if (this.valueBuffer.charAt(i) != other.valueBuffer.charAt(j)) { + return false; + } + + i++; + } + + return true; + } + } + } + } + + @Override + public int hashCode() { + int hashCode = 13 * (this.sort == 12 ? 10 : this.sort); + if (this.sort >= 9) { + int i = this.valueBegin; + + for (int end = this.valueEnd; i < end; i++) { + hashCode = 17 * (hashCode + this.valueBuffer.charAt(i)); + } + } + + return hashCode; + } + + @Override + public String toString() { + return this.getDescriptor(); + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(String string) { + return "Invalid descriptor: " + string; + } + + private static String stringConcat$1(String string) { + return "L" + string + ";"; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypePath.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypePath.java new file mode 100644 index 0000000..cd28488 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypePath.java @@ -0,0 +1,113 @@ +package dev.slinky.shaded.asm; + +public final class TypePath { + public static final int ARRAY_ELEMENT = 0; + public static final int INNER_TYPE = 1; + public static final int WILDCARD_BOUND = 2; + public static final int TYPE_ARGUMENT = 3; + private final byte[] typePathContainer; + private final int typePathOffset; + + TypePath(byte[] typePathContainer, int typePathOffset) { + this.typePathContainer = typePathContainer; + this.typePathOffset = typePathOffset; + } + + public int getLength() { + return this.typePathContainer[this.typePathOffset]; + } + + public int getStep(int index) { + return this.typePathContainer[this.typePathOffset + 2 * index + 1]; + } + + public int getStepArgument(int index) { + return this.typePathContainer[this.typePathOffset + 2 * index + 2]; + } + + public static TypePath fromString(String typePath) { + if (typePath != null && typePath.length() != 0) { + int typePathLength = typePath.length(); + ByteVector output = new ByteVector(typePathLength); + output.putByte(0); + int typePathIndex = 0; + + while (typePathIndex < typePathLength) { + char c = typePath.charAt(typePathIndex++); + if (c == '[') { + output.put11(0, 0); + } else if (c != '.') { + if (c != '*') { + if (c < '0' || c > '9') { + throw new IllegalArgumentException(); + } + + int typeArg = c - '0'; + + while (true) { + if (typePathIndex < typePathLength) { + c = typePath.charAt(typePathIndex++); + if (c >= '0' && c <= '9') { + typeArg = typeArg * 10 + c - 48; + continue; + } + + if (c != ';') { + throw new IllegalArgumentException(); + } + } + + output.put11(3, typeArg); + break; + } + } else { + output.put11(2, 0); + } + } else { + output.put11(1, 0); + } + } + + output.data[0] = (byte)(output.length / 2); + return new TypePath(output.data, 0); + } else { + return null; + } + } + + @Override + public String toString() { + int length = this.getLength(); + StringBuilder result = new StringBuilder(length * 2); + + for (int i = 0; i < length; i++) { + switch (this.getStep(i)) { + case 0: + result.append('['); + break; + case 1: + result.append('.'); + break; + case 2: + result.append('*'); + break; + case 3: + result.append(this.getStepArgument(i)).append(';'); + break; + default: + throw new AssertionError(); + } + } + + return result.toString(); + } + + static void put(TypePath typePath, ByteVector output) { + if (typePath == null) { + output.putByte(0); + } else { + int length = typePath.typePathContainer[typePath.typePathOffset] * 2 + 1; + output.putByteArray(typePath.typePathContainer, typePath.typePathOffset, length); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypeReference.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypeReference.java new file mode 100644 index 0000000..d64c244 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/TypeReference.java @@ -0,0 +1,189 @@ +package dev.slinky.shaded.asm; + +public class TypeReference { + public static final int CLASS_TYPE_PARAMETER = 0; + public static final int METHOD_TYPE_PARAMETER = 1; + public static final int CLASS_EXTENDS = 16; + public static final int CLASS_TYPE_PARAMETER_BOUND = 17; + public static final int METHOD_TYPE_PARAMETER_BOUND = 18; + public static final int FIELD = 19; + public static final int METHOD_RETURN = 20; + public static final int METHOD_RECEIVER = 21; + public static final int METHOD_FORMAL_PARAMETER = 22; + public static final int THROWS = 23; + public static final int LOCAL_VARIABLE = 64; + public static final int RESOURCE_VARIABLE = 65; + public static final int EXCEPTION_PARAMETER = 66; + public static final int INSTANCEOF = 67; + public static final int NEW = 68; + public static final int CONSTRUCTOR_REFERENCE = 69; + public static final int METHOD_REFERENCE = 70; + public static final int CAST = 71; + public static final int CONSTRUCTOR_INVOCATION_TYPE_ARGUMENT = 72; + public static final int METHOD_INVOCATION_TYPE_ARGUMENT = 73; + public static final int CONSTRUCTOR_REFERENCE_TYPE_ARGUMENT = 74; + public static final int METHOD_REFERENCE_TYPE_ARGUMENT = 75; + private final int targetTypeAndInfo; + + public TypeReference(int typeRef) { + this.targetTypeAndInfo = typeRef; + } + + public static TypeReference newTypeReference(int sort) { + return new TypeReference(sort << 24); + } + + public static TypeReference newTypeParameterReference(int sort, int paramIndex) { + return new TypeReference(sort << 24 | paramIndex << 16); + } + + public static TypeReference newTypeParameterBoundReference(int sort, int paramIndex, int boundIndex) { + return new TypeReference(sort << 24 | paramIndex << 16 | boundIndex << 8); + } + + public static TypeReference newSuperTypeReference(int itfIndex) { + return new TypeReference(268435456 | (itfIndex & 65535) << 8); + } + + public static TypeReference newFormalParameterReference(int paramIndex) { + return new TypeReference(369098752 | paramIndex << 16); + } + + public static TypeReference newExceptionReference(int exceptionIndex) { + return new TypeReference(385875968 | exceptionIndex << 8); + } + + public static TypeReference newTryCatchReference(int tryCatchBlockIndex) { + return new TypeReference(1107296256 | tryCatchBlockIndex << 8); + } + + public static TypeReference newTypeArgumentReference(int sort, int argIndex) { + return new TypeReference(sort << 24 | argIndex); + } + + public int getSort() { + return this.targetTypeAndInfo >>> 24; + } + + public int getTypeParameterIndex() { + return (this.targetTypeAndInfo & 0xFF0000) >> 16; + } + + public int getTypeParameterBoundIndex() { + return (this.targetTypeAndInfo & 0xFF00) >> 8; + } + + public int getSuperTypeIndex() { + return (short)((this.targetTypeAndInfo & 16776960) >> 8); + } + + public int getFormalParameterIndex() { + return (this.targetTypeAndInfo & 0xFF0000) >> 16; + } + + public int getExceptionIndex() { + return (this.targetTypeAndInfo & 16776960) >> 8; + } + + public int getTryCatchBlockIndex() { + return (this.targetTypeAndInfo & 16776960) >> 8; + } + + public int getTypeArgumentIndex() { + return this.targetTypeAndInfo & 0xFF; + } + + public int getValue() { + return this.targetTypeAndInfo; + } + + static void putTarget(int targetTypeAndInfo, ByteVector output) { + switch (targetTypeAndInfo >>> 24) { + case 0: + case 1: + case 22: + output.putShort(targetTypeAndInfo >>> 16); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + default: + throw new IllegalArgumentException(); + case 16: + case 17: + case 18: + case 23: + case 66: + case 67: + case 68: + case 69: + case 70: + output.put12(targetTypeAndInfo >>> 24, (targetTypeAndInfo & 16776960) >> 8); + break; + case 19: + case 20: + case 21: + output.putByte(targetTypeAndInfo >>> 24); + break; + case 71: + case 72: + case 73: + case 74: + case 75: + output.putInt(targetTypeAndInfo); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureReader.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureReader.java new file mode 100644 index 0000000..1a950de --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureReader.java @@ -0,0 +1,153 @@ +package dev.slinky.shaded.asm.signature; + +public class SignatureReader { + private final String signatureValue; + + public SignatureReader(String signature) { + this.signatureValue = signature; + } + + public void accept(SignatureVisitor signatureVistor) { + String signature = this.signatureValue; + int length = signature.length(); + int offset; + if (signature.charAt(0) == '<') { + offset = 2; + + char currentChar; + do { + int classBoundStartOffset = signature.indexOf(58, offset); + signatureVistor.visitFormalTypeParameter(signature.substring(offset - 1, classBoundStartOffset)); + offset = classBoundStartOffset + 1; + currentChar = signature.charAt(offset); + if (currentChar == 'L' || currentChar == '[' || currentChar == 'T') { + offset = parseType(signature, offset, signatureVistor.visitClassBound()); + } + + while ((currentChar = signature.charAt(offset++)) == ':') { + offset = parseType(signature, offset, signatureVistor.visitInterfaceBound()); + } + } while (currentChar != '>'); + } else { + offset = 0; + } + + if (signature.charAt(offset) == '(') { + offset++; + + while (signature.charAt(offset) != ')') { + offset = parseType(signature, offset, signatureVistor.visitParameterType()); + } + + offset = parseType(signature, offset + 1, signatureVistor.visitReturnType()); + + while (offset < length) { + offset = parseType(signature, offset + 1, signatureVistor.visitExceptionType()); + } + } else { + offset = parseType(signature, offset, signatureVistor.visitSuperclass()); + + while (offset < length) { + offset = parseType(signature, offset, signatureVistor.visitInterface()); + } + } + } + + public void acceptType(SignatureVisitor signatureVisitor) { + parseType(this.signatureValue, 0, signatureVisitor); + } + + private static int parseType(String signature, int startOffset, SignatureVisitor signatureVisitor) { + int offset = startOffset + 1; + char currentChar = signature.charAt(startOffset); + switch (currentChar) { + case 'B': + case 'C': + case 'D': + case 'F': + case 'I': + case 'J': + case 'S': + case 'V': + case 'Z': + signatureVisitor.visitBaseType(currentChar); + return offset; + case 'E': + case 'G': + case 'H': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'U': + case 'W': + case 'X': + case 'Y': + default: + throw new IllegalArgumentException(); + case 'L': + int start = offset; + boolean visited = false; + boolean inner = false; + + while (true) { + currentChar = signature.charAt(offset++); + if (currentChar != '.' && currentChar != ';') { + if (currentChar == '<') { + String name = signature.substring(start, offset - 1); + if (inner) { + signatureVisitor.visitInnerClassType(name); + } else { + signatureVisitor.visitClassType(name); + } + + visited = true; + + while ((currentChar = signature.charAt(offset)) != '>') { + switch (currentChar) { + case '*': + offset++; + signatureVisitor.visitTypeArgument(); + break; + case '+': + case '-': + offset = parseType(signature, offset + 1, signatureVisitor.visitTypeArgument(currentChar)); + break; + case ',': + default: + offset = parseType(signature, offset, signatureVisitor.visitTypeArgument('=')); + } + } + } + } else { + if (!visited) { + String name = signature.substring(start, offset - 1); + if (inner) { + signatureVisitor.visitInnerClassType(name); + } else { + signatureVisitor.visitClassType(name); + } + } + + if (currentChar == ';') { + signatureVisitor.visitEnd(); + return offset; + } + + start = offset; + visited = false; + inner = true; + } + } + case 'T': + int endOffset = signature.indexOf(59, offset); + signatureVisitor.visitTypeVariable(signature.substring(offset, endOffset)); + return endOffset + 1; + case '[': + return parseType(signature, offset, signatureVisitor.visitArrayType()); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureVisitor.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureVisitor.java new file mode 100644 index 0000000..b019b7c --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureVisitor.java @@ -0,0 +1,78 @@ +package dev.slinky.shaded.asm.signature; + +public abstract class SignatureVisitor { + public static final char EXTENDS = '+'; + public static final char SUPER = '-'; + public static final char INSTANCEOF = '='; + protected final int api; + + protected SignatureVisitor(int api) { + if (api != 589824 && api != 524288 && api != 458752 && api != 393216 && api != 327680 && api != 262144 && api != 17432576) { + throw new IllegalArgumentException(stringConcat$0(api)); + } else { + this.api = api; + } + } + + public void visitFormalTypeParameter(String name) { + } + + public SignatureVisitor visitClassBound() { + return this; + } + + public SignatureVisitor visitInterfaceBound() { + return this; + } + + public SignatureVisitor visitSuperclass() { + return this; + } + + public SignatureVisitor visitInterface() { + return this; + } + + public SignatureVisitor visitParameterType() { + return this; + } + + public SignatureVisitor visitReturnType() { + return this; + } + + public SignatureVisitor visitExceptionType() { + return this; + } + + public void visitBaseType(char descriptor) { + } + + public void visitTypeVariable(String name) { + } + + public SignatureVisitor visitArrayType() { + return this; + } + + public void visitClassType(String name) { + } + + public void visitInnerClassType(String name) { + } + + public void visitTypeArgument() { + } + + public SignatureVisitor visitTypeArgument(char wildcard) { + return this; + } + + public void visitEnd() { + } + + // Synthetic string-concatenation helpers recovered with CFR. + private static String stringConcat$0(int n) { + return "Unsupported api " + n; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureWriter.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureWriter.java new file mode 100644 index 0000000..fa0a757 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/signature/SignatureWriter.java @@ -0,0 +1,161 @@ +package dev.slinky.shaded.asm.signature; + +public class SignatureWriter extends SignatureVisitor { + private final StringBuilder stringBuilder; + private boolean hasFormals; + private boolean hasParameters; + private int argumentStack = 1; + + public SignatureWriter() { + this(new StringBuilder()); + } + + private SignatureWriter(StringBuilder stringBuilder) { + super(589824); + this.stringBuilder = stringBuilder; + } + + @Override + public void visitFormalTypeParameter(String name) { + if (!this.hasFormals) { + this.hasFormals = true; + this.stringBuilder.append('<'); + } + + this.stringBuilder.append(name); + this.stringBuilder.append(':'); + } + + @Override + public SignatureVisitor visitClassBound() { + return this; + } + + @Override + public SignatureVisitor visitInterfaceBound() { + this.stringBuilder.append(':'); + return this; + } + + @Override + public SignatureVisitor visitSuperclass() { + this.endFormals(); + return this; + } + + @Override + public SignatureVisitor visitInterface() { + return this; + } + + @Override + public SignatureVisitor visitParameterType() { + this.endFormals(); + if (!this.hasParameters) { + this.hasParameters = true; + this.stringBuilder.append('('); + } + + return this; + } + + @Override + public SignatureVisitor visitReturnType() { + this.endFormals(); + if (!this.hasParameters) { + this.stringBuilder.append('('); + } + + this.stringBuilder.append(')'); + return this; + } + + @Override + public SignatureVisitor visitExceptionType() { + this.stringBuilder.append('^'); + return this; + } + + @Override + public void visitBaseType(char descriptor) { + this.stringBuilder.append(descriptor); + } + + @Override + public void visitTypeVariable(String name) { + this.stringBuilder.append('T'); + this.stringBuilder.append(name); + this.stringBuilder.append(';'); + } + + @Override + public SignatureVisitor visitArrayType() { + this.stringBuilder.append('['); + return this; + } + + @Override + public void visitClassType(String name) { + this.stringBuilder.append('L'); + this.stringBuilder.append(name); + this.argumentStack <<= 1; + } + + @Override + public void visitInnerClassType(String name) { + this.endArguments(); + this.stringBuilder.append('.'); + this.stringBuilder.append(name); + this.argumentStack <<= 1; + } + + @Override + public void visitTypeArgument() { + if ((this.argumentStack & 1) == 0) { + this.argumentStack |= 1; + this.stringBuilder.append('<'); + } + + this.stringBuilder.append('*'); + } + + @Override + public SignatureVisitor visitTypeArgument(char wildcard) { + if ((this.argumentStack & 1) == 0) { + this.argumentStack |= 1; + this.stringBuilder.append('<'); + } + + if (wildcard != '=') { + this.stringBuilder.append(wildcard); + } + + return (this.argumentStack & -2147483648) == 0 ? this : new SignatureWriter(this.stringBuilder); + } + + @Override + public void visitEnd() { + this.endArguments(); + this.stringBuilder.append(';'); + } + + @Override + public String toString() { + return this.stringBuilder.toString(); + } + + private void endFormals() { + if (this.hasFormals) { + this.hasFormals = false; + this.stringBuilder.append('>'); + } + } + + private void endArguments() { + if ((this.argumentStack & 1) == 1) { + this.stringBuilder.append('>'); + } + + this.argumentStack >>>= 1; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AbstractInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AbstractInsnNode.java new file mode 100644 index 0000000..ed9d85a --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AbstractInsnNode.java @@ -0,0 +1,117 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public abstract class AbstractInsnNode { + public static final int INSN = 0; + public static final int INT_INSN = 1; + public static final int VAR_INSN = 2; + public static final int TYPE_INSN = 3; + public static final int FIELD_INSN = 4; + public static final int METHOD_INSN = 5; + public static final int INVOKE_DYNAMIC_INSN = 6; + public static final int JUMP_INSN = 7; + public static final int LABEL = 8; + public static final int LDC_INSN = 9; + public static final int IINC_INSN = 10; + public static final int TABLESWITCH_INSN = 11; + public static final int LOOKUPSWITCH_INSN = 12; + public static final int MULTIANEWARRAY_INSN = 13; + public static final int FRAME = 14; + public static final int LINE = 15; + protected int opcode; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + AbstractInsnNode previousInsn; + AbstractInsnNode nextInsn; + int index; + + protected AbstractInsnNode(int opcode) { + this.opcode = opcode; + this.index = -1; + } + + public int getOpcode() { + return this.opcode; + } + + public abstract int getType(); + + public AbstractInsnNode getPrevious() { + return this.previousInsn; + } + + public AbstractInsnNode getNext() { + return this.nextInsn; + } + + public abstract void accept(MethodVisitor var1); + + protected final void acceptAnnotations(MethodVisitor methodVisitor) { + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitInsnAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitInsnAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + } + + public abstract AbstractInsnNode clone(Map var1); + + static LabelNode clone(LabelNode label, Map clonedLabels) { + return clonedLabels.get(label); + } + + static LabelNode[] clone(List labels, Map clonedLabels) { + LabelNode[] clones = new LabelNode[labels.size()]; + int i = 0; + + for (int n = clones.length; i < n; i++) { + clones[i] = clonedLabels.get(labels.get(i)); + } + + return clones; + } + + protected final AbstractInsnNode cloneAnnotations(AbstractInsnNode insnNode) { + if (insnNode.visibleTypeAnnotations != null) { + this.visibleTypeAnnotations = new ArrayList<>(); + int i = 0; + + for (int n = insnNode.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode sourceAnnotation = insnNode.visibleTypeAnnotations.get(i); + TypeAnnotationNode cloneAnnotation = new TypeAnnotationNode(sourceAnnotation.typeRef, sourceAnnotation.typePath, sourceAnnotation.desc); + sourceAnnotation.accept(cloneAnnotation); + this.visibleTypeAnnotations.add(cloneAnnotation); + } + } + + if (insnNode.invisibleTypeAnnotations != null) { + this.invisibleTypeAnnotations = new ArrayList<>(); + int i = 0; + + for (int n = insnNode.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode sourceAnnotation = insnNode.invisibleTypeAnnotations.get(i); + TypeAnnotationNode cloneAnnotation = new TypeAnnotationNode(sourceAnnotation.typeRef, sourceAnnotation.typePath, sourceAnnotation.desc); + sourceAnnotation.accept(cloneAnnotation); + this.invisibleTypeAnnotations.add(cloneAnnotation); + } + } + + return this; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AnnotationNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AnnotationNode.java new file mode 100644 index 0000000..5e89768 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/AnnotationNode.java @@ -0,0 +1,150 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.AnnotationVisitor; +import java.util.ArrayList; +import java.util.List; + +public class AnnotationNode extends AnnotationVisitor { + public String desc; + public List values; + + public AnnotationNode(String descriptor) { + this(589824, descriptor); + if (this.getClass() != AnnotationNode.class) { + throw new IllegalStateException(); + } + } + + public AnnotationNode(int api, String descriptor) { + super(api); + this.desc = descriptor; + } + + AnnotationNode(List values) { + super(589824); + this.values = values; + } + + @Override + public void visit(String name, Object value) { + if (this.values == null) { + this.values = new ArrayList<>(this.desc != null ? 2 : 1); + } + + if (this.desc != null) { + this.values.add(name); + } + + if (value instanceof byte[]) { + this.values.add(Util.asArrayList((byte[])value)); + } else if (value instanceof boolean[]) { + this.values.add(Util.asArrayList((boolean[])value)); + } else if (value instanceof short[]) { + this.values.add(Util.asArrayList((short[])value)); + } else if (value instanceof char[]) { + this.values.add(Util.asArrayList((char[])value)); + } else if (value instanceof int[]) { + this.values.add(Util.asArrayList((int[])value)); + } else if (value instanceof long[]) { + this.values.add(Util.asArrayList((long[])value)); + } else if (value instanceof float[]) { + this.values.add(Util.asArrayList((float[])value)); + } else if (value instanceof double[]) { + this.values.add(Util.asArrayList((double[])value)); + } else { + this.values.add(value); + } + } + + @Override + public void visitEnum(String name, String descriptor, String value) { + if (this.values == null) { + this.values = new ArrayList<>(this.desc != null ? 2 : 1); + } + + if (this.desc != null) { + this.values.add(name); + } + + this.values.add(new String[]{descriptor, value}); + } + + @Override + public AnnotationVisitor visitAnnotation(String name, String descriptor) { + if (this.values == null) { + this.values = new ArrayList<>(this.desc != null ? 2 : 1); + } + + if (this.desc != null) { + this.values.add(name); + } + + AnnotationNode annotation = new AnnotationNode(descriptor); + this.values.add(annotation); + return annotation; + } + + @Override + public AnnotationVisitor visitArray(String name) { + if (this.values == null) { + this.values = new ArrayList<>(this.desc != null ? 2 : 1); + } + + if (this.desc != null) { + this.values.add(name); + } + + List array = new ArrayList<>(); + this.values.add(array); + return new AnnotationNode(array); + } + + @Override + public void visitEnd() { + } + + public void check(int api) { + } + + public void accept(AnnotationVisitor annotationVisitor) { + if (annotationVisitor != null) { + if (this.values != null) { + int i = 0; + + for (int n = this.values.size(); i < n; i += 2) { + String name = (String)this.values.get(i); + Object value = this.values.get(i + 1); + accept(annotationVisitor, name, value); + } + } + + annotationVisitor.visitEnd(); + } + } + + static void accept(AnnotationVisitor annotationVisitor, String name, Object value) { + if (annotationVisitor != null) { + if (value instanceof String[]) { + String[] typeValue = (String[])value; + annotationVisitor.visitEnum(name, typeValue[0], typeValue[1]); + } else if (value instanceof AnnotationNode) { + AnnotationNode annotationValue = (AnnotationNode)value; + annotationValue.accept(annotationVisitor.visitAnnotation(name, annotationValue.desc)); + } else if (value instanceof List) { + AnnotationVisitor arrayAnnotationVisitor = annotationVisitor.visitArray(name); + if (arrayAnnotationVisitor != null) { + List arrayValue = (List)value; + int i = 0; + + for (int n = arrayValue.size(); i < n; i++) { + accept(arrayAnnotationVisitor, null, arrayValue.get(i)); + } + + arrayAnnotationVisitor.visitEnd(); + } + } else { + annotationVisitor.visit(name, value); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ClassNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ClassNode.java new file mode 100644 index 0000000..743aacf --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ClassNode.java @@ -0,0 +1,327 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.AnnotationVisitor; +import dev.slinky.shaded.asm.Attribute; +import dev.slinky.shaded.asm.ClassVisitor; +import dev.slinky.shaded.asm.FieldVisitor; +import dev.slinky.shaded.asm.MethodVisitor; +import dev.slinky.shaded.asm.ModuleVisitor; +import dev.slinky.shaded.asm.RecordComponentVisitor; +import dev.slinky.shaded.asm.TypePath; +import java.util.ArrayList; +import java.util.List; + +public class ClassNode extends ClassVisitor { + public int version; + public int access; + public String name; + public String signature; + public String superName; + public List interfaces = new ArrayList<>(); + public String sourceFile; + public String sourceDebug; + public ModuleNode module; + public String outerClass; + public String outerMethod; + public String outerMethodDesc; + public List visibleAnnotations; + public List invisibleAnnotations; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + public List attrs; + public List innerClasses = new ArrayList<>(); + public String nestHostClass; + public List nestMembers; + public List permittedSubclasses; + public List recordComponents; + public List fields = new ArrayList<>(); + public List methods = new ArrayList<>(); + + public ClassNode() { + this(589824); + if (this.getClass() != ClassNode.class) { + throw new IllegalStateException(); + } + } + + public ClassNode(int api) { + super(api); + } + + @Override + public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { + this.version = version; + this.access = access; + this.name = name; + this.signature = signature; + this.superName = superName; + this.interfaces = Util.asArrayList(interfaces); + } + + @Override + public void visitSource(String file, String debug) { + this.sourceFile = file; + this.sourceDebug = debug; + } + + @Override + public ModuleVisitor visitModule(String name, int access, String version) { + this.module = new ModuleNode(name, access, version); + return this.module; + } + + @Override + public void visitNestHost(String nestHost) { + this.nestHostClass = nestHost; + } + + @Override + public void visitOuterClass(String owner, String name, String descriptor) { + this.outerClass = owner; + this.outerMethod = name; + this.outerMethodDesc = descriptor; + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + AnnotationNode annotation = new AnnotationNode(descriptor); + if (visible) { + this.visibleAnnotations = Util.add(this.visibleAnnotations, annotation); + } else { + this.invisibleAnnotations = Util.add(this.invisibleAnnotations, annotation); + } + + return annotation; + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + this.visibleTypeAnnotations = Util.add(this.visibleTypeAnnotations, typeAnnotation); + } else { + this.invisibleTypeAnnotations = Util.add(this.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitAttribute(Attribute attribute) { + this.attrs = Util.add(this.attrs, attribute); + } + + @Override + public void visitNestMember(String nestMember) { + this.nestMembers = Util.add(this.nestMembers, nestMember); + } + + @Override + public void visitPermittedSubclass(String permittedSubclass) { + this.permittedSubclasses = Util.add(this.permittedSubclasses, permittedSubclass); + } + + @Override + public void visitInnerClass(String name, String outerName, String innerName, int access) { + InnerClassNode innerClass = new InnerClassNode(name, outerName, innerName, access); + this.innerClasses.add(innerClass); + } + + @Override + public RecordComponentVisitor visitRecordComponent(String name, String descriptor, String signature) { + RecordComponentNode recordComponent = new RecordComponentNode(name, descriptor, signature); + this.recordComponents = Util.add(this.recordComponents, recordComponent); + return recordComponent; + } + + @Override + public FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value) { + FieldNode field = new FieldNode(access, name, descriptor, signature, value); + this.fields.add(field); + return field; + } + + @Override + public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { + MethodNode method = new MethodNode(access, name, descriptor, signature, exceptions); + this.methods.add(method); + return method; + } + + @Override + public void visitEnd() { + } + + public void check(int api) { + if (api < 589824 && this.permittedSubclasses != null) { + throw new UnsupportedClassVersionException(); + } else if (api >= 524288 || (this.access & 65536) == 0 && this.recordComponents == null) { + if (api >= 458752 || this.nestHostClass == null && this.nestMembers == null) { + if (api < 393216 && this.module != null) { + throw new UnsupportedClassVersionException(); + } else { + if (api < 327680) { + if (this.visibleTypeAnnotations != null && !this.visibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.invisibleTypeAnnotations != null && !this.invisibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + } + + if (this.visibleAnnotations != null) { + for (int i = this.visibleAnnotations.size() - 1; i >= 0; i--) { + this.visibleAnnotations.get(i).check(api); + } + } + + if (this.invisibleAnnotations != null) { + for (int i = this.invisibleAnnotations.size() - 1; i >= 0; i--) { + this.invisibleAnnotations.get(i).check(api); + } + } + + if (this.visibleTypeAnnotations != null) { + for (int i = this.visibleTypeAnnotations.size() - 1; i >= 0; i--) { + this.visibleTypeAnnotations.get(i).check(api); + } + } + + if (this.invisibleTypeAnnotations != null) { + for (int i = this.invisibleTypeAnnotations.size() - 1; i >= 0; i--) { + this.invisibleTypeAnnotations.get(i).check(api); + } + } + + if (this.recordComponents != null) { + for (int i = this.recordComponents.size() - 1; i >= 0; i--) { + this.recordComponents.get(i).check(api); + } + } + + for (int i = this.fields.size() - 1; i >= 0; i--) { + this.fields.get(i).check(api); + } + + for (int i = this.methods.size() - 1; i >= 0; i--) { + this.methods.get(i).check(api); + } + } + } else { + throw new UnsupportedClassVersionException(); + } + } else { + throw new UnsupportedClassVersionException(); + } + } + + public void accept(ClassVisitor classVisitor) { + String[] interfacesArray = new String[this.interfaces.size()]; + this.interfaces.toArray(interfacesArray); + classVisitor.visit(this.version, this.access, this.name, this.signature, this.superName, interfacesArray); + if (this.sourceFile != null || this.sourceDebug != null) { + classVisitor.visitSource(this.sourceFile, this.sourceDebug); + } + + if (this.module != null) { + this.module.accept(classVisitor); + } + + if (this.nestHostClass != null) { + classVisitor.visitNestHost(this.nestHostClass); + } + + if (this.outerClass != null) { + classVisitor.visitOuterClass(this.outerClass, this.outerMethod, this.outerMethodDesc); + } + + if (this.visibleAnnotations != null) { + int i = 0; + + for (int n = this.visibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.visibleAnnotations.get(i); + annotation.accept(classVisitor.visitAnnotation(annotation.desc, true)); + } + } + + if (this.invisibleAnnotations != null) { + int i = 0; + + for (int n = this.invisibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.invisibleAnnotations.get(i); + annotation.accept(classVisitor.visitAnnotation(annotation.desc, false)); + } + } + + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(classVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(classVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + + if (this.attrs != null) { + int i = 0; + + for (int n = this.attrs.size(); i < n; i++) { + classVisitor.visitAttribute(this.attrs.get(i)); + } + } + + if (this.nestMembers != null) { + int i = 0; + + for (int n = this.nestMembers.size(); i < n; i++) { + classVisitor.visitNestMember(this.nestMembers.get(i)); + } + } + + if (this.permittedSubclasses != null) { + int i = 0; + + for (int n = this.permittedSubclasses.size(); i < n; i++) { + classVisitor.visitPermittedSubclass(this.permittedSubclasses.get(i)); + } + } + + int i = 0; + + for (int n = this.innerClasses.size(); i < n; i++) { + this.innerClasses.get(i).accept(classVisitor); + } + + if (this.recordComponents != null) { + i = 0; + + for (int n = this.recordComponents.size(); i < n; i++) { + this.recordComponents.get(i).accept(classVisitor); + } + } + + i = 0; + + for (int n = this.fields.size(); i < n; i++) { + this.fields.get(i).accept(classVisitor); + } + + i = 0; + + for (int n = this.methods.size(); i < n; i++) { + this.methods.get(i).accept(classVisitor); + } + + classVisitor.visitEnd(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldInsnNode.java new file mode 100644 index 0000000..b3223a8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldInsnNode.java @@ -0,0 +1,37 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class FieldInsnNode extends AbstractInsnNode { + public String owner; + public String name; + public String desc; + + public FieldInsnNode(int opcode, String owner, String name, String descriptor) { + super(opcode); + this.owner = owner; + this.name = name; + this.desc = descriptor; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 4; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitFieldInsn(this.opcode, this.owner, this.name, this.desc); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new FieldInsnNode(this.opcode, this.owner, this.name, this.desc).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldNode.java new file mode 100644 index 0000000..8682a23 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FieldNode.java @@ -0,0 +1,133 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.AnnotationVisitor; +import dev.slinky.shaded.asm.Attribute; +import dev.slinky.shaded.asm.ClassVisitor; +import dev.slinky.shaded.asm.FieldVisitor; +import dev.slinky.shaded.asm.TypePath; +import java.util.List; + +public class FieldNode extends FieldVisitor { + public int access; + public String name; + public String desc; + public String signature; + public Object value; + public List visibleAnnotations; + public List invisibleAnnotations; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + public List attrs; + + public FieldNode(int access, String name, String descriptor, String signature, Object value) { + this(589824, access, name, descriptor, signature, value); + if (this.getClass() != FieldNode.class) { + throw new IllegalStateException(); + } + } + + public FieldNode(int api, int access, String name, String descriptor, String signature, Object value) { + super(api); + this.access = access; + this.name = name; + this.desc = descriptor; + this.signature = signature; + this.value = value; + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + AnnotationNode annotation = new AnnotationNode(descriptor); + if (visible) { + this.visibleAnnotations = Util.add(this.visibleAnnotations, annotation); + } else { + this.invisibleAnnotations = Util.add(this.invisibleAnnotations, annotation); + } + + return annotation; + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + this.visibleTypeAnnotations = Util.add(this.visibleTypeAnnotations, typeAnnotation); + } else { + this.invisibleTypeAnnotations = Util.add(this.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitAttribute(Attribute attribute) { + this.attrs = Util.add(this.attrs, attribute); + } + + @Override + public void visitEnd() { + } + + public void check(int api) { + if (api == 262144) { + if (this.visibleTypeAnnotations != null && !this.visibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.invisibleTypeAnnotations != null && !this.invisibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + } + } + + public void accept(ClassVisitor classVisitor) { + FieldVisitor fieldVisitor = classVisitor.visitField(this.access, this.name, this.desc, this.signature, this.value); + if (fieldVisitor != null) { + if (this.visibleAnnotations != null) { + int i = 0; + + for (int n = this.visibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.visibleAnnotations.get(i); + annotation.accept(fieldVisitor.visitAnnotation(annotation.desc, true)); + } + } + + if (this.invisibleAnnotations != null) { + int i = 0; + + for (int n = this.invisibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.invisibleAnnotations.get(i); + annotation.accept(fieldVisitor.visitAnnotation(annotation.desc, false)); + } + } + + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(fieldVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(fieldVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + + if (this.attrs != null) { + int i = 0; + + for (int n = this.attrs.size(); i < n; i++) { + fieldVisitor.visitAttribute(this.attrs.get(i)); + } + } + + fieldVisitor.visitEnd(); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FrameNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FrameNode.java new file mode 100644 index 0000000..3e30a5b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/FrameNode.java @@ -0,0 +1,120 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class FrameNode extends AbstractInsnNode { + public int type; + public List local; + public List stack; + + private FrameNode() { + super(-1); + } + + public FrameNode(int type, int numLocal, Object[] local, int numStack, Object[] stack) { + super(-1); + this.type = type; + switch (type) { + case -1: + case 0: + this.local = Util.asArrayList(numLocal, local); + this.stack = Util.asArrayList(numStack, stack); + break; + case 1: + this.local = Util.asArrayList(numLocal, local); + break; + case 2: + this.local = Util.asArrayList(numLocal); + case 3: + break; + case 4: + this.stack = Util.asArrayList(1, stack); + break; + default: + throw new IllegalArgumentException(); + } + } + + @Override + public int getType() { + return 14; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + switch (this.type) { + case -1: + case 0: + methodVisitor.visitFrame(this.type, this.local.size(), asArray(this.local), this.stack.size(), asArray(this.stack)); + break; + case 1: + methodVisitor.visitFrame(this.type, this.local.size(), asArray(this.local), 0, null); + break; + case 2: + methodVisitor.visitFrame(this.type, this.local.size(), null, 0, null); + break; + case 3: + methodVisitor.visitFrame(this.type, 0, null, 0, null); + break; + case 4: + methodVisitor.visitFrame(this.type, 0, null, 1, asArray(this.stack)); + break; + default: + throw new IllegalArgumentException(); + } + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + FrameNode clone = new FrameNode(); + clone.type = this.type; + if (this.local != null) { + clone.local = new ArrayList<>(); + int i = 0; + + for (int n = this.local.size(); i < n; i++) { + Object localElement = this.local.get(i); + if (localElement instanceof LabelNode) { + localElement = clonedLabels.get(localElement); + } + + clone.local.add(localElement); + } + } + + if (this.stack != null) { + clone.stack = new ArrayList<>(); + int i = 0; + + for (int n = this.stack.size(); i < n; i++) { + Object stackElement = this.stack.get(i); + if (stackElement instanceof LabelNode) { + stackElement = clonedLabels.get(stackElement); + } + + clone.stack.add(stackElement); + } + } + + return clone; + } + + private static Object[] asArray(List list) { + Object[] array = new Object[list.size()]; + int i = 0; + + for (int n = array.length; i < n; i++) { + Object o = list.get(i); + if (o instanceof LabelNode) { + o = ((LabelNode)o).getLabel(); + } + + array[i] = o; + } + + return array; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IincInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IincInsnNode.java new file mode 100644 index 0000000..d3dddc2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IincInsnNode.java @@ -0,0 +1,31 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class IincInsnNode extends AbstractInsnNode { + public int var; + public int incr; + + public IincInsnNode(int varIndex, int incr) { + super(132); + this.var = varIndex; + this.incr = incr; + } + + @Override + public int getType() { + return 10; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitIincInsn(this.var, this.incr); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new IincInsnNode(this.var, this.incr).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InnerClassNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InnerClassNode.java new file mode 100644 index 0000000..250c281 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InnerClassNode.java @@ -0,0 +1,21 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ClassVisitor; + +public class InnerClassNode { + public String name; + public String outerName; + public String innerName; + public int access; + + public InnerClassNode(String name, String outerName, String innerName, int access) { + this.name = name; + this.outerName = outerName; + this.innerName = innerName; + this.access = access; + } + + public void accept(ClassVisitor classVisitor) { + classVisitor.visitInnerClass(this.name, this.outerName, this.innerName, this.access); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnList.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnList.java new file mode 100644 index 0000000..7527bfe --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnList.java @@ -0,0 +1,438 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.ListIterator; +import java.util.NoSuchElementException; + +public class InsnList implements Iterable { + private int size; + private AbstractInsnNode firstInsn; + private AbstractInsnNode lastInsn; + AbstractInsnNode[] cache; + + public int size() { + return this.size; + } + + public AbstractInsnNode getFirst() { + return this.firstInsn; + } + + public AbstractInsnNode getLast() { + return this.lastInsn; + } + + public AbstractInsnNode get(int index) { + if (index >= 0 && index < this.size) { + if (this.cache == null) { + this.cache = this.toArray(); + } + + return this.cache[index]; + } else { + throw new IndexOutOfBoundsException(); + } + } + + public boolean contains(AbstractInsnNode insnNode) { + AbstractInsnNode currentInsn = this.firstInsn; + + while (currentInsn != null && currentInsn != insnNode) { + currentInsn = currentInsn.nextInsn; + } + + return currentInsn != null; + } + + public int indexOf(AbstractInsnNode insnNode) { + if (this.cache == null) { + this.cache = this.toArray(); + } + + return insnNode.index; + } + + public void accept(MethodVisitor methodVisitor) { + for (AbstractInsnNode currentInsn = this.firstInsn; currentInsn != null; currentInsn = currentInsn.nextInsn) { + currentInsn.accept(methodVisitor); + } + } + + public ListIterator iterator() { + return this.iterator(0); + } + + public ListIterator iterator(int index) { + return new InsnList.InsnListIterator(index); + } + + public AbstractInsnNode[] toArray() { + int currentInsnIndex = 0; + AbstractInsnNode currentInsn = this.firstInsn; + + AbstractInsnNode[] insnNodeArray; + for (insnNodeArray = new AbstractInsnNode[this.size]; currentInsn != null; currentInsn = currentInsn.nextInsn) { + insnNodeArray[currentInsnIndex] = currentInsn; + currentInsn.index = currentInsnIndex++; + } + + return insnNodeArray; + } + + public void set(AbstractInsnNode oldInsnNode, AbstractInsnNode newInsnNode) { + AbstractInsnNode nextInsn = oldInsnNode.nextInsn; + newInsnNode.nextInsn = nextInsn; + if (nextInsn != null) { + nextInsn.previousInsn = newInsnNode; + } else { + this.lastInsn = newInsnNode; + } + + AbstractInsnNode previousInsn = oldInsnNode.previousInsn; + newInsnNode.previousInsn = previousInsn; + if (previousInsn != null) { + previousInsn.nextInsn = newInsnNode; + } else { + this.firstInsn = newInsnNode; + } + + if (this.cache != null) { + int index = oldInsnNode.index; + this.cache[index] = newInsnNode; + newInsnNode.index = index; + } else { + newInsnNode.index = 0; + } + + oldInsnNode.index = -1; + oldInsnNode.previousInsn = null; + oldInsnNode.nextInsn = null; + } + + public void add(AbstractInsnNode insnNode) { + this.size++; + if (this.lastInsn == null) { + this.firstInsn = insnNode; + this.lastInsn = insnNode; + } else { + this.lastInsn.nextInsn = insnNode; + insnNode.previousInsn = this.lastInsn; + } + + this.lastInsn = insnNode; + this.cache = null; + insnNode.index = 0; + } + + public void add(InsnList insnList) { + if (insnList.size != 0) { + this.size = this.size + insnList.size; + if (this.lastInsn == null) { + this.firstInsn = insnList.firstInsn; + this.lastInsn = insnList.lastInsn; + } else { + AbstractInsnNode firstInsnListElement = insnList.firstInsn; + this.lastInsn.nextInsn = firstInsnListElement; + firstInsnListElement.previousInsn = this.lastInsn; + this.lastInsn = insnList.lastInsn; + } + + this.cache = null; + insnList.removeAll(false); + } + } + + public void insert(AbstractInsnNode insnNode) { + this.size++; + if (this.firstInsn == null) { + this.firstInsn = insnNode; + this.lastInsn = insnNode; + } else { + this.firstInsn.previousInsn = insnNode; + insnNode.nextInsn = this.firstInsn; + } + + this.firstInsn = insnNode; + this.cache = null; + insnNode.index = 0; + } + + public void insert(InsnList insnList) { + if (insnList.size != 0) { + this.size = this.size + insnList.size; + if (this.firstInsn == null) { + this.firstInsn = insnList.firstInsn; + this.lastInsn = insnList.lastInsn; + } else { + AbstractInsnNode lastInsnListElement = insnList.lastInsn; + this.firstInsn.previousInsn = lastInsnListElement; + lastInsnListElement.nextInsn = this.firstInsn; + this.firstInsn = insnList.firstInsn; + } + + this.cache = null; + insnList.removeAll(false); + } + } + + public void insert(AbstractInsnNode previousInsn, AbstractInsnNode insnNode) { + this.size++; + AbstractInsnNode nextInsn = previousInsn.nextInsn; + if (nextInsn == null) { + this.lastInsn = insnNode; + } else { + nextInsn.previousInsn = insnNode; + } + + previousInsn.nextInsn = insnNode; + insnNode.nextInsn = nextInsn; + insnNode.previousInsn = previousInsn; + this.cache = null; + insnNode.index = 0; + } + + public void insert(AbstractInsnNode previousInsn, InsnList insnList) { + if (insnList.size != 0) { + this.size = this.size + insnList.size; + AbstractInsnNode firstInsnListElement = insnList.firstInsn; + AbstractInsnNode lastInsnListElement = insnList.lastInsn; + AbstractInsnNode nextInsn = previousInsn.nextInsn; + if (nextInsn == null) { + this.lastInsn = lastInsnListElement; + } else { + nextInsn.previousInsn = lastInsnListElement; + } + + previousInsn.nextInsn = firstInsnListElement; + lastInsnListElement.nextInsn = nextInsn; + firstInsnListElement.previousInsn = previousInsn; + this.cache = null; + insnList.removeAll(false); + } + } + + public void insertBefore(AbstractInsnNode nextInsn, AbstractInsnNode insnNode) { + this.size++; + AbstractInsnNode previousInsn = nextInsn.previousInsn; + if (previousInsn == null) { + this.firstInsn = insnNode; + } else { + previousInsn.nextInsn = insnNode; + } + + nextInsn.previousInsn = insnNode; + insnNode.nextInsn = nextInsn; + insnNode.previousInsn = previousInsn; + this.cache = null; + insnNode.index = 0; + } + + public void insertBefore(AbstractInsnNode nextInsn, InsnList insnList) { + if (insnList.size != 0) { + this.size = this.size + insnList.size; + AbstractInsnNode firstInsnListElement = insnList.firstInsn; + AbstractInsnNode lastInsnListElement = insnList.lastInsn; + AbstractInsnNode previousInsn = nextInsn.previousInsn; + if (previousInsn == null) { + this.firstInsn = firstInsnListElement; + } else { + previousInsn.nextInsn = firstInsnListElement; + } + + nextInsn.previousInsn = lastInsnListElement; + lastInsnListElement.nextInsn = nextInsn; + firstInsnListElement.previousInsn = previousInsn; + this.cache = null; + insnList.removeAll(false); + } + } + + public void remove(AbstractInsnNode insnNode) { + this.size--; + AbstractInsnNode nextInsn = insnNode.nextInsn; + AbstractInsnNode previousInsn = insnNode.previousInsn; + if (nextInsn == null) { + if (previousInsn == null) { + this.firstInsn = null; + this.lastInsn = null; + } else { + previousInsn.nextInsn = null; + this.lastInsn = previousInsn; + } + } else if (previousInsn == null) { + this.firstInsn = nextInsn; + nextInsn.previousInsn = null; + } else { + previousInsn.nextInsn = nextInsn; + nextInsn.previousInsn = previousInsn; + } + + this.cache = null; + insnNode.index = -1; + insnNode.previousInsn = null; + insnNode.nextInsn = null; + } + + void removeAll(boolean mark) { + if (mark) { + AbstractInsnNode currentInsn = this.firstInsn; + + while (currentInsn != null) { + AbstractInsnNode next = currentInsn.nextInsn; + currentInsn.index = -1; + currentInsn.previousInsn = null; + currentInsn.nextInsn = null; + currentInsn = next; + } + } + + this.size = 0; + this.firstInsn = null; + this.lastInsn = null; + this.cache = null; + } + + public void clear() { + this.removeAll(false); + } + + public void resetLabels() { + for (AbstractInsnNode currentInsn = this.firstInsn; currentInsn != null; currentInsn = currentInsn.nextInsn) { + if (currentInsn instanceof LabelNode) { + ((LabelNode)currentInsn).resetLabel(); + } + } + } + + private final class InsnListIterator implements ListIterator { + AbstractInsnNode nextInsn; + AbstractInsnNode previousInsn; + AbstractInsnNode remove; + + InsnListIterator(int index) { + if (index >= 0 && index <= InsnList.this.size()) { + if (index == InsnList.this.size()) { + this.nextInsn = null; + this.previousInsn = InsnList.this.getLast(); + } else { + AbstractInsnNode currentInsn = InsnList.this.getFirst(); + + for (int i = 0; i < index; i++) { + currentInsn = currentInsn.nextInsn; + } + + this.nextInsn = currentInsn; + this.previousInsn = currentInsn.previousInsn; + } + } else { + throw new IndexOutOfBoundsException(); + } + } + + @Override + public boolean hasNext() { + return this.nextInsn != null; + } + + @Override + public Object next() { + if (this.nextInsn == null) { + throw new NoSuchElementException(); + } else { + AbstractInsnNode result = this.nextInsn; + this.previousInsn = result; + this.nextInsn = result.nextInsn; + this.remove = result; + return result; + } + } + + @Override + public void remove() { + if (this.remove != null) { + if (this.remove == this.nextInsn) { + this.nextInsn = this.nextInsn.nextInsn; + } else { + this.previousInsn = this.previousInsn.previousInsn; + } + + InsnList.this.remove(this.remove); + this.remove = null; + } else { + throw new IllegalStateException(); + } + } + + @Override + public boolean hasPrevious() { + return this.previousInsn != null; + } + + @Override + public Object previous() { + if (this.previousInsn == null) { + throw new NoSuchElementException(); + } else { + AbstractInsnNode result = this.previousInsn; + this.nextInsn = result; + this.previousInsn = result.previousInsn; + this.remove = result; + return result; + } + } + + @Override + public int nextIndex() { + if (this.nextInsn == null) { + return InsnList.this.size(); + } else { + if (InsnList.this.cache == null) { + InsnList.this.cache = InsnList.this.toArray(); + } + + return this.nextInsn.index; + } + } + + @Override + public int previousIndex() { + if (this.previousInsn == null) { + return -1; + } else { + if (InsnList.this.cache == null) { + InsnList.this.cache = InsnList.this.toArray(); + } + + return this.previousInsn.index; + } + } + + @Override + public void add(Object o) { + if (this.nextInsn != null) { + InsnList.this.insertBefore(this.nextInsn, (AbstractInsnNode)o); + } else if (this.previousInsn != null) { + InsnList.this.insert(this.previousInsn, (AbstractInsnNode)o); + } else { + InsnList.this.add((AbstractInsnNode)o); + } + + this.previousInsn = (AbstractInsnNode)o; + this.remove = null; + } + + @Override + public void set(Object o) { + if (this.remove != null) { + InsnList.this.set(this.remove, (AbstractInsnNode)o); + if (this.remove == this.previousInsn) { + this.previousInsn = (AbstractInsnNode)o; + } else { + this.nextInsn = (AbstractInsnNode)o; + } + } else { + throw new IllegalStateException(); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnNode.java new file mode 100644 index 0000000..75daaf8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InsnNode.java @@ -0,0 +1,26 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class InsnNode extends AbstractInsnNode { + public InsnNode(int opcode) { + super(opcode); + } + + @Override + public int getType() { + return 0; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitInsn(this.opcode); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new InsnNode(this.opcode).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IntInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IntInsnNode.java new file mode 100644 index 0000000..c64cd75 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/IntInsnNode.java @@ -0,0 +1,33 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class IntInsnNode extends AbstractInsnNode { + public int operand; + + public IntInsnNode(int opcode, int operand) { + super(opcode); + this.operand = operand; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 1; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitIntInsn(this.opcode, this.operand); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new IntInsnNode(this.opcode, this.operand).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InvokeDynamicInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InvokeDynamicInsnNode.java new file mode 100644 index 0000000..ff4e4c6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/InvokeDynamicInsnNode.java @@ -0,0 +1,36 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.Handle; +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class InvokeDynamicInsnNode extends AbstractInsnNode { + public String name; + public String desc; + public Handle bsm; + public Object[] bsmArgs; + + public InvokeDynamicInsnNode(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + super(186); + this.name = name; + this.desc = descriptor; + this.bsm = bootstrapMethodHandle; + this.bsmArgs = bootstrapMethodArguments; + } + + @Override + public int getType() { + return 6; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitInvokeDynamicInsn(this.name, this.desc, this.bsm, this.bsmArgs); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new InvokeDynamicInsnNode(this.name, this.desc, this.bsm, this.bsmArgs).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/JumpInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/JumpInsnNode.java new file mode 100644 index 0000000..3f009b6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/JumpInsnNode.java @@ -0,0 +1,33 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class JumpInsnNode extends AbstractInsnNode { + public LabelNode label; + + public JumpInsnNode(int opcode, LabelNode label) { + super(opcode); + this.label = label; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 7; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitJumpInsn(this.opcode, this.label.getLabel()); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new JumpInsnNode(this.opcode, clone(this.label, clonedLabels)).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LabelNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LabelNode.java new file mode 100644 index 0000000..1d292d7 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LabelNode.java @@ -0,0 +1,45 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.Label; +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class LabelNode extends AbstractInsnNode { + private Label value; + + public LabelNode() { + super(-1); + } + + public LabelNode(Label label) { + super(-1); + this.value = label; + } + + @Override + public int getType() { + return 8; + } + + public Label getLabel() { + if (this.value == null) { + this.value = new Label(); + } + + return this.value; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitLabel(this.getLabel()); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return clonedLabels.get(this); + } + + public void resetLabel() { + this.value = null; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LdcInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LdcInsnNode.java new file mode 100644 index 0000000..89762be --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LdcInsnNode.java @@ -0,0 +1,29 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class LdcInsnNode extends AbstractInsnNode { + public Object cst; + + public LdcInsnNode(Object value) { + super(18); + this.cst = value; + } + + @Override + public int getType() { + return 9; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitLdcInsn(this.cst); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new LdcInsnNode(this.cst).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LineNumberNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LineNumberNode.java new file mode 100644 index 0000000..6497ec8 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LineNumberNode.java @@ -0,0 +1,30 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class LineNumberNode extends AbstractInsnNode { + public int line; + public LabelNode start; + + public LineNumberNode(int line, LabelNode start) { + super(-1); + this.line = line; + this.start = start; + } + + @Override + public int getType() { + return 15; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitLineNumber(this.line, this.start.getLabel()); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new LineNumberNode(this.line, clone(this.start, clonedLabels)); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableAnnotationNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableAnnotationNode.java new file mode 100644 index 0000000..af30a2b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableAnnotationNode.java @@ -0,0 +1,38 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.Label; +import dev.slinky.shaded.asm.MethodVisitor; +import dev.slinky.shaded.asm.TypePath; +import java.util.List; + +public class LocalVariableAnnotationNode extends TypeAnnotationNode { + public List start; + public List end; + public List index; + + public LocalVariableAnnotationNode(int typeRef, TypePath typePath, LabelNode[] start, LabelNode[] end, int[] index, String descriptor) { + this(589824, typeRef, typePath, start, end, index, descriptor); + } + + public LocalVariableAnnotationNode(int api, int typeRef, TypePath typePath, LabelNode[] start, LabelNode[] end, int[] index, String descriptor) { + super(api, typeRef, typePath, descriptor); + this.start = Util.asArrayList(start); + this.end = Util.asArrayList(end); + this.index = Util.asArrayList(index); + } + + public void accept(MethodVisitor methodVisitor, boolean visible) { + Label[] startLabels = new Label[this.start.size()]; + Label[] endLabels = new Label[this.end.size()]; + int[] indices = new int[this.index.size()]; + int i = 0; + + for (int n = startLabels.length; i < n; i++) { + startLabels[i] = this.start.get(i).getLabel(); + endLabels[i] = this.end.get(i).getLabel(); + indices[i] = this.index.get(i); + } + + this.accept(methodVisitor.visitLocalVariableAnnotation(this.typeRef, this.typePath, startLabels, endLabels, indices, this.desc, visible)); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableNode.java new file mode 100644 index 0000000..aaa5f8e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LocalVariableNode.java @@ -0,0 +1,25 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; + +public class LocalVariableNode { + public String name; + public String desc; + public String signature; + public LabelNode start; + public LabelNode end; + public int index; + + public LocalVariableNode(String name, String descriptor, String signature, LabelNode start, LabelNode end, int index) { + this.name = name; + this.desc = descriptor; + this.signature = signature; + this.start = start; + this.end = end; + this.index = index; + } + + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitLocalVariable(this.name, this.desc, this.signature, this.start.getLabel(), this.end.getLabel(), this.index); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LookupSwitchInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LookupSwitchInsnNode.java new file mode 100644 index 0000000..6394aa6 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/LookupSwitchInsnNode.java @@ -0,0 +1,51 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.Label; +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.List; +import java.util.Map; + +public class LookupSwitchInsnNode extends AbstractInsnNode { + public LabelNode dflt; + public List keys; + public List labels; + + public LookupSwitchInsnNode(LabelNode dflt, int[] keys, LabelNode[] labels) { + super(171); + this.dflt = dflt; + this.keys = Util.asArrayList(keys); + this.labels = Util.asArrayList(labels); + } + + @Override + public int getType() { + return 12; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + int[] keysArray = new int[this.keys.size()]; + int i = 0; + + for (int n = keysArray.length; i < n; i++) { + keysArray[i] = this.keys.get(i); + } + + Label[] labelsArray = new Label[this.labels.size()]; + int ix = 0; + + for (int n = labelsArray.length; ix < n; ix++) { + labelsArray[ix] = this.labels.get(ix).getLabel(); + } + + methodVisitor.visitLookupSwitchInsn(this.dflt.getLabel(), keysArray, labelsArray); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + LookupSwitchInsnNode clone = new LookupSwitchInsnNode(clone(this.dflt, clonedLabels), null, clone(this.labels, clonedLabels)); + clone.keys.addAll(this.keys); + return clone.cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodInsnNode.java new file mode 100644 index 0000000..1976834 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodInsnNode.java @@ -0,0 +1,43 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class MethodInsnNode extends AbstractInsnNode { + public String owner; + public String name; + public String desc; + public boolean itf; + + public MethodInsnNode(int opcode, String owner, String name, String descriptor) { + this(opcode, owner, name, descriptor, opcode == 185); + } + + public MethodInsnNode(int opcode, String owner, String name, String descriptor, boolean isInterface) { + super(opcode); + this.owner = owner; + this.name = name; + this.desc = descriptor; + this.itf = isInterface; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 5; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitMethodInsn(this.opcode, this.owner, this.name, this.desc, this.itf); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new MethodInsnNode(this.opcode, this.owner, this.name, this.desc, this.itf).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodNode.java new file mode 100644 index 0000000..0458a1e --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MethodNode.java @@ -0,0 +1,576 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.AnnotationVisitor; +import dev.slinky.shaded.asm.Attribute; +import dev.slinky.shaded.asm.ClassVisitor; +import dev.slinky.shaded.asm.ConstantDynamic; +import dev.slinky.shaded.asm.Handle; +import dev.slinky.shaded.asm.Label; +import dev.slinky.shaded.asm.MethodVisitor; +import dev.slinky.shaded.asm.Type; +import dev.slinky.shaded.asm.TypePath; +import java.util.ArrayList; +import java.util.List; + +public class MethodNode extends MethodVisitor { + public int access; + public String name; + public String desc; + public String signature; + public List exceptions; + public List parameters; + public List visibleAnnotations; + public List invisibleAnnotations; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + public List attrs; + public Object annotationDefault; + public int visibleAnnotableParameterCount; + public List[] visibleParameterAnnotations; + public int invisibleAnnotableParameterCount; + public List[] invisibleParameterAnnotations; + public InsnList instructions; + public List tryCatchBlocks; + public int maxStack; + public int maxLocals; + public List localVariables; + public List visibleLocalVariableAnnotations; + public List invisibleLocalVariableAnnotations; + private boolean visited; + + public MethodNode() { + this(589824); + if (this.getClass() != MethodNode.class) { + throw new IllegalStateException(); + } + } + + public MethodNode(int api) { + super(api); + this.instructions = new InsnList(); + } + + public MethodNode(int access, String name, String descriptor, String signature, String[] exceptions) { + this(589824, access, name, descriptor, signature, exceptions); + if (this.getClass() != MethodNode.class) { + throw new IllegalStateException(); + } + } + + public MethodNode(int api, int access, String name, String descriptor, String signature, String[] exceptions) { + super(api); + this.access = access; + this.name = name; + this.desc = descriptor; + this.signature = signature; + this.exceptions = Util.asArrayList(exceptions); + if ((access & 1024) == 0) { + this.localVariables = new ArrayList<>(5); + } + + this.tryCatchBlocks = new ArrayList<>(); + this.instructions = new InsnList(); + } + + @Override + public void visitParameter(String name, int access) { + if (this.parameters == null) { + this.parameters = new ArrayList<>(5); + } + + this.parameters.add(new ParameterNode(name, access)); + } + + @Override + public AnnotationVisitor visitAnnotationDefault() { + return new AnnotationNode(new ArrayList(0) { + @Override + public boolean add(Object o) { + MethodNode.this.annotationDefault = o; + return super.add(o); + } + }); + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + AnnotationNode annotation = new AnnotationNode(descriptor); + if (visible) { + this.visibleAnnotations = Util.add(this.visibleAnnotations, annotation); + } else { + this.invisibleAnnotations = Util.add(this.invisibleAnnotations, annotation); + } + + return annotation; + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + this.visibleTypeAnnotations = Util.add(this.visibleTypeAnnotations, typeAnnotation); + } else { + this.invisibleTypeAnnotations = Util.add(this.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitAnnotableParameterCount(int parameterCount, boolean visible) { + if (visible) { + this.visibleAnnotableParameterCount = parameterCount; + } else { + this.invisibleAnnotableParameterCount = parameterCount; + } + } + + @Override + public AnnotationVisitor visitParameterAnnotation(int parameter, String descriptor, boolean visible) { + AnnotationNode annotation = new AnnotationNode(descriptor); + if (visible) { + if (this.visibleParameterAnnotations == null) { + int params = Type.getArgumentCount(this.desc); + this.visibleParameterAnnotations = new List[params]; + } + + this.visibleParameterAnnotations[parameter] = Util.add(this.visibleParameterAnnotations[parameter], annotation); + } else { + if (this.invisibleParameterAnnotations == null) { + int params = Type.getArgumentCount(this.desc); + this.invisibleParameterAnnotations = new List[params]; + } + + this.invisibleParameterAnnotations[parameter] = Util.add(this.invisibleParameterAnnotations[parameter], annotation); + } + + return annotation; + } + + @Override + public void visitAttribute(Attribute attribute) { + this.attrs = Util.add(this.attrs, attribute); + } + + @Override + public void visitCode() { + } + + @Override + public void visitFrame(int type, int numLocal, Object[] local, int numStack, Object[] stack) { + this.instructions + .add(new FrameNode(type, numLocal, local == null ? null : this.getLabelNodes(local), numStack, stack == null ? null : this.getLabelNodes(stack))); + } + + @Override + public void visitInsn(int opcode) { + this.instructions.add(new InsnNode(opcode)); + } + + @Override + public void visitIntInsn(int opcode, int operand) { + this.instructions.add(new IntInsnNode(opcode, operand)); + } + + @Override + public void visitVarInsn(int opcode, int varIndex) { + this.instructions.add(new VarInsnNode(opcode, varIndex)); + } + + @Override + public void visitTypeInsn(int opcode, String type) { + this.instructions.add(new TypeInsnNode(opcode, type)); + } + + @Override + public void visitFieldInsn(int opcode, String owner, String name, String descriptor) { + this.instructions.add(new FieldInsnNode(opcode, owner, name, descriptor)); + } + + @Override + public void visitMethodInsn(int opcodeAndSource, String owner, String name, String descriptor, boolean isInterface) { + if (this.api < 327680 && (opcodeAndSource & 256) == 0) { + super.visitMethodInsn(opcodeAndSource, owner, name, descriptor, isInterface); + } else { + int opcode = opcodeAndSource & -257; + this.instructions.add(new MethodInsnNode(opcode, owner, name, descriptor, isInterface)); + } + } + + @Override + public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle, Object... bootstrapMethodArguments) { + this.instructions.add(new InvokeDynamicInsnNode(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments)); + } + + @Override + public void visitJumpInsn(int opcode, Label label) { + this.instructions.add(new JumpInsnNode(opcode, this.getLabelNode(label))); + } + + @Override + public void visitLabel(Label label) { + this.instructions.add(this.getLabelNode(label)); + } + + @Override + public void visitLdcInsn(Object value) { + this.instructions.add(new LdcInsnNode(value)); + } + + @Override + public void visitIincInsn(int varIndex, int increment) { + this.instructions.add(new IincInsnNode(varIndex, increment)); + } + + @Override + public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) { + this.instructions.add(new TableSwitchInsnNode(min, max, this.getLabelNode(dflt), this.getLabelNodes(labels))); + } + + @Override + public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) { + this.instructions.add(new LookupSwitchInsnNode(this.getLabelNode(dflt), keys, this.getLabelNodes(labels))); + } + + @Override + public void visitMultiANewArrayInsn(String descriptor, int numDimensions) { + this.instructions.add(new MultiANewArrayInsnNode(descriptor, numDimensions)); + } + + @Override + public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + AbstractInsnNode currentInsn = this.instructions.getLast(); + + while (currentInsn.getOpcode() == -1) { + currentInsn = currentInsn.getPrevious(); + } + + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + currentInsn.visibleTypeAnnotations = Util.add(currentInsn.visibleTypeAnnotations, typeAnnotation); + } else { + currentInsn.invisibleTypeAnnotations = Util.add(currentInsn.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitTryCatchBlock(Label start, Label end, Label handler, String type) { + TryCatchBlockNode tryCatchBlock = new TryCatchBlockNode(this.getLabelNode(start), this.getLabelNode(end), this.getLabelNode(handler), type); + this.tryCatchBlocks = Util.add(this.tryCatchBlocks, tryCatchBlock); + } + + @Override + public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + TryCatchBlockNode tryCatchBlock = this.tryCatchBlocks.get((typeRef & 16776960) >> 8); + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + tryCatchBlock.visibleTypeAnnotations = Util.add(tryCatchBlock.visibleTypeAnnotations, typeAnnotation); + } else { + tryCatchBlock.invisibleTypeAnnotations = Util.add(tryCatchBlock.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitLocalVariable(String name, String descriptor, String signature, Label start, Label end, int index) { + LocalVariableNode localVariable = new LocalVariableNode(name, descriptor, signature, this.getLabelNode(start), this.getLabelNode(end), index); + this.localVariables = Util.add(this.localVariables, localVariable); + } + + @Override + public AnnotationVisitor visitLocalVariableAnnotation( + int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String descriptor, boolean visible + ) { + LocalVariableAnnotationNode localVariableAnnotation = new LocalVariableAnnotationNode( + typeRef, typePath, this.getLabelNodes(start), this.getLabelNodes(end), index, descriptor + ); + if (visible) { + this.visibleLocalVariableAnnotations = Util.add(this.visibleLocalVariableAnnotations, localVariableAnnotation); + } else { + this.invisibleLocalVariableAnnotations = Util.add(this.invisibleLocalVariableAnnotations, localVariableAnnotation); + } + + return localVariableAnnotation; + } + + @Override + public void visitLineNumber(int line, Label start) { + this.instructions.add(new LineNumberNode(line, this.getLabelNode(start))); + } + + @Override + public void visitMaxs(int maxStack, int maxLocals) { + this.maxStack = maxStack; + this.maxLocals = maxLocals; + } + + @Override + public void visitEnd() { + } + + protected LabelNode getLabelNode(Label label) { + if (!(label.info instanceof LabelNode)) { + label.info = new LabelNode(); + } + + return (LabelNode)label.info; + } + + private LabelNode[] getLabelNodes(Label[] labels) { + LabelNode[] labelNodes = new LabelNode[labels.length]; + int i = 0; + + for (int n = labels.length; i < n; i++) { + labelNodes[i] = this.getLabelNode(labels[i]); + } + + return labelNodes; + } + + private Object[] getLabelNodes(Object[] objects) { + Object[] labelNodes = new Object[objects.length]; + int i = 0; + + for (int n = objects.length; i < n; i++) { + Object o = objects[i]; + if (o instanceof Label) { + o = this.getLabelNode((Label)o); + } + + labelNodes[i] = o; + } + + return labelNodes; + } + + public void check(int api) { + if (api == 262144) { + if (this.parameters != null && !this.parameters.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.visibleTypeAnnotations != null && !this.visibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.invisibleTypeAnnotations != null && !this.invisibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.tryCatchBlocks != null) { + for (int i = this.tryCatchBlocks.size() - 1; i >= 0; i--) { + TryCatchBlockNode tryCatchBlock = this.tryCatchBlocks.get(i); + if (tryCatchBlock.visibleTypeAnnotations != null && !tryCatchBlock.visibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (tryCatchBlock.invisibleTypeAnnotations != null && !tryCatchBlock.invisibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + } + } + + for (int i = this.instructions.size() - 1; i >= 0; i--) { + AbstractInsnNode insn = this.instructions.get(i); + if (insn.visibleTypeAnnotations != null && !insn.visibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (insn.invisibleTypeAnnotations != null && !insn.invisibleTypeAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (insn instanceof MethodInsnNode) { + boolean isInterface = ((MethodInsnNode)insn).itf; + if (isInterface != (insn.opcode == 185)) { + throw new UnsupportedClassVersionException(); + } + } else if (insn instanceof LdcInsnNode) { + Object value = ((LdcInsnNode)insn).cst; + if (value instanceof Handle || value instanceof Type && ((Type)value).getSort() == 11) { + throw new UnsupportedClassVersionException(); + } + } + } + + if (this.visibleLocalVariableAnnotations != null && !this.visibleLocalVariableAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + + if (this.invisibleLocalVariableAnnotations != null && !this.invisibleLocalVariableAnnotations.isEmpty()) { + throw new UnsupportedClassVersionException(); + } + } + + if (api < 458752) { + for (int i = this.instructions.size() - 1; i >= 0; i--) { + AbstractInsnNode insnx = this.instructions.get(i); + if (insnx instanceof LdcInsnNode) { + Object value = ((LdcInsnNode)insnx).cst; + if (value instanceof ConstantDynamic) { + throw new UnsupportedClassVersionException(); + } + } + } + } + } + + public void accept(ClassVisitor classVisitor) { + String[] exceptionsArray = this.exceptions == null ? null : this.exceptions.toArray(new String[0]); + MethodVisitor methodVisitor = classVisitor.visitMethod(this.access, this.name, this.desc, this.signature, exceptionsArray); + if (methodVisitor != null) { + this.accept(methodVisitor); + } + } + + public void accept(MethodVisitor methodVisitor) { + if (this.parameters != null) { + int i = 0; + + for (int n = this.parameters.size(); i < n; i++) { + this.parameters.get(i).accept(methodVisitor); + } + } + + if (this.annotationDefault != null) { + AnnotationVisitor annotationVisitor = methodVisitor.visitAnnotationDefault(); + AnnotationNode.accept(annotationVisitor, null, this.annotationDefault); + if (annotationVisitor != null) { + annotationVisitor.visitEnd(); + } + } + + if (this.visibleAnnotations != null) { + int i = 0; + + for (int n = this.visibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.visibleAnnotations.get(i); + annotation.accept(methodVisitor.visitAnnotation(annotation.desc, true)); + } + } + + if (this.invisibleAnnotations != null) { + int i = 0; + + for (int n = this.invisibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.invisibleAnnotations.get(i); + annotation.accept(methodVisitor.visitAnnotation(annotation.desc, false)); + } + } + + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + + if (this.visibleAnnotableParameterCount > 0) { + methodVisitor.visitAnnotableParameterCount(this.visibleAnnotableParameterCount, true); + } + + if (this.visibleParameterAnnotations != null) { + int i = 0; + + for (int n = this.visibleParameterAnnotations.length; i < n; i++) { + List parameterAnnotations = this.visibleParameterAnnotations[i]; + if (parameterAnnotations != null) { + int j = 0; + + for (int m = parameterAnnotations.size(); j < m; j++) { + AnnotationNode annotation = parameterAnnotations.get(j); + annotation.accept(methodVisitor.visitParameterAnnotation(i, annotation.desc, true)); + } + } + } + } + + if (this.invisibleAnnotableParameterCount > 0) { + methodVisitor.visitAnnotableParameterCount(this.invisibleAnnotableParameterCount, false); + } + + if (this.invisibleParameterAnnotations != null) { + int i = 0; + + for (int nx = this.invisibleParameterAnnotations.length; i < nx; i++) { + List parameterAnnotations = this.invisibleParameterAnnotations[i]; + if (parameterAnnotations != null) { + int j = 0; + + for (int m = parameterAnnotations.size(); j < m; j++) { + AnnotationNode annotation = parameterAnnotations.get(j); + annotation.accept(methodVisitor.visitParameterAnnotation(i, annotation.desc, false)); + } + } + } + } + + if (this.visited) { + this.instructions.resetLabels(); + } + + if (this.attrs != null) { + int i = 0; + + for (int nxx = this.attrs.size(); i < nxx; i++) { + methodVisitor.visitAttribute(this.attrs.get(i)); + } + } + + if (this.instructions.size() > 0) { + methodVisitor.visitCode(); + if (this.tryCatchBlocks != null) { + int i = 0; + + for (int nxx = this.tryCatchBlocks.size(); i < nxx; i++) { + this.tryCatchBlocks.get(i).updateIndex(i); + this.tryCatchBlocks.get(i).accept(methodVisitor); + } + } + + this.instructions.accept(methodVisitor); + if (this.localVariables != null) { + int i = 0; + + for (int nxx = this.localVariables.size(); i < nxx; i++) { + this.localVariables.get(i).accept(methodVisitor); + } + } + + if (this.visibleLocalVariableAnnotations != null) { + int i = 0; + + for (int nxx = this.visibleLocalVariableAnnotations.size(); i < nxx; i++) { + this.visibleLocalVariableAnnotations.get(i).accept(methodVisitor, true); + } + } + + if (this.invisibleLocalVariableAnnotations != null) { + int i = 0; + + for (int nxx = this.invisibleLocalVariableAnnotations.size(); i < nxx; i++) { + this.invisibleLocalVariableAnnotations.get(i).accept(methodVisitor, false); + } + } + + methodVisitor.visitMaxs(this.maxStack, this.maxLocals); + this.visited = true; + } + + methodVisitor.visitEnd(); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleExportNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleExportNode.java new file mode 100644 index 0000000..5ab5f21 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleExportNode.java @@ -0,0 +1,20 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ModuleVisitor; +import java.util.List; + +public class ModuleExportNode { + public String packaze; + public int access; + public List modules; + + public ModuleExportNode(String packaze, int access, List modules) { + this.packaze = packaze; + this.access = access; + this.modules = modules; + } + + public void accept(ModuleVisitor moduleVisitor) { + moduleVisitor.visitExport(this.packaze, this.access, this.modules == null ? null : this.modules.toArray(new String[0])); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleNode.java new file mode 100644 index 0000000..fa9dbf2 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleNode.java @@ -0,0 +1,172 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ClassVisitor; +import dev.slinky.shaded.asm.ModuleVisitor; +import java.util.ArrayList; +import java.util.List; + +public class ModuleNode extends ModuleVisitor { + public String name; + public int access; + public String version; + public String mainClass; + public List packages; + public List requires; + public List exports; + public List opens; + public List uses; + public List provides; + + public ModuleNode(String name, int access, String version) { + super(589824); + if (this.getClass() != ModuleNode.class) { + throw new IllegalStateException(); + } else { + this.name = name; + this.access = access; + this.version = version; + } + } + + public ModuleNode( + int api, + String name, + int access, + String version, + List requires, + List exports, + List opens, + List uses, + List provides + ) { + super(api); + this.name = name; + this.access = access; + this.version = version; + this.requires = requires; + this.exports = exports; + this.opens = opens; + this.uses = uses; + this.provides = provides; + } + + @Override + public void visitMainClass(String mainClass) { + this.mainClass = mainClass; + } + + @Override + public void visitPackage(String packaze) { + if (this.packages == null) { + this.packages = new ArrayList<>(5); + } + + this.packages.add(packaze); + } + + @Override + public void visitRequire(String module, int access, String version) { + if (this.requires == null) { + this.requires = new ArrayList<>(5); + } + + this.requires.add(new ModuleRequireNode(module, access, version)); + } + + @Override + public void visitExport(String packaze, int access, String... modules) { + if (this.exports == null) { + this.exports = new ArrayList<>(5); + } + + this.exports.add(new ModuleExportNode(packaze, access, Util.asArrayList(modules))); + } + + @Override + public void visitOpen(String packaze, int access, String... modules) { + if (this.opens == null) { + this.opens = new ArrayList<>(5); + } + + this.opens.add(new ModuleOpenNode(packaze, access, Util.asArrayList(modules))); + } + + @Override + public void visitUse(String service) { + if (this.uses == null) { + this.uses = new ArrayList<>(5); + } + + this.uses.add(service); + } + + @Override + public void visitProvide(String service, String... providers) { + if (this.provides == null) { + this.provides = new ArrayList<>(5); + } + + this.provides.add(new ModuleProvideNode(service, Util.asArrayList(providers))); + } + + @Override + public void visitEnd() { + } + + public void accept(ClassVisitor classVisitor) { + ModuleVisitor moduleVisitor = classVisitor.visitModule(this.name, this.access, this.version); + if (moduleVisitor != null) { + if (this.mainClass != null) { + moduleVisitor.visitMainClass(this.mainClass); + } + + if (this.packages != null) { + int i = 0; + + for (int n = this.packages.size(); i < n; i++) { + moduleVisitor.visitPackage(this.packages.get(i)); + } + } + + if (this.requires != null) { + int i = 0; + + for (int n = this.requires.size(); i < n; i++) { + this.requires.get(i).accept(moduleVisitor); + } + } + + if (this.exports != null) { + int i = 0; + + for (int n = this.exports.size(); i < n; i++) { + this.exports.get(i).accept(moduleVisitor); + } + } + + if (this.opens != null) { + int i = 0; + + for (int n = this.opens.size(); i < n; i++) { + this.opens.get(i).accept(moduleVisitor); + } + } + + if (this.uses != null) { + int i = 0; + + for (int n = this.uses.size(); i < n; i++) { + moduleVisitor.visitUse(this.uses.get(i)); + } + } + + if (this.provides != null) { + int i = 0; + + for (int n = this.provides.size(); i < n; i++) { + this.provides.get(i).accept(moduleVisitor); + } + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleOpenNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleOpenNode.java new file mode 100644 index 0000000..bf1e91f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleOpenNode.java @@ -0,0 +1,20 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ModuleVisitor; +import java.util.List; + +public class ModuleOpenNode { + public String packaze; + public int access; + public List modules; + + public ModuleOpenNode(String packaze, int access, List modules) { + this.packaze = packaze; + this.access = access; + this.modules = modules; + } + + public void accept(ModuleVisitor moduleVisitor) { + moduleVisitor.visitOpen(this.packaze, this.access, this.modules == null ? null : this.modules.toArray(new String[0])); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleProvideNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleProvideNode.java new file mode 100644 index 0000000..c37211f --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleProvideNode.java @@ -0,0 +1,18 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ModuleVisitor; +import java.util.List; + +public class ModuleProvideNode { + public String service; + public List providers; + + public ModuleProvideNode(String service, List providers) { + this.service = service; + this.providers = providers; + } + + public void accept(ModuleVisitor moduleVisitor) { + moduleVisitor.visitProvide(this.service, this.providers.toArray(new String[0])); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleRequireNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleRequireNode.java new file mode 100644 index 0000000..679a106 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ModuleRequireNode.java @@ -0,0 +1,19 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.ModuleVisitor; + +public class ModuleRequireNode { + public String module; + public int access; + public String version; + + public ModuleRequireNode(String module, int access, String version) { + this.module = module; + this.access = access; + this.version = version; + } + + public void accept(ModuleVisitor moduleVisitor) { + moduleVisitor.visitRequire(this.module, this.access, this.version); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MultiANewArrayInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MultiANewArrayInsnNode.java new file mode 100644 index 0000000..726c705 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/MultiANewArrayInsnNode.java @@ -0,0 +1,31 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class MultiANewArrayInsnNode extends AbstractInsnNode { + public String desc; + public int dims; + + public MultiANewArrayInsnNode(String descriptor, int numDimensions) { + super(197); + this.desc = descriptor; + this.dims = numDimensions; + } + + @Override + public int getType() { + return 13; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitMultiANewArrayInsn(this.desc, this.dims); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new MultiANewArrayInsnNode(this.desc, this.dims).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ParameterNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ParameterNode.java new file mode 100644 index 0000000..08e50b0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/ParameterNode.java @@ -0,0 +1,17 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; + +public class ParameterNode { + public String name; + public int access; + + public ParameterNode(String name, int access) { + this.name = name; + this.access = access; + } + + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitParameter(this.name, this.access); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/RecordComponentNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/RecordComponentNode.java new file mode 100644 index 0000000..6d73503 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/RecordComponentNode.java @@ -0,0 +1,123 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.AnnotationVisitor; +import dev.slinky.shaded.asm.Attribute; +import dev.slinky.shaded.asm.ClassVisitor; +import dev.slinky.shaded.asm.RecordComponentVisitor; +import dev.slinky.shaded.asm.TypePath; +import java.util.List; + +public class RecordComponentNode extends RecordComponentVisitor { + public String name; + public String descriptor; + public String signature; + public List visibleAnnotations; + public List invisibleAnnotations; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + public List attrs; + + public RecordComponentNode(String name, String descriptor, String signature) { + this(589824, name, descriptor, signature); + if (this.getClass() != RecordComponentNode.class) { + throw new IllegalStateException(); + } + } + + public RecordComponentNode(int api, String name, String descriptor, String signature) { + super(api); + this.name = name; + this.descriptor = descriptor; + this.signature = signature; + } + + @Override + public AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { + AnnotationNode annotation = new AnnotationNode(descriptor); + if (visible) { + this.visibleAnnotations = Util.add(this.visibleAnnotations, annotation); + } else { + this.invisibleAnnotations = Util.add(this.invisibleAnnotations, annotation); + } + + return annotation; + } + + @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String descriptor, boolean visible) { + TypeAnnotationNode typeAnnotation = new TypeAnnotationNode(typeRef, typePath, descriptor); + if (visible) { + this.visibleTypeAnnotations = Util.add(this.visibleTypeAnnotations, typeAnnotation); + } else { + this.invisibleTypeAnnotations = Util.add(this.invisibleTypeAnnotations, typeAnnotation); + } + + return typeAnnotation; + } + + @Override + public void visitAttribute(Attribute attribute) { + this.attrs = Util.add(this.attrs, attribute); + } + + @Override + public void visitEnd() { + } + + public void check(int api) { + if (api < 524288) { + throw new UnsupportedClassVersionException(); + } + } + + public void accept(ClassVisitor classVisitor) { + RecordComponentVisitor recordComponentVisitor = classVisitor.visitRecordComponent(this.name, this.descriptor, this.signature); + if (recordComponentVisitor != null) { + if (this.visibleAnnotations != null) { + int i = 0; + + for (int n = this.visibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.visibleAnnotations.get(i); + annotation.accept(recordComponentVisitor.visitAnnotation(annotation.desc, true)); + } + } + + if (this.invisibleAnnotations != null) { + int i = 0; + + for (int n = this.invisibleAnnotations.size(); i < n; i++) { + AnnotationNode annotation = this.invisibleAnnotations.get(i); + annotation.accept(recordComponentVisitor.visitAnnotation(annotation.desc, false)); + } + } + + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(recordComponentVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(recordComponentVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + + if (this.attrs != null) { + int i = 0; + + for (int n = this.attrs.size(); i < n; i++) { + recordComponentVisitor.visitAttribute(this.attrs.get(i)); + } + } + + recordComponentVisitor.visitEnd(); + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TableSwitchInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TableSwitchInsnNode.java new file mode 100644 index 0000000..d87e334 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TableSwitchInsnNode.java @@ -0,0 +1,44 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.Label; +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.List; +import java.util.Map; + +public class TableSwitchInsnNode extends AbstractInsnNode { + public int min; + public int max; + public LabelNode dflt; + public List labels; + + public TableSwitchInsnNode(int min, int max, LabelNode dflt, LabelNode... labels) { + super(170); + this.min = min; + this.max = max; + this.dflt = dflt; + this.labels = Util.asArrayList(labels); + } + + @Override + public int getType() { + return 11; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + Label[] labelsArray = new Label[this.labels.size()]; + int i = 0; + + for (int n = labelsArray.length; i < n; i++) { + labelsArray[i] = this.labels.get(i).getLabel(); + } + + methodVisitor.visitTableSwitchInsn(this.min, this.max, this.dflt.getLabel(), labelsArray); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new TableSwitchInsnNode(this.min, this.max, clone(this.dflt, clonedLabels), clone(this.labels, clonedLabels)).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TryCatchBlockNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TryCatchBlockNode.java new file mode 100644 index 0000000..b28fc40 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TryCatchBlockNode.java @@ -0,0 +1,60 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.List; + +public class TryCatchBlockNode { + public LabelNode start; + public LabelNode end; + public LabelNode handler; + public String type; + public List visibleTypeAnnotations; + public List invisibleTypeAnnotations; + + public TryCatchBlockNode(LabelNode start, LabelNode end, LabelNode handler, String type) { + this.start = start; + this.end = end; + this.handler = handler; + this.type = type; + } + + public void updateIndex(int index) { + int newTypeRef = 1107296256 | index << 8; + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + this.visibleTypeAnnotations.get(i).typeRef = newTypeRef; + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + this.invisibleTypeAnnotations.get(i).typeRef = newTypeRef; + } + } + } + + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitTryCatchBlock(this.start.getLabel(), this.end.getLabel(), this.handler == null ? null : this.handler.getLabel(), this.type); + if (this.visibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.visibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.visibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitTryCatchAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true)); + } + } + + if (this.invisibleTypeAnnotations != null) { + int i = 0; + + for (int n = this.invisibleTypeAnnotations.size(); i < n; i++) { + TypeAnnotationNode typeAnnotation = this.invisibleTypeAnnotations.get(i); + typeAnnotation.accept(methodVisitor.visitTryCatchAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false)); + } + } + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeAnnotationNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeAnnotationNode.java new file mode 100644 index 0000000..412b847 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeAnnotationNode.java @@ -0,0 +1,21 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.TypePath; + +public class TypeAnnotationNode extends AnnotationNode { + public int typeRef; + public TypePath typePath; + + public TypeAnnotationNode(int typeRef, TypePath typePath, String descriptor) { + this(589824, typeRef, typePath, descriptor); + if (this.getClass() != TypeAnnotationNode.class) { + throw new IllegalStateException(); + } + } + + public TypeAnnotationNode(int api, int typeRef, TypePath typePath, String descriptor) { + super(api, descriptor); + this.typeRef = typeRef; + this.typePath = typePath; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeInsnNode.java new file mode 100644 index 0000000..58009da --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/TypeInsnNode.java @@ -0,0 +1,33 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class TypeInsnNode extends AbstractInsnNode { + public String desc; + + public TypeInsnNode(int opcode, String type) { + super(opcode); + this.desc = type; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 3; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitTypeInsn(this.opcode, this.desc); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new TypeInsnNode(this.opcode, this.desc).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/UnsupportedClassVersionException.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/UnsupportedClassVersionException.java new file mode 100644 index 0000000..5c3272b --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/UnsupportedClassVersionException.java @@ -0,0 +1,5 @@ +package dev.slinky.shaded.asm.tree; + +public class UnsupportedClassVersionException extends RuntimeException { + private static final long serialVersionUID = -3502347765891805831L; +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/Util.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/Util.java new file mode 100644 index 0000000..04d7bc0 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/Util.java @@ -0,0 +1,161 @@ +package dev.slinky.shaded.asm.tree; + +import java.util.ArrayList; +import java.util.List; + +final class Util { + private Util() { + } + + static List add(List list, T element) { + List newList = (List)(list == null ? new ArrayList<>(1) : list); + newList.add(element); + return newList; + } + + static List asArrayList(int length) { + List list = new ArrayList<>(length); + + for (int i = 0; i < length; i++) { + list.add(null); + } + + return list; + } + + static List asArrayList(T[] array) { + if (array == null) { + return new ArrayList<>(); + } else { + ArrayList list = new ArrayList<>(array.length); + + for (T t : array) { + list.add(t); + } + + return list; + } + } + + static List asArrayList(byte[] byteArray) { + if (byteArray == null) { + return new ArrayList<>(); + } else { + ArrayList byteList = new ArrayList<>(byteArray.length); + + for (byte b : byteArray) { + byteList.add(b); + } + + return byteList; + } + } + + static List asArrayList(boolean[] booleanArray) { + if (booleanArray == null) { + return new ArrayList<>(); + } else { + ArrayList booleanList = new ArrayList<>(booleanArray.length); + + for (boolean b : booleanArray) { + booleanList.add(b); + } + + return booleanList; + } + } + + static List asArrayList(short[] shortArray) { + if (shortArray == null) { + return new ArrayList<>(); + } else { + ArrayList shortList = new ArrayList<>(shortArray.length); + + for (short s : shortArray) { + shortList.add(s); + } + + return shortList; + } + } + + static List asArrayList(char[] charArray) { + if (charArray == null) { + return new ArrayList<>(); + } else { + ArrayList charList = new ArrayList<>(charArray.length); + + for (char c : charArray) { + charList.add(c); + } + + return charList; + } + } + + static List asArrayList(int[] intArray) { + if (intArray == null) { + return new ArrayList<>(); + } else { + ArrayList intList = new ArrayList<>(intArray.length); + + for (int i : intArray) { + intList.add(i); + } + + return intList; + } + } + + static List asArrayList(float[] floatArray) { + if (floatArray == null) { + return new ArrayList<>(); + } else { + ArrayList floatList = new ArrayList<>(floatArray.length); + + for (float f : floatArray) { + floatList.add(f); + } + + return floatList; + } + } + + static List asArrayList(long[] longArray) { + if (longArray == null) { + return new ArrayList<>(); + } else { + ArrayList longList = new ArrayList<>(longArray.length); + + for (long l : longArray) { + longList.add(l); + } + + return longList; + } + } + + static List asArrayList(double[] doubleArray) { + if (doubleArray == null) { + return new ArrayList<>(); + } else { + ArrayList doubleList = new ArrayList<>(doubleArray.length); + + for (double d : doubleArray) { + doubleList.add(d); + } + + return doubleList; + } + } + + static List asArrayList(int length, T[] array) { + List list = new ArrayList<>(length); + + for (int i = 0; i < length; i++) { + list.add(array[i]); + } + + return list; + } +} diff --git a/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/VarInsnNode.java b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/VarInsnNode.java new file mode 100644 index 0000000..c93f939 --- /dev/null +++ b/SlinkyClient/src/main/java/dev/slinky/shaded/asm/tree/VarInsnNode.java @@ -0,0 +1,33 @@ +package dev.slinky.shaded.asm.tree; + +import dev.slinky.shaded.asm.MethodVisitor; +import java.util.Map; + +public class VarInsnNode extends AbstractInsnNode { + public int var; + + public VarInsnNode(int opcode, int varIndex) { + super(opcode); + this.var = varIndex; + } + + public void setOpcode(int opcode) { + this.opcode = opcode; + } + + @Override + public int getType() { + return 2; + } + + @Override + public void accept(MethodVisitor methodVisitor) { + methodVisitor.visitVarInsn(this.opcode, this.var); + this.acceptAnnotations(methodVisitor); + } + + @Override + public AbstractInsnNode clone(Map clonedLabels) { + return new VarInsnNode(this.opcode, this.var).cloneAnnotations(this); + } +} diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/ActionConstants.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/ActionConstants.json new file mode 100644 index 0000000..40964be --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/ActionConstants.json @@ -0,0 +1,38 @@ +[ + { + "address": 1304712, + "bytes": "000000000000f03f000000000000f07f0000803f" + }, + { + "address": 1374032, + "bytes": "182d4454fb2109c0000000000080664000000080000000800000008000000080000000000000f03f" + }, + { + "address": 1377064, + "bytes": "9a9999999999c9bf7b14ae47e17a843f9a99193fcdcc4c3f0000000000002440fca9f1d24d62503f0ad7233d0ad7a33d8fc2753d9a99993d9a99193e0000803e9a9999999999a93fcdcc4c3e9a99993e0000000000003e40cdccccbdcdcccc3d0000000000005e40cdcc4cbdcdcc4c3d00000000000014400000803f0000003f0000a0410000000000000000000039407b14ae47e17ab43f000000000000f03f0000004008ac8cbfd7a3703fec51783f7b14ae47e17a943f7b14ae47e17aa43f0000000000c072400000803f8fc2f53c8fc2753d000000000000000000005e408fc2f53d9a99193e7b14ae47e17a843f" + }, + { + "address": 1378144, + "bytes": "00000000008056400000000000000000ffffff7fffffff7fffffff7fffffff7f0000f041000070420000000000000000ffffffffffffff7fffffffffffffff7f000000000000f03f000000000000f0bf000000000000d03f333333333333c33f00008242000080bf000000bf0000003f0000000000003e400ad7233d0ad7a33d0000000000004e400000404000000000000000000000e03f7b14ae47e17a84bf9a99193e0000000000000000000014400000803f000080bf4272696467652041" + }, + { + "address": 1379560, + "bytes": "000080bf000000000000000000003440000000000000f03f0ad7a33c0ad7a33d" + }, + { + "address": 1400944, + "bytes": "000080bf0000a0410000000000000000182d4454fb2109c00000000000806640182d4454fb21f93f000000000000e03fae47e17a14aeefbfffff7f7f00000000f1164850fc283440cdcc4c3d00000000000000000000f03f9a9999999999b93fcdccccbdcdcccc3d0000803f000000005c8fc2f5285cef3f9a999999999911407b14ae47e17a943f7b14ae47e17a943f7b14ae47e17a943f5c8fc2f5285cef3fae47e17a14aeef3f0e2db29def7f56400000a0c10000a041000000000000d0bf0000000000002440000000000000000000000080000000800000008000000080cdcc4cbd00000000000000000000f0bf000000000000f03f0000a04000007041cdcc4c3d00000000000000000000f03f0ad723bc0ad7233c000000000000e03fffffffffffffff7fffffffffffffff7f000000000000e03f000000000000e03f000000000000f0bf000000000000f0bf000000000000f03f000000000000f03f9a9999999999b93f000000000000d03f6666263f000000000000000000000000ffffff7f" + }, + { + "address": 1401472, + "bytes": "0100060013002b004f007b00a300a70088088708780888078809890886087708870787096808780778098806880a7908890789098a0885087608860786096708770777098706870a680768097806780a8805880b6908790779098906890a7a088a078a098b0884087508850785096608760776098606860a670767097706770a8705870b6806680a7805780b8804880c690769097906790a8905890b6a087a077a098a068a0a7b088b078b098c087408840784096508750775098506850a660766097606760a8605860b6706670a7705770b8704870c6805680b7804780c6906690a7905790b8904890c6a076a097a067a0a8a058a0b6b087b077b098b068b0a7c088c078c09740774098406840a650765097506750a8505850b6606660a7605760b8604860c6705670b7704770c6905690b7904790c6a066a0a7a057a0b8a048a0c6b076b097b067b0a8b058b0b7c077c098c068c0a7505750b7b057b0b4d696e696d756d2068656967687400252e306620626c6f636b2873290052616e6765004f6e6c7920706c616365207369646577617973004d756c7469706f696e7400464f5600252e3066c2b00053656c65637420626c6f636b73004e6f004f6e206465706c6574696f6e00416c776179730044656c61790052616e646f6d697a6174696f6e00252e306625250044697361626c652061667465727761726473004261736520737065656400252e306620c2b02f7300416363656c65726174696f6e00252e33667800416363656c65726174696f6e20737472656e677468004d61696e0041696d00536e61702d6261636b00436f6e646974696f6e730072616e6765006d61785f61696d5f64697374006d696e5f68656967687400636c69636b5f73706565640072616e646f6d697a6174696f6e0073656c6563745f626c6f636b730073696465776179735f6f6e6c790061696d5f73706565640061696d5f6d756c740061696d5f6d756c745f737472656e6774680061696d5f6d756c7469706f696e7400736e61706261636b5f64656c617900736e61706261636b5f6475726174696f6e00736e61706261636b5f696e7374616e745f6f6e5f6a756d7000736e61706261636b5f64697361626c655f616674657200726571756972655f61697200726571756972655f64616d61676500726571756972655f6261636b7761726473004175746f20576561706f6e0053656c6563747320796f757220776561706f6e207768656e2061696d696e67206f6e20706c61796572732e004d6f75736520707265737365640041637469766174696f6e2074696d6500252e3066206d73004d61696e00436f6e646974696f6e730061637469766174696f6e5f74696d6500726571756972655f6d6f7573655f70726573736564000000000000000000000000000000003f000020410000a0410000000000000080000000800000008000000080ffffff7fffffff7fffffff7fffffff7f0000c8420000003ff844efff2945efff0945efff2145efffff44efff4b6e6f636b6261636b20446973706c61636500416c6c6f7773206465616c696e67206b6e6f636b6261636b206174206120646966666572656e7420616e676c652e00436f6f6c646f776e00252e3066206d73004e6f742074616b696e67206b6e6f636b6261636b00486f6c64696e6720776561706f6e004b6e6f636b6261636b20656e6368616e746d656e740054617267657420666163696e67206177617900446972656374696f6e004c6566740052696768740052616e646f6d00537472616665005374726166652028696e7665727465642900416e676c6500252e3066c2b0004869646520726f746174696f6e2066726f6d20706c617965727300557365206c6173742073747261666520646972656374696f6e004d61696e00436f6e646974696f6e00646972656374696f6e007573655f6c6173745f73747261666500616e676c6500636f6f6c646f776e00686964655f726f746174696f6e00726571756972655f6e6f5f6b6200726571756972655f776561706f6e00726571756972655f6b625f656e6368616e7400726571756972655f666163696e675f" + }, + { + "address": 1402992, + "bytes": "0000b442000000000000000000000000000000000000f0bf0000000000000000ffffffffffffff7fffffffffffffff7f7b14ae47e17a843f000080becdccccbe0000803ecdcccc3e000000000000e03f000000000000f03f14ae47e17a14e63fd7a3703d0ad7d33f9a99193fcdccccbdcdcc4cbe6666664033337340cdcc8c3f9a99993fcdcc4c3f9a9999999999c93f00003443000000000000000000000000000000800000008000000080000000800000003f000000000000000000000000ffffff7fffffff7fffffff7fffffff7f0000803ff84aefff" + }, + { + "address": 1403776, + "bytes": "0003000003ff010300000301ff0300ff03ff0103ff010301ff03010004000001ff0000ff01000000000000000000f03f0000000000000840" + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/InitialSettings.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/InitialSettings.json new file mode 100644 index 0000000..5f0ee8a --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/InitialSettings.json @@ -0,0 +1,2780 @@ +{ + "schema": "explicit-initial-configuration-v1", + "policy": "Documented defaults where explicit; otherwise imported recovered saved configuration. Values are caller inputs, not inferred original factory defaults. Empty lists are explicit fresh user lists.", + "modules": { + "Aim Assist": { + "mode": { + "value": "Regular", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.mode.saved_observation", + "factory_default_proved": false + }, + "hor_speed": { + "value": 15.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.hor_speed.saved_observation", + "factory_default_proved": false + }, + "ver_speed": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.ver_speed.saved_observation", + "factory_default_proved": false + }, + "lock_on_vertical": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.lock_on_vertical.saved_observation", + "factory_default_proved": false + }, + "silent_move_correct": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.silent_move_correct.saved_observation", + "factory_default_proved": false + }, + "silent_ignore_manual_aim": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.silent_ignore_manual_aim.saved_observation", + "factory_default_proved": false + }, + "predict": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.predict.saved_observation", + "factory_default_proved": false + }, + "aim_randomization": { + "value": 0.5, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/aim-assist/#randomization", + "factory_default_proved": true + }, + "hor_hitbox_correct": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.hor_hitbox_correct.saved_observation", + "factory_default_proved": false + }, + "ver_hitbox_correct": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.ver_hitbox_correct.saved_observation", + "factory_default_proved": false + }, + "mode_target": { + "value": "Single", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.mode_target.saved_observation", + "factory_default_proved": false + }, + "sort_by": { + "value": "Distance", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.sort_by.saved_observation", + "factory_default_proved": false + }, + "allow_exceed_fov": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.allow_exceed_fov.saved_observation", + "factory_default_proved": false + }, + "range": { + "value": { + "min": 1.0, + "max": 4.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.range.saved_observation", + "factory_default_proved": false + }, + "fov": { + "value": { + "min": 4.0, + "max": 60.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.fov.saved_observation", + "factory_default_proved": false + }, + "require_sprint": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.require_sprint.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.require_mouse_pressed.saved_observation", + "factory_default_proved": false + }, + "require_mouse_moved": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.require_mouse_moved.saved_observation", + "factory_default_proved": false + }, + "disable_on_block_break": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.disable_on_block_break.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.require_weapon.saved_observation", + "factory_default_proved": false + }, + "ignore_invis": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.ignore_invis.saved_observation", + "factory_default_proved": false + }, + "require_line_of_sight": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Aim Assist.require_line_of_sight.saved_observation", + "factory_default_proved": false + } + }, + "Auto Clicker": { + "pattern": { + "value": "Jitter", + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/auto-clicker/#click-pattern", + "factory_default_proved": true + }, + "target_cps": { + "value": 12.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.target_cps.saved_observation", + "factory_default_proved": false + }, + "randomize_cps": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.randomize_cps.saved_observation", + "factory_default_proved": false + }, + "exhaust": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.exhaust.saved_observation", + "factory_default_proved": false + }, + "allow_block_break": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.allow_block_break.saved_observation", + "factory_default_proved": false + }, + "allow_inventory": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.allow_inventory.saved_observation", + "factory_default_proved": false + }, + "inventory_randomize": { + "value": true, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/auto-clicker/#randomize-speed", + "factory_default_proved": true + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_not_using_item": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Clicker.require_not_using_item.saved_observation", + "factory_default_proved": false + } + }, + "Auto Soup": { + "single_soup_max_hp": { + "value": 13.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.single_soup_max_hp.saved_observation", + "factory_default_proved": false + }, + "double_soup_max_hp": { + "value": 6.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.double_soup_max_hp.saved_observation", + "factory_default_proved": false + }, + "randomization": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.randomization.saved_observation", + "factory_default_proved": false + }, + "delay_before": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.delay_before.saved_observation", + "factory_default_proved": false + }, + "delay_between": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.delay_between.saved_observation", + "factory_default_proved": false + }, + "delay_after": { + "value": 10.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.delay_after.saved_observation", + "factory_default_proved": false + }, + "drop_bowls": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.drop_bowls.saved_observation", + "factory_default_proved": false + }, + "override_item": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Soup.override_item.saved_observation", + "factory_default_proved": false + }, + "allowed_items": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + } + }, + "Bridge Assist": { + "edge_offset": { + "value": 0.20000000298023224, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.edge_offset.saved_observation", + "factory_default_proved": false + }, + "unsneak_delay": { + "value": 3.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.unsneak_delay.saved_observation", + "factory_default_proved": false + }, + "select_blocks": { + "value": "On depletion", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.select_blocks.saved_observation", + "factory_default_proved": false + }, + "randomize": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.randomize.saved_observation", + "factory_default_proved": false + }, + "sneak_on_jump": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.sneak_on_jump.saved_observation", + "factory_default_proved": false + }, + "avoid_double_sneak": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.avoid_double_sneak.saved_observation", + "factory_default_proved": false + }, + "require_sneak": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.require_sneak.saved_observation", + "factory_default_proved": false + }, + "require_holding_blocks": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.require_holding_blocks.saved_observation", + "factory_default_proved": false + }, + "require_looking_down": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.require_looking_down.saved_observation", + "factory_default_proved": false + }, + "require_not_forward": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Bridge Assist.require_not_forward.saved_observation", + "factory_default_proved": false + } + }, + "Player ESP": { + "mode": { + "value": "2D", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.mode.saved_observation", + "factory_default_proved": false + }, + "range": { + "value": 150.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.range.saved_observation", + "factory_default_proved": false + }, + "hide_friendlies": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.hide_friendlies.saved_observation", + "factory_default_proved": false + }, + "color_mode": { + "value": "Automatic", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.color_mode.saved_observation", + "factory_default_proved": false + }, + "color_enemies": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.color_enemies.saved_observation", + "factory_default_proved": false + }, + "color_friendlies": { + "value": { + "r": 0.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.color_friendlies.saved_observation", + "factory_default_proved": false + }, + "override_target_color": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.override_target_color.saved_observation", + "factory_default_proved": false + }, + "color_target": { + "value": { + "r": 1.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.color_target.saved_observation", + "factory_default_proved": false + }, + "line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.line_width.saved_observation", + "factory_default_proved": false + }, + "hurt_effect": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.hurt_effect.saved_observation", + "factory_default_proved": false + }, + "filled": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.filled.saved_observation", + "factory_default_proved": false + }, + "show_2d_box": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.show_2d_box.saved_observation", + "factory_default_proved": false + }, + "show_health_bar": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Player ESP.show_health_bar.saved_observation", + "factory_default_proved": false + } + }, + "Fast Place": { + "max_cps": { + "value": 20.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Place.max_cps.saved_observation", + "factory_default_proved": false + }, + "activate_delay": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Place.activate_delay.saved_observation", + "factory_default_proved": false + } + }, + "Reach": { + "distance": { + "value": 3.049999952316284, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Reach.distance.saved_observation", + "factory_default_proved": false + }, + "activate_time": { + "value": 3.0, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/reach/#activate-for", + "factory_default_proved": true + }, + "require_sprint": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Reach.require_sprint.saved_observation", + "factory_default_proved": false + } + }, + "Velocity": { + "mode": { + "value": "Regular", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.mode.saved_observation", + "factory_default_proved": false + }, + "reduce_chance": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.reduce_chance.saved_observation", + "factory_default_proved": false + }, + "fov": { + "value": 3.1415927410125732, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/velocity/#fov", + "factory_default_proved": true + }, + "reduce_amount": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.reduce_amount.saved_observation", + "factory_default_proved": false + }, + "reduce_delay": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.reduce_delay.saved_observation", + "factory_default_proved": false + }, + "jump_chance": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.jump_chance.saved_observation", + "factory_default_proved": false + }, + "reduce_multiple_per_tick": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.reduce_multiple_per_tick.saved_observation", + "factory_default_proved": false + }, + "ignore_vertical": { + "value": "Never", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.ignore_vertical.saved_observation", + "factory_default_proved": false + }, + "ignore_chance": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.ignore_chance.saved_observation", + "factory_default_proved": false + }, + "require_target": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.require_target.saved_observation", + "factory_default_proved": false + }, + "require_mouse": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.require_mouse.saved_observation", + "factory_default_proved": false + }, + "require_forward": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.require_forward.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_sprinting_jump": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Velocity.require_sprinting_jump.saved_observation", + "factory_default_proved": false + } + }, + "Anti Bot": { + "invalid_uuid": { + "value": "Stationary only", + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/anti-bot/#invalid-uuid", + "factory_default_proved": true + }, + "invalid_username": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Anti Bot.invalid_username.saved_observation", + "factory_default_proved": false + }, + "always_invis": { + "value": true, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/anti-bot/#checks", + "factory_default_proved": true + }, + "always_stationary": { + "value": true, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/anti-bot/#checks", + "factory_default_proved": true + }, + "sleeping": { + "value": true, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/anti-bot/#checks", + "factory_default_proved": true + }, + "min_age": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Anti Bot.min_age.saved_observation", + "factory_default_proved": false + } + }, + "Auto Block": { + "range": { + "value": 3.0999999046325684, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.range.saved_observation", + "factory_default_proved": false + }, + "max_hurt_time": { + "value": 6.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.max_hurt_time.saved_observation", + "factory_default_proved": false + }, + "max_hold_time": { + "value": 5.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.max_hold_time.saved_observation", + "factory_default_proved": false + }, + "fake_block_animation": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.fake_block_animation.saved_observation", + "factory_default_proved": false + }, + "fake_block_animation_require_target": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.fake_block_animation_require_target.saved_observation", + "factory_default_proved": false + }, + "lag_chance": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.lag_chance.saved_observation", + "factory_default_proved": false + }, + "lag_duration": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.lag_duration.saved_observation", + "factory_default_proved": false + }, + "lag_flush_attack": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.lag_flush_attack.saved_observation", + "factory_default_proved": false + }, + "lag_reblock": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.lag_reblock.saved_observation", + "factory_default_proved": false + }, + "require_left_mouse_pressed": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.require_left_mouse_pressed.saved_observation", + "factory_default_proved": false + }, + "require_right_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.require_right_mouse_pressed.saved_observation", + "factory_default_proved": false + }, + "require_damage": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Block.require_damage.saved_observation", + "factory_default_proved": false + } + }, + "Teams": { + "match_self_color": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Teams.match_self_color.saved_observation", + "factory_default_proved": false + }, + "team_colors": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + } + }, + "GUI": { + "scale": { + "value": "Medium (100%)", + "basis": "preserved_GUI_caller_appearance_policy", + "source": "https://docs.slinky.gg/modules/visual/gui/", + "factory_default_proved": false + }, + "accent_color": { + "value": { + "r": 1.0, + "g": 0.35, + "b": 0.0 + }, + "basis": "preserved_GUI_caller_appearance_policy", + "source": "https://docs.slinky.gg/modules/visual/gui/", + "factory_default_proved": false + }, + "allow_input": { + "value": false, + "basis": "preserved_GUI_caller_appearance_policy", + "source": "https://docs.slinky.gg/modules/visual/gui/", + "factory_default_proved": false + }, + "compact": { + "value": false, + "basis": "preserved_GUI_caller_appearance_policy", + "source": "https://docs.slinky.gg/modules/visual/gui/", + "factory_default_proved": false + }, + "wide": { + "value": false, + "basis": "preserved_GUI_caller_appearance_policy", + "source": "https://docs.slinky.gg/modules/visual/gui/", + "factory_default_proved": false + } + }, + "Timer": { + "speed": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer.speed.saved_observation", + "factory_default_proved": false + }, + "require_mouse": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer.require_mouse.saved_observation", + "factory_default_proved": false + }, + "require_damage": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer.require_damage.saved_observation", + "factory_default_proved": false + }, + "require_falling": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer.require_falling.saved_observation", + "factory_default_proved": false + } + }, + "Fake Lag": { + "mode": { + "value": "Static", + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/fake-lag/#mode", + "factory_default_proved": true + }, + "inbound": { + "value": 50.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.inbound.saved_observation", + "factory_default_proved": false + }, + "outbound": { + "value": 50.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.outbound.saved_observation", + "factory_default_proved": false + }, + "realtime_damage": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.realtime_damage.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_attack": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.require_attack.saved_observation", + "factory_default_proved": false + }, + "require_ingame": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fake Lag.require_ingame.saved_observation", + "factory_default_proved": false + } + }, + "Criticals": { + "mode": { + "value": "Packet", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.mode.saved_observation", + "factory_default_proved": false + }, + "chance": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.chance.saved_observation", + "factory_default_proved": false + }, + "max_delay": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.max_delay.saved_observation", + "factory_default_proved": false + }, + "timer_speed": { + "value": 0.8500000238418579, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.timer_speed.saved_observation", + "factory_default_proved": false + }, + "boost": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.boost.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Criticals.require_mouse_pressed.saved_observation", + "factory_default_proved": false + } + }, + "No Item Release": { + "mode": { + "value": "Sword", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Item Release.mode.saved_observation", + "factory_default_proved": false + } + }, + "Blink": { + "direction": { + "value": "Out", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Blink.direction.saved_observation", + "factory_default_proved": false + }, + "max_duration": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Blink.max_duration.saved_observation", + "factory_default_proved": false + }, + "disable_on_attack": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Blink.disable_on_attack.saved_observation", + "factory_default_proved": false + }, + "disable_on_block_interact": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Blink.disable_on_block_interact.saved_observation", + "factory_default_proved": false + }, + "disable_on_block_dig": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Blink.disable_on_block_dig.saved_observation", + "factory_default_proved": false + } + }, + "Chest ESP": { + "range": { + "value": 20.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.range.saved_observation", + "factory_default_proved": false + }, + "render_chest": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.render_chest.saved_observation", + "factory_default_proved": false + }, + "render_ender_chest": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.render_ender_chest.saved_observation", + "factory_default_proved": false + }, + "render_trapped_chest": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.render_trapped_chest.saved_observation", + "factory_default_proved": false + }, + "render_beacon": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.render_beacon.saved_observation", + "factory_default_proved": false + }, + "line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.line_width.saved_observation", + "factory_default_proved": false + }, + "color_chest": { + "value": { + "r": 1.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.color_chest.saved_observation", + "factory_default_proved": false + }, + "color_ender_chest": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 1.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.color_ender_chest.saved_observation", + "factory_default_proved": false + }, + "color_trapped_chest": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.color_trapped_chest.saved_observation", + "factory_default_proved": false + }, + "color_beacon": { + "value": { + "r": 0.0, + "g": 1.0, + "b": 1.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.color_beacon.saved_observation", + "factory_default_proved": false + }, + "filled": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest ESP.filled.saved_observation", + "factory_default_proved": false + } + }, + "Hitboxes": { + "expand": { + "value": 0.10000000149011612, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hitboxes.expand.saved_observation", + "factory_default_proved": false + } + }, + "Mod Overlay": { + "show_combat": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_combat.saved_observation", + "factory_default_proved": false + }, + "show_move": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_move.saved_observation", + "factory_default_proved": false + }, + "show_block": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_block.saved_observation", + "factory_default_proved": false + }, + "show_visual": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_visual.saved_observation", + "factory_default_proved": false + }, + "show_utility": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_utility.saved_observation", + "factory_default_proved": false + }, + "text_size": { + "value": 16.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.text_size.saved_observation", + "factory_default_proved": false + }, + "padding_x": { + "value": 3.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.padding_x.saved_observation", + "factory_default_proved": false + }, + "padding_y": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.padding_y.saved_observation", + "factory_default_proved": false + }, + "bg_rounding": { + "value": 6.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.bg_rounding.saved_observation", + "factory_default_proved": false + }, + "name_color": { + "value": { + "r": 0.953000009059906, + "g": 0.36500000953674316, + "b": 0.07100000232458115 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.name_color.saved_observation", + "factory_default_proved": false + }, + "details_color": { + "value": { + "r": 0.6000000238418579, + "g": 0.6000000238418579, + "b": 0.6000000238418579 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.details_color.saved_observation", + "factory_default_proved": false + }, + "lowercase": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.lowercase.saved_observation", + "factory_default_proved": false + }, + "show_details": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.show_details.saved_observation", + "factory_default_proved": false + }, + "require_bound": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Mod Overlay.require_bound.saved_observation", + "factory_default_proved": false + } + }, + "Notifications": { + "hide_ingame": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.hide_ingame.saved_observation", + "factory_default_proved": false + }, + "hide_hold_notifs": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.hide_hold_notifs.saved_observation", + "factory_default_proved": false + }, + "hide_bind_only": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.hide_bind_only.saved_observation", + "factory_default_proved": false + }, + "show_combat": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.show_combat.saved_observation", + "factory_default_proved": false + }, + "show_move": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.show_move.saved_observation", + "factory_default_proved": false + }, + "show_block": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.show_block.saved_observation", + "factory_default_proved": false + }, + "show_visual": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.show_visual.saved_observation", + "factory_default_proved": false + }, + "show_utility": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Notifications.show_utility.saved_observation", + "factory_default_proved": false + } + }, + "No Jump Delay": {}, + "Sprint": { + "while_using_item": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint.while_using_item.saved_observation", + "factory_default_proved": false + }, + "while_backwards": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint.while_backwards.saved_observation", + "factory_default_proved": false + }, + "while_sideways": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint.while_sideways.saved_observation", + "factory_default_proved": false + }, + "while_in_gui": { + "value": false, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/move/inv-walk/#allow-while", + "factory_default_proved": true + } + }, + "Backtrack": { + "target_dist": { + "value": { + "min": 2.0, + "max": 5.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.target_dist.saved_observation", + "factory_default_proved": false + }, + "delay": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.delay.saved_observation", + "factory_default_proved": false + }, + "max_hurt_time": { + "value": 10.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.max_hurt_time.saved_observation", + "factory_default_proved": false + }, + "cooldown": { + "value": 5.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.cooldown.saved_observation", + "factory_default_proved": false + }, + "disable_on_hit": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.disable_on_hit.saved_observation", + "factory_default_proved": false + }, + "render_remote_pos": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.render_remote_pos.saved_observation", + "factory_default_proved": false + }, + "indicator_color": { + "value": { + "r": 0.9900000095367432, + "g": 0.9900000095367432, + "b": 0.9900000095367432 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.indicator_color.saved_observation", + "factory_default_proved": false + }, + "indicator_line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.indicator_line_width.saved_observation", + "factory_default_proved": false + }, + "indicator_filled": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.indicator_filled.saved_observation", + "factory_default_proved": false + }, + "indicator_rotate": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.indicator_rotate.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.require_mouse_pressed.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Backtrack.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Free Look": { + "target_perspective": { + "value": "Third person", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Free Look.target_perspective.saved_observation", + "factory_default_proved": false + } + }, + "Auto Tool": { + "activation_time": { + "value": 3.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.activation_time.saved_observation", + "factory_default_proved": false + }, + "switch_back": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.switch_back.saved_observation", + "factory_default_proved": false + }, + "allow_using_sword": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.allow_using_sword.saved_observation", + "factory_default_proved": false + }, + "allow_using_tools": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.allow_using_tools.saved_observation", + "factory_default_proved": false + }, + "allow_using_fists": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.allow_using_fists.saved_observation", + "factory_default_proved": false + }, + "allow_using_other": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.allow_using_other.saved_observation", + "factory_default_proved": false + }, + "require_sneak": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.require_sneak.saved_observation", + "factory_default_proved": false + }, + "restrict_allowed_blocks": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Tool.restrict_allowed_blocks.saved_observation", + "factory_default_proved": false + }, + "allowed_blocks": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + } + }, + "Hit Select": { + "mode": { + "value": "Burst", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.mode.saved_observation", + "factory_default_proved": false + }, + "cancel_rate": { + "value": 0.800000011920929, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.cancel_rate.saved_observation", + "factory_default_proved": false + }, + "cancel_rate_air": { + "value": 0.4000000059604645, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.cancel_rate_air.saved_observation", + "factory_default_proved": false + }, + "pause_dur": { + "value": 10.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.pause_dur.saved_observation", + "factory_default_proved": false + }, + "wait_for_damage_dur": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.wait_for_damage_dur.saved_observation", + "factory_default_proved": false + }, + "trades_delay": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.trades_delay.saved_observation", + "factory_default_proved": false + }, + "use_server_time": { + "value": false, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/hit-select/#use-server-attack-time", + "factory_default_proved": true + }, + "fake_swing": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.fake_swing.saved_observation", + "factory_default_proved": false + }, + "crits_allow_reduce": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.crits_allow_reduce.saved_observation", + "factory_default_proved": false + }, + "require_damage": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.require_damage.saved_observation", + "factory_default_proved": false + }, + "require_sprint": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.require_sprint.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Hit Select.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Weapons": { + "fist": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.fist.saved_observation", + "factory_default_proved": false + }, + "swords": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.swords.saved_observation", + "factory_default_proved": false + }, + "axes": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.axes.saved_observation", + "factory_default_proved": false + }, + "extra_items": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + }, + "enchant_sharpness": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.enchant_sharpness.saved_observation", + "factory_default_proved": false + }, + "enchant_knockback": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.enchant_knockback.saved_observation", + "factory_default_proved": false + }, + "enchant_fire_aspect": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.enchant_fire_aspect.saved_observation", + "factory_default_proved": false + }, + "1": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.1.saved_observation", + "factory_default_proved": false + }, + "2": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.2.saved_observation", + "factory_default_proved": false + }, + "3": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.3.saved_observation", + "factory_default_proved": false + }, + "4": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.4.saved_observation", + "factory_default_proved": false + }, + "5": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.5.saved_observation", + "factory_default_proved": false + }, + "6": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.6.saved_observation", + "factory_default_proved": false + }, + "7": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.7.saved_observation", + "factory_default_proved": false + }, + "8": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.8.saved_observation", + "factory_default_proved": false + }, + "9": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Weapons.9.saved_observation", + "factory_default_proved": false + } + }, + "Refill": { + "refill_potion": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.refill_potion.saved_observation", + "factory_default_proved": false + }, + "refill_potion_non_health": { + "value": false, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/utility/refill/#use-non-health-potions", + "factory_default_proved": true + }, + "refill_soup": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.refill_soup.saved_observation", + "factory_default_proved": false + }, + "simulate_button": { + "value": "Right", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.simulate_button.saved_observation", + "factory_default_proved": false + }, + "delay_after_open": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.delay_after_open.saved_observation", + "factory_default_proved": false + }, + "delay_before_close": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.delay_before_close.saved_observation", + "factory_default_proved": false + }, + "speed": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.speed.saved_observation", + "factory_default_proved": false + }, + "smart_speed": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Refill.smart_speed.saved_observation", + "factory_default_proved": false + } + }, + "Auto Pot": { + "delay": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Pot.delay.saved_observation", + "factory_default_proved": false + }, + "prevent_waste": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Pot.prevent_waste.saved_observation", + "factory_default_proved": false + }, + "double_splash": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Pot.double_splash.saved_observation", + "factory_default_proved": false + }, + "use_non_health": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Pot.use_non_health.saved_observation", + "factory_default_proved": false + } + }, + "Inv Walk": { + "mode": { + "value": "Vanilla", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Walk.mode.saved_observation", + "factory_default_proved": false + }, + "stop_on_click": { + "value": "Full", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Walk.stop_on_click.saved_observation", + "factory_default_proved": false + }, + "stop_duration": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Walk.stop_duration.saved_observation", + "factory_default_proved": false + }, + "stop_non_inv": { + "value": "Full", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Walk.stop_non_inv.saved_observation", + "factory_default_proved": false + } + }, + "Keep Sprint": { + "chance": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Keep Sprint.chance.saved_observation", + "factory_default_proved": false + }, + "motion_mult": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Keep Sprint.motion_mult.saved_observation", + "factory_default_proved": false + }, + "allow_reduce": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Keep Sprint.allow_reduce.saved_observation", + "factory_default_proved": false + }, + "require_on_ground": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Keep Sprint.require_on_ground.saved_observation", + "factory_default_proved": false + } + }, + "Lag Range": { + "delay": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.delay.saved_observation", + "factory_default_proved": false + }, + "flush_sprint_reset": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.flush_sprint_reset.saved_observation", + "factory_default_proved": false + }, + "flush_splash_potion": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.flush_splash_potion.saved_observation", + "factory_default_proved": false + }, + "render_remote_pos": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.render_remote_pos.saved_observation", + "factory_default_proved": false + }, + "indicator_color": { + "value": { + "r": 0.9900000095367432, + "g": 0.9900000095367432, + "b": 0.9900000095367432 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.indicator_color.saved_observation", + "factory_default_proved": false + }, + "indicator_line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.indicator_line_width.saved_observation", + "factory_default_proved": false + }, + "indicator_filled": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.indicator_filled.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Lag Range.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Sprint Reset": { + "mode": { + "value": "WTap", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint Reset.mode.saved_observation", + "factory_default_proved": false + }, + "delay": { + "value": 4.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint Reset.delay.saved_observation", + "factory_default_proved": false + }, + "duration": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint Reset.duration.saved_observation", + "factory_default_proved": false + }, + "randomize": { + "value": true, + "basis": "official_documented_default", + "source": "https://docs.slinky.gg/modules/combat/sprint-reset/#randomize", + "factory_default_proved": true + }, + "wait_for_damage": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint Reset.wait_for_damage.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Sprint Reset.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Friends": { + "middle_click_add": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Friends.middle_click_add.saved_observation", + "factory_default_proved": false + }, + "friends": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + } + }, + "Name Tags": { + "range": { + "value": 150.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.range.saved_observation", + "factory_default_proved": false + }, + "scale": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.scale.saved_observation", + "factory_default_proved": false + }, + "show_own_name_tag": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.show_own_name_tag.saved_observation", + "factory_default_proved": false + }, + "use_display_name": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.use_display_name.saved_observation", + "factory_default_proved": false + }, + "distance_scaling": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.distance_scaling.saved_observation", + "factory_default_proved": false + }, + "background": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.background.saved_observation", + "factory_default_proved": false + }, + "text_shadow": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.text_shadow.saved_observation", + "factory_default_proved": false + }, + "show_health": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.show_health.saved_observation", + "factory_default_proved": false + }, + "health_fmt": { + "value": "HP (0-20)", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.health_fmt.saved_observation", + "factory_default_proved": false + }, + "show_distance": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.show_distance.saved_observation", + "factory_default_proved": false + }, + "show_equipment": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.show_equipment.saved_observation", + "factory_default_proved": false + }, + "show_enchants": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Name Tags.show_enchants.saved_observation", + "factory_default_proved": false + } + }, + "Pointers": { + "range": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.range.saved_observation", + "factory_default_proved": false + }, + "ignore_fov": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.ignore_fov.saved_observation", + "factory_default_proved": false + }, + "hide_friendlies": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.hide_friendlies.saved_observation", + "factory_default_proved": false + }, + "style": { + "value": "2D", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.style.saved_observation", + "factory_default_proved": false + }, + "color_mode": { + "value": "Distance", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.color_mode.saved_observation", + "factory_default_proved": false + }, + "near_far_range": { + "value": { + "min": 5.0, + "max": 30.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.near_far_range.saved_observation", + "factory_default_proved": false + }, + "color_near": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.color_near.saved_observation", + "factory_default_proved": false + }, + "color_far": { + "value": { + "r": 0.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.color_far.saved_observation", + "factory_default_proved": false + }, + "color_enemies": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.color_enemies.saved_observation", + "factory_default_proved": false + }, + "color_friendlies": { + "value": { + "r": 0.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.color_friendlies.saved_observation", + "factory_default_proved": false + }, + "scale": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.scale.saved_observation", + "factory_default_proved": false + }, + "radius": { + "value": 10.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.radius.saved_observation", + "factory_default_proved": false + }, + "scale_radius": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Pointers.scale_radius.saved_observation", + "factory_default_proved": false + } + }, + "No Hit Delay": { + "mode": { + "value": "Regular", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Hit Delay.mode.saved_observation", + "factory_default_proved": false + } + }, + "Ping Fix": {}, + "Chams": { + "hide_friendlies": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chams.hide_friendlies.saved_observation", + "factory_default_proved": false + } + }, + "No Use Delay": { + "allow_desync": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Use Delay.allow_desync.saved_observation", + "factory_default_proved": false + } + }, + "Indicators": { + "scale": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.scale.saved_observation", + "factory_default_proved": false + }, + "radius": { + "value": 50.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.radius.saved_observation", + "factory_default_proved": false + }, + "show_arrow": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.show_arrow.saved_observation", + "factory_default_proved": false + }, + "show_fireball": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.show_fireball.saved_observation", + "factory_default_proved": false + }, + "show_pearl": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.show_pearl.saved_observation", + "factory_default_proved": false + }, + "require_coming_closer": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Indicators.require_coming_closer.saved_observation", + "factory_default_proved": false + } + }, + "Block ESP": { + "range": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block ESP.range.saved_observation", + "factory_default_proved": false + }, + "allowed_blocks": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + }, + "should_limit_block_render": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block ESP.should_limit_block_render.saved_observation", + "factory_default_proved": false + }, + "block_render_limit": { + "value": 100.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block ESP.block_render_limit.saved_observation", + "factory_default_proved": false + }, + "line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block ESP.line_width.saved_observation", + "factory_default_proved": false + } + }, + "Item ESP": { + "range": { + "value": 50.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Item ESP.range.saved_observation", + "factory_default_proved": false + }, + "show_count": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Item ESP.show_count.saved_observation", + "factory_default_proved": false + }, + "allowed_items": { + "value": [], + "basis": "explicit_caller_empty_list", + "source": "Fresh configuration supplies an empty user list; original list contents are absent.", + "factory_default_proved": false + }, + "highlight_all": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Item ESP.highlight_all.saved_observation", + "factory_default_proved": false + }, + "default_color": { + "value": { + "r": 1.0, + "g": 1.0, + "b": 1.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Item ESP.default_color.saved_observation", + "factory_default_proved": false + } + }, + "Fast Mine": { + "speed": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Mine.speed.saved_observation", + "factory_default_proved": false + }, + "break_delay": { + "value": 5.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Mine.break_delay.saved_observation", + "factory_default_proved": false + }, + "decr_block_hit_delay": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Mine.decr_block_hit_delay.saved_observation", + "factory_default_proved": false + } + }, + "Safe Walk": { + "motion_multiplier": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Safe Walk.motion_multiplier.saved_observation", + "factory_default_proved": false + }, + "require_holding_blocks": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Safe Walk.require_holding_blocks.saved_observation", + "factory_default_proved": false + }, + "require_looking_down": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Safe Walk.require_looking_down.saved_observation", + "factory_default_proved": false + }, + "require_not_forward": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Safe Walk.require_not_forward.saved_observation", + "factory_default_proved": false + } + }, + "No Hurt Cam": {}, + "Strafe": { + "strength_jump": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Strafe.strength_jump.saved_observation", + "factory_default_proved": false + }, + "strength_ground": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Strafe.strength_ground.saved_observation", + "factory_default_proved": false + }, + "strength_air": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Strafe.strength_air.saved_observation", + "factory_default_proved": false + }, + "max_hurt_time": { + "value": 10.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Strafe.max_hurt_time.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Strafe.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Fast Accel": { + "acceleration": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Accel.acceleration.saved_observation", + "factory_default_proved": false + }, + "require_not_damaged": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Accel.require_not_damaged.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Fast Accel.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Instant Stop": {}, + "No Slow": { + "mult_sword": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Slow.mult_sword.saved_observation", + "factory_default_proved": false + }, + "mult_bow": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Slow.mult_bow.saved_observation", + "factory_default_proved": false + }, + "mult_consumables": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: No Slow.mult_consumables.saved_observation", + "factory_default_proved": false + } + }, + "Item Use Fix": {}, + "Timer Range": { + "mode": { + "value": "Regular", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.mode.saved_observation", + "factory_default_proved": false + }, + "min_dist": { + "value": 2.700000047683716, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.min_dist.saved_observation", + "factory_default_proved": false + }, + "duration": { + "value": 3.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.duration.saved_observation", + "factory_default_proved": false + }, + "duration_legit": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.duration_legit.saved_observation", + "factory_default_proved": false + }, + "cooldown": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.cooldown.saved_observation", + "factory_default_proved": false + }, + "block_while_frozen": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.block_while_frozen.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.require_mouse_pressed.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_not_using_item": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Timer Range.require_not_using_item.saved_observation", + "factory_default_proved": false + } + }, + "Auto Rod": { + "retract_speed": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.retract_speed.saved_observation", + "factory_default_proved": false + }, + "delay": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.delay.saved_observation", + "factory_default_proved": false + }, + "randomize_delays": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.randomize_delays.saved_observation", + "factory_default_proved": false + }, + "always_switch_to_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.always_switch_to_weapon.saved_observation", + "factory_default_proved": false + }, + "allow_throwables": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.allow_throwables.saved_observation", + "factory_default_proved": false + }, + "throw_speed": { + "value": 5.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.throw_speed.saved_observation", + "factory_default_proved": false + }, + "require_not_mouse_over": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Rod.require_not_mouse_over.saved_observation", + "factory_default_proved": false + } + }, + "Anti Debuff": { + "blindness": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Anti Debuff.blindness.saved_observation", + "factory_default_proved": false + }, + "nausea": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Anti Debuff.nausea.saved_observation", + "factory_default_proved": false + } + }, + "Piercing": { + "sort_by": { + "value": "Hurt time", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.sort_by.saved_observation", + "factory_default_proved": false + }, + "non_players": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.non_players.saved_observation", + "factory_default_proved": false + }, + "friendlies": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.friendlies.saved_observation", + "factory_default_proved": false + }, + "bots": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.bots.saved_observation", + "factory_default_proved": false + }, + "enemies": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.enemies.saved_observation", + "factory_default_proved": false + }, + "blocks": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.blocks.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_inside_bb": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Piercing.require_inside_bb.saved_observation", + "factory_default_proved": false + } + }, + "Trajectories": { + "line_width": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.line_width.saved_observation", + "factory_default_proved": false + }, + "color_hit": { + "value": { + "r": 0.0, + "g": 1.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.color_hit.saved_observation", + "factory_default_proved": false + }, + "color_miss": { + "value": { + "r": 1.0, + "g": 0.0, + "b": 0.0 + }, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.color_miss.saved_observation", + "factory_default_proved": false + }, + "render_throwables": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.render_throwables.saved_observation", + "factory_default_proved": false + }, + "render_pearls": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.render_pearls.saved_observation", + "factory_default_proved": false + }, + "render_bow": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.render_bow.saved_observation", + "factory_default_proved": false + }, + "render_uncharged_bow": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Trajectories.render_uncharged_bow.saved_observation", + "factory_default_proved": false + } + }, + "Knockback Delay": { + "range": { + "value": 4.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.range.saved_observation", + "factory_default_proved": false + }, + "chance": { + "value": 1.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.chance.saved_observation", + "factory_default_proved": false + }, + "max_delay": { + "value": 50.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.max_delay.saved_observation", + "factory_default_proved": false + }, + "require_air": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.require_air.saved_observation", + "factory_default_proved": false + }, + "require_target": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.require_target.saved_observation", + "factory_default_proved": false + }, + "require_mouse": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.require_mouse.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Delay.require_weapon.saved_observation", + "factory_default_proved": false + } + }, + "Debug": { + "clicks": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Debug.clicks.saved_observation", + "factory_default_proved": false + }, + "hurt_time": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Debug.hurt_time.saved_observation", + "factory_default_proved": false + }, + "item_use_state": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Debug.item_use_state.saved_observation", + "factory_default_proved": false + } + }, + "Null Move": {}, + "Ghost Hand": { + "non_players": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.non_players.saved_observation", + "factory_default_proved": false + }, + "friendlies": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.friendlies.saved_observation", + "factory_default_proved": false + }, + "bots": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.bots.saved_observation", + "factory_default_proved": false + }, + "enemies": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.enemies.saved_observation", + "factory_default_proved": false + }, + "allow_using_sword": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_sword.saved_observation", + "factory_default_proved": false + }, + "allow_using_tools": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_tools.saved_observation", + "factory_default_proved": false + }, + "allow_using_fists": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_fists.saved_observation", + "factory_default_proved": false + }, + "allow_using_buckets": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_buckets.saved_observation", + "factory_default_proved": false + }, + "allow_using_fns": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_fns.saved_observation", + "factory_default_proved": false + }, + "allow_using_cobweb": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_cobweb.saved_observation", + "factory_default_proved": false + }, + "allow_using_other": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.allow_using_other.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Ghost Hand.require_mouse_pressed.saved_observation", + "factory_default_proved": false + } + }, + "Inv Manager": { + "delay_after_open": { + "value": 3.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.delay_after_open.saved_observation", + "factory_default_proved": false + }, + "speed": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.speed.saved_observation", + "factory_default_proved": false + }, + "smart_speed": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.smart_speed.saved_observation", + "factory_default_proved": false + }, + "randomize": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.randomize.saved_observation", + "factory_default_proved": false + }, + "equip_armor": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.equip_armor.saved_observation", + "factory_default_proved": false + }, + "sort_hotbar": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.sort_hotbar.saved_observation", + "factory_default_proved": false + }, + "sort_hotbar_fallback": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.sort_hotbar_fallback.saved_observation", + "factory_default_proved": false + }, + "1": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.1.saved_observation", + "factory_default_proved": false + }, + "2": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.2.saved_observation", + "factory_default_proved": false + }, + "3": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.3.saved_observation", + "factory_default_proved": false + }, + "4": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.4.saved_observation", + "factory_default_proved": false + }, + "5": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.5.saved_observation", + "factory_default_proved": false + }, + "6": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.6.saved_observation", + "factory_default_proved": false + }, + "7": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.7.saved_observation", + "factory_default_proved": false + }, + "8": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.8.saved_observation", + "factory_default_proved": false + }, + "9": { + "value": "None", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Inv Manager.9.saved_observation", + "factory_default_proved": false + } + }, + "Chest Stealer": { + "delay_after_open": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest Stealer.delay_after_open.saved_observation", + "factory_default_proved": false + }, + "delay_before_close": { + "value": 0.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest Stealer.delay_before_close.saved_observation", + "factory_default_proved": false + }, + "speed": { + "value": 1.0, + "basis": "imported_saved_observation_clamped_by_recovered_bounds", + "source": "MetadataCatalog.json: Chest Stealer.speed.saved_observation", + "factory_default_proved": false + }, + "smart_speed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest Stealer.smart_speed.saved_observation", + "factory_default_proved": false + }, + "require_vanilla_title": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Chest Stealer.require_vanilla_title.saved_observation", + "factory_default_proved": false + } + }, + "Clutch": { + "range": { + "value": 7.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.range.saved_observation", + "factory_default_proved": false + }, + "max_aim_dist": { + "value": 360.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.max_aim_dist.saved_observation", + "factory_default_proved": false + }, + "min_height": { + "value": 4.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.min_height.saved_observation", + "factory_default_proved": false + }, + "click_speed": { + "value": 18.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.click_speed.saved_observation", + "factory_default_proved": false + }, + "randomization": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.randomization.saved_observation", + "factory_default_proved": false + }, + "select_blocks": { + "value": "Always", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.select_blocks.saved_observation", + "factory_default_proved": false + }, + "sideways_only": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.sideways_only.saved_observation", + "factory_default_proved": false + }, + "aim_speed": { + "value": 30.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.aim_speed.saved_observation", + "factory_default_proved": false + }, + "aim_mult": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.aim_mult.saved_observation", + "factory_default_proved": false + }, + "aim_mult_strength": { + "value": 0.30000001192092896, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.aim_mult_strength.saved_observation", + "factory_default_proved": false + }, + "aim_multipoint": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.aim_multipoint.saved_observation", + "factory_default_proved": false + }, + "snapback_delay": { + "value": 6.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.snapback_delay.saved_observation", + "factory_default_proved": false + }, + "snapback_duration": { + "value": 4.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.snapback_duration.saved_observation", + "factory_default_proved": false + }, + "snapback_instant_on_jump": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.snapback_instant_on_jump.saved_observation", + "factory_default_proved": false + }, + "snapback_disable_after": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.snapback_disable_after.saved_observation", + "factory_default_proved": false + }, + "require_air": { + "value": true, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.require_air.saved_observation", + "factory_default_proved": false + }, + "require_damage": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.require_damage.saved_observation", + "factory_default_proved": false + }, + "require_backwards": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Clutch.require_backwards.saved_observation", + "factory_default_proved": false + } + }, + "Auto Weapon": { + "activation_time": { + "value": 2.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Weapon.activation_time.saved_observation", + "factory_default_proved": false + }, + "require_mouse_pressed": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Auto Weapon.require_mouse_pressed.saved_observation", + "factory_default_proved": false + } + }, + "Knockback Displace": { + "direction": { + "value": "Left", + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.direction.saved_observation", + "factory_default_proved": false + }, + "use_last_strafe": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.use_last_strafe.saved_observation", + "factory_default_proved": false + }, + "angle": { + "value": 90.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.angle.saved_observation", + "factory_default_proved": false + }, + "cooldown": { + "value": 5.0, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.cooldown.saved_observation", + "factory_default_proved": false + }, + "hide_rotation": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.hide_rotation.saved_observation", + "factory_default_proved": false + }, + "require_no_kb": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.require_no_kb.saved_observation", + "factory_default_proved": false + }, + "require_weapon": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.require_weapon.saved_observation", + "factory_default_proved": false + }, + "require_kb_enchant": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.require_kb_enchant.saved_observation", + "factory_default_proved": false + }, + "require_facing_away": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Knockback Displace.require_facing_away.saved_observation", + "factory_default_proved": false + } + }, + "Block In": { + "speed": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block In.speed.saved_observation", + "factory_default_proved": false + }, + "require_ground": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Block In.require_ground.saved_observation", + "factory_default_proved": false + } + }, + "Speed": { + "speed": { + "value": 0.5, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Speed.speed.saved_observation", + "factory_default_proved": false + }, + "require_ground": { + "value": false, + "basis": "imported_saved_configuration_observation", + "source": "MetadataCatalog.json: Speed.require_ground.saved_observation", + "factory_default_proved": false + } + } + } +} \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/ItemCatalog.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/ItemCatalog.json new file mode 100644 index 0000000..36aed0f --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/ItemCatalog.json @@ -0,0 +1,1542 @@ +[ + { + "name": "Acacia door block", + "id": 196 + }, + { + "name": "Acacia door item", + "id": 430 + }, + { + "name": "Acacia fence", + "id": 192 + }, + { + "name": "Acacia fence gate", + "id": 187 + }, + { + "name": "Acacia stairs", + "id": 163 + }, + { + "name": "Activator rail", + "id": 157 + }, + { + "name": "Air", + "id": 0 + }, + { + "name": "Anvil", + "id": 145 + }, + { + "name": "Apple", + "id": 260 + }, + { + "name": "Armor stand", + "id": 416 + }, + { + "name": "Arrow", + "id": 262 + }, + { + "name": "Baked potato", + "id": 393 + }, + { + "name": "Banner", + "id": 425 + }, + { + "name": "Barrier", + "id": 166 + }, + { + "name": "Beacon", + "id": 138 + }, + { + "name": "Bed block", + "id": 26 + }, + { + "name": "Bed item", + "id": 355 + }, + { + "name": "Bedrock", + "id": 7 + }, + { + "name": "Beef", + "id": 363 + }, + { + "name": "Birch door block", + "id": 194 + }, + { + "name": "Birch door item", + "id": 428 + }, + { + "name": "Birch fence", + "id": 189 + }, + { + "name": "Birch fence gate", + "id": 184 + }, + { + "name": "Birch stairs", + "id": 135 + }, + { + "name": "Blaze powder", + "id": 377 + }, + { + "name": "Blaze rod", + "id": 369 + }, + { + "name": "Boat", + "id": 333 + }, + { + "name": "Bone", + "id": 352 + }, + { + "name": "Book", + "id": 340 + }, + { + "name": "Bookshelf", + "id": 47 + }, + { + "name": "Bow", + "id": 261 + }, + { + "name": "Bowl", + "id": 281 + }, + { + "name": "Bread", + "id": 297 + }, + { + "name": "Brewing stand block", + "id": 117 + }, + { + "name": "Brewing stand item", + "id": 379 + }, + { + "name": "Brick", + "id": 336 + }, + { + "name": "Brick block", + "id": 45 + }, + { + "name": "Brick stairs", + "id": 108 + }, + { + "name": "Brown mushroom", + "id": 39 + }, + { + "name": "Brown mushroom block", + "id": 99 + }, + { + "name": "Bucket", + "id": 325 + }, + { + "name": "Cactus", + "id": 81 + }, + { + "name": "Cake block", + "id": 92 + }, + { + "name": "Cake item", + "id": 354 + }, + { + "name": "Carpet", + "id": 171 + }, + { + "name": "Carrot", + "id": 391 + }, + { + "name": "Carrot on a stick", + "id": 398 + }, + { + "name": "Carrots", + "id": 141 + }, + { + "name": "Cauldron block", + "id": 118 + }, + { + "name": "Cauldron item", + "id": 380 + }, + { + "name": "Chainmail boots", + "id": 305 + }, + { + "name": "Chainmail chestplate", + "id": 303 + }, + { + "name": "Chainmail helmet", + "id": 302 + }, + { + "name": "Chainmail leggings", + "id": 304 + }, + { + "name": "Chest", + "id": 54 + }, + { + "name": "Chest minecart", + "id": 342 + }, + { + "name": "Chicken", + "id": 365 + }, + { + "name": "Clay", + "id": 82 + }, + { + "name": "Clay ball", + "id": 337 + }, + { + "name": "Clock", + "id": 347 + }, + { + "name": "Coal", + "id": 263 + }, + { + "name": "Coal block", + "id": 173 + }, + { + "name": "Coal ore", + "id": 16 + }, + { + "name": "Cobblestone", + "id": 4 + }, + { + "name": "Cobblestone wall", + "id": 139 + }, + { + "name": "Cocoa", + "id": 127 + }, + { + "name": "Command block", + "id": 137 + }, + { + "name": "Command block minecart", + "id": 422 + }, + { + "name": "Comparator", + "id": 404 + }, + { + "name": "Compass", + "id": 345 + }, + { + "name": "Cooked beef", + "id": 364 + }, + { + "name": "Cooked chicken", + "id": 366 + }, + { + "name": "Cooked fish", + "id": 350 + }, + { + "name": "Cooked mutton", + "id": 424 + }, + { + "name": "Cooked porkchop", + "id": 320 + }, + { + "name": "Cooked rabbit", + "id": 412 + }, + { + "name": "Cookie", + "id": 357 + }, + { + "name": "Crafting table", + "id": 58 + }, + { + "name": "Dark oak door block", + "id": 197 + }, + { + "name": "Dark oak door item", + "id": 431 + }, + { + "name": "Dark oak fence", + "id": 191 + }, + { + "name": "Dark oak fence gate", + "id": 186 + }, + { + "name": "Dark oak stairs", + "id": 164 + }, + { + "name": "Daylight detector", + "id": 151 + }, + { + "name": "Daylight detector inverted", + "id": 178 + }, + { + "name": "Deadbush", + "id": 32 + }, + { + "name": "Detector rail", + "id": 28 + }, + { + "name": "Diamond", + "id": 264 + }, + { + "name": "Diamond axe", + "id": 279 + }, + { + "name": "Diamond block", + "id": 57 + }, + { + "name": "Diamond boots", + "id": 313 + }, + { + "name": "Diamond chestplate", + "id": 311 + }, + { + "name": "Diamond helmet", + "id": 310 + }, + { + "name": "Diamond hoe", + "id": 293 + }, + { + "name": "Diamond horse armor", + "id": 419 + }, + { + "name": "Diamond leggings", + "id": 312 + }, + { + "name": "Diamond ore", + "id": 56 + }, + { + "name": "Diamond pickaxe", + "id": 278 + }, + { + "name": "Diamond shovel", + "id": 277 + }, + { + "name": "Diamond sword", + "id": 276 + }, + { + "name": "Dirt", + "id": 3 + }, + { + "name": "Dispenser", + "id": 23 + }, + { + "name": "Double plant", + "id": 175 + }, + { + "name": "Double stone slab", + "id": 43 + }, + { + "name": "Double stone slab2", + "id": 181 + }, + { + "name": "Double wooden slab", + "id": 125 + }, + { + "name": "Dragon egg", + "id": 122 + }, + { + "name": "Dropper", + "id": 158 + }, + { + "name": "Dye", + "id": 351 + }, + { + "name": "Egg", + "id": 344 + }, + { + "name": "Emerald", + "id": 388 + }, + { + "name": "Emerald block", + "id": 133 + }, + { + "name": "Emerald ore", + "id": 129 + }, + { + "name": "Enchanted book", + "id": 403 + }, + { + "name": "Enchanting table", + "id": 116 + }, + { + "name": "End portal", + "id": 119 + }, + { + "name": "End portal frame", + "id": 120 + }, + { + "name": "End stone", + "id": 121 + }, + { + "name": "Ender chest", + "id": 130 + }, + { + "name": "Ender eye", + "id": 381 + }, + { + "name": "Ender pearl", + "id": 368 + }, + { + "name": "Experience bottle", + "id": 384 + }, + { + "name": "Farmland", + "id": 60 + }, + { + "name": "Feather", + "id": 288 + }, + { + "name": "Fermented spider eye", + "id": 376 + }, + { + "name": "Filled map", + "id": 358 + }, + { + "name": "Fire", + "id": 51 + }, + { + "name": "Fire charge", + "id": 385 + }, + { + "name": "Firework charge", + "id": 402 + }, + { + "name": "Fireworks", + "id": 401 + }, + { + "name": "Fish", + "id": 349 + }, + { + "name": "Fishing rod", + "id": 346 + }, + { + "name": "Flint", + "id": 318 + }, + { + "name": "Flint and steel", + "id": 259 + }, + { + "name": "Flower pot block", + "id": 140 + }, + { + "name": "Flower pot item", + "id": 390 + }, + { + "name": "Flowing lava", + "id": 10 + }, + { + "name": "Flowing water", + "id": 8 + }, + { + "name": "Furnace", + "id": 61 + }, + { + "name": "Furnace minecart", + "id": 343 + }, + { + "name": "Ghast tear", + "id": 370 + }, + { + "name": "Glass", + "id": 20 + }, + { + "name": "Glass bottle", + "id": 374 + }, + { + "name": "Glass pane", + "id": 102 + }, + { + "name": "Glowstone", + "id": 89 + }, + { + "name": "Glowstone dust", + "id": 348 + }, + { + "name": "Gold block", + "id": 41 + }, + { + "name": "Gold ingot", + "id": 266 + }, + { + "name": "Gold nugget", + "id": 371 + }, + { + "name": "Gold ore", + "id": 14 + }, + { + "name": "Golden apple", + "id": 322 + }, + { + "name": "Golden axe", + "id": 286 + }, + { + "name": "Golden boots", + "id": 317 + }, + { + "name": "Golden carrot", + "id": 396 + }, + { + "name": "Golden chestplate", + "id": 315 + }, + { + "name": "Golden helmet", + "id": 314 + }, + { + "name": "Golden hoe", + "id": 294 + }, + { + "name": "Golden horse armor", + "id": 418 + }, + { + "name": "Golden leggings", + "id": 316 + }, + { + "name": "Golden pickaxe", + "id": 285 + }, + { + "name": "Golden rail", + "id": 27 + }, + { + "name": "Golden shovel", + "id": 284 + }, + { + "name": "Golden sword", + "id": 283 + }, + { + "name": "Grass", + "id": 2 + }, + { + "name": "Gravel", + "id": 13 + }, + { + "name": "Gunpowder", + "id": 289 + }, + { + "name": "Hardened clay", + "id": 172 + }, + { + "name": "Hay block", + "id": 170 + }, + { + "name": "Heavy weighted pressure plate", + "id": 148 + }, + { + "name": "Hopper", + "id": 154 + }, + { + "name": "Hopper minecart", + "id": 408 + }, + { + "name": "Ice", + "id": 79 + }, + { + "name": "Iron axe", + "id": 258 + }, + { + "name": "Iron bars", + "id": 101 + }, + { + "name": "Iron block", + "id": 42 + }, + { + "name": "Iron boots", + "id": 309 + }, + { + "name": "Iron chestplate", + "id": 307 + }, + { + "name": "Iron door block", + "id": 71 + }, + { + "name": "Iron door item", + "id": 330 + }, + { + "name": "Iron helmet", + "id": 306 + }, + { + "name": "Iron hoe", + "id": 292 + }, + { + "name": "Iron horse armor", + "id": 417 + }, + { + "name": "Iron ingot", + "id": 265 + }, + { + "name": "Iron leggings", + "id": 308 + }, + { + "name": "Iron ore", + "id": 15 + }, + { + "name": "Iron pickaxe", + "id": 257 + }, + { + "name": "Iron shovel", + "id": 256 + }, + { + "name": "Iron sword", + "id": 267 + }, + { + "name": "Iron trapdoor", + "id": 167 + }, + { + "name": "Item frame", + "id": 389 + }, + { + "name": "Jukebox", + "id": 84 + }, + { + "name": "Jungle door block", + "id": 195 + }, + { + "name": "Jungle door item", + "id": 429 + }, + { + "name": "Jungle fence", + "id": 190 + }, + { + "name": "Jungle fence gate", + "id": 185 + }, + { + "name": "Jungle stairs", + "id": 136 + }, + { + "name": "Ladder", + "id": 65 + }, + { + "name": "Lapis block", + "id": 22 + }, + { + "name": "Lapis ore", + "id": 21 + }, + { + "name": "Lava", + "id": 11 + }, + { + "name": "Lava bucket", + "id": 327 + }, + { + "name": "Lead", + "id": 420 + }, + { + "name": "Leather", + "id": 334 + }, + { + "name": "Leather boots", + "id": 301 + }, + { + "name": "Leather chestplate", + "id": 299 + }, + { + "name": "Leather helmet", + "id": 298 + }, + { + "name": "Leather leggings", + "id": 300 + }, + { + "name": "Leaves", + "id": 18 + }, + { + "name": "Leaves2", + "id": 161 + }, + { + "name": "Lever", + "id": 69 + }, + { + "name": "Light weighted pressure plate", + "id": 147 + }, + { + "name": "Lit furnace", + "id": 62 + }, + { + "name": "Lit pumpkin", + "id": 91 + }, + { + "name": "Lit redstone lamp", + "id": 124 + }, + { + "name": "Lit redstone ore", + "id": 74 + }, + { + "name": "Log", + "id": 17 + }, + { + "name": "Log2", + "id": 162 + }, + { + "name": "Magma cream", + "id": 378 + }, + { + "name": "Map", + "id": 395 + }, + { + "name": "Melon", + "id": 360 + }, + { + "name": "Melon block", + "id": 103 + }, + { + "name": "Melon seeds", + "id": 362 + }, + { + "name": "Melon stem", + "id": 105 + }, + { + "name": "Milk bucket", + "id": 335 + }, + { + "name": "Minecart", + "id": 328 + }, + { + "name": "Mob spawner", + "id": 52 + }, + { + "name": "Monster egg", + "id": 97 + }, + { + "name": "Mossy cobblestone", + "id": 48 + }, + { + "name": "Mushroom stew", + "id": 282 + }, + { + "name": "Mutton", + "id": 423 + }, + { + "name": "Mycelium", + "id": 110 + }, + { + "name": "Name tag", + "id": 421 + }, + { + "name": "Nether brick", + "id": 112 + }, + { + "name": "Nether brick fence", + "id": 113 + }, + { + "name": "Nether brick stairs", + "id": 114 + }, + { + "name": "Nether star", + "id": 399 + }, + { + "name": "Nether wart block", + "id": 115 + }, + { + "name": "Nether wart item", + "id": 372 + }, + { + "name": "Netherbrick", + "id": 405 + }, + { + "name": "Netherrack", + "id": 87 + }, + { + "name": "Noteblock", + "id": 25 + }, + { + "name": "Oak door block", + "id": 64 + }, + { + "name": "Oak door item", + "id": 324 + }, + { + "name": "Oak fence", + "id": 85 + }, + { + "name": "Oak fence gate", + "id": 107 + }, + { + "name": "Oak stairs", + "id": 53 + }, + { + "name": "Obsidian", + "id": 49 + }, + { + "name": "Packed ice", + "id": 174 + }, + { + "name": "Painting", + "id": 321 + }, + { + "name": "Paper", + "id": 339 + }, + { + "name": "Piston", + "id": 33 + }, + { + "name": "Piston extension", + "id": 36 + }, + { + "name": "Piston head", + "id": 34 + }, + { + "name": "Planks", + "id": 5 + }, + { + "name": "Poisonous potato", + "id": 394 + }, + { + "name": "Porkchop", + "id": 319 + }, + { + "name": "Portal", + "id": 90 + }, + { + "name": "Potato", + "id": 392 + }, + { + "name": "Potatoes", + "id": 142 + }, + { + "name": "Potion", + "id": 373 + }, + { + "name": "Powered comparator", + "id": 150 + }, + { + "name": "Powered repeater", + "id": 94 + }, + { + "name": "Prismarine", + "id": 168 + }, + { + "name": "Prismarine crystals", + "id": 410 + }, + { + "name": "Prismarine shard", + "id": 409 + }, + { + "name": "Pumpkin", + "id": 86 + }, + { + "name": "Pumpkin pie", + "id": 400 + }, + { + "name": "Pumpkin seeds", + "id": 361 + }, + { + "name": "Pumpkin stem", + "id": 104 + }, + { + "name": "Quartz", + "id": 406 + }, + { + "name": "Quartz block", + "id": 155 + }, + { + "name": "Quartz ore", + "id": 153 + }, + { + "name": "Quartz stairs", + "id": 156 + }, + { + "name": "Rabbit", + "id": 411 + }, + { + "name": "Rabbit foot", + "id": 414 + }, + { + "name": "Rabbit hide", + "id": 415 + }, + { + "name": "Rabbit stew", + "id": 413 + }, + { + "name": "Rail", + "id": 66 + }, + { + "name": "Record 11", + "id": 2266 + }, + { + "name": "Record 13", + "id": 2256 + }, + { + "name": "Record blocks", + "id": 2258 + }, + { + "name": "Record cat", + "id": 2257 + }, + { + "name": "Record chirp", + "id": 2259 + }, + { + "name": "Record far", + "id": 2260 + }, + { + "name": "Record mall", + "id": 2261 + }, + { + "name": "Record mellohi", + "id": 2262 + }, + { + "name": "Record stal", + "id": 2263 + }, + { + "name": "Record strad", + "id": 2264 + }, + { + "name": "Record wait", + "id": 2267 + }, + { + "name": "Record ward", + "id": 2265 + }, + { + "name": "Red flower", + "id": 38 + }, + { + "name": "Red mushroom", + "id": 40 + }, + { + "name": "Red mushroom block", + "id": 100 + }, + { + "name": "Red sandstone", + "id": 179 + }, + { + "name": "Red sandstone stairs", + "id": 180 + }, + { + "name": "Redstone", + "id": 331 + }, + { + "name": "Redstone block", + "id": 152 + }, + { + "name": "Redstone lamp", + "id": 123 + }, + { + "name": "Redstone ore", + "id": 73 + }, + { + "name": "Redstone torch", + "id": 76 + }, + { + "name": "Redstone wire", + "id": 55 + }, + { + "name": "Reeds block", + "id": 83 + }, + { + "name": "Reeds item", + "id": 338 + }, + { + "name": "Repeater", + "id": 356 + }, + { + "name": "Rotten flesh", + "id": 367 + }, + { + "name": "Saddle", + "id": 329 + }, + { + "name": "Sand", + "id": 12 + }, + { + "name": "Sandstone", + "id": 24 + }, + { + "name": "Sandstone stairs", + "id": 128 + }, + { + "name": "Sapling", + "id": 6 + }, + { + "name": "Sea lantern", + "id": 169 + }, + { + "name": "Shears", + "id": 359 + }, + { + "name": "Sign", + "id": 323 + }, + { + "name": "Skull block", + "id": 144 + }, + { + "name": "Skull item", + "id": 397 + }, + { + "name": "Slime ball", + "id": 341 + }, + { + "name": "Slime block", + "id": 165 + }, + { + "name": "Snow", + "id": 80 + }, + { + "name": "Snow layer", + "id": 78 + }, + { + "name": "Snowball", + "id": 332 + }, + { + "name": "Soul sand", + "id": 88 + }, + { + "name": "Spawn egg", + "id": 383 + }, + { + "name": "Speckled melon", + "id": 382 + }, + { + "name": "Spider eye", + "id": 375 + }, + { + "name": "Sponge", + "id": 19 + }, + { + "name": "Spruce door block", + "id": 193 + }, + { + "name": "Spruce door item", + "id": 427 + }, + { + "name": "Spruce fence", + "id": 188 + }, + { + "name": "Spruce fence gate", + "id": 183 + }, + { + "name": "Spruce stairs", + "id": 134 + }, + { + "name": "Stained glass", + "id": 95 + }, + { + "name": "Stained glass pane", + "id": 160 + }, + { + "name": "Stained hardened clay", + "id": 159 + }, + { + "name": "Standing banner", + "id": 176 + }, + { + "name": "Standing sign", + "id": 63 + }, + { + "name": "Stick", + "id": 280 + }, + { + "name": "Sticky piston", + "id": 29 + }, + { + "name": "Stone", + "id": 1 + }, + { + "name": "Stone axe", + "id": 275 + }, + { + "name": "Stone brick stairs", + "id": 109 + }, + { + "name": "Stone button", + "id": 77 + }, + { + "name": "Stone hoe", + "id": 291 + }, + { + "name": "Stone pickaxe", + "id": 274 + }, + { + "name": "Stone pressure plate", + "id": 70 + }, + { + "name": "Stone shovel", + "id": 273 + }, + { + "name": "Stone slab", + "id": 44 + }, + { + "name": "Stone slab2", + "id": 182 + }, + { + "name": "Stone stairs", + "id": 67 + }, + { + "name": "Stone sword", + "id": 272 + }, + { + "name": "Stonebrick", + "id": 98 + }, + { + "name": "String", + "id": 287 + }, + { + "name": "Sugar", + "id": 353 + }, + { + "name": "Tallgrass", + "id": 31 + }, + { + "name": "Tnt", + "id": 46 + }, + { + "name": "Tnt minecart", + "id": 407 + }, + { + "name": "Torch", + "id": 50 + }, + { + "name": "Trapdoor", + "id": 96 + }, + { + "name": "Trapped chest", + "id": 146 + }, + { + "name": "Tripwire", + "id": 132 + }, + { + "name": "Tripwire hook", + "id": 131 + }, + { + "name": "Unlit redstone torch", + "id": 75 + }, + { + "name": "Unpowered comparator", + "id": 149 + }, + { + "name": "Unpowered repeater", + "id": 93 + }, + { + "name": "Vine", + "id": 106 + }, + { + "name": "Wall banner", + "id": 177 + }, + { + "name": "Wall sign", + "id": 68 + }, + { + "name": "Water", + "id": 9 + }, + { + "name": "Water bucket", + "id": 326 + }, + { + "name": "Waterlily", + "id": 111 + }, + { + "name": "Web", + "id": 30 + }, + { + "name": "Wheat block", + "id": 59 + }, + { + "name": "Wheat item", + "id": 296 + }, + { + "name": "Wheat seeds", + "id": 295 + }, + { + "name": "Wooden axe", + "id": 271 + }, + { + "name": "Wooden button", + "id": 143 + }, + { + "name": "Wooden hoe", + "id": 290 + }, + { + "name": "Wooden pickaxe", + "id": 270 + }, + { + "name": "Wooden pressure plate", + "id": 72 + }, + { + "name": "Wooden shovel", + "id": 269 + }, + { + "name": "Wooden slab", + "id": 126 + }, + { + "name": "Wooden sword", + "id": 268 + }, + { + "name": "Wool", + "id": 35 + }, + { + "name": "Writable book", + "id": 386 + }, + { + "name": "Written book", + "id": 387 + }, + { + "name": "Yellow flower", + "id": 37 + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/KeyNames.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/KeyNames.json new file mode 100644 index 0000000..144f61b --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/KeyNames.json @@ -0,0 +1,106 @@ +[ + "NONE", + "MOUSE1", + "MOUSE2", + "MOUSE3", + "MOUSE4", + "MOUSE5", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "NUMPAD0", + "NUMPAD1", + "NUMPAD2", + "NUMPAD3", + "NUMPAD4", + "NUMPAD5", + "NUMPAD6", + "NUMPAD7", + "NUMPAD8", + "NUMPAD9", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "COLON", + "PLUS", + "COMMA", + "MINUS", + "PERIOD", + "SLASH", + "GRAVE", + "LBRACKET", + "BACKSLASH", + "RBRACKET", + "QUOTE", + "LEFT", + "UP", + "RIGHT", + "DOWN", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "BACKSPACE", + "TAB", + "ENTER", + "CAPS", + "ESC", + "SPACE", + "PREV", + "NEXT", + "END", + "HOME", + "PRNTSCR", + "INS", + "DEL", + "NUMLOCK", + "SCROLL", + "LSHIFT", + "RSHIFT", + "LCONTROL", + "RCONTROL", + "LMENU", + "RMENU" +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/MetadataCatalog.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/MetadataCatalog.json new file mode 100644 index 0000000..167131b --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/MetadataCatalog.json @@ -0,0 +1,11750 @@ +{ + "evidence_kind": "runtime observation", + "runtime_base": "0x7ffbfb3b0000", + "source_manifest": "evidence/recovered_cpp/clean/surfaces/manifest.json", + "descriptor_matching": "Exact module label, category below five, and callback RVA set matches manifest.", + "limits": [ + "Descriptor layout inferred from recovered registry consumers.", + "Category display names are not inferred from numeric values.", + "No runtime setting value is asserted as an original source default.", + "All current/saved fields are observations; even bounds/labels are runtime metadata." + ], + "modules": [ + { + "module": "Aim Assist", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2e8cc0", + "name": "Aim Assist", + "description": "Pulls your crosshair towards other players.", + "category_numeric": 0, + "callbacks": [ + { + "event": 1, + "rva": "0x2b200", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x2b5b0", + "priority_signed": 0 + }, + { + "event": 13, + "rva": "0x2b610", + "priority_signed": -100 + }, + { + "event": 18, + "rva": "0x2b630", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2e8ff0", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 4, + "options": [ + { + "value": 0, + "label": "Regular" + }, + { + "value": 1, + "label": "Linear" + }, + { + "value": 2, + "label": "Lock-on" + }, + { + "value": 3, + "label": "Silent" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "hor_speed", + "setting_rva": "0x2e8f20", + "type": "number", + "label": "Horizontal speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 30.0, + "bits": "0x41f00000" + }, + "current_observation": { + "value": 15.0, + "bits": "0x41700000" + }, + "saved_observation": { + "value": 15.0, + "bits": "0x41700000" + } + }, + { + "control": "number", + "key": "ver_speed", + "setting_rva": "0x2e8f58", + "type": "number", + "label": "Vertical speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 30.0, + "bits": "0x41f00000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "lock_on_vertical", + "setting_rva": "0x2e8f90", + "type": "boolean", + "label": "Vertical", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "silent_move_correct", + "setting_rva": "0x2e9050", + "type": "boolean", + "label": "Keep move direction", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "silent_ignore_manual_aim", + "setting_rva": "0x2e9030", + "type": "boolean", + "label": "Ignore manual aim", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "predict", + "setting_rva": "0x2e9190", + "type": "number", + "label": "Predict", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "aim_randomization", + "setting_rva": "0x2e9238", + "type": "number", + "label": "Randomization", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "number", + "key": "hor_hitbox_correct", + "setting_rva": "0x2e91c8", + "type": "number", + "label": "Horizontal", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "ver_hitbox_correct", + "setting_rva": "0x2e9200", + "type": "number", + "label": "Vertical", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "choice", + "key": "mode_target", + "setting_rva": "0x2e9150", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Single" + }, + { + "value": 1, + "label": "Switch" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "sort_by", + "setting_rva": "0x2e92f0", + "type": "choice", + "label": "Sort by", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Sort by", + "option_count": 4, + "options": [ + { + "value": 0, + "label": "Distance" + }, + { + "value": 1, + "label": "Health" + }, + { + "value": 2, + "label": "Hurt time" + }, + { + "value": 3, + "label": "Aim angle" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "allow_exceed_fov", + "setting_rva": "0x2e9290", + "type": "boolean", + "label": "Increased FOV while locked", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "range", + "key": "range", + "setting_rva": "0x2e9070", + "type": "range", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "Range", + "pair_format": "%0.1f blocks", + "extra_ui_parameter_observations": { + "0x28": { + "value": -1.0800178705285228e+36, + "bits": "0xfb5000fe" + }, + "0x2c": { + "value": 4.591074158667398e-41, + "bits": "0x00007ffb" + }, + "0x30": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "0x34": { + "value": 0.0, + "bits": "0x00000000" + } + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 4.0, + "bits": "0x40800000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 4.0, + "bits": "0x40800000" + } + ] + }, + { + "control": "range", + "key": "fov", + "setting_rva": "0x2e8ed0", + "type": "range", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "FOV", + "pair_format": "%0.0f\u00b0", + "extra_ui_parameter_observations": { + "0x28": { + "value": -1.0799992519103319e+36, + "bits": "0xfb500013" + }, + "0x2c": { + "value": 4.591074158667398e-41, + "bits": "0x00007ffb" + }, + "0x30": { + "value": 0.5, + "bits": "0x3f000000" + }, + "0x34": { + "value": 2.0, + "bits": "0x40000000" + } + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 180.0, + "bits": "0x43340000" + }, + "current_observation": [ + { + "value": 4.0, + "bits": "0x40800000" + }, + { + "value": 60.0, + "bits": "0x42700000" + } + ], + "saved_observation": [ + { + "value": 4.0, + "bits": "0x40800000" + }, + { + "value": 60.0, + "bits": "0x42700000" + } + ] + }, + { + "control": "boolean", + "key": "require_sprint", + "setting_rva": "0x2e90c0", + "type": "boolean", + "label": "Sprinting", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse_pressed", + "setting_rva": "0x2e90e0", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse_moved", + "setting_rva": "0x2e8fb0", + "type": "boolean", + "label": "Mouse moved", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "disable_on_block_break", + "setting_rva": "0x2e9100", + "type": "boolean", + "label": "Disable while breaking blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2e9120", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "ignore_invis", + "setting_rva": "0x2e9270", + "type": "boolean", + "label": "Ignore invisibles", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_line_of_sight", + "setting_rva": "0x2e92b0", + "type": "boolean", + "label": "Not behind blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Auto Clicker", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2e9330", + "name": "Auto Clicker", + "description": "Clicks for you when holding down left-click.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x2ca10", + "priority_signed": 0 + }, + { + "event": 1, + "rva": "0x2ca90", + "priority_signed": 0 + }, + { + "event": 17, + "rva": "0x2d140", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "pattern", + "setting_rva": "0x2e9650", + "type": "choice", + "label": "Click pattern", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Click pattern", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Jitter" + }, + { + "value": 1, + "label": "Butterfly" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "target_cps", + "setting_rva": "0x2e95e8", + "type": "number", + "label": "Target CPS", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.1f CPS", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 8.0, + "bits": "0x41000000" + }, + "maximum_observation": { + "value": 22.0, + "bits": "0x41b00000" + }, + "current_observation": { + "value": 12.0, + "bits": "0x41400000" + }, + "saved_observation": { + "value": 12.0, + "bits": "0x41400000" + } + }, + { + "control": "boolean", + "key": "randomize_cps", + "setting_rva": "0x2e9620", + "type": "boolean", + "label": "Randomize", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "exhaust", + "setting_rva": "0x2e9690", + "type": "boolean", + "label": "Simulate exhaust", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "allow_block_break", + "setting_rva": "0x2e9588", + "type": "boolean", + "label": "Allow breaking blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "allow_inventory", + "setting_rva": "0x2e9548", + "type": "boolean", + "label": "Click in inventory", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "inventory_randomize", + "setting_rva": "0x2e9568", + "type": "boolean", + "label": "Randomize speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2e95a8", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_not_using_item", + "setting_rva": "0x2e95c8", + "type": "boolean", + "label": "Not using item", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Auto Soup", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2e96b0", + "name": "Auto Soup", + "description": "Uses soups for you.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x2d510", + "priority_signed": -100 + }, + { + "event": 4, + "rva": "0x2dae0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x2db10", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "single_soup_max_hp", + "setting_rva": "0x2e98c0", + "type": "number", + "label": "Single use", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f\u2665", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 13.0, + "bits": "0x41500000" + }, + "saved_observation": { + "value": 13.0, + "bits": "0x41500000" + } + }, + { + "control": "number", + "key": "double_soup_max_hp", + "setting_rva": "0x2e9930", + "type": "number", + "label": "Double use", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f\u2665", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "saved_observation": { + "value": 6.0, + "bits": "0x40c00000" + } + }, + { + "control": "number", + "key": "randomization", + "setting_rva": "0x2e99d8", + "type": "number", + "label": "Randomization", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "number", + "key": "delay_before", + "setting_rva": "0x2e98f8", + "type": "number", + "label": "Before switching slots", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "number", + "key": "delay_between", + "setting_rva": "0x2e9968", + "type": "number", + "label": "Between actions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "number", + "key": "delay_after", + "setting_rva": "0x2e99a0", + "type": "number", + "label": "Cooldown", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "saved_observation": { + "value": 10.0, + "bits": "0x41200000" + } + }, + { + "control": "boolean", + "key": "drop_bowls", + "setting_rva": "0x2e9a30", + "type": "boolean", + "label": "Drop bowls", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "override_item", + "setting_rva": "0x2e9a10", + "type": "boolean", + "label": "Override item type", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "list", + "key": "allowed_items", + "setting_rva": "0x2e9a50", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 0, + "callback_observations": { + "count": "0x2ab70", + "name": "0x2ab80", + "add": "0x2abb0", + "remove": "0x2ac30", + "clear": "0x2ac50" + } + } + ] + }, + { + "module": "Bridge Assist", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2e9ac0", + "name": "Bridge Assist", + "description": "Sneaks and unsneaks for you while bridging.", + "category_numeric": 3, + "callbacks": [ + { + "event": 5, + "rva": "0x2de50", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x2dec0", + "priority_signed": 0 + }, + { + "event": 17, + "rva": "0x2e260", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x2e5a0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "edge_offset", + "setting_rva": "0x2e9dc8", + "type": "number", + "label": "Edge offset", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2f blocks", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 0.29989999532699585, + "bits": "0x3e998c7e" + }, + "current_observation": { + "value": 0.20000000298023224, + "bits": "0x3e4ccccd" + }, + "saved_observation": { + "value": 0.20000000298023224, + "bits": "0x3e4ccccd" + } + }, + { + "control": "number", + "key": "unsneak_delay", + "setting_rva": "0x2e9e40", + "type": "number", + "label": "Unsneak delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "choice", + "key": "select_blocks", + "setting_rva": "0x2e9d48", + "type": "choice", + "label": "Select blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Select blocks", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "No" + }, + { + "value": 1, + "label": "On depletion" + }, + { + "value": 2, + "label": "Always" + } + ], + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "randomize", + "setting_rva": "0x2e9e00", + "type": "boolean", + "label": "Randomize", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "sneak_on_jump", + "setting_rva": "0x2e9da8", + "type": "boolean", + "label": "Sneak on jump", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "avoid_double_sneak", + "setting_rva": "0x2e9e20", + "type": "boolean", + "label": "Avoid double-sneaking", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_sneak", + "setting_rva": "0x2e9cd0", + "type": "boolean", + "label": "Sneak key pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_holding_blocks", + "setting_rva": "0x2e9d88", + "type": "boolean", + "label": "Holding blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_looking_down", + "setting_rva": "0x2e9cf0", + "type": "boolean", + "label": "Looking down", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_not_forward", + "setting_rva": "0x2e9d10", + "type": "boolean", + "label": "Not moving forward", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Player ESP", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2e9e80", + "name": "Player ESP", + "description": "Highlights other players.", + "category_numeric": 2, + "callbacks": [ + { + "event": 6, + "rva": "0x2eb20", + "priority_signed": -300 + }, + { + "event": 7, + "rva": "0x2eea0", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x2f3f0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ea0e0", + "type": "choice", + "label": "Style", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Style", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "2D" + }, + { + "value": 1, + "label": "3D" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "range", + "setting_rva": "0x2ea1a0", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "maximum_observation": { + "value": 300.0, + "bits": "0x43960000" + }, + "current_observation": { + "value": 150.0, + "bits": "0x43160000" + }, + "saved_observation": { + "value": 150.0, + "bits": "0x43160000" + } + }, + { + "control": "boolean", + "key": "hide_friendlies", + "setting_rva": "0x2ea238", + "type": "boolean", + "label": "Hide friendlies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "color_mode", + "setting_rva": "0x2ea290", + "type": "choice", + "label": "Colors", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Colors", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Automatic" + }, + { + "value": 1, + "label": "Manual" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "color", + "key": "color_enemies", + "setting_rva": "0x2ea218", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_friendlies", + "setting_rva": "0x2ea1f8", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "boolean", + "key": "override_target_color", + "setting_rva": "0x2ea258", + "type": "boolean", + "label": "Override target color", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "color", + "key": "color_target", + "setting_rva": "0x2ea1d8", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "number", + "key": "line_width", + "setting_rva": "0x2ea090", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "hurt_effect", + "setting_rva": "0x2ea140", + "type": "boolean", + "label": "Hurt effect", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "filled", + "setting_rva": "0x2ea160", + "type": "boolean", + "label": "Filled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_2d_box", + "setting_rva": "0x2ea120", + "type": "boolean", + "label": "Show box", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_health_bar", + "setting_rva": "0x2ea180", + "type": "boolean", + "label": "Show health bar", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Fast Place", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ea2d0", + "name": "Fast Place", + "description": "Allows placing blocks faster.", + "category_numeric": 3, + "callbacks": [ + { + "event": 0, + "rva": "0x2fbc0", + "priority_signed": -1000 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "max_cps", + "setting_rva": "0x2ea4e0", + "type": "number", + "label": "Maximum CPS", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.1f CPS", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "current_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "saved_observation": { + "value": 20.0, + "bits": "0x41a00000" + } + }, + { + "control": "number", + "key": "activate_delay", + "setting_rva": "0x2ea518", + "type": "number", + "label": "Activate delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + } + ] + }, + { + "module": "Reach", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ea550", + "name": "Reach", + "description": "Increases your melee range.", + "category_numeric": 0, + "callbacks": [ + { + "event": 8, + "rva": "0x2ffb0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "distance", + "setting_rva": "0x2ea760", + "type": "number", + "label": "Distance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.2f blocks", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "maximum_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "current_observation": { + "value": 3.049999952316284, + "bits": "0x40433333" + }, + "saved_observation": { + "value": 3.049999952316284, + "bits": "0x40433333" + } + }, + { + "control": "number", + "key": "activate_time", + "setting_rva": "0x2ea798", + "type": "number", + "label": "Activate for", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f tick(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "boolean", + "key": "require_sprint", + "setting_rva": "0x2ea7d0", + "type": "boolean", + "label": "Sprinting", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Velocity", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ea7f0", + "name": "Velocity", + "description": "Reduces the amount of knockback you take.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x30180", + "priority_signed": 0 + }, + { + "event": 2, + "rva": "0x302d0", + "priority_signed": -1000 + }, + { + "event": 5, + "rva": "0x303a0", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x303c0", + "priority_signed": 0 + }, + { + "event": 15, + "rva": "0x30410", + "priority_signed": 100 + }, + { + "event": 17, + "rva": "0x30520", + "priority_signed": 100 + }, + { + "event": 18, + "rva": "0x308e0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2eaa20", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 4, + "options": [ + { + "value": 0, + "label": "Regular" + }, + { + "value": 1, + "label": "Jump" + }, + { + "value": 2, + "label": "Reduce" + }, + { + "value": 3, + "label": "Ignore" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "reduce_chance", + "setting_rva": "0x2eab98", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "number", + "key": "fov", + "setting_rva": "0x2eac40", + "type": "number", + "label": "FOV", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f\u00b0", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 114.59156036376953, + "bits": "0x42e52ee1" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 3.1415927410125732, + "bits": "0x40490fdb" + }, + "current_observation": { + "value": 3.1415927410125732, + "bits": "0x40490fdb" + }, + "saved_observation": { + "value": 3.1415927410125732, + "bits": "0x40490fdb" + } + }, + { + "control": "number", + "key": "reduce_amount", + "setting_rva": "0x2eac08", + "type": "number", + "label": "Reduce to", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": -1.0, + "bits": "0xbf800000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "reduce_delay", + "setting_rva": "0x2eabd0", + "type": "number", + "label": "Reduce delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f tick(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "jump_chance", + "setting_rva": "0x2eac78", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "boolean", + "key": "reduce_multiple_per_tick", + "setting_rva": "0x2eab78", + "type": "boolean", + "label": "Allow for double-clicks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "ignore_vertical", + "setting_rva": "0x2eab38", + "type": "choice", + "label": "Ignore vertical", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Ignore vertical", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Never" + }, + { + "value": 1, + "label": "Only in air" + }, + { + "value": 2, + "label": "Always" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "ignore_chance", + "setting_rva": "0x2eaa60", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "boolean", + "key": "require_target", + "setting_rva": "0x2eaaf8", + "type": "boolean", + "label": "Looking at player", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse", + "setting_rva": "0x2eaab8", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_forward", + "setting_rva": "0x2eaa98", + "type": "boolean", + "label": "Moving forward", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2eaad8", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_sprinting_jump", + "setting_rva": "0x2eacb0", + "type": "boolean", + "label": "Sprinting", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Anti Bot", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eacd0", + "name": "Anti Bot", + "description": "Ignores NPCs for specific modules.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x30e70", + "priority_signed": 10000 + }, + { + "event": 5, + "rva": "0x31310", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "invalid_uuid", + "setting_rva": "0x2eaf58", + "type": "choice", + "label": "Invalid UUID", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Invalid UUID", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Off" + }, + { + "value": 1, + "label": "Stationary only" + }, + { + "value": 2, + "label": "Always" + } + ], + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "invalid_username", + "setting_rva": "0x2eafd8", + "type": "boolean", + "label": "Invalid username", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "always_invis", + "setting_rva": "0x2eafb8", + "type": "boolean", + "label": "Always invisible", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "always_stationary", + "setting_rva": "0x2eaf18", + "type": "boolean", + "label": "Always stationary", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "sleeping", + "setting_rva": "0x2eaf98", + "type": "boolean", + "label": "Sleeping", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "min_age", + "setting_rva": "0x2eaee0", + "type": "number", + "label": "Minimum entity age", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f s", + "step_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "extra_ui_parameter_observation": { + "value": 0.05000000074505806, + "bits": "0x3d4ccccd" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 200.0, + "bits": "0x43480000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + } + ] + }, + { + "module": "Auto Block", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eaff8", + "name": "Auto Block", + "description": "Blocks your sword for you in combat.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x31570", + "priority_signed": -1000 + }, + { + "event": 3, + "rva": "0x31a50", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x31a70", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x31b00", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x31b60", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2eb388", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f blocks", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "maximum_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "current_observation": { + "value": 3.0999999046325684, + "bits": "0x40466666" + }, + "saved_observation": { + "value": 3.0999999046325684, + "bits": "0x40466666" + } + }, + { + "control": "number", + "key": "max_hurt_time", + "setting_rva": "0x2eb2b0", + "type": "number", + "label": "Maximum hurt time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "saved_observation": { + "value": 6.0, + "bits": "0x40c00000" + } + }, + { + "control": "number", + "key": "max_hold_time", + "setting_rva": "0x2eb208", + "type": "number", + "label": "Maximum hold duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "saved_observation": { + "value": 5.0, + "bits": "0x40a00000" + } + }, + { + "control": "boolean", + "key": "fake_block_animation", + "setting_rva": "0x2eb348", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "fake_block_animation_require_target", + "setting_rva": "0x2eb368", + "type": "boolean", + "label": "Only within range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "lag_chance", + "setting_rva": "0x2eb240", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f %%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "lag_duration", + "setting_rva": "0x2eb278", + "type": "number", + "label": "Maximum duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "lag_flush_attack", + "setting_rva": "0x2eb3c0", + "type": "boolean", + "label": "Prevent delaying attacks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "lag_reblock", + "setting_rva": "0x2eb3e0", + "type": "boolean", + "label": "Block again immediately", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_left_mouse_pressed", + "setting_rva": "0x2eb2e8", + "type": "boolean", + "label": "Left mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_right_mouse_pressed", + "setting_rva": "0x2eb308", + "type": "boolean", + "label": "Right mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_damage", + "setting_rva": "0x2eb328", + "type": "boolean", + "label": "Damaged", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Teams", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eb400", + "name": "Teams", + "description": "Ignores teammates for specific modules.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x31e10", + "priority_signed": 10000 + }, + { + "event": 5, + "rva": "0x31ff0", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x320b0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "match_self_color", + "setting_rva": "0x2eb610", + "type": "boolean", + "label": "Match own nametag", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "list", + "key": "team_colors", + "setting_rva": "0x2eb630", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 0, + "callback_observations": { + "count": "0x321d0", + "name": "0x321e0", + "add": "0x32220", + "remove": "0x32400", + "clear": "0x32420" + } + } + ] + }, + { + "module": "GUI", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eb740", + "name": "GUI", + "description": "Graphical interface for the cheat.", + "category_numeric": 2, + "callbacks": [ + { + "event": 0, + "rva": "0x325c0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x32600", + "priority_signed": 0 + }, + { + "event": 9, + "rva": "0x32730", + "priority_signed": 0 + }, + { + "event": 10, + "rva": "0x32740", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x327c0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "scale", + "setting_rva": "0x2eb970", + "type": "choice", + "label": "Scale", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Scale", + "option_count": 4, + "options": [ + { + "value": 0, + "label": "Small (75%)" + }, + { + "value": 1, + "label": "Medium (100%)" + }, + { + "value": 2, + "label": "Large (150%)" + }, + { + "value": 3, + "label": "Extra large (200%)" + } + ], + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "color", + "key": "accent_color", + "setting_rva": "0x2eb720", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0858842134475708, + "bits": "0x3dafe410" + }, + { + "value": 0.3545225262641907, + "bits": "0x3eb583fa" + }, + { + "value": 0.9381158351898193, + "bits": "0x3f70285c" + } + ], + "saved_observation": [ + { + "value": 0.953000009059906, + "bits": "0x3f73f7cf" + }, + { + "value": 0.36500000953674316, + "bits": "0x3ebae148" + }, + { + "value": 0.07100000232458115, + "bits": "0x3d916873" + } + ] + }, + { + "control": "boolean", + "key": "allow_input", + "setting_rva": "0x2eb9b0", + "type": "boolean", + "label": "Allow input while open", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "compact", + "setting_rva": "0x2eb9d0", + "type": "boolean", + "label": "Compact", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "wide", + "setting_rva": "0x2eb9f0", + "type": "boolean", + "label": "Wide", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Timer", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eba10", + "name": "Timer", + "description": "Modifies the speed the game runs at.", + "category_numeric": 4, + "callbacks": [ + { + "event": 1, + "rva": "0x328f0", + "priority_signed": 200 + }, + { + "event": 5, + "rva": "0x329b0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "speed", + "setting_rva": "0x2ebc20", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.2fx", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "require_mouse", + "setting_rva": "0x2ebc58", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_damage", + "setting_rva": "0x2ebc98", + "type": "boolean", + "label": "Damage", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_falling", + "setting_rva": "0x2ebc78", + "type": "boolean", + "label": "Falling", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Fake Lag", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ebcc0", + "name": "Fake Lag", + "description": "Adds an artificial delay to your packets.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x32b30", + "priority_signed": 0 + }, + { + "event": 2, + "rva": "0x32cb0", + "priority_signed": 100 + }, + { + "event": 3, + "rva": "0x32cb0", + "priority_signed": 100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ebf70", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Static" + }, + { + "value": 1, + "label": "Pulse" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "inbound", + "setting_rva": "0x2ebed0", + "type": "number", + "label": "Inbound", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "saved_observation": { + "value": 50.0, + "bits": "0x42480000" + } + }, + { + "control": "number", + "key": "outbound", + "setting_rva": "0x2ebf08", + "type": "number", + "label": "Outbound", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "saved_observation": { + "value": 50.0, + "bits": "0x42480000" + } + }, + { + "control": "boolean", + "key": "realtime_damage", + "setting_rva": "0x2ebf40", + "type": "boolean", + "label": "Realtime damage", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2ebfd0", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_attack", + "setting_rva": "0x2ebff0", + "type": "boolean", + "label": "Attacked", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_ingame", + "setting_rva": "0x2ebfb0", + "type": "boolean", + "label": "In-game", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Criticals", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ec010", + "name": "Criticals", + "description": "Increases chance of landing critical hits.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x32f10", + "priority_signed": 0 + }, + { + "event": 1, + "rva": "0x33080", + "priority_signed": 100 + }, + { + "event": 3, + "rva": "0x331a0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x332b0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ec2e0", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Packet" + }, + { + "value": 1, + "label": "Timer" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "chance", + "setting_rva": "0x2ec258", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "max_delay", + "setting_rva": "0x2ec220", + "type": "number", + "label": "Maximum delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "maximum_observation": { + "value": 300.0, + "bits": "0x43960000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "number", + "key": "timer_speed", + "setting_rva": "0x2ec320", + "type": "number", + "label": "Timer speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2fx", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.8500000238418579, + "bits": "0x3f59999a" + }, + "saved_observation": { + "value": 0.8500000238418579, + "bits": "0x3f59999a" + } + }, + { + "control": "number", + "key": "boost", + "setting_rva": "0x2ec358", + "type": "number", + "label": "Boost", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2ec2b0", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse_pressed", + "setting_rva": "0x2ec290", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "No Item Release", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ec390", + "name": "No Item Release", + "description": "Hides item release from server.", + "category_numeric": 4, + "callbacks": [ + { + "event": 3, + "rva": "0x334c0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ec5b8", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Sword" + }, + { + "value": 1, + "label": "Consumable" + }, + { + "value": 2, + "label": "All" + } + ], + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Blink", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ec600", + "name": "Blink", + "description": "Simulates teleporting using lag.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x33660", + "priority_signed": 0 + }, + { + "event": 2, + "rva": "0x336d0", + "priority_signed": 0 + }, + { + "event": 3, + "rva": "0x33750", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x33770", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x337c0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "key": "direction", + "setting_rva": "0x2ec888", + "control": "choice", + "source": "evidence/recovered_cpp/clean/Blink.cpp", + "type": "choice", + "label": "Direction", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Direction", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "In" + }, + { + "value": 1, + "label": "Out" + }, + { + "value": 2, + "label": "Both" + } + ], + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "max_duration", + "setting_rva": "0x2ec830", + "control": "number", + "source": "evidence/recovered_cpp/clean/Blink.cpp", + "type": "number", + "label": "Maximum duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2f s", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.05000000074505806, + "bits": "0x3d4ccccd" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "key": "disable_on_attack", + "setting_rva": "0x2ec810", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Blink.cpp", + "type": "boolean", + "label": "Attack", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "key": "disable_on_block_interact", + "setting_rva": "0x2ec8c8", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Blink.cpp", + "type": "boolean", + "label": "Block dig", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "key": "disable_on_block_dig", + "setting_rva": "0x2ec8e8", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Blink.cpp", + "type": "boolean", + "label": "Block interact", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Chest ESP", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ec908", + "name": "Chest ESP", + "description": "Highlights chests.", + "category_numeric": 2, + "callbacks": [ + { + "event": 0, + "rva": "0x33990", + "priority_signed": 0 + }, + { + "event": 6, + "rva": "0x33b60", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2ecb18", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "saved_observation": { + "value": 20.0, + "bits": "0x41a00000" + } + }, + { + "control": "boolean", + "key": "render_chest", + "setting_rva": "0x2ecb50", + "type": "boolean", + "label": "Regular chests", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_ender_chest", + "setting_rva": "0x2ecb70", + "type": "boolean", + "label": "Ender chests", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_trapped_chest", + "setting_rva": "0x2ecb90", + "type": "boolean", + "label": "Trapped chests", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_beacon", + "setting_rva": "0x2ecbb0", + "type": "boolean", + "label": "Beacons", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "number", + "key": "line_width", + "setting_rva": "0x2ecbd0", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "color", + "key": "color_chest", + "setting_rva": "0x2ecc68", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_ender_chest", + "setting_rva": "0x2ecc08", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ] + }, + { + "control": "color", + "key": "color_trapped_chest", + "setting_rva": "0x2ecc28", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_beacon", + "setting_rva": "0x2ecc48", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ], + "saved_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ] + }, + { + "control": "boolean", + "key": "filled", + "setting_rva": "0x2ecc88", + "type": "boolean", + "label": "Filled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Hitboxes", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ecca8", + "name": "Hitboxes", + "description": "Expands hitboxes of other players.", + "category_numeric": 0, + "callbacks": [ + { + "event": 8, + "rva": "0x33fc0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "expand", + "setting_rva": "0x2eceb8", + "type": "number", + "label": "Expand", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.2f blocks", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "saved_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + } + } + ] + }, + { + "module": "Mod Overlay", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ecef0", + "name": "Mod Overlay", + "description": "Displays a list of all active mods.", + "category_numeric": 2, + "callbacks": [ + { + "event": 0, + "rva": "0x34080", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x34290", + "priority_signed": 0 + }, + { + "event": 9, + "rva": "0x344d0", + "priority_signed": 0 + }, + { + "event": 10, + "rva": "0x34510", + "priority_signed": 100 + }, + { + "event": 11, + "rva": "0x349f0", + "priority_signed": 0 + }, + { + "event": 24, + "rva": "0x34a10", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "show_combat", + "setting_rva": "0x2ed100", + "type": "boolean", + "label": "Combat", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_move", + "setting_rva": "0x2ed120", + "type": "boolean", + "label": "Move", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_block", + "setting_rva": "0x2ed140", + "type": "boolean", + "label": "Block", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_visual", + "setting_rva": "0x2ed160", + "type": "boolean", + "label": "Visual", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_utility", + "setting_rva": "0x2ed180", + "type": "boolean", + "label": "Utility", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "number", + "key": "text_size", + "setting_rva": "0x2ed200", + "type": "number", + "label": "Text size", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 24.0, + "bits": "0x41c00000" + }, + "current_observation": { + "value": 16.0, + "bits": "0x41800000" + }, + "saved_observation": { + "value": 16.0, + "bits": "0x41800000" + } + }, + { + "control": "number", + "key": "padding_x", + "setting_rva": "0x2ed2b0", + "type": "number", + "label": "Padding X", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "number", + "key": "padding_y", + "setting_rva": "0x2ed2e8", + "type": "number", + "label": "Padding Y", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "bg_rounding", + "setting_rva": "0x2ed278", + "type": "number", + "label": "Rounding", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 16.0, + "bits": "0x41800000" + }, + "current_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "saved_observation": { + "value": 6.0, + "bits": "0x40c00000" + } + }, + { + "control": "color", + "key": "name_color", + "setting_rva": "0x2ed238", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.953000009059906, + "bits": "0x3f73f7cf" + }, + { + "value": 0.36500000953674316, + "bits": "0x3ebae148" + }, + { + "value": 0.07100000232458115, + "bits": "0x3d916873" + } + ], + "saved_observation": [ + { + "value": 0.953000009059906, + "bits": "0x3f73f7cf" + }, + { + "value": 0.36500000953674316, + "bits": "0x3ebae148" + }, + { + "value": 0.07100000232458115, + "bits": "0x3d916873" + } + ] + }, + { + "control": "color", + "key": "details_color", + "setting_rva": "0x2ed258", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + }, + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + }, + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + } + ], + "saved_observation": [ + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + }, + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + }, + { + "value": 0.6000000238418579, + "bits": "0x3f19999a" + } + ] + }, + { + "control": "boolean", + "key": "lowercase", + "setting_rva": "0x2ed1c0", + "type": "boolean", + "label": "Lowercase", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_details", + "setting_rva": "0x2ed1e0", + "type": "boolean", + "label": "Show details", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_bound", + "setting_rva": "0x2ed1a0", + "type": "boolean", + "label": "Only bound modules", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Notifications", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ed320", + "name": "Notifications", + "description": "Informs you when certain actions are performed.", + "category_numeric": 2, + "callbacks": [ + { + "event": 5, + "rva": "0x35000", + "priority_signed": 0 + }, + { + "event": 9, + "rva": "0x351a0", + "priority_signed": 0 + }, + { + "event": 10, + "rva": "0x354b0", + "priority_signed": -100 + }, + { + "event": 11, + "rva": "0x35960", + "priority_signed": 0 + }, + { + "event": 12, + "rva": "0x35a30", + "priority_signed": 0 + }, + { + "event": 19, + "rva": "0x35af0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "hide_ingame", + "setting_rva": "0x2ed610", + "type": "boolean", + "label": "In-game", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "hide_hold_notifs", + "setting_rva": "0x2ed550", + "type": "boolean", + "label": "Hold bind is used", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "hide_bind_only", + "setting_rva": "0x2ed530", + "type": "boolean", + "label": "Module is bind-only", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_combat", + "setting_rva": "0x2ed570", + "type": "boolean", + "label": "Combat", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_move", + "setting_rva": "0x2ed590", + "type": "boolean", + "label": "Move", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_block", + "setting_rva": "0x2ed5b0", + "type": "boolean", + "label": "Block", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_visual", + "setting_rva": "0x2ed5d0", + "type": "boolean", + "label": "Visual", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_utility", + "setting_rva": "0x2ed5f0", + "type": "boolean", + "label": "Utility", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "No Jump Delay", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ed630", + "name": "No Jump Delay", + "description": "Removes cooldown when holding jump key.", + "category_numeric": 1, + "callbacks": [ + { + "event": 17, + "rva": "0x35d50", + "priority_signed": 100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "Sprint", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ed840", + "name": "Sprint", + "description": "Automatically sprints for you.", + "category_numeric": 1, + "callbacks": [ + { + "event": 17, + "rva": "0x35d80", + "priority_signed": 100 + }, + { + "event": 21, + "rva": "0x35e30", + "priority_signed": 100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "while_using_item", + "setting_rva": "0x2eda70", + "type": "boolean", + "label": "Using item", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "while_backwards", + "setting_rva": "0x2eda90", + "type": "boolean", + "label": "Backwards", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "while_sideways", + "setting_rva": "0x2edab0", + "type": "boolean", + "label": "Sideways", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "while_in_gui", + "setting_rva": "0x2eda50", + "type": "boolean", + "label": "In inventory", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Backtrack", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2edad0", + "name": "Backtrack", + "description": "Uses lag to make players easier to hit.", + "category_numeric": 0, + "callbacks": [ + { + "event": 2, + "rva": "0x35fd0", + "priority_signed": 0 + }, + { + "event": 6, + "rva": "0x36110", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x362e0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "range", + "key": "target_dist", + "setting_rva": "0x2eddb0", + "type": "range", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "Target distance", + "pair_format": "%.1f blocks", + "extra_ui_parameter_observations": { + "0x28": { + "value": -1.080696380512295e+36, + "bits": "0xfb502272" + }, + "0x2c": { + "value": 4.591074158667398e-41, + "bits": "0x00007ffb" + }, + "0x30": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "0x34": { + "value": 0.0, + "bits": "0x00000000" + } + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 12.0, + "bits": "0x41400000" + }, + "current_observation": [ + { + "value": 2.0, + "bits": "0x40000000" + }, + { + "value": 5.0, + "bits": "0x40a00000" + } + ], + "saved_observation": [ + { + "value": 2.0, + "bits": "0x40000000" + }, + { + "value": 5.0, + "bits": "0x40a00000" + } + ] + }, + { + "control": "number", + "key": "delay", + "setting_rva": "0x2ede00", + "type": "number", + "label": "Maximum delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "number", + "key": "max_hurt_time", + "setting_rva": "0x2edd78", + "type": "number", + "label": "Maximum hurt time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "saved_observation": { + "value": 10.0, + "bits": "0x41200000" + } + }, + { + "control": "number", + "key": "cooldown", + "setting_rva": "0x2ede38", + "type": "number", + "label": "Cooldown", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f s", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.05000000074505806, + "bits": "0x3d4ccccd" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "saved_observation": { + "value": 5.0, + "bits": "0x40a00000" + } + }, + { + "control": "boolean", + "key": "disable_on_hit", + "setting_rva": "0x2edeb0", + "type": "boolean", + "label": "Disable when hit", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "render_remote_pos", + "setting_rva": "0x2eded0", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "color", + "key": "indicator_color", + "setting_rva": "0x2edd18", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + } + ], + "saved_observation": [ + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + } + ] + }, + { + "control": "number", + "key": "indicator_line_width", + "setting_rva": "0x2edce0", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "indicator_filled", + "setting_rva": "0x2edd58", + "type": "boolean", + "label": "Filled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "indicator_rotate", + "setting_rva": "0x2edd38", + "type": "boolean", + "label": "Apply head rotation", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_mouse_pressed", + "setting_rva": "0x2ede70", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2ede90", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Free Look", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2edef0", + "name": "Free Look", + "description": "Freely move the camera around.", + "category_numeric": 2, + "callbacks": [ + { + "event": 5, + "rva": "0x37020", + "priority_signed": 0 + }, + { + "event": 13, + "rva": "0x37100", + "priority_signed": -1000 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "target_perspective", + "setting_rva": "0x2ee118", + "type": "choice", + "label": "Switch to", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Switch to", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "First person" + }, + { + "value": 1, + "label": "Third person" + }, + { + "value": 2, + "label": "Third person (reverse)" + } + ], + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Auto Tool", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ee158", + "name": "Auto Tool", + "description": "Selects the best tool when digging.", + "category_numeric": 3, + "callbacks": [ + { + "event": 25, + "rva": "0x37180", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x374b0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "activation_time", + "setting_rva": "0x2ee370", + "type": "number", + "label": "Activation time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "boolean", + "key": "switch_back", + "setting_rva": "0x2ee468", + "type": "boolean", + "label": "Switch back when done", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "allow_using_sword", + "setting_rva": "0x2ee3c8", + "type": "boolean", + "label": "Sword", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "allow_using_tools", + "setting_rva": "0x2ee3e8", + "type": "boolean", + "label": "Tool", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "allow_using_fists", + "setting_rva": "0x2ee3a8", + "type": "boolean", + "label": "Fists", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "allow_using_other", + "setting_rva": "0x2ee408", + "type": "boolean", + "label": "Other", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_sneak", + "setting_rva": "0x2ee428", + "type": "boolean", + "label": "Sneaking", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "restrict_allowed_blocks", + "setting_rva": "0x2ee448", + "type": "boolean", + "label": "Restrict allowed blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "list", + "key": "allowed_blocks", + "setting_rva": "0x2ee488", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 0, + "callback_observations": { + "count": "0x2ab70", + "name": "0x2ab80", + "add": "0x2abb0", + "remove": "0x2ac30", + "clear": "0x2ac50" + } + } + ] + }, + { + "module": "Hit Select", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ee4f0", + "name": "Hit Select", + "description": "Perfectly times your hits.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x376c0", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x37710", + "priority_signed": -100 + }, + { + "event": 17, + "rva": "0x37ae0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ee870", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Burst" + }, + { + "value": 1, + "label": "Criticals" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "cancel_rate", + "setting_rva": "0x2ee7e0", + "type": "number", + "label": "In combat", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.800000011920929, + "bits": "0x3f4ccccd" + }, + "saved_observation": { + "value": 0.800000011920929, + "bits": "0x3f4ccccd" + } + }, + { + "control": "number", + "key": "cancel_rate_air", + "setting_rva": "0x2ee700", + "type": "number", + "label": "Missed swings", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.4000000059604645, + "bits": "0x3ecccccd" + }, + "saved_observation": { + "value": 0.4000000059604645, + "bits": "0x3ecccccd" + } + }, + { + "control": "number", + "key": "pause_dur", + "setting_rva": "0x2ee738", + "type": "number", + "label": "Pause duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0010000000474974513, + "bits": "0x3a83126f" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "saved_observation": { + "value": 10.0, + "bits": "0x41200000" + } + }, + { + "control": "number", + "key": "wait_for_damage_dur", + "setting_rva": "0x2ee770", + "type": "number", + "label": "Wait for first hit", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0010000000474974513, + "bits": "0x3a83126f" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 8.0, + "bits": "0x41000000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "trades_delay", + "setting_rva": "0x2ee7a8", + "type": "number", + "label": "Hit later in trades", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0010000000474974513, + "bits": "0x3a83126f" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 8.0, + "bits": "0x41000000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "use_server_time", + "setting_rva": "0x2ee8b0", + "type": "boolean", + "label": "Use server attack time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "fake_swing", + "setting_rva": "0x2ee910", + "type": "boolean", + "label": "Fake swing", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "crits_allow_reduce", + "setting_rva": "0x2ee8d0", + "type": "boolean", + "label": "Disable during knockback", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_damage", + "setting_rva": "0x2ee8f0", + "type": "boolean", + "label": "Only while damaged", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_sprint", + "setting_rva": "0x2ee818", + "type": "boolean", + "label": "Sprinting", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2ee838", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Weapons", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ee930", + "name": "Weapons", + "description": "Configure which items are considered weapons.", + "category_numeric": 0, + "callbacks": [ + { + "event": 26, + "rva": "0x38190", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "fist", + "setting_rva": "0x2eeb40", + "type": "boolean", + "label": "Fist", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "swords", + "setting_rva": "0x2eed00", + "type": "boolean", + "label": "Swords", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "axes", + "setting_rva": "0x2eece0", + "type": "boolean", + "label": "Axes", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "list", + "key": "extra_items", + "setting_rva": "0x2eed20", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 0, + "callback_observations": { + "count": "0x2ab70", + "name": "0x2ab80", + "add": "0x2abb0", + "remove": "0x2ac30", + "clear": "0x2ac50" + } + }, + { + "control": "boolean", + "key": "enchant_sharpness", + "setting_rva": "0x2eec80", + "type": "boolean", + "label": "Sharpness", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "enchant_knockback", + "setting_rva": "0x2eeca0", + "type": "boolean", + "label": "Knockback", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "enchant_fire_aspect", + "setting_rva": "0x2eecc0", + "type": "boolean", + "label": "Fire aspect", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "1", + "setting_rva": "0x2eeb60", + "type": "boolean", + "label": "Slot 1", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "2", + "setting_rva": "0x2eeb80", + "type": "boolean", + "label": "Slot 2", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "3", + "setting_rva": "0x2eeba0", + "type": "boolean", + "label": "Slot 3", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "4", + "setting_rva": "0x2eebc0", + "type": "boolean", + "label": "Slot 4", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "5", + "setting_rva": "0x2eebe0", + "type": "boolean", + "label": "Slot 5", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "6", + "setting_rva": "0x2eec00", + "type": "boolean", + "label": "Slot 6", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "7", + "setting_rva": "0x2eec20", + "type": "boolean", + "label": "Slot 7", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "8", + "setting_rva": "0x2eec40", + "type": "boolean", + "label": "Slot 8", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "9", + "setting_rva": "0x2eec60", + "type": "boolean", + "label": "Slot 9", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Refill", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2eed90", + "name": "Refill", + "description": "Automatically moves items into your hotbar.", + "category_numeric": 4, + "callbacks": [ + { + "event": 5, + "rva": "0x384c0", + "priority_signed": 0 + }, + { + "event": 25, + "rva": "0x384f0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "refill_potion", + "setting_rva": "0x2ef068", + "type": "boolean", + "label": "Potions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "refill_potion_non_health", + "setting_rva": "0x2ef088", + "type": "boolean", + "label": "Allow non-health potions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "refill_soup", + "setting_rva": "0x2ef048", + "type": "boolean", + "label": "Soups", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "choice", + "key": "simulate_button", + "setting_rva": "0x2ef0e8", + "type": "choice", + "label": "Simulate button", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Simulate button", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Left" + }, + { + "value": 1, + "label": "Right" + }, + { + "value": 2, + "label": "Left + right" + } + ], + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "number", + "key": "delay_after_open", + "setting_rva": "0x2eefd8", + "type": "number", + "label": "Delay after open", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "number", + "key": "delay_before_close", + "setting_rva": "0x2eefa0", + "type": "number", + "label": "Delay before close", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "speed", + "setting_rva": "0x2ef010", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1fx", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "smart_speed", + "setting_rva": "0x2ef0a8", + "type": "boolean", + "label": "Smart speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Auto Pot", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ef128", + "name": "Auto Pot", + "description": "Uses healing potions for you.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x391c0", + "priority_signed": 0 + }, + { + "event": 4, + "rva": "0x394d0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x39520", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "delay", + "setting_rva": "0x2ef358", + "type": "number", + "label": "Delay between actions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "boolean", + "key": "prevent_waste", + "setting_rva": "0x2ef390", + "type": "boolean", + "label": "Prevent wasting health", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "double_splash", + "setting_rva": "0x2ef3b0", + "type": "boolean", + "label": "Automatically do multiple splashes", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "use_non_health", + "setting_rva": "0x2ef338", + "type": "boolean", + "label": "Use non-health potions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Inv Walk", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ef3d0", + "name": "Inv Walk", + "description": "Allows moving in inventory.", + "category_numeric": 1, + "callbacks": [ + { + "event": 5, + "rva": "0x39790", + "priority_signed": 0 + }, + { + "event": 17, + "rva": "0x397c0", + "priority_signed": 0 + }, + { + "event": 23, + "rva": "0x39ce0", + "priority_signed": 0 + }, + { + "event": 25, + "rva": "0x39e30", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2ef5f0", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Vanilla" + }, + { + "value": 1, + "label": "Spoof" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "stop_on_click", + "setting_rva": "0x2ef648", + "type": "choice", + "label": "Stop on interact", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Stop on interact", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Full" + }, + { + "value": 1, + "label": "Partial" + }, + { + "value": 2, + "label": "No" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "stop_duration", + "setting_rva": "0x2ef688", + "type": "number", + "label": "Stop duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "choice", + "key": "stop_non_inv", + "setting_rva": "0x2ef6c0", + "type": "choice", + "label": "Always stop", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Always stop", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Full" + }, + { + "value": 1, + "label": "Partial" + }, + { + "value": 2, + "label": "No" + } + ], + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Keep Sprint", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ef700", + "name": "Keep Sprint", + "description": "Keeps your sprint speed when attacking players.", + "category_numeric": 1, + "callbacks": [ + { + "event": 14, + "rva": "0x3a0f0", + "priority_signed": 0 + }, + { + "event": 15, + "rva": "0x3a170", + "priority_signed": 0 + }, + { + "event": 17, + "rva": "0x3a260", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "chance", + "setting_rva": "0x2ef910", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "motion_mult", + "setting_rva": "0x2ef948", + "type": "number", + "label": "Retained speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "allow_reduce", + "setting_rva": "0x2ef9a0", + "type": "boolean", + "label": "Allow reducing", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_on_ground", + "setting_rva": "0x2ef980", + "type": "boolean", + "label": "On ground", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Lag Range", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2ef9c0", + "name": "Lag Range", + "description": "Uses lag to stay out of target range.", + "category_numeric": 0, + "callbacks": [ + { + "event": 3, + "rva": "0x3a3c0", + "priority_signed": -100 + }, + { + "event": 6, + "rva": "0x3a610", + "priority_signed": 0 + }, + { + "event": 15, + "rva": "0x3a780", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x3a7d0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "delay", + "setting_rva": "0x2efc48", + "type": "number", + "label": "Maximum delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "boolean", + "key": "flush_sprint_reset", + "setting_rva": "0x2efcc0", + "type": "boolean", + "label": "Sprint reset", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "flush_splash_potion", + "setting_rva": "0x2efca0", + "type": "boolean", + "label": "Used splash potion", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "render_remote_pos", + "setting_rva": "0x2efce0", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "color", + "key": "indicator_color", + "setting_rva": "0x2efc08", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + } + ], + "saved_observation": [ + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + }, + { + "value": 0.9900000095367432, + "bits": "0x3f7d70a4" + } + ] + }, + { + "control": "number", + "key": "indicator_line_width", + "setting_rva": "0x2efbd0", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "indicator_filled", + "setting_rva": "0x2efc28", + "type": "boolean", + "label": "Filled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2efc80", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Sprint Reset", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2efd00", + "name": "Sprint Reset", + "description": "Resets your sprint state to deal more knockback.", + "category_numeric": 0, + "callbacks": [ + { + "event": 17, + "rva": "0x3ad10", + "priority_signed": -100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2eff28", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "WTap" + }, + { + "value": 1, + "label": "Sneak" + }, + { + "value": 2, + "label": "NoStop" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "delay", + "setting_rva": "0x2eff68", + "type": "number", + "label": "Delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 8.0, + "bits": "0x41000000" + }, + "current_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "saved_observation": { + "value": 4.0, + "bits": "0x40800000" + } + }, + { + "control": "number", + "key": "duration", + "setting_rva": "0x2f0000", + "type": "number", + "label": "Stop duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "randomize", + "setting_rva": "0x2effa0", + "type": "boolean", + "label": "Randomize", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "wait_for_damage", + "setting_rva": "0x2effc0", + "type": "boolean", + "label": "Damaged", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2effe0", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Friends", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f0038", + "name": "Friends", + "description": "Lets you mark other players as friendly.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x3b3c0", + "priority_signed": 10000 + }, + { + "event": 5, + "rva": "0x3b510", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x3b5d0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "middle_click_add", + "setting_rva": "0x2f0248", + "type": "boolean", + "label": "Middle-click to add", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "list", + "key": "friends", + "setting_rva": "0x2f0268", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 0, + "callback_observations": { + "count": "0x3bca0", + "name": "0x3bcb0", + "add": "0x3beb0", + "remove": "0x3c170", + "clear": "0x3c190" + } + } + ] + }, + { + "module": "Name Tags", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f02d0", + "name": "Name Tags", + "description": "Makes player name tags easier to see.", + "category_numeric": 2, + "callbacks": [ + { + "event": 5, + "rva": "0x3c210", + "priority_signed": 0 + }, + { + "event": 7, + "rva": "0x3c280", + "priority_signed": -1000 + }, + { + "event": 18, + "rva": "0x3ca20", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f05b8", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "maximum_observation": { + "value": 300.0, + "bits": "0x43960000" + }, + "current_observation": { + "value": 150.0, + "bits": "0x43160000" + }, + "saved_observation": { + "value": 150.0, + "bits": "0x43160000" + } + }, + { + "control": "number", + "key": "scale", + "setting_rva": "0x2f04e0", + "type": "number", + "label": "Scale", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f %%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "maximum_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "show_own_name_tag", + "setting_rva": "0x2f05f0", + "type": "boolean", + "label": "Show own name tag", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "use_display_name", + "setting_rva": "0x2f0610", + "type": "boolean", + "label": "Use display name format", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "distance_scaling", + "setting_rva": "0x2f0518", + "type": "boolean", + "label": "Distance scaling", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "background", + "setting_rva": "0x2f0538", + "type": "boolean", + "label": "Text background", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "text_shadow", + "setting_rva": "0x2f0558", + "type": "boolean", + "label": "Text shadow", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "show_health", + "setting_rva": "0x2f0630", + "type": "boolean", + "label": "Health", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "health_fmt", + "setting_rva": "0x2f0680", + "type": "choice", + "label": "Health format", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Health format", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "HP (0-20)" + }, + { + "value": 1, + "label": "Hearts (0.0-10.0)" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "show_distance", + "setting_rva": "0x2f0650", + "type": "boolean", + "label": "Distance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "show_equipment", + "setting_rva": "0x2f0578", + "type": "boolean", + "label": "Equipment", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "show_enchants", + "setting_rva": "0x2f0598", + "type": "boolean", + "label": "Enchantments", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Pointers", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f06c0", + "name": "Pointers", + "description": "Points to other players.", + "category_numeric": 2, + "callbacks": [ + { + "event": 7, + "rva": "0x3da80", + "priority_signed": -200 + }, + { + "event": 18, + "rva": "0x3df10", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f0a98", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "number", + "key": "ignore_fov", + "setting_rva": "0x2f0ad0", + "type": "number", + "label": "Ignore within FOV", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f\u00b0", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 180.0, + "bits": "0x43340000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "hide_friendlies", + "setting_rva": "0x2f0b48", + "type": "boolean", + "label": "Hide friendlies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "style", + "setting_rva": "0x2f09e0", + "type": "choice", + "label": "Style", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Style", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "2D" + }, + { + "value": 1, + "label": "3D" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "color_mode", + "setting_rva": "0x2f0a58", + "type": "choice", + "label": "Colors", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Colors", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "Distance" + }, + { + "value": 1, + "label": "Name tag" + }, + { + "value": 2, + "label": "Manual" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "range", + "key": "near_far_range", + "setting_rva": "0x2f08d0", + "type": "range", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "Transition between", + "pair_format": "%0.0f blocks", + "extra_ui_parameter_observations": { + "0x28": { + "value": -1.0812398857071428e+36, + "bits": "0xfb503d3e" + }, + "0x2c": { + "value": 4.591074158667398e-41, + "bits": "0x00007ffb" + }, + "0x30": { + "value": 0.0, + "bits": "0x00000000" + }, + "0x34": { + "value": 0.0, + "bits": "0x00000000" + } + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": [ + { + "value": 5.0, + "bits": "0x40a00000" + }, + { + "value": 30.0, + "bits": "0x41f00000" + } + ], + "saved_observation": [ + { + "value": 5.0, + "bits": "0x40a00000" + }, + { + "value": 30.0, + "bits": "0x41f00000" + } + ] + }, + { + "control": "color", + "key": "color_near", + "setting_rva": "0x2f0990", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_far", + "setting_rva": "0x2f09b0", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_enemies", + "setting_rva": "0x2f0b28", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_friendlies", + "setting_rva": "0x2f0b08", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "number", + "key": "scale", + "setting_rva": "0x2f0920", + "type": "number", + "label": "Scale", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.75, + "bits": "0x3f400000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "radius", + "setting_rva": "0x2f0958", + "type": "number", + "label": "Radius", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "saved_observation": { + "value": 10.0, + "bits": "0x41200000" + } + }, + { + "control": "boolean", + "key": "scale_radius", + "setting_rva": "0x2f0a20", + "type": "boolean", + "label": "Distance-based radius", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "No Hit Delay", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f0b70", + "name": "No Hit Delay", + "description": "Removes 1.8 swing delay.", + "category_numeric": 4, + "callbacks": [ + { + "event": 14, + "rva": "0x3e590", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2f0d90", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Regular" + }, + { + "value": 1, + "label": "Legit" + } + ], + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Ping Fix", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f0dd0", + "name": "Ping Fix", + "description": "Shows your real ping while using lag mods.", + "category_numeric": 4, + "callbacks": [ + { + "event": 2, + "rva": "0x3e6d0", + "priority_signed": -1000 + }, + { + "event": 3, + "rva": "0x3e700", + "priority_signed": -1000 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "Chams", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f0fe0", + "name": "Chams", + "description": "Renders players behind blocks.", + "category_numeric": 2, + "callbacks": [], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "hide_friendlies", + "setting_rva": "0x2f11f0", + "type": "boolean", + "label": "Hide friendlies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "No Use Delay", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f1210", + "name": "No Use Delay", + "description": "Removes vanilla delay when consuming items.", + "category_numeric": 4, + "callbacks": [ + { + "event": 18, + "rva": "0x3e8e0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "allow_desync", + "setting_rva": "0x2f1420", + "type": "boolean", + "label": "Allow desync abuse", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Indicators", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f1440", + "name": "Indicators", + "description": "Points to incoming projectiles.", + "category_numeric": 2, + "callbacks": [ + { + "event": 5, + "rva": "0x3ea40", + "priority_signed": 0 + }, + { + "event": 7, + "rva": "0x3ead0", + "priority_signed": -300 + }, + { + "event": 18, + "rva": "0x3ef20", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "scale", + "setting_rva": "0x2f1650", + "type": "number", + "label": "Scale", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "maximum_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "number", + "key": "radius", + "setting_rva": "0x2f1688", + "type": "number", + "label": "Radius", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "maximum_observation": { + "value": 200.0, + "bits": "0x43480000" + }, + "current_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "saved_observation": { + "value": 50.0, + "bits": "0x42480000" + } + }, + { + "control": "boolean", + "key": "show_arrow", + "setting_rva": "0x2f16c0", + "type": "boolean", + "label": "Arrows", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_fireball", + "setting_rva": "0x2f16e0", + "type": "boolean", + "label": "Fireballs", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "show_pearl", + "setting_rva": "0x2f1700", + "type": "boolean", + "label": "Ender pearls", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_coming_closer", + "setting_rva": "0x2f1720", + "type": "boolean", + "label": "Coming closer", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Block ESP", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f1740", + "name": "Block ESP", + "description": "Highlights blocks.", + "category_numeric": 2, + "callbacks": [ + { + "event": 0, + "rva": "0x3f4c0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x3f6a0", + "priority_signed": 0 + }, + { + "event": 6, + "rva": "0x3f7b0", + "priority_signed": -200 + }, + { + "event": 20, + "rva": "0x3fa40", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x3fa50", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f1a28", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f chunk(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "list", + "key": "allowed_blocks", + "setting_rva": "0x2f1950", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 1, + "callback_observations": { + "count": "0x40000", + "name": "0x40010", + "color": "0x40030", + "add": "0x40050", + "remove": "0x40240", + "clear": "0x40340" + } + }, + { + "control": "boolean", + "key": "should_limit_block_render", + "setting_rva": "0x2f1a60", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "block_render_limit", + "setting_rva": "0x2f19f0", + "type": "number", + "label": "Limit per chunk section", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f block(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "saved_observation": { + "value": 100.0, + "bits": "0x42c80000" + } + }, + { + "control": "number", + "key": "line_width", + "setting_rva": "0x2f19b8", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + } + ] + }, + { + "module": "Item ESP", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f1a80", + "name": "Item ESP", + "description": "Highlights dropped items.", + "category_numeric": 2, + "callbacks": [ + { + "event": 6, + "rva": "0x40de0", + "priority_signed": -200 + }, + { + "event": 18, + "rva": "0x41250", + "priority_signed": 0 + }, + { + "event": 26, + "rva": "0x416c0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f1cb0", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "maximum_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "current_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "saved_observation": { + "value": 50.0, + "bits": "0x42480000" + } + }, + { + "control": "boolean", + "key": "show_count", + "setting_rva": "0x2f1c90", + "type": "boolean", + "label": "Show count", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "list", + "key": "allowed_items", + "setting_rva": "0x2f1d28", + "type": "list", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "kind_observation": 1, + "callback_observations": { + "count": "0x41890", + "name": "0x418a0", + "color": "0x418c0", + "add": "0x418e0", + "remove": "0x41a20", + "clear": "0x41a60" + } + }, + { + "control": "boolean", + "key": "highlight_all", + "setting_rva": "0x2f1d08", + "type": "boolean", + "label": "Highlight all items", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "color", + "key": "default_color", + "setting_rva": "0x2f1ce8", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + } + ] + } + ] + }, + { + "module": "Fast Mine", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f1d90", + "name": "Fast Mine", + "description": "Increases block mining speed.", + "category_numeric": 3, + "callbacks": [ + { + "event": 0, + "rva": "0x41a90", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x41b30", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "speed", + "setting_rva": "0x2f1ff8", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2fx", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "break_delay", + "setting_rva": "0x2f1fa0", + "type": "number", + "label": "Break delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "saved_observation": { + "value": 5.0, + "bits": "0x40a00000" + } + }, + { + "control": "boolean", + "key": "decr_block_hit_delay", + "setting_rva": "0x2f1fd8", + "type": "boolean", + "label": "Always decrease break delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Safe Walk", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f2030", + "name": "Safe Walk", + "description": "Prevents you from walking off ledges.", + "category_numeric": 1, + "callbacks": [ + { + "event": 0, + "rva": "0x41d30", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "motion_multiplier", + "setting_rva": "0x2f2240", + "type": "number", + "label": "Motion", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2fx", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.800000011920929, + "bits": "0x3f4ccccd" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "boolean", + "key": "require_holding_blocks", + "setting_rva": "0x2f22b8", + "type": "boolean", + "label": "Holding blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_looking_down", + "setting_rva": "0x2f2278", + "type": "boolean", + "label": "Looking down", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_not_forward", + "setting_rva": "0x2f2298", + "type": "boolean", + "label": "Not moving forward", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "No Hurt Cam", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f22d8", + "name": "No Hurt Cam", + "description": "Removes camera shake when taking damage.", + "category_numeric": 2, + "callbacks": [], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "Strafe", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f24e8", + "name": "Strafe", + "description": "Allows faster strafing.", + "category_numeric": 1, + "callbacks": [ + { + "event": 21, + "rva": "0x41f90", + "priority_signed": 1000 + }, + { + "event": 22, + "rva": "0x41fc0", + "priority_signed": 100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "strength_jump", + "setting_rva": "0x2f2768", + "type": "number", + "label": "Jump", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "strength_ground", + "setting_rva": "0x2f27a0", + "type": "number", + "label": "Ground", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "strength_air", + "setting_rva": "0x2f2730", + "type": "number", + "label": "Air", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "max_hurt_time", + "setting_rva": "0x2f26f8", + "type": "number", + "label": "Maximum hurt time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "saved_observation": { + "value": 10.0, + "bits": "0x41200000" + } + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f27d8", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Fast Accel", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f27f8", + "name": "Fast Accel", + "description": "Speeds up acceleration.", + "category_numeric": 1, + "callbacks": [ + { + "event": 22, + "rva": "0x42320", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "acceleration", + "setting_rva": "0x2f2a08", + "type": "number", + "label": "Boost", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "require_not_damaged", + "setting_rva": "0x2f2a60", + "type": "boolean", + "label": "Not damaged", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f2a40", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Instant Stop", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f2a80", + "name": "Instant Stop", + "description": "Instantly stops moving when move keys are released.", + "category_numeric": 1, + "callbacks": [ + { + "event": 16, + "rva": "0x42650", + "priority_signed": 200 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "No Slow", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f2c90", + "name": "No Slow", + "description": "Removes slowdown while using items.", + "category_numeric": 1, + "callbacks": [ + { + "event": 21, + "rva": "0x42a20", + "priority_signed": 200 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "mult_sword", + "setting_rva": "0x2f2ed8", + "type": "number", + "label": "Sword", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.20000000298023224, + "bits": "0x3e4ccccd" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "mult_bow", + "setting_rva": "0x2f2ea0", + "type": "number", + "label": "Bow", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.20000000298023224, + "bits": "0x3e4ccccd" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "mult_consumables", + "setting_rva": "0x2f2f10", + "type": "number", + "label": "Consumables", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.20000000298023224, + "bits": "0x3e4ccccd" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + } + ] + }, + { + "module": "Item Use Fix", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f2f48", + "name": "Item Use Fix", + "description": "Allows using items while breaking blocks.", + "category_numeric": 4, + "callbacks": [ + { + "event": 14, + "rva": "0x42b80", + "priority_signed": 0 + }, + { + "event": 15, + "rva": "0x42be0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "Timer Range", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f3160", + "name": "Timer Range", + "description": "Abuses timer lag to teleport you.", + "category_numeric": 0, + "callbacks": [ + { + "event": 0, + "rva": "0x42c60", + "priority_signed": -100 + }, + { + "event": 1, + "rva": "0x42f00", + "priority_signed": 0 + }, + { + "event": 3, + "rva": "0x43950", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x43970", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "mode", + "setting_rva": "0x2f33e0", + "type": "choice", + "label": "Mode", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Mode", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Regular" + }, + { + "value": 1, + "label": "Legit" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "min_dist", + "setting_rva": "0x2f34e8", + "type": "number", + "label": "Minimum distance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.2f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "maximum_observation": { + "value": 2.9000000953674316, + "bits": "0x4039999a" + }, + "current_observation": { + "value": 2.700000047683716, + "bits": "0x402ccccd" + }, + "saved_observation": { + "value": 2.700000047683716, + "bits": "0x402ccccd" + } + }, + { + "control": "number", + "key": "duration", + "setting_rva": "0x2f3478", + "type": "number", + "label": "Duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "number", + "key": "duration_legit", + "setting_rva": "0x2f34b0", + "type": "number", + "label": "Duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "number", + "key": "cooldown", + "setting_rva": "0x2f3440", + "type": "number", + "label": "Cooldown", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.1f s", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "block_while_frozen", + "setting_rva": "0x2f3420", + "type": "boolean", + "label": "Block while frozen", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse_pressed", + "setting_rva": "0x2f3370", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f3390", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_not_using_item", + "setting_rva": "0x2f33b0", + "type": "boolean", + "label": "Not using item", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Auto Rod", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f3520", + "name": "Auto Rod", + "description": "Throws your fishing rod for you.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x43d80", + "priority_signed": 0 + }, + { + "event": 4, + "rva": "0x44340", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x44390", + "priority_signed": 0 + }, + { + "event": 14, + "rva": "0x443c0", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "retract_speed", + "setting_rva": "0x2f37f0", + "type": "number", + "label": "Retract speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.2fx", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "delay", + "setting_rva": "0x2f3798", + "type": "number", + "label": "Delay between actions", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "boolean", + "key": "randomize_delays", + "setting_rva": "0x2f37d0", + "type": "boolean", + "label": "Randomize delays", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "always_switch_to_weapon", + "setting_rva": "0x2f3778", + "type": "boolean", + "label": "Always switch back to weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "allow_throwables", + "setting_rva": "0x2f3758", + "type": "boolean", + "label": "Allow using snowballs/eggs", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "throw_speed", + "setting_rva": "0x2f3828", + "type": "number", + "label": "Throw speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f CPS", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "saved_observation": { + "value": 5.0, + "bits": "0x40a00000" + } + }, + { + "control": "boolean", + "key": "require_not_mouse_over", + "setting_rva": "0x2f3738", + "type": "boolean", + "label": "Not within melee range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Anti Debuff", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f3860", + "name": "Anti Debuff", + "description": "Removes negative visual effects.", + "category_numeric": 2, + "callbacks": [ + { + "event": 18, + "rva": "0x44940", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "blindness", + "setting_rva": "0x2f3a70", + "type": "boolean", + "label": "Blindness", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "nausea", + "setting_rva": "0x2f3a90", + "type": "boolean", + "label": "Nausea", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + } + ] + }, + { + "module": "Piercing", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f3ab0", + "name": "Piercing", + "description": "Allows hitting entities through obstructions.", + "category_numeric": 0, + "callbacks": [ + { + "event": 8, + "rva": "0x44c90", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "sort_by", + "setting_rva": "0x2f3d90", + "type": "choice", + "label": "Sort targets by", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Sort targets by", + "option_count": 2, + "options": [ + { + "value": 0, + "label": "Hurt time" + }, + { + "value": 1, + "label": "Health" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "non_players", + "setting_rva": "0x2f3d00", + "type": "boolean", + "label": "Non-player entities", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "friendlies", + "setting_rva": "0x2f3d20", + "type": "boolean", + "label": "Friendlies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "bots", + "setting_rva": "0x2f3d40", + "type": "boolean", + "label": "Bots", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "enemies", + "setting_rva": "0x2f3d60", + "type": "boolean", + "label": "Enemies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "blocks", + "setting_rva": "0x2f3dd0", + "type": "boolean", + "label": "Blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f3ce0", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_inside_bb", + "setting_rva": "0x2f3cc0", + "type": "boolean", + "label": "Inside entity hitbox", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Trajectories", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f3df0", + "name": "Trajectories", + "description": "Predicts the trajectory of the item in your hand.", + "category_numeric": 2, + "callbacks": [ + { + "event": 5, + "rva": "0x44e40", + "priority_signed": 0 + }, + { + "event": 6, + "rva": "0x44ea0", + "priority_signed": -1000 + }, + { + "event": 18, + "rva": "0x45370", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "line_width", + "setting_rva": "0x2f4000", + "type": "number", + "label": "Line width", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%0.0f px", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "color", + "key": "color_hit", + "setting_rva": "0x2f4038", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "color", + "key": "color_miss", + "setting_rva": "0x2f4058", + "type": "color", + "label": null, + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ], + "saved_observation": [ + { + "value": 1.0, + "bits": "0x3f800000" + }, + { + "value": 0.0, + "bits": "0x00000000" + }, + { + "value": 0.0, + "bits": "0x00000000" + } + ] + }, + { + "control": "boolean", + "key": "render_throwables", + "setting_rva": "0x2f40d8", + "type": "boolean", + "label": "Snowballs/eggs", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_pearls", + "setting_rva": "0x2f40b8", + "type": "boolean", + "label": "Enderpearls", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_bow", + "setting_rva": "0x2f4078", + "type": "boolean", + "label": "Bow", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "render_uncharged_bow", + "setting_rva": "0x2f4098", + "type": "boolean", + "label": "Bow (uncharged)", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Knockback Delay", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f40f8", + "name": "Knockback Delay", + "description": "Delays your knockback in certain scenarios.", + "category_numeric": 0, + "callbacks": [ + { + "event": 2, + "rva": "0x46140", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x46270", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f4360", + "type": "number", + "label": "Distance to target", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f blocks", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "maximum_observation": { + "value": 8.0, + "bits": "0x41000000" + }, + "current_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "saved_observation": { + "value": 4.0, + "bits": "0x40800000" + } + }, + { + "control": "number", + "key": "chance", + "setting_rva": "0x2f43f8", + "type": "number", + "label": "Chance", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "saved_observation": { + "value": 1.0, + "bits": "0x3f800000" + } + }, + { + "control": "number", + "key": "max_delay", + "setting_rva": "0x2f4308", + "type": "number", + "label": "Maximum delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 25.0, + "bits": "0x41c80000" + }, + "maximum_observation": { + "value": 1000.0, + "bits": "0x447a0000" + }, + "current_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "saved_observation": { + "value": 50.0, + "bits": "0x42480000" + } + }, + { + "control": "boolean", + "key": "require_air", + "setting_rva": "0x2f4340", + "type": "boolean", + "label": "In air", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_target", + "setting_rva": "0x2f43d8", + "type": "boolean", + "label": "Looking at player", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_mouse", + "setting_rva": "0x2f43b8", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f4398", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Debug", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f4430", + "name": "Debug", + "description": "Prints debug information in chat.", + "category_numeric": 4, + "callbacks": [ + { + "event": 0, + "rva": "0x466e0", + "priority_signed": 0 + }, + { + "event": 3, + "rva": "0x46850", + "priority_signed": -10000 + }, + { + "event": 15, + "rva": "0x468c0", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x46900", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "boolean", + "key": "clicks", + "setting_rva": "0x2f4680", + "type": "boolean", + "label": "Clicks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "hurt_time", + "setting_rva": "0x2f4640", + "type": "boolean", + "label": "Hurt time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "item_use_state", + "setting_rva": "0x2f4660", + "type": "boolean", + "label": "Server item use state", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Null Move", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f46a0", + "name": "Null Move", + "description": "Makes it easier to switch move direction instantly.", + "category_numeric": 1, + "callbacks": [ + { + "event": 16, + "rva": "0x46ac0", + "priority_signed": 100 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [] + }, + { + "module": "Ghost Hand", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f48b0", + "name": "Ghost Hand", + "description": "Allows interacting with blocks through entities.", + "category_numeric": 3, + "callbacks": [ + { + "event": 8, + "rva": "0x46e30", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "key": "non_players", + "setting_rva": "0x2f4bc0", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Non-player entities", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "friendlies", + "setting_rva": "0x2f4c00", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Friendlies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "bots", + "setting_rva": "0x2f4be0", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Bots", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "enemies", + "setting_rva": "0x2f4c20", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Enemies", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_sword", + "setting_rva": "0x2f4b00", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Sword", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_tools", + "setting_rva": "0x2f4b20", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Tool", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_fists", + "setting_rva": "0x2f4ae0", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Fists", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_buckets", + "setting_rva": "0x2f4b40", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Bucket", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_fns", + "setting_rva": "0x2f4b60", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Flint and steel", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_cobweb", + "setting_rva": "0x2f4b80", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Cobweb", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "allow_using_other", + "setting_rva": "0x2f4ba0", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Other", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "key": "require_mouse_pressed", + "setting_rva": "0x2f4ac0", + "control": "boolean", + "source": "evidence/recovered_cpp/clean/Ghost_Hand.cpp", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Inv Manager", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f4c40", + "name": "Inv Manager", + "description": "Organises your inventory for you.", + "category_numeric": 4, + "callbacks": [ + { + "event": 25, + "rva": "0x47090", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "delay_after_open", + "setting_rva": "0x2f4e50", + "type": "number", + "label": "Delay after open", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 3.0, + "bits": "0x40400000" + } + }, + { + "control": "number", + "key": "speed", + "setting_rva": "0x2f5230", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1fx", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "smart_speed", + "setting_rva": "0x2f5268", + "type": "boolean", + "label": "Smart speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "randomize", + "setting_rva": "0x2f5210", + "type": "boolean", + "label": "Randomize", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "equip_armor", + "setting_rva": "0x2f4e88", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "sort_hotbar", + "setting_rva": "0x2f4ea8", + "type": "boolean", + "label": "Enabled", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "sort_hotbar_fallback", + "setting_rva": "0x2f51f0", + "type": "boolean", + "label": "Smart fallbacks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "choice", + "key": "1", + "setting_rva": "0x2f4fb0", + "type": "choice", + "label": "Slot 1", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 1", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "2", + "setting_rva": "0x2f4ff0", + "type": "choice", + "label": "Slot 2", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 2", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "3", + "setting_rva": "0x2f5030", + "type": "choice", + "label": "Slot 3", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 3", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "4", + "setting_rva": "0x2f5070", + "type": "choice", + "label": "Slot 4", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 4", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "5", + "setting_rva": "0x2f50b0", + "type": "choice", + "label": "Slot 5", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 5", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "6", + "setting_rva": "0x2f50f0", + "type": "choice", + "label": "Slot 6", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 6", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "7", + "setting_rva": "0x2f5130", + "type": "choice", + "label": "Slot 7", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 7", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "8", + "setting_rva": "0x2f5170", + "type": "choice", + "label": "Slot 8", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 8", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "choice", + "key": "9", + "setting_rva": "0x2f51b0", + "type": "choice", + "label": "Slot 9", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Slot 9", + "option_count": 27, + "options": [ + { + "value": 0, + "label": "None" + }, + { + "value": 1, + "label": "Axe" + }, + { + "value": 2, + "label": "Blocks" + }, + { + "value": 3, + "label": "Bow" + }, + { + "value": 4, + "label": "Chest" + }, + { + "value": 5, + "label": "Ender pearl" + }, + { + "value": 6, + "label": "Fireball" + }, + { + "value": 7, + "label": "Fishing rod" + }, + { + "value": 8, + "label": "Flint and steel" + }, + { + "value": 9, + "label": "Golden apple" + }, + { + "value": 10, + "label": "Healing potion" + }, + { + "value": 11, + "label": "Jump potion" + }, + { + "value": 12, + "label": "Ladders" + }, + { + "value": 13, + "label": "Lava bucket" + }, + { + "value": 14, + "label": "Pickaxe" + }, + { + "value": 15, + "label": "Shears" + }, + { + "value": 16, + "label": "Shovel" + }, + { + "value": 17, + "label": "Snowballs/eggs" + }, + { + "value": 18, + "label": "Soup" + }, + { + "value": 19, + "label": "Speed potion" + }, + { + "value": 20, + "label": "Stick" + }, + { + "value": 21, + "label": "Strength potion" + }, + { + "value": 22, + "label": "Sword" + }, + { + "value": 23, + "label": "TNT" + }, + { + "value": 24, + "label": "Water bucket" + }, + { + "value": 25, + "label": "Weapon" + }, + { + "value": 26, + "label": "Wool" + } + ], + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Chest Stealer", + "registration": "label_and_code_only", + "descriptor_observations": [], + "settings": [ + { + "control": "number", + "key": "delay_after_open", + "setting_rva": "0x2f5498", + "type": "number", + "label": "Delay after open", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "delay_before_close", + "setting_rva": "0x2f54f0", + "type": "number", + "label": "Delay before close", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 3.0, + "bits": "0x40400000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "number", + "key": "speed", + "setting_rva": "0x2f5528", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1fx", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 0.0, + "bits": "0x00000000" + } + }, + { + "control": "boolean", + "key": "smart_speed", + "setting_rva": "0x2f5560", + "type": "boolean", + "label": "Smart speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_vanilla_title", + "setting_rva": "0x2f54d0", + "type": "boolean", + "label": "Vanilla window title", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Clutch", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f5580", + "name": "Clutch", + "description": "Clutches for you when falling.", + "category_numeric": 3, + "callbacks": [ + { + "event": 0, + "rva": "0x488f0", + "priority_signed": 0 + }, + { + "event": 13, + "rva": "0x48a30", + "priority_signed": -100 + }, + { + "event": 18, + "rva": "0x48a50", + "priority_signed": -1000 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "range", + "setting_rva": "0x2f59d0", + "type": "number", + "label": "Range", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f block(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 7.0, + "bits": "0x40e00000" + }, + "current_observation": { + "value": 7.0, + "bits": "0x40e00000" + }, + "saved_observation": { + "value": 7.0, + "bits": "0x40e00000" + } + }, + { + "control": "number", + "key": "max_aim_dist", + "setting_rva": "0x2f5a08", + "type": "number", + "label": "FOV", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f\u00b0", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "maximum_observation": { + "value": 360.0, + "bits": "0x43b40000" + }, + "current_observation": { + "value": 360.0, + "bits": "0x43b40000" + }, + "saved_observation": { + "value": 360.0, + "bits": "0x43b40000" + } + }, + { + "control": "number", + "key": "min_height", + "setting_rva": "0x2f5998", + "type": "number", + "label": "Minimum height", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f block(s)", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "saved_observation": { + "value": 4.0, + "bits": "0x40800000" + } + }, + { + "control": "number", + "key": "click_speed", + "setting_rva": "0x2f5790", + "type": "number", + "label": "Click speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.1f CPS", + "step_observation": { + "value": 0.10000000149011612, + "bits": "0x3dcccccd" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "maximum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "current_observation": { + "value": 18.0, + "bits": "0x41900000" + }, + "saved_observation": { + "value": 18.0, + "bits": "0x41900000" + } + }, + { + "control": "number", + "key": "randomization", + "setting_rva": "0x2f5838", + "type": "number", + "label": "Randomization", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.009999999776482582, + "bits": "0x3c23d70a" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "choice", + "key": "select_blocks", + "setting_rva": "0x2f5a98", + "type": "choice", + "label": "Select blocks", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Select blocks", + "option_count": 3, + "options": [ + { + "value": 0, + "label": "No" + }, + { + "value": 1, + "label": "On depletion" + }, + { + "value": 2, + "label": "Always" + } + ], + "current_observation": 2, + "saved_observation": 2 + }, + { + "control": "boolean", + "key": "sideways_only", + "setting_rva": "0x2f5a40", + "type": "boolean", + "label": "Only place sideways", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "aim_speed", + "setting_rva": "0x2f5870", + "type": "number", + "label": "Base speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f \u00b0/s", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "minimum_observation": { + "value": 20.0, + "bits": "0x41a00000" + }, + "maximum_observation": { + "value": 180.0, + "bits": "0x43340000" + }, + "current_observation": { + "value": 30.0, + "bits": "0x41f00000" + }, + "saved_observation": { + "value": 30.0, + "bits": "0x41f00000" + } + }, + { + "control": "number", + "key": "aim_mult", + "setting_rva": "0x2f58a8", + "type": "number", + "label": "Acceleration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.3fx", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 0.30000001192092896, + "bits": "0x3e99999a" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "number", + "key": "aim_mult_strength", + "setting_rva": "0x2f58e0", + "type": "number", + "label": "Acceleration strength", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.30000001192092896, + "bits": "0x3e99999a" + }, + "saved_observation": { + "value": 0.30000001192092896, + "bits": "0x3e99999a" + } + }, + { + "control": "boolean", + "key": "aim_multipoint", + "setting_rva": "0x2f5a60", + "type": "boolean", + "label": "Multipoint", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "snapback_delay", + "setting_rva": "0x2f5800", + "type": "number", + "label": "Delay", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 6.0, + "bits": "0x40c00000" + }, + "saved_observation": { + "value": 6.0, + "bits": "0x40c00000" + } + }, + { + "control": "number", + "key": "snapback_duration", + "setting_rva": "0x2f57c8", + "type": "number", + "label": "Duration", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "maximum_observation": { + "value": 10.0, + "bits": "0x41200000" + }, + "current_observation": { + "value": 4.0, + "bits": "0x40800000" + }, + "saved_observation": { + "value": 4.0, + "bits": "0x40800000" + } + }, + { + "control": "boolean", + "key": "snapback_instant_on_jump", + "setting_rva": "0x2f5918", + "type": "boolean", + "label": "Keep jump direction", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "snapback_disable_after", + "setting_rva": "0x2f5ad8", + "type": "boolean", + "label": "Disable afterwards", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_air", + "setting_rva": "0x2f5938", + "type": "boolean", + "label": "In air", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 1, + "saved_observation": 1 + }, + { + "control": "boolean", + "key": "require_damage", + "setting_rva": "0x2f5958", + "type": "boolean", + "label": "Damaged", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_backwards", + "setting_rva": "0x2f5978", + "type": "boolean", + "label": "Moving backwards", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Auto Weapon", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f5af8", + "name": "Auto Weapon", + "description": "Selects your weapon when aiming on players.", + "category_numeric": 0, + "callbacks": [ + { + "event": 25, + "rva": "0x4a340", + "priority_signed": 0 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "activation_time", + "setting_rva": "0x2f5d08", + "type": "number", + "label": "Activation time", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "current_observation": { + "value": 2.0, + "bits": "0x40000000" + }, + "saved_observation": { + "value": 2.0, + "bits": "0x40000000" + } + }, + { + "control": "boolean", + "key": "require_mouse_pressed", + "setting_rva": "0x2f5d40", + "type": "boolean", + "label": "Mouse pressed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Knockback Displace", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f5d60", + "name": "Knockback Displace", + "description": "Allows dealing knockback at a different angle.", + "category_numeric": 0, + "callbacks": [ + { + "event": 3, + "rva": "0x4a520", + "priority_signed": 0 + }, + { + "event": 13, + "rva": "0x4a540", + "priority_signed": -1000 + }, + { + "event": 14, + "rva": "0x4a560", + "priority_signed": 1000 + }, + { + "event": 15, + "rva": "0x4a7d0", + "priority_signed": 0 + }, + { + "event": 18, + "rva": "0x4a800", + "priority_signed": 1000 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "choice", + "key": "direction", + "setting_rva": "0x2f6088", + "type": "choice", + "label": "Direction", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "primary_text": null, + "secondary_text": "Direction", + "option_count": 5, + "options": [ + { + "value": 0, + "label": "Left" + }, + { + "value": 1, + "label": "Right" + }, + { + "value": 2, + "label": "Random" + }, + { + "value": 3, + "label": "Strafe" + }, + { + "value": 4, + "label": "Strafe (inverted)" + } + ], + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "use_last_strafe", + "setting_rva": "0x2f60e8", + "type": "boolean", + "label": "Use last strafe direction", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "number", + "key": "angle", + "setting_rva": "0x2f5fa8", + "type": "number", + "label": "Angle", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f\u00b0", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "minimum_observation": { + "value": 45.0, + "bits": "0x42340000" + }, + "maximum_observation": { + "value": 180.0, + "bits": "0x43340000" + }, + "current_observation": { + "value": 90.0, + "bits": "0x42b40000" + }, + "saved_observation": { + "value": 90.0, + "bits": "0x42b40000" + } + }, + { + "control": "number", + "key": "cooldown", + "setting_rva": "0x2f5f70", + "type": "number", + "label": "Cooldown", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f ms", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 50.0, + "bits": "0x42480000" + }, + "minimum_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "maximum_observation": { + "value": 40.0, + "bits": "0x42200000" + }, + "current_observation": { + "value": 5.0, + "bits": "0x40a00000" + }, + "saved_observation": { + "value": 5.0, + "bits": "0x40a00000" + } + }, + { + "control": "boolean", + "key": "hide_rotation", + "setting_rva": "0x2f60c8", + "type": "boolean", + "label": "Hide rotation from players", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_no_kb", + "setting_rva": "0x2f5fe0", + "type": "boolean", + "label": "Not taking knockback", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_weapon", + "setting_rva": "0x2f6000", + "type": "boolean", + "label": "Holding weapon", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_kb_enchant", + "setting_rva": "0x2f6020", + "type": "boolean", + "label": "Knockback enchantment", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + }, + { + "control": "boolean", + "key": "require_facing_away", + "setting_rva": "0x2f6040", + "type": "boolean", + "label": "Target facing away", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Block In", + "registration": "registered", + "descriptor_observations": [ + { + "rva": "0x2f6108", + "name": "Block In", + "description": "Places blocks around you.", + "category_numeric": 3, + "callbacks": [ + { + "event": 0, + "rva": "0x4abf0", + "priority_signed": 0 + }, + { + "event": 5, + "rva": "0x4ac00", + "priority_signed": 0 + }, + { + "event": 13, + "rva": "0x4ad50", + "priority_signed": -2000 + }, + { + "event": 16, + "rva": "0x4ad80", + "priority_signed": -1000 + }, + { + "event": 18, + "rva": "0x4ae50", + "priority_signed": -500 + } + ], + "metadata_pointer_slots": {} + } + ], + "settings": [ + { + "control": "number", + "key": "speed", + "setting_rva": "0x2f6338", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.30000001192092896, + "bits": "0x3e99999a" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "boolean", + "key": "require_ground", + "setting_rva": "0x2f6318", + "type": "boolean", + "label": "On ground", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + }, + { + "module": "Speed", + "registration": "label_and_code_only", + "descriptor_observations": [], + "settings": [ + { + "control": "number", + "key": "speed", + "setting_rva": "0x2f6338", + "type": "number", + "label": "Speed", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "format": "%.0f%%", + "step_observation": { + "value": 0.0, + "bits": "0x00000000" + }, + "extra_ui_parameter_observation": { + "value": 100.0, + "bits": "0x42c80000" + }, + "minimum_observation": { + "value": 0.30000001192092896, + "bits": "0x3e99999a" + }, + "maximum_observation": { + "value": 1.0, + "bits": "0x3f800000" + }, + "current_observation": { + "value": 0.5, + "bits": "0x3f000000" + }, + "saved_observation": { + "value": 0.5, + "bits": "0x3f000000" + } + }, + { + "control": "boolean", + "key": "require_ground", + "setting_rva": "0x2f6318", + "type": "boolean", + "label": "On ground", + "default": null, + "default_status": "Startup initialization is not established by captured current/saved values.", + "current_observation": 0, + "saved_observation": 0 + } + ] + } + ] +} diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleDescriptors.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleDescriptors.json new file mode 100644 index 0000000..abe1344 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleDescriptors.json @@ -0,0 +1,680 @@ +[ + { + "module": "Aim Assist", + "observations": [ + { + "rva": "0x2e8cc0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Auto Clicker", + "observations": [ + { + "rva": "0x2e9330", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Auto Soup", + "observations": [ + { + "rva": "0x2e96b0", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Bridge Assist", + "observations": [ + { + "rva": "0x2e9ac0", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Player ESP", + "observations": [ + { + "rva": "0x2e9e80", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Fast Place", + "observations": [ + { + "rva": "0x2ea2d0", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Reach", + "observations": [ + { + "rva": "0x2ea550", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Velocity", + "observations": [ + { + "rva": "0x2ea7f0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Anti Bot", + "observations": [ + { + "rva": "0x2eacd0", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Auto Block", + "observations": [ + { + "rva": "0x2eaff8", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Teams", + "observations": [ + { + "rva": "0x2eb400", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "GUI", + "observations": [ + { + "rva": "0x2eb740", + "category": 2, + "flags": 30 + } + ] + }, + { + "module": "Timer", + "observations": [ + { + "rva": "0x2eba10", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Fake Lag", + "observations": [ + { + "rva": "0x2ebcc0", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Criticals", + "observations": [ + { + "rva": "0x2ec010", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "No Item Release", + "observations": [ + { + "rva": "0x2ec390", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Blink", + "observations": [ + { + "rva": "0x2ec600", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Chest ESP", + "observations": [ + { + "rva": "0x2ec908", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Hitboxes", + "observations": [ + { + "rva": "0x2ecca8", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Mod Overlay", + "observations": [ + { + "rva": "0x2ecef0", + "category": 2, + "flags": 4 + } + ] + }, + { + "module": "Notifications", + "observations": [ + { + "rva": "0x2ed320", + "category": 2, + "flags": 7 + } + ] + }, + { + "module": "No Jump Delay", + "observations": [ + { + "rva": "0x2ed630", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Sprint", + "observations": [ + { + "rva": "0x2ed840", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Backtrack", + "observations": [ + { + "rva": "0x2edad0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Free Look", + "observations": [ + { + "rva": "0x2edef0", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Auto Tool", + "observations": [ + { + "rva": "0x2ee158", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Hit Select", + "observations": [ + { + "rva": "0x2ee4f0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Weapons", + "observations": [ + { + "rva": "0x2ee930", + "category": 0, + "flags": 7 + } + ] + }, + { + "module": "Refill", + "observations": [ + { + "rva": "0x2eed90", + "category": 4, + "flags": 14 + } + ] + }, + { + "module": "Auto Pot", + "observations": [ + { + "rva": "0x2ef128", + "category": 4, + "flags": 14 + } + ] + }, + { + "module": "Inv Walk", + "observations": [ + { + "rva": "0x2ef3d0", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Keep Sprint", + "observations": [ + { + "rva": "0x2ef700", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Lag Range", + "observations": [ + { + "rva": "0x2ef9c0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Sprint Reset", + "observations": [ + { + "rva": "0x2efd00", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Friends", + "observations": [ + { + "rva": "0x2f0038", + "category": 4, + "flags": 20 + } + ] + }, + { + "module": "Name Tags", + "observations": [ + { + "rva": "0x2f02d0", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Pointers", + "observations": [ + { + "rva": "0x2f06c0", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "No Hit Delay", + "observations": [ + { + "rva": "0x2f0b70", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Ping Fix", + "observations": [ + { + "rva": "0x2f0dd0", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Chams", + "observations": [ + { + "rva": "0x2f0fe0", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "No Use Delay", + "observations": [ + { + "rva": "0x2f1210", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Indicators", + "observations": [ + { + "rva": "0x2f1440", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Block ESP", + "observations": [ + { + "rva": "0x2f1740", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Item ESP", + "observations": [ + { + "rva": "0x2f1a80", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Fast Mine", + "observations": [ + { + "rva": "0x2f1d90", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Safe Walk", + "observations": [ + { + "rva": "0x2f2030", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "No Hurt Cam", + "observations": [ + { + "rva": "0x2f22d8", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Strafe", + "observations": [ + { + "rva": "0x2f24e8", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Fast Accel", + "observations": [ + { + "rva": "0x2f27f8", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Instant Stop", + "observations": [ + { + "rva": "0x2f2a80", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "No Slow", + "observations": [ + { + "rva": "0x2f2c90", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Item Use Fix", + "observations": [ + { + "rva": "0x2f2f48", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Timer Range", + "observations": [ + { + "rva": "0x2f3160", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Auto Rod", + "observations": [ + { + "rva": "0x2f3520", + "category": 4, + "flags": 6 + } + ] + }, + { + "module": "Anti Debuff", + "observations": [ + { + "rva": "0x2f3860", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Piercing", + "observations": [ + { + "rva": "0x2f3ab0", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Trajectories", + "observations": [ + { + "rva": "0x2f3df0", + "category": 2, + "flags": 0 + } + ] + }, + { + "module": "Knockback Delay", + "observations": [ + { + "rva": "0x2f40f8", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Debug", + "observations": [ + { + "rva": "0x2f4430", + "category": 4, + "flags": 4 + } + ] + }, + { + "module": "Null Move", + "observations": [ + { + "rva": "0x2f46a0", + "category": 1, + "flags": 0 + } + ] + }, + { + "module": "Ghost Hand", + "observations": [ + { + "rva": "0x2f48b0", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Inv Manager", + "observations": [ + { + "rva": "0x2f4c40", + "category": 4, + "flags": 0 + } + ] + }, + { + "module": "Chest Stealer", + "observations": [] + }, + { + "module": "Clutch", + "observations": [ + { + "rva": "0x2f5580", + "category": 3, + "flags": 0 + } + ] + }, + { + "module": "Auto Weapon", + "observations": [ + { + "rva": "0x2f5af8", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Knockback Displace", + "observations": [ + { + "rva": "0x2f5d60", + "category": 0, + "flags": 0 + } + ] + }, + { + "module": "Block In", + "observations": [ + { + "rva": "0x2f6108", + "category": 3, + "flags": 6 + } + ] + }, + { + "module": "Speed", + "observations": [] + } +, + { + "module": "Scaffold \u00A7c[BETA]", + "observations": [ + { + "rva": "0x0", + "category": 3, + "flags": 0 + } + ] + }] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleUi.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleUi.json new file mode 100644 index 0000000..13e9197 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/ModuleUi.json @@ -0,0 +1,5706 @@ +{ + "provenance": "Controlled execution of reconstructed C++ surfaces only; no original DLL execution", + "modules": [ + { + "module": "Aim Assist", + "gates": [ + "mode", + "mode_target" + ], + "variants": [ + { + "values": [ + 0, + 0 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "allow_exceed_fov" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 0, + 1 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "sort_by" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 1, + 0 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "allow_exceed_fov" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 1, + 1 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "sort_by" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 2, + 0 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "lock_on_vertical" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "allow_exceed_fov" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 2, + 1 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "lock_on_vertical" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "sort_by" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 3, + 0 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "silent_move_correct" + }, + { + "key": "silent_ignore_manual_aim" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "allow_exceed_fov" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + }, + { + "values": [ + 3, + 1 + ], + "controls": [ + { + "section": "Aim" + }, + { + "key": "mode" + }, + { + "key": "silent_move_correct" + }, + { + "key": "silent_ignore_manual_aim" + }, + { + "key": "hor_speed" + }, + { + "key": "ver_speed" + }, + { + "key": "predict" + }, + { + "key": "aim_randomization" + }, + { + "section": "Multi-point" + }, + { + "key": "hor_hitbox_correct" + }, + { + "key": "ver_hitbox_correct" + }, + { + "section": "Target" + }, + { + "key": "mode_target" + }, + { + "key": "sort_by" + }, + { + "key": "range" + }, + { + "key": "fov" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_mouse_moved" + }, + { + "key": "disable_on_block_break" + }, + { + "key": "require_weapon" + }, + { + "key": "ignore_invis" + }, + { + "key": "require_line_of_sight" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Aim_Assist.cpp", + "adjustments": [] + }, + { + "module": "Auto Clicker", + "gates": [ + "allow_inventory" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "In-game" + }, + { + "key": "pattern" + }, + { + "key": "target_cps" + }, + { + "key": "randomize_cps" + }, + { + "key": "exhaust" + }, + { + "key": "allow_block_break" + }, + { + "section": "Inventory" + }, + { + "key": "allow_inventory" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_not_using_item" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "In-game" + }, + { + "key": "pattern" + }, + { + "key": "target_cps" + }, + { + "key": "randomize_cps" + }, + { + "key": "exhaust" + }, + { + "key": "allow_block_break" + }, + { + "section": "Inventory" + }, + { + "key": "allow_inventory" + }, + { + "key": "inventory_randomize" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_not_using_item" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Clicker.cpp", + "adjustments": [] + }, + { + "module": "Auto Soup", + "gates": [ + "override_item" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Maximum health" + }, + { + "key": "single_soup_max_hp" + }, + { + "key": "double_soup_max_hp" + }, + { + "section": "Delays" + }, + { + "key": "randomization" + }, + { + "key": "delay_before" + }, + { + "key": "delay_between" + }, + { + "key": "delay_after" + }, + { + "section": "Extra" + }, + { + "key": "drop_bowls" + }, + { + "key": "override_item" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Maximum health" + }, + { + "key": "single_soup_max_hp" + }, + { + "key": "double_soup_max_hp" + }, + { + "section": "Delays" + }, + { + "key": "randomization" + }, + { + "key": "delay_before" + }, + { + "key": "delay_between" + }, + { + "key": "delay_after" + }, + { + "section": "Extra" + }, + { + "key": "drop_bowls" + }, + { + "key": "override_item" + }, + { + "key": "allowed_items" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Soup.cpp", + "adjustments": [ + { + "target": "double_soup_max_hp", + "maximum_key": "single_soup_max_hp", + "evidence": "Surface_Auto_Soup.cpp:30", + "verification": "pending focused mutation fixture" + } + ] + }, + { + "module": "Bridge Assist", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "edge_offset" + }, + { + "key": "unsneak_delay" + }, + { + "key": "select_blocks" + }, + { + "key": "randomize" + }, + { + "key": "sneak_on_jump" + }, + { + "key": "avoid_double_sneak" + }, + { + "section": "Conditions" + }, + { + "key": "require_sneak" + }, + { + "key": "require_holding_blocks" + }, + { + "key": "require_looking_down" + }, + { + "key": "require_not_forward" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Bridge_Assist.cpp", + "adjustments": [] + }, + { + "module": "Player ESP", + "gates": [ + "hide_friendlies", + "color_mode", + "override_target_color", + "show_2d_box" + ], + "variants": [ + { + "values": [ + 0, + 0, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 0, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 0, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 0, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 1, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "color_friendlies" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 1, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "color_friendlies" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 1, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "color_friendlies" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 0, + 1, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "color_friendlies" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 0, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 0, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 0, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 0, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 1, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 1, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "override_target_color" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 1, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "show_health_bar" + } + ] + }, + { + "values": [ + 1, + 1, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "mode" + }, + { + "key": "color_mode" + }, + { + "key": "color_enemies" + }, + { + "key": "override_target_color" + }, + { + "key": "color_target" + }, + { + "key": "line_width" + }, + { + "key": "show_2d_box" + }, + { + "key": "filled" + }, + { + "key": "hurt_effect" + }, + { + "key": "show_health_bar" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Player_ESP.cpp", + "adjustments": [] + }, + { + "module": "Fast Place", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "max_cps" + }, + { + "key": "activate_delay" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Fast_Place.cpp", + "adjustments": [] + }, + { + "module": "Reach", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "distance" + }, + { + "section": "Advanced" + }, + { + "key": "activate_time" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Reach.cpp", + "adjustments": [] + }, + { + "module": "Velocity", + "gates": [ + "mode" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "reduce_chance" + }, + { + "key": "fov" + }, + { + "key": "reduce_amount" + }, + { + "key": "reduce_delay" + }, + { + "section": "Conditions" + }, + { + "key": "require_target" + }, + { + "key": "require_mouse" + }, + { + "key": "require_forward" + }, + { + "key": "require_weapon" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "jump_chance" + }, + { + "section": "Conditions" + }, + { + "key": "require_target" + }, + { + "key": "require_mouse" + }, + { + "key": "require_forward" + }, + { + "key": "require_weapon" + }, + { + "key": "require_sprinting_jump" + } + ] + }, + { + "values": [ + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "reduce_multiple_per_tick" + }, + { + "section": "Conditions" + }, + { + "key": "require_forward" + }, + { + "key": "require_weapon" + } + ] + }, + { + "values": [ + 3 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "ignore_vertical" + }, + { + "key": "ignore_chance" + }, + { + "section": "Conditions" + }, + { + "key": "require_target" + }, + { + "key": "require_mouse" + }, + { + "key": "require_forward" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Velocity.cpp", + "adjustments": [] + }, + { + "module": "Anti Bot", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "invalid_uuid" + }, + { + "key": "invalid_username" + }, + { + "key": "always_invis" + }, + { + "key": "always_stationary" + }, + { + "key": "sleeping" + }, + { + "key": "min_age" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Anti_Bot.cpp", + "adjustments": [] + }, + { + "module": "Auto Block", + "gates": [ + "fake_block_animation" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "max_hurt_time" + }, + { + "key": "max_hold_time" + }, + { + "section": "Force block animation" + }, + { + "key": "fake_block_animation" + }, + { + "section": "Lag" + }, + { + "key": "lag_chance" + }, + { + "key": "lag_duration" + }, + { + "key": "lag_flush_attack" + }, + { + "key": "lag_reblock" + }, + { + "section": "Conditions" + }, + { + "key": "require_left_mouse_pressed" + }, + { + "key": "require_right_mouse_pressed" + }, + { + "key": "require_damage" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "max_hurt_time" + }, + { + "key": "max_hold_time" + }, + { + "section": "Force block animation" + }, + { + "key": "fake_block_animation" + }, + { + "key": "fake_block_animation_require_target" + }, + { + "section": "Lag" + }, + { + "key": "lag_chance" + }, + { + "key": "lag_duration" + }, + { + "key": "lag_flush_attack" + }, + { + "key": "lag_reblock" + }, + { + "section": "Conditions" + }, + { + "key": "require_left_mouse_pressed" + }, + { + "key": "require_right_mouse_pressed" + }, + { + "key": "require_damage" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Block.cpp", + "adjustments": [] + }, + { + "module": "Teams", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "match_self_color" + }, + { + "key": "team_colors" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Teams.cpp", + "adjustments": [] + }, + { + "module": "GUI", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "scale" + }, + { + "key": "accent_color" + }, + { + "key": "allow_input" + }, + { + "section": "Layout" + }, + { + "key": "compact" + }, + { + "key": "wide" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_GUI.cpp", + "adjustments": [] + }, + { + "module": "Timer", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "speed" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse" + }, + { + "key": "require_damage" + }, + { + "key": "require_falling" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Timer.cpp", + "adjustments": [] + }, + { + "module": "Fake Lag", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Delay" + }, + { + "key": "mode" + }, + { + "key": "inbound" + }, + { + "key": "outbound" + }, + { + "key": "realtime_damage" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_attack" + }, + { + "key": "require_ingame" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Fake_Lag.cpp", + "adjustments": [] + }, + { + "module": "Criticals", + "gates": [ + "mode" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "chance" + }, + { + "key": "max_delay" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_mouse_pressed" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "chance" + }, + { + "key": "timer_speed" + }, + { + "key": "boost" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_mouse_pressed" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Criticals.cpp", + "adjustments": [] + }, + { + "module": "No Item Release", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_No_Item_Release.cpp", + "adjustments": [] + }, + { + "module": "Blink", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "max_duration" + }, + { + "section": "Disable on" + }, + { + "key": "disable_on_attack" + }, + { + "key": "disable_on_block_interact" + }, + { + "key": "disable_on_block_dig" + } + ] + } + ], + "source": "reconstruction\\modules\\Blink\\Blink.cpp", + "adjustments": [] + }, + { + "module": "Chest ESP", + "gates": [ + "render_chest", + "render_ender_chest", + "render_trapped_chest", + "render_beacon" + ], + "variants": [ + { + "values": [ + 0, + 0, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 0, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 0, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 0, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 1, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_ender_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 1, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 1, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 0, + 1, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 0, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 0, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 0, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 0, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 1, + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_ender_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 1, + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 1, + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "filled" + } + ] + }, + { + "values": [ + 1, + 1, + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Target" + }, + { + "key": "render_chest" + }, + { + "key": "render_ender_chest" + }, + { + "key": "render_trapped_chest" + }, + { + "key": "render_beacon" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + }, + { + "key": "color_chest" + }, + { + "key": "color_ender_chest" + }, + { + "key": "color_trapped_chest" + }, + { + "key": "color_beacon" + }, + { + "key": "filled" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Chest_ESP.cpp", + "adjustments": [] + }, + { + "module": "Hitboxes", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "expand" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Hitboxes.cpp", + "adjustments": [] + }, + { + "module": "Mod Overlay", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Visible categories" + }, + { + "key": "show_combat" + }, + { + "key": "show_move" + }, + { + "key": "show_block" + }, + { + "key": "show_visual" + }, + { + "key": "show_utility" + }, + { + "section": "Customization" + }, + { + "key": "text_size" + }, + { + "key": "padding_x" + }, + { + "key": "padding_y" + }, + { + "key": "bg_rounding" + }, + { + "key": "name_color" + }, + { + "key": "details_color" + }, + { + "key": "lowercase" + }, + { + "key": "show_details" + }, + { + "section": "Conditions" + }, + { + "key": "require_bound" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Mod_Overlay.cpp", + "adjustments": [] + }, + { + "module": "Notifications", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Hide if" + }, + { + "key": "hide_ingame" + }, + { + "key": "hide_hold_notifs" + }, + { + "key": "hide_bind_only" + }, + { + "section": "Visible mod categories" + }, + { + "key": "show_combat" + }, + { + "key": "show_move" + }, + { + "key": "show_block" + }, + { + "key": "show_visual" + }, + { + "key": "show_utility" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Notifications.cpp", + "adjustments": [] + }, + { + "module": "No Jump Delay", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "Sprint", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Allow while" + }, + { + "key": "while_using_item" + }, + { + "key": "while_backwards" + }, + { + "key": "while_sideways" + }, + { + "key": "while_in_gui" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Sprint.cpp", + "adjustments": [] + }, + { + "module": "Backtrack", + "gates": [ + "render_remote_pos" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "target_dist" + }, + { + "key": "delay" + }, + { + "key": "max_hurt_time" + }, + { + "key": "cooldown" + }, + { + "key": "disable_on_hit" + }, + { + "section": "Real position indicator" + }, + { + "key": "render_remote_pos" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_weapon" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "target_dist" + }, + { + "key": "delay" + }, + { + "key": "max_hurt_time" + }, + { + "key": "cooldown" + }, + { + "key": "disable_on_hit" + }, + { + "section": "Real position indicator" + }, + { + "key": "render_remote_pos" + }, + { + "key": "indicator_color" + }, + { + "key": "indicator_line_width" + }, + { + "key": "indicator_filled" + }, + { + "key": "indicator_rotate" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Backtrack.cpp", + "adjustments": [] + }, + { + "module": "Free Look", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "target_perspective" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Free_Look.cpp", + "adjustments": [] + }, + { + "module": "Auto Tool", + "gates": [ + "restrict_allowed_blocks" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "activation_time" + }, + { + "key": "switch_back" + }, + { + "section": "Allow while using" + }, + { + "key": "allow_using_sword" + }, + { + "key": "allow_using_tools" + }, + { + "key": "allow_using_fists" + }, + { + "key": "allow_using_other" + }, + { + "section": "Conditions" + }, + { + "key": "require_sneak" + }, + { + "key": "restrict_allowed_blocks" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "activation_time" + }, + { + "key": "switch_back" + }, + { + "section": "Allow while using" + }, + { + "key": "allow_using_sword" + }, + { + "key": "allow_using_tools" + }, + { + "key": "allow_using_fists" + }, + { + "key": "allow_using_other" + }, + { + "section": "Conditions" + }, + { + "key": "require_sneak" + }, + { + "key": "restrict_allowed_blocks" + }, + { + "key": "allowed_blocks" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Tool.cpp", + "adjustments": [] + }, + { + "module": "Hit Select", + "gates": [ + "mode" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "pause_dur" + }, + { + "key": "wait_for_damage_dur" + }, + { + "key": "trades_delay" + }, + { + "key": "use_server_time" + }, + { + "key": "fake_swing" + }, + { + "section": "Cancel rate" + }, + { + "key": "cancel_rate" + }, + { + "key": "cancel_rate_air" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_weapon" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "pause_dur" + }, + { + "key": "use_server_time" + }, + { + "key": "fake_swing" + }, + { + "key": "crits_allow_reduce" + }, + { + "key": "require_damage" + }, + { + "section": "Cancel rate" + }, + { + "key": "cancel_rate" + }, + { + "key": "cancel_rate_air" + }, + { + "section": "Conditions" + }, + { + "key": "require_sprint" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Hit_Select.cpp", + "adjustments": [] + }, + { + "module": "Weapons", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Item types" + }, + { + "key": "fist" + }, + { + "key": "swords" + }, + { + "key": "axes" + }, + { + "key": "extra_items" + }, + { + "section": "Any item with" + }, + { + "key": "enchant_sharpness" + }, + { + "key": "enchant_knockback" + }, + { + "key": "enchant_fire_aspect" + }, + { + "section": "Any item in" + }, + { + "key": "1" + }, + { + "key": "2" + }, + { + "key": "3" + }, + { + "key": "4" + }, + { + "key": "5" + }, + { + "key": "6" + }, + { + "key": "7" + }, + { + "key": "8" + }, + { + "key": "9" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Weapons.cpp", + "adjustments": [] + }, + { + "module": "Refill", + "gates": [ + "refill_potion" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Items" + }, + { + "key": "refill_potion" + }, + { + "key": "refill_soup" + }, + { + "section": "Clicks" + }, + { + "key": "simulate_button" + }, + { + "key": "delay_after_open" + }, + { + "key": "delay_before_close" + }, + { + "key": "speed" + }, + { + "key": "smart_speed" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Items" + }, + { + "key": "refill_potion" + }, + { + "key": "refill_potion_non_health" + }, + { + "key": "refill_soup" + }, + { + "section": "Clicks" + }, + { + "key": "simulate_button" + }, + { + "key": "delay_after_open" + }, + { + "key": "delay_before_close" + }, + { + "key": "speed" + }, + { + "key": "smart_speed" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Refill.cpp", + "adjustments": [] + }, + { + "module": "Auto Pot", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay" + }, + { + "key": "prevent_waste" + }, + { + "key": "double_splash" + }, + { + "key": "use_non_health" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Pot.cpp", + "adjustments": [] + }, + { + "module": "Inv Walk", + "gates": [ + "mode", + "stop_on_click" + ], + "variants": [ + { + "values": [ + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + } + ] + }, + { + "values": [ + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + } + ] + }, + { + "values": [ + 0, + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + } + ] + }, + { + "values": [ + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "stop_on_click" + }, + { + "key": "stop_duration" + }, + { + "section": "Other containers" + }, + { + "key": "stop_non_inv" + } + ] + }, + { + "values": [ + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "stop_on_click" + }, + { + "key": "stop_duration" + }, + { + "section": "Other containers" + }, + { + "key": "stop_non_inv" + } + ] + }, + { + "values": [ + 1, + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "stop_on_click" + }, + { + "section": "Other containers" + }, + { + "key": "stop_non_inv" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Inv_Walk.cpp", + "adjustments": [] + }, + { + "module": "Keep Sprint", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "chance" + }, + { + "key": "motion_mult" + }, + { + "key": "allow_reduce" + }, + { + "section": "Conditions" + }, + { + "key": "require_on_ground" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Keep_Sprint.cpp", + "adjustments": [] + }, + { + "module": "Lag Range", + "gates": [ + "render_remote_pos" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay" + }, + { + "section": "Flush if" + }, + { + "key": "flush_sprint_reset" + }, + { + "key": "flush_splash_potion" + }, + { + "section": "Real position indicator" + }, + { + "key": "render_remote_pos" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay" + }, + { + "section": "Flush if" + }, + { + "key": "flush_sprint_reset" + }, + { + "key": "flush_splash_potion" + }, + { + "section": "Real position indicator" + }, + { + "key": "render_remote_pos" + }, + { + "key": "indicator_color" + }, + { + "key": "indicator_line_width" + }, + { + "key": "indicator_filled" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Lag_Range.cpp", + "adjustments": [] + }, + { + "module": "Sprint Reset", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "delay" + }, + { + "key": "duration" + }, + { + "key": "randomize" + }, + { + "section": "Conditions" + }, + { + "key": "wait_for_damage" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Sprint_Reset.cpp", + "adjustments": [] + }, + { + "module": "Friends", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "middle_click_add" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Friends.cpp", + "adjustments": [] + }, + { + "module": "Name Tags", + "gates": [ + "show_health", + "show_equipment" + ], + "variants": [ + { + "values": [ + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "scale" + }, + { + "key": "show_own_name_tag" + }, + { + "key": "use_display_name" + }, + { + "key": "distance_scaling" + }, + { + "key": "background" + }, + { + "key": "text_shadow" + }, + { + "section": "Extra info" + }, + { + "key": "show_health" + }, + { + "key": "show_distance" + }, + { + "key": "show_equipment" + } + ] + }, + { + "values": [ + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "scale" + }, + { + "key": "show_own_name_tag" + }, + { + "key": "use_display_name" + }, + { + "key": "distance_scaling" + }, + { + "key": "background" + }, + { + "key": "text_shadow" + }, + { + "section": "Extra info" + }, + { + "key": "show_health" + }, + { + "key": "show_distance" + }, + { + "key": "show_equipment" + }, + { + "key": "show_enchants" + } + ] + }, + { + "values": [ + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "scale" + }, + { + "key": "show_own_name_tag" + }, + { + "key": "use_display_name" + }, + { + "key": "distance_scaling" + }, + { + "key": "background" + }, + { + "key": "text_shadow" + }, + { + "section": "Extra info" + }, + { + "key": "show_health" + }, + { + "key": "health_fmt" + }, + { + "key": "show_distance" + }, + { + "key": "show_equipment" + } + ] + }, + { + "values": [ + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "scale" + }, + { + "key": "show_own_name_tag" + }, + { + "key": "use_display_name" + }, + { + "key": "distance_scaling" + }, + { + "key": "background" + }, + { + "key": "text_shadow" + }, + { + "section": "Extra info" + }, + { + "key": "show_health" + }, + { + "key": "health_fmt" + }, + { + "key": "show_distance" + }, + { + "key": "show_equipment" + }, + { + "key": "show_enchants" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Name_Tags.cpp", + "adjustments": [] + }, + { + "module": "Pointers", + "gates": [ + "hide_friendlies", + "color_mode" + ], + "variants": [ + { + "values": [ + 0, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "color_near" + }, + { + "key": "color_far" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + }, + { + "values": [ + 0, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + }, + { + "values": [ + 0, + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "color_enemies" + }, + { + "key": "color_friendlies" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + }, + { + "values": [ + 1, + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "color_near" + }, + { + "key": "color_far" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + }, + { + "values": [ + 1, + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + }, + { + "values": [ + 1, + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "ignore_fov" + }, + { + "key": "hide_friendlies" + }, + { + "section": "Customization" + }, + { + "key": "style" + }, + { + "key": "color_mode" + }, + { + "key": "near_far_range" + }, + { + "key": "color_enemies" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "key": "scale_radius" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Pointers.cpp", + "adjustments": [] + }, + { + "module": "No Hit Delay", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "In-game" + }, + { + "key": "mode" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_No_Hit_Delay.cpp", + "adjustments": [] + }, + { + "module": "Ping Fix", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "Chams", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "hide_friendlies" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Chams.cpp", + "adjustments": [] + }, + { + "module": "No Use Delay", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "allow_desync" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_No_Use_Delay.cpp", + "adjustments": [] + }, + { + "module": "Indicators", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "scale" + }, + { + "key": "radius" + }, + { + "section": "Warn for" + }, + { + "key": "show_arrow" + }, + { + "key": "show_fireball" + }, + { + "key": "show_pearl" + }, + { + "section": "Conditions" + }, + { + "key": "require_coming_closer" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Indicators.cpp", + "adjustments": [] + }, + { + "module": "Block ESP", + "gates": [ + "should_limit_block_render" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "allowed_blocks" + }, + { + "section": "Block render limit" + }, + { + "key": "should_limit_block_render" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "allowed_blocks" + }, + { + "section": "Block render limit" + }, + { + "key": "should_limit_block_render" + }, + { + "key": "block_render_limit" + }, + { + "section": "Customization" + }, + { + "key": "line_width" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Block_ESP.cpp", + "adjustments": [] + }, + { + "module": "Item ESP", + "gates": [ + "highlight_all" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Customization" + }, + { + "key": "show_count" + }, + { + "key": "allowed_items" + }, + { + "key": "highlight_all" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "section": "Customization" + }, + { + "key": "show_count" + }, + { + "key": "allowed_items" + }, + { + "key": "highlight_all" + }, + { + "key": "default_color" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Item_ESP.cpp", + "adjustments": [] + }, + { + "module": "Fast Mine", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "speed" + }, + { + "key": "break_delay" + }, + { + "key": "decr_block_hit_delay" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Fast_Mine.cpp", + "adjustments": [] + }, + { + "module": "Safe Walk", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "motion_multiplier" + }, + { + "section": "Conditions" + }, + { + "key": "require_holding_blocks" + }, + { + "key": "require_looking_down" + }, + { + "key": "require_not_forward" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Safe_Walk.cpp", + "adjustments": [] + }, + { + "module": "No Hurt Cam", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "Strafe", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Strength" + }, + { + "key": "strength_jump" + }, + { + "key": "strength_ground" + }, + { + "key": "strength_air" + }, + { + "section": "Conditions" + }, + { + "key": "max_hurt_time" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Strafe.cpp", + "adjustments": [] + }, + { + "module": "Fast Accel", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "acceleration" + }, + { + "section": "Conditions" + }, + { + "key": "require_not_damaged" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Fast_Accel.cpp", + "adjustments": [] + }, + { + "module": "Instant Stop", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "No Slow", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Retained speed" + }, + { + "key": "mult_sword" + }, + { + "key": "mult_bow" + }, + { + "key": "mult_consumables" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_No_Slow.cpp", + "adjustments": [] + }, + { + "module": "Item Use Fix", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "Timer Range", + "gates": [ + "mode" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "min_dist" + }, + { + "key": "duration" + }, + { + "key": "cooldown" + }, + { + "key": "block_while_frozen" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_weapon" + }, + { + "key": "require_not_using_item" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "mode" + }, + { + "key": "min_dist" + }, + { + "key": "duration_legit" + }, + { + "key": "cooldown" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + }, + { + "key": "require_weapon" + }, + { + "key": "require_not_using_item" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Timer_Range.cpp", + "adjustments": [] + }, + { + "module": "Auto Rod", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "retract_speed" + }, + { + "key": "delay" + }, + { + "key": "randomize_delays" + }, + { + "key": "always_switch_to_weapon" + }, + { + "section": "Throwables" + }, + { + "key": "allow_throwables" + }, + { + "key": "throw_speed" + }, + { + "section": "Main" + }, + { + "key": "require_not_mouse_over" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Rod.cpp", + "adjustments": [] + }, + { + "module": "Anti Debuff", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Effects" + }, + { + "key": "blindness" + }, + { + "key": "nausea" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Anti_Debuff.cpp", + "adjustments": [] + }, + { + "module": "Piercing", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Always hit through" + }, + { + "key": "sort_by" + }, + { + "key": "non_players" + }, + { + "key": "friendlies" + }, + { + "key": "bots" + }, + { + "key": "enemies" + }, + { + "key": "blocks" + }, + { + "section": "Conditions" + }, + { + "key": "require_weapon" + }, + { + "key": "require_inside_bb" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Piercing.cpp", + "adjustments": [] + }, + { + "module": "Trajectories", + "gates": [ + "render_bow" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "line_width" + }, + { + "key": "color_hit" + }, + { + "key": "color_miss" + }, + { + "section": "Render when holding" + }, + { + "key": "render_throwables" + }, + { + "key": "render_pearls" + }, + { + "key": "render_bow" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "line_width" + }, + { + "key": "color_hit" + }, + { + "key": "color_miss" + }, + { + "section": "Render when holding" + }, + { + "key": "render_throwables" + }, + { + "key": "render_pearls" + }, + { + "key": "render_bow" + }, + { + "key": "render_uncharged_bow" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Trajectories.cpp", + "adjustments": [] + }, + { + "module": "Knockback Delay", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "chance" + }, + { + "key": "max_delay" + }, + { + "section": "Conditions" + }, + { + "key": "require_air" + }, + { + "key": "require_target" + }, + { + "key": "require_mouse" + }, + { + "key": "require_weapon" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Knockback_Delay.cpp", + "adjustments": [] + }, + { + "module": "Debug", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "clicks" + }, + { + "key": "hurt_time" + }, + { + "key": "item_use_state" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Debug.cpp", + "adjustments": [] + }, + { + "module": "Null Move", + "gates": [], + "variants": [ + { + "values": [], + "controls": [] + } + ], + "source": null + }, + { + "module": "Ghost Hand", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Interact through" + }, + { + "key": "non_players" + }, + { + "key": "friendlies" + }, + { + "key": "bots" + }, + { + "key": "enemies" + }, + { + "section": "Allow while using" + }, + { + "key": "allow_using_sword" + }, + { + "key": "allow_using_tools" + }, + { + "key": "allow_using_fists" + }, + { + "key": "allow_using_buckets" + }, + { + "key": "allow_using_fns" + }, + { + "key": "allow_using_cobweb" + }, + { + "key": "allow_using_other" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + } + ] + } + ], + "source": "reconstruction\\modules\\Ghost_Hand\\Ghost_Hand.cpp", + "adjustments": [] + }, + { + "module": "Inv Manager", + "gates": [ + "sort_hotbar" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay_after_open" + }, + { + "key": "speed" + }, + { + "key": "smart_speed" + }, + { + "key": "randomize" + }, + { + "section": "Equip armor" + }, + { + "key": "equip_armor" + }, + { + "section": "Sort hotbar" + }, + { + "key": "sort_hotbar" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay_after_open" + }, + { + "key": "speed" + }, + { + "key": "smart_speed" + }, + { + "key": "randomize" + }, + { + "section": "Equip armor" + }, + { + "key": "equip_armor" + }, + { + "section": "Sort hotbar" + }, + { + "key": "sort_hotbar" + }, + { + "key": "sort_hotbar_fallback" + }, + { + "key": "1" + }, + { + "key": "2" + }, + { + "key": "3" + }, + { + "key": "4" + }, + { + "key": "5" + }, + { + "key": "6" + }, + { + "key": "7" + }, + { + "key": "8" + }, + { + "key": "9" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Inv_Manager.cpp", + "adjustments": [] + }, + { + "module": "Chest Stealer", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "delay_after_open" + }, + { + "key": "delay_before_close" + }, + { + "key": "speed" + }, + { + "key": "smart_speed" + }, + { + "section": "Main" + }, + { + "key": "require_vanilla_title" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Chest_Stealer.cpp", + "adjustments": [] + }, + { + "module": "Clutch", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "range" + }, + { + "key": "max_aim_dist" + }, + { + "key": "min_height" + }, + { + "key": "click_speed" + }, + { + "key": "randomization" + }, + { + "key": "select_blocks" + }, + { + "key": "sideways_only" + }, + { + "section": "Aim" + }, + { + "key": "aim_speed" + }, + { + "key": "aim_mult" + }, + { + "key": "aim_mult_strength" + }, + { + "key": "aim_multipoint" + }, + { + "section": "Snap-back" + }, + { + "key": "snapback_delay" + }, + { + "key": "snapback_duration" + }, + { + "key": "snapback_instant_on_jump" + }, + { + "key": "snapback_disable_after" + }, + { + "section": "Conditions" + }, + { + "key": "require_air" + }, + { + "key": "require_damage" + }, + { + "key": "require_backwards" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Clutch.cpp", + "adjustments": [] + }, + { + "module": "Auto Weapon", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "activation_time" + }, + { + "section": "Conditions" + }, + { + "key": "require_mouse_pressed" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Auto_Weapon.cpp", + "adjustments": [] + }, + { + "module": "Knockback Displace", + "gates": [ + "direction" + ], + "variants": [ + { + "values": [ + 0 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "cooldown" + }, + { + "key": "angle" + }, + { + "key": "hide_rotation" + }, + { + "section": "Condition" + }, + { + "key": "require_no_kb" + }, + { + "key": "require_weapon" + }, + { + "key": "require_kb_enchant" + }, + { + "key": "require_facing_away" + } + ] + }, + { + "values": [ + 1 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "cooldown" + }, + { + "key": "angle" + }, + { + "key": "hide_rotation" + }, + { + "section": "Condition" + }, + { + "key": "require_no_kb" + }, + { + "key": "require_weapon" + }, + { + "key": "require_kb_enchant" + }, + { + "key": "require_facing_away" + } + ] + }, + { + "values": [ + 2 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "cooldown" + }, + { + "key": "angle" + }, + { + "key": "hide_rotation" + }, + { + "section": "Condition" + }, + { + "key": "require_no_kb" + }, + { + "key": "require_weapon" + }, + { + "key": "require_kb_enchant" + }, + { + "key": "require_facing_away" + } + ] + }, + { + "values": [ + 3 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "use_last_strafe" + }, + { + "key": "cooldown" + }, + { + "key": "angle" + }, + { + "key": "hide_rotation" + }, + { + "section": "Condition" + }, + { + "key": "require_no_kb" + }, + { + "key": "require_weapon" + }, + { + "key": "require_kb_enchant" + }, + { + "key": "require_facing_away" + } + ] + }, + { + "values": [ + 4 + ], + "controls": [ + { + "section": "Main" + }, + { + "key": "direction" + }, + { + "key": "use_last_strafe" + }, + { + "key": "cooldown" + }, + { + "key": "angle" + }, + { + "key": "hide_rotation" + }, + { + "section": "Condition" + }, + { + "key": "require_no_kb" + }, + { + "key": "require_weapon" + }, + { + "key": "require_kb_enchant" + }, + { + "key": "require_facing_away" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Knockback_Displace.cpp", + "adjustments": [] + }, + { + "module": "Block In", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "speed" + }, + { + "section": "Conditions" + }, + { + "key": "require_ground" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Block_In.cpp", + "adjustments": [] + }, + { + "module": "Speed", + "gates": [], + "variants": [ + { + "values": [], + "controls": [ + { + "section": "Main" + }, + { + "key": "speed" + }, + { + "section": "Conditions" + }, + { + "key": "require_ground" + } + ] + } + ], + "source": "reconstruction\\native\\verified\\surfaces\\Surface_Speed.cpp", + "adjustments": [] + } + ] +} \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/NumericConstants.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/NumericConstants.json new file mode 100644 index 0000000..4455636 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/NumericConstants.json @@ -0,0 +1,54 @@ +[ + { + "address": 1304768, + "bytes": "0000b443000034430000b4c3000034c30000803f000040400000000000000000000080330000803f00008033000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f00000000000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f00000000000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f0000803f0000803300008033000080bf0000803f000000c0" + }, + { + "address": 2862504, + "bytes": "0000807b" + }, + { + "address": 2863136, + "bytes": "000000000000703e000000000000704100000000000070c1000000000000c03f00000000000020c0000000000000e03f000000000000f03f000000000000f07f00000000000000800000000000000080ffffffffffffff7fffffffffffffff7f00000000000000800000000000000080000000000000f07f" + }, + { + "address": 2864560, + "bytes": "000000000000704100000000000000000000000000000080000000000000008083c8c96d305fe43f000000000000384300000000000038c300004054fb21f9bf3163621a61b4d03d182d4454fb21e9bf182d4454fb21e93f000000000000f03f000000000000f0bf0000601a61b4d03d7370032e8a19a33b0000002e8a19a33bc14920259a837b3900004054fb2119c03163621a61b4f0bd00004054fb2119403163621a61b4f03d0000307f7cd912c0ca9493a7910ee9bd0000307f7cd91240ca9493a7910ee93d00004054fb2109c03163621a61b4e0bd00004054fb2109403163621a61b4e03d3163621a61b4d0bd00004054fb21f93f00000000000000000000000000000080000000000000008083c8c96d305fe43f000000000000384300000000000038c300000050fb21f9bf63621a61b41051be00000060fb21e9bf00000060fb21e93f000000000000f03f000000000000f0bf007e000000008044" + }, + { + "address": 2864952, + "bytes": "00000000000030430000004b" + }, + { + "address": 2866800, + "bytes": "9015cb19a001fa3ed43888bee9faa83d7751c1166cc156bf00000000000000000000000000000000c4b1b4bd9eee213e4c5555555555a53fad529c804f7e92be000000000000e03f000000000000f03f000000000000008000000000000000807dfeb157e31dc73ed561c119a0012abf7cd5cf5a3ad9e53d0000000000000000eb9c2b8ae6e55abea6f810111111813f495555555555c53f00000000000000007cd5cf5a3ad9e53d7dfeb157e31dc73eeb9c2b8ae6e55abed561c119a0012abfa6f810111111813f495555555555c5bf00000000000070470000000000007038415bdffff65cdfffd45bdfff595cdfff6950eee04293f93e271e0fe887c056bf815e0cfdffffdfbf000000000000f03f423a05e15355a53f00000000000000000000008000000080000000800000008000000000000000800000000000000080a7463b8c87cdc63eb2fb6e891011813f74e7cae2f9002abf77accb545555c5bf182d4454fb211940182d4454fb2119c0d221337f7cd91240d221337f7cd912c0182d4454fb210940182d4454fb2109c0182d4454fb21f93f182d4454fb21f9bf0000807b00008003" + }, + { + "address": 2868464, + "bytes": "0000004c000080bf0000004000000000eee9913e269e783e0000000000000000aaaa2a3f13cecc3e00000000000000000000003fd1f717378071313f" + }, + { + "address": 2868888, + "bytes": "000000000000304300000000000030c3000000000000f0bf" + }, + { + "address": 2867584, + "bytes": "ffffff7fffffff7fffffff7fffffff7f0000004b000000cb0000003f000000bf0000803f000080bf000000000000000000000080000000800000008000000080" + }, + { + "address": 2869328, + "bytes": "0000007f0000803f010000803baab83f007231bf8ebebf35155235bb8faa2a3e00000040000000000000000000000000ffffff7fffffff7fffffff7fffffff7f000000800000008000000080000000800000807f" + }, + { + "address": 2869920, + "bytes": "a7463b8c87cdc63eb2fb6e891011813f74e7cae2f9002abf77accb545555c5bf6950eee04293f93e271e0fe887c056bf815e0cfdffffdfbf000000000000f03f423a05e15355a53f00000000000000000000008000000080000000800000008000000000000000800000000000000080d221337f7cd912c0182d4454fb211940182d4454fb2119c0182d4454fb21f93f182d4454fb210940182d4454fb2109c00000807b0000803f" + }, + { + "address": 2872360, + "bytes": "0300000004000000040000000600000083f9a200444e6e00fc291500d1572700dd34f50062dbc0003c999500419043006351fe00bbdeab00b761c5003a6e2400d24d42004906e00009ea2e001c92d100eb1dfe0029b11c00e83ea700f535820044bb2e009ce98400b4267000417e5f00d6913900538339009cf439008b5f840028f9bd00f81f3b00deff97000f980500112fef000a5a8b006d1f6d00cf7e360009cb2700464fb7009e663f002dea5f00ba277500e5ebc7003d7bf100f739070092528a00fb6bea001fb15f00085d8d00300356007bfc4600f0ab6b0020bccf0036f49a00e3a91d005e619100081be60085996500a0145f008d40680080d8ff0027734d0006063100ca561500c9a873007be260006b8cc000" + }, + { + "address": 2875136, + "bytes": "00000040fb21f93f000000002d44743e000000809846f83c0000006051cc783b00000080831bf0390000004020257a38000000802282e336000000001df3693551b4f0b296b144b0f9aeb6ad79ac43ab14aaeba8c8a7aaa692a580a473a36ba268a16aa0709f7b9e8a9d9d9cb59bd19af09913993a9865979396c495f89430946b93a992ea912e917590be8f0a8f598eaa8dfe8c548cac8b078b648ac48925898988ee875687c0862b86998508857984ec836183d8825082c9814581c280408002ff0efd25fb47f973f7aaf5eaf334f287f0e3ee47edb3eb27eaa3e827e7b2e543e4dce27ae120e0cbde7ddd34dcf1dab3d97bd848d71ad6f1d4cdd3add292d17bd069cf5bce51cd4acc48cb4aca4fc958c864c774c687c59dc4b7c3d4c2f4c116c13cc065bf90bebebdefbc23bc59bb91baccb90ab94ab88cb7d0b617b660b50000003f000000bf" + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/ProfileLabels.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/ProfileLabels.json new file mode 100644 index 0000000..8f0a4a8 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/ProfileLabels.json @@ -0,0 +1,18 @@ +[ + { + "rva": 1310590, + "bytes": "556e6b6e6f776e206d6f64696669636174696f6e20646174652e004d6f646966" + }, + { + "rva": 1310617, + "bytes": "4d6f64696669656420256c6c6420646179732061676f2e00" + }, + { + "rva": 1310641, + "bytes": "4d6f6469666965642031206461792061676f2e0000000000" + }, + { + "rva": 1310665, + "bytes": "4d6f64696669656420746f6461792e000000000000000000" + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderConstants.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderConstants.json new file mode 100644 index 0000000..f33ff4e --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderConstants.json @@ -0,0 +1,66 @@ +[ + { + "address": 1304656, + "bytes": "ec51b81e85ebf93fec51b81e85ebf9bf000000000000f03f000000000000f03f000000000000f03f000000000000f07f0000803f00000000000000000000f03f000000000000f07f0000803f000000000000000000806640182d4454fb21094000000000008056c000000000008066c00000b443000034430000b4c3000034c30000803f000040400000000000000000000080330000803f00008033000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f00000000000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f00000000000000000000803f000080330000000000000000ffffff7fffffff7fffffff7fffffff7f9a9999999999c93f0000803f0000803300008033000080bf0000803f000000c0" + }, + { + "address": 1312768, + "bytes": "684d6bfbfb7f0000000000000000000000000080000000800000008000000080000080bf000080bf000080bf000000000000a04100000000000000000000e03f0000803f000000000000803f00000000000000000000e03f0000003f11000000120000001400000080b750fbfb7f00000000f0c100000000000000000000000000002842a1a0a03d0000a0410000e0409a9999999999a93f0000c0408180803e0000604100008041dedd5d3f0000803f8f8e8e3eefee6e3fb1b0b03e00000000000080c10080bb44000061440000003f0000803f00000000000000000000000000000080000000800000008000000080333333333333d33f0000004100004041ffffff7fffffff7fffffff7fffffff7f9a9999999999b9bf00000000000000400000d743a1a0a03d0000a04100008041dedd5d3f0000a040000000000000e03f000060419a99193f000070410000000000000000000020c00000000000000000000000000000804100000000000000009a9999999999b93f000000000000e0bf00000000000014c0000020410000e0c18180803e00001644000016c44e11edffc711edff8911edffa811edff6a11edffe611edffb016edffd816edff4215edffc616edff0000803f0000a040c1c0403e0000403f000048c200004842000000000000d743000000009a9999999999a93fa1a0a03d0000a0410000004100008041dedd5d3f0000803f0000a040000020c2000020429a99193fbcbb3b3f0000005f000000418180803ea1a0a03e0000a0400000c040dedd5d3f0000803f0000003f00000040000040419a99193e9a99193f0000a0400000803fdedd5d3f9b2fedfff12fedffae2fedffb92fedff556e6c6f616420536c696e6b793f00879cb25bc0c5ea7970e1436f6d626174004d6f76650056697375616c00426c6f636b005574696c6974790050726f66696c657300556e6c6f61640050524553532041204b45592e2e2e00484f4c440044656661756c74000000500000005e0000006c0000008100000000000000000000000000000003000000000000000200000001000000436f6e7461696e73207468652064656661756c7420636f6e66696775726174696f6e2e00436c69636b20746f206c6f616400436c69636b20746f207361766500436c69636b20746f206f70656e20666f6c64657200436c69636b20746f2064656c6574650044656661756c742070726f66696c652063616e6e6f742062652064656c657465640044656661756c742070726f66696c652063616e6e6f74206265206f7665727772697474656e004c6f61642070726f66696c6520272573273f00536176652070726f66696c6520272573273f004f70656e20666f6c64657220666f722070726f66696c6520272573273f0044656c6574652070726f66696c6520272573273f0050726f66696c65206e616d652069732074616b656e2e00435245415445204e45572050524f46494c45007dffffff90ffffffa3ffffffc1ffffff9a9999999999b93f9a9999999999b9bf0000803f8180803ea1a0a03e000020410000c040a1a0a03d0000003f0000a041dedd5d3f00007041000020c200002042000098410000c0409a99193f000070410000a041dedd5d3f0000704100002041000000000000e03f000000c00000000000000000000000c08180803ea1a0a03e000000400000803f9a9999999999b93f0000c04000000000cdcccc3d000000009a9999999999b93f0000a041dedd5d3f0000704100002041000000000000e03f000000c00000000000000000000000c08180803ea1a0a03e000000400000803f9a9999999999b93f0000c0400000c0c000004041000000000000a041000000009a9999999999b93fdedd5d3f00007041000000000000e03f0000003f8180803e0000004000002041efee6e3fb1b0b03e333333333333d33f0000803f9a99193fbcbb3b3f000000000000a041dedd5d3f00007041000020c2000020428180803e0000004000002041000000000000e03f0000003f00000000dedd5d3f00007041000000000000e03f0000003f8180803e0000004000002041000080400000a040efee6e3fb1b0b03e333333333333d33f9a99193fbcbb3b3f0000803f0000803f8180803e000000419a99193fdedd5d3f000070410000803fdedd5d3f000000410000803fdedd5d3f0000004125302e3266202d2025302e32660053656c656374206974656d00436c69636b20746f206164640025302e326600000000000000000000003f00000040000080400000c040035eedff895bedffa55bedfff95dedffa95dedff00000000333333333333d33f0000803fa1a0a03d0000a0410000004100008041dedd5d3f9a99193fefee6e3fb1b0b03e000000409a9999999999c93f0000f041000070418180803e00008040000000000000d03f0000c8410000003f8f8e8e3e0000a0400000c04100007f43bcbb3b3f000000000000000000e06f400000c040000060c20000003ea1a0a03e1361edffaf65edff2d62edff0b63edff8180803e000000400000a040000020410000a0c100000000000000000000e03f0000803f41726520796f7520737572653f004875650053617475726174696f6e004c696768746e65737300526563656e746c79207573656400230025303278253032782530327800436f6e74696e7565002b2564206d6f72652e2e2e000000006a6176612e7574696c2e4c69737400676574002849294c6a6176612f6c616e672f4f626a6563743b0073697a65002829490061646400284c6a6176612f6c616e672f4f626a6563743b295a0072656d6f7665006a6176612e7574696c2e4d6170" + }, + { + "address": 1375232, + "bytes": "0000803f0000003f0000000000000000000080bf000080bf000080bf000080bf000080bf0000803f000080bf0000803f000080bf000080bf0000803f0000803f0000803f000080bf000080bf0000803f000080bf0000803f0000803f0000803f000080bf0000803f0000803f0000803f0307010504070603020100040206000000010105050404000203030707060602000201030406050700000000000000000000000000000000000000000000803f0000803f0000803f0000803f000000000001030200010203000000000000000000000000000080bf000080bf0000803f000000000000003f0000803f0000803f0001020300010203" + }, + { + "address": 1378768, + "bytes": "00000080000000800000008000000080000000000000f03f0000803fcdcccc3e00002041cdcccc3dcdcc4c3e0000403f00000040000080bf00002041cdcccc3d0000803f0000803e000080bf000080c00000803f0000803f1f852b3f506c617965722045535000486967686c6967687473206f7468657220706c61796572732e005374796c65003244003344004c696e652077696474680025302e30662070780053686f7720626f780048757274206566666563740046696c6c65640053686f77206865616c746820626172000000009a9999999999d9bf00000000000000809a9999999999d9bf9a9999999999d9bf00000000000000809a9999999999d93f9a9999999999d93f00000000000000809a9999999999d9bf9a9999999999d93f00000000000000809a9999999999d93f9a9999999999d9bf00000000000000409a9999999999d9bf9a9999999999d9bf00000000000000409a9999999999d93f9a9999999999d93f00000000000000409a9999999999d9bf9a9999999999d93f00000000000000409a9999999999d93f4869646520667269656e646c6965730052616e67650025302e306620626c6f636b73004f766572726964652074617267657420636f6c6f720054617267657420636f6c6f7200436f6c6f7273004175746f6d61746963004d616e75616c00467269656e646c7920636f6c6f7200456e656d7920636f6c6f72004d61696e00437573746f6d697a6174696f6e006d6f64650072616e676500686964655f667269656e646c69657300636f6c6f725f6d6f646500636f6c6f725f656e656d69657300636f6c6f725f667269656e646c696573006f766572726964655f7461726765745f636f6c6f7200636f6c6f725f746172676574006c696e655f776964746800687572745f6566666563740066696c6c65640073686f775f32645f626f780073686f775f6865616c74685f6261720025730000000000000000" + }, + { + "address": 1381616, + "bytes": "0000403f0000803f0000c03f0000004067756900" + }, + { + "address": 1383008, + "bytes": "0000003fcdcccc3e43686573742045535000486967686c6967687473206368657374732e00526567756c61722063686573747300456e6465722063686573747300547261707065642063686573747300426561636f6e730052616e67650025302e306620626c6f636b73000000000000000000000000e03f000000000000e03f000000000000e03f" + }, + { + "address": 1383504, + "bytes": "0000000000000080000000000000008000000000000014400000803f000080400831eeff2231eeff1431eeff1b31eeff0e31eeff8d31eeffb931eeffa331eeffae31eeff9831eeff4d6f64204f7665726c617900446973706c6179732061206c697374206f6620616c6c20616374697665206d6f64732e00436f6d626174004d6f766500426c6f636b0056697375616c005574696c697479004f6e6c7920626f756e64206d6f64756c6573002573004c6f77657263617365" + }, + { + "address": 1384008, + "bytes": "0000a0400000000033333333333313409a9999999999c93f00006041000040419a9999999999c93f0000803f00000000333333333333134000000000000014400000c8c2dedd5d3f8f8e8e3e8d8c0c3fedec6c3fadac2c3e0000cc42a1a0a03d0000a04100000041000080c100008c429a99193e00002041000048424e6f74696669636174696f6e7300496e666f726d7320796f75207768656e206365727461696e20616374696f6e732061726520706572666f726d65642e00507265737320257320746f206f70656e20475549004d6f64756c652069732062696e642d6f6e6c7900486f6c642062696e64206973207573656400436f6d626174004d6f766500426c6f636b0056697375616c005574696c69747900496e2d67616d6500257320257300456e61626c65640044697361626c6564002573202575206d6f647300534c494e4b590000b81f50fbfb7f0000c71f50fbfb7f00000000000000000000d51f50fbfb7f000044656661756c74004c6f616465642070726f66696c650053617665642070726f66696c650044656c657465642070726f66696c65002573004572726f7220636f646520256400467269656e6420616464656400467269656e642072656d6f76656400486964652069660056697369626c65206d6f642063617465676f7269657300686964655f696e67616d6500686964655f686f6c645f6e6f74696673006869" + }, + { + "address": 1390288, + "bytes": "000048c3000034439a999999999901400000c842000020410000803f00000000000000000000e03f00000000000000c00000003f000000000000000000000040000040c1000000406f12833a00c079440000c64200006041000000410000003f0000a041000020414e616d652054616773004d616b657320706c61796572206e616d6520746167732065617369657220746f207365652e005363616c650025302e30662025250044697374616e6365207363616c696e670054657874206261636b67726f756e64005465787420736861646f770045717569706d656e7400456e6368616e746d656e7473006964006c766c0053686f77206f776e206e616d65207461670052616e67650025302e306620626c6f636b7300c2a72563252e2a6600c2a7362b252e2a6600e29da4c2a7722000c2a700c2a77220c2a72563252e30666d0055736520646973706c6179206e616d6520666f726d6174004865616c74680044697374616e6365004865616c746820666f726d61740048502028302d323029004865617274732028302e302d31302e302900257320256400000000000000683a50fbfb7f00006b3a50fbfb7f00006e3a50fbfb7f0000713a50fbfb7f0000743a50fbfb7f0000773a50fbfb7f00007a3a50fbfb7f00007d3a50fbfb7f0000803a50fbfb7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000833a50fbfb7f0000863a50fbfb7f0000893a50fbfb7f00008c3a50fbfb7f00008f3a50fbfb7f0000923a50fbfb7f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000953a50fbfb7f0000983a50fbfb7f00009b3a50fbfb7f00009e3a50fbfb7f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a13a50fbfb7f0000a43a50fbfb7f0000a73a50fbfb7f0000aa3a50fbfb7f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ad3a50fbfb7f0000b03a50fbfb7f0000507200465000464600425000505000526500414100546800445300536800536d004241004b6e004641004c6f00456600535400556e00466f00506f00507500466c00496e004c53004c7500000000000000000000000000000000000003000000010000000400000003000000040000000300000002000000020000000000000000000000000000000000000000000000000000000000000000000000040000000400000001000000010000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000010000004d61696e00457874726120696e666f0072616e6765007363616c650073686f775f6f776e5f6e616d655f746167007573655f646973706c61795f6e616d650064697374616e63655f7363616c696e67006261636b67726f756e6400746578745f736861646f770073686f775f6865616c7468006865616c74685f666d740073686f775f64697374616e63650073686f775f65717569706d656e740073686f775f656e6368616e74730000000000000000000000000000003f0000f0410000b4420000803facc52737000000000000000000806640182d4454fb21094000000000008056c000002041000000000000000000000000000000800000008000000080000000800000000000806640182d4454fb21094000000000008056c00000000000000000ffffff7fffffff7fffffff7fffffff7f506f696e7465727300506f696e747320746f206f7468657220706c61796572732e005374796c65003244003344005472616e736974696f6e206265747765656e0025302e306620626c6f636b730025302e3066202d2025302e306620626c6f636b73005363616c6500252e306625250044697374616e63652d6261736564207261646975730052616469757300252e306600436f6c6f72730044697374616e6365004e616d6520746167004d616e75616c004e65617220636f6c6f720046617220636f6c6f72004869646520667269656e646c6965730052616e67650049676e6f72652077697468696e20464f560025302e3066c2b000467269656e646c7920636f6c6f7200456e656d7920636f6c6f72004d61696e00437573746f6d697a6174696f6e0072616e67650069676e6f72655f666f7600686964655f667269656e646c696573007374796c6500636f6c6f725f6d6f6465006e6561725f6661725f72616e676500636f6c6f725f6e65617200636f6c6f725f66617200636f6c6f725f656e656d69657300636f6c6f725f667269656e646c696573007363616c6500726164697573007363616c655f726164697573002573004e6f204869742044656c61790052656d6f76657320312e38207377696e672064656c61792e004d6f646500526567756c6172004c6567697400496e2d67616d65006d6f64650025730050696e67204669780053686f777320796f7572207265616c2070696e67207768696c65207573696e67206c6167206d6f64732e000000803f001b37ca4368616d730052656e6465727320706c617965727320626568696e6420626c6f636b732e004869646520667269656e646c696573004d61696e00686964655f667269656e646c696573000000f8586bfbfb7f00004e6f205573652044656c61790052656d6f7665732076616e696c6c612064656c6179207768656e20636f6e73756d696e67206974656d732e00416c6c6f7720646573796e63206162757365004d61696e00616c6c6f775f646573796e630000000000003f0000803f0000000000003440000000000000e03f0000000000806640182d4454fb21094000000000008056c000000080000000800000008000000080000070c10000a0400000000000002e400000000000003e40496e64696361746f727300506f696e747320746f20696e636f6d696e672070726f6a656374696c65732e005363616c6500252e306625250052616469757300252e3066004172726f7773004669726562616c6c7300456e64657220706561726c7300436f6d696e6720636c6f73657200252e30666d004d61696e005761726e20666f7200436f6e646974696f6e73007363616c65007261646975730073686f775f6172726f770073686f775f6669726562616c6c0073686f775f706561726c00726571756972655f636f6d696e675f636c6f7365720000000000803f000000000000803f000000005c8f423e0000803f000000000000003f000000009a99193f0000803f000000000000000000000000713d0a3f00000000000000000000b03f0000c0410000005f000000000000e03f00007f43426c6f636b2045535000486967686c696768747320626c6f636b732e00426c6f636b2074797065730053656172636820626c6f636b00000000000000000000000000000000000000000000000000000000000000000000000000803f000000000000803f00000000000000000000803f0000803f0000803f00000000000000000000803f000000000000803f0000803f0000803f000000000000803f0000803f0000803f0000010001000500050004000400000002000300030007000700060006000200000002000100030004000600050007004c696e652077696474680025302e306620707800456e61626c6564004c696d697420706572206368756e6b2073656374696f6e0025302e306620626c6f636b2873290052616e67650025302e3066206368756e6b287329004d61696e00426c6f636b2072656e646572206c696d697400437573746f6d697a6174696f6e0072616e676500616c6c6f7765645f626c6f636b730073686f756c645f6c696d69745f626c6f636b5f72656e64657200626c6f636b5f72656e6465725f6c696d6974006c696e655f7769647468000000000000d84e6bfbfb7f00000000000000000000333333333333d33f9a99993ecdcccc3e0000803f00000000000000000000000000000080000000800000008000000080cdcc4cbd00000000000000000000e03f000000000000b03f4974656d2045535000486967686c69676874732064726f70706564206974656d732e0053686f7720636f756e740052616e67650025302e306620626c6f636b7300486967686c6967687420616c6c206974656d730044656661756c7420636f6c6f72002575004d61696e00437573746f6d697a6174696f6e004974656d20747970657300536561726368206974656d0072616e67650073686f775f636f756e7400616c6c6f7765645f6974656d7300686967686c696768745f616c6c0064656661756c745f636f6c6f720000000000000000803f00000000000000000000f03f46617374204d696e6500496e6372656173657320626c6f636b206d696e696e672073706565642e00427265616b2064656c617900252e3066206d7300416c7761797320646563726561736520627265616b2064656c617900537065656400252e326678004d61696e00737065656400627265616b5f64656c617900646563725f626c6f636b5f6869745f64656c617900000082420000803f536166652057616c6b0050726576656e747320796f752066726f6d2077616c6b696e67206f6666206c65646765732e004c6f6f6b696e6720646f776e004e6f74206d6f76696e6720666f727761726400486f6c64696e6720626c6f636b73004d6f74696f6e00252e326678004d61696e00436f6e646974696f6e73006d6f74696f6e5f6d756c7469706c69657200726571756972655f686f6c64696e675f626c6f636b7300726571756972655f6c6f6f6b696e675f646f776e00726571756972655f6e6f745f666f7277617264004e6f20487572742043616d0052656d6f7665732063616d657261207368616b65207768656e2074616b696e672064616d6167652e00000000000000000000000000009a9999999999c93f000000000000f0bf000000000000f03f00000000008056c00000000000806640000000000080464000000000008046c0182d4454fb2109400000008000000080000000800000008053747261666500416c6c6f777320666173746572207374726166696e672e00486f6c64696e6720776561706f6e004d6178696d756d20687572742074696d6500252e3066206d730041697200252e30662525004a756d700047726f756e6400537472656e67746800436f6e646974696f6e7300737472656e6774685f6a756d7000737472656e6774685f67726f756e6400737472656e6774685f616972006d61785f687572745f74696d6500726571756972655f776561706f6e0000000000000000803f0000000046b6f3fdd478e13f9a9999999999c93f4661737420416363656c0053706565647320757020616363656c65726174696f6e2e00486f6c64696e6720776561706f6e004e6f742064616d6167656400426f6f737400252e30662525004d61696e00436f6e646974696f6e7300616363656c65726174696f6e00726571756972655f6e6f745f64616d6167656400726571756972655f776561706f6e000000000000cdccccccccccf43f000080bf0000803f496e7374616e742053746f7000496e7374616e746c792073746f7073206d6f76696e67207768656e206d6f7665206b657973206172652072656c65617365642e00000000000000009a9999999999c93f4e6f20536c6f770052656d6f76657320736c6f77646f776e207768696c65207573696e67206974656d732e00426f7700252e306625250053776f726400436f6e73756d61626c65730052657461696e6564207370656564006d756c745f73776f7264006d756c745f626f77006d756c745f636f6e73756d61626c6573004974656d205573652046697800416c6c6f7773207573696e67206974656d73207768696c6520627265616b696e6720626c6f636b732e0000000000000000000000084000000000000000000000803f00000000399d52a246df913f00000060fb2109c00000000000000000000000800000008000000080000000809a9999999999b93f9a9999999999d93f666666666666fe3f00000000000008409a9999999999a93f46b6f3fdd478e13f000000000000f03f0000803f0000803f000080bf54696d65722052616e6765004162757365732074696d6572206c616720746f2074656c65706f727420796f752e004d6f757365207072657373656400486f6c64696e6720776561706f6e004e6f74207573696e67206974656d004d6f646500526567756c6172004c6567697400426c6f636b207768696c652066726f7a656e004475726174696f6e0025302e3066206d73004d696e696d756d2064697374616e63650025302e326620626c6f636b7300436f6f6c646f776e0025302e31662073004d61696e00436f6e646974696f6e73006d6f6465006d696e5f64697374006475726174696f6e006475726174696f6e5f6c6567697400636f6f6c646f776e00626c6f636b5f7768696c655f66726f7a656e00726571756972655f6d6f7573655f7072657373656400726571756972655f776561706f6e00726571756972655f6e6f745f7573696e675f6974656d002573000000000080bf51f4eeffa4f5eeffe4f4eeff74f5eeff7df7eeff31f7eeff000000000000003f0000000000000000000014400ad7233c8fc2f53c0000000000003e400000803f00000000333333333333d33fcdccccccccccfc3f00002041000000000000a0410000003f0000803f00000000000000000000f03f0ad7233c8fc2f53c0000000000003e40000000404175746f20526f64005468726f777320796f75722066697368696e6720726f6420666f7220796f752e004e6f742077697468696e206d656c65652072616e676500416c6c6f77207573696e6720736e6f7762616c6c732f6567677300416c7761797320737769746368206261636b20746f20776561706f6e0044656c6179206265747765656e20616374696f6e7300252e3066206d730052616e646f6d697a652064656c617973005265747261637420737065656400252e326678005468726f7720737065656400252e316620435053004d61696e005468726f7761626c657300726574726163745f73706565640064656c61790072616e646f6d697a655f64656c61797300616c776179735f7377697463685f746f5f776561706f6e00616c6c6f775f7468726f7761626c6573007468726f775f737065656400726571756972655f6e6f745f6d6f7573655f6f76657200416e7469204465627566660052656d6f766573206e656761746976652076697375616c20656666656374732e00426c696e646e657373004e6175736561004566666563747300626c696e646e657373006e6175736561005069657263696e6700416c6c6f77732068697474696e6720656e746974696573207468726f756768206f62737472756374696f6e732e00496e7369646520656e7469747920686974626f7800486f6c64696e6720776561706f6e004e6f6e2d706c6179657220656e74697469657300467269656e646c69657300426f747300456e656d69657300536f7274207461726765747320627900487572742074696d65004865616c746800426c6f636b7300416c7761797320686974207468726f75676800436f6e646974696f6e7300736f72745f6279006e6f6e5f706c617965727300667269656e646c69657300626f747300656e656d69657300626c6f636b7300726571756972655f776561706f6e00726571756972655f696e736964655f6262000000ae47e17a14aeef3f000000000000e03f000000000000f03f0000a041000040409a9999999999b93f0000803f00000000000000000000f83f0000000000408f400000000000006940333333333333d33f000000000000f03fae47e17a14aeef3f399d52a246df913f0000000000000000000000800000008000000080000000807b14ae47e17ab4bf7b14ae47e17ac43f9a9999999999b93f5472616a6563746f7269657300507265646963747320746865207472616a6563746f7279206f6620746865206974656d20696e20796f75722068616e642e004c696e652077696474680025302e30662070780048697420636f6c6f72004d69737320636f6c6f7200426f7700426f772028756e636861726765642900456e646572706561726c7300536e6f7762616c6c732f65676773004d61696e0052656e646572207768656e20686f6c64696e67006c696e655f776964746800636f6c6f725f68697400636f6c6f725f6d6973730072656e6465725f7468726f7761626c65730072656e6465725f706561726c730072656e6465725f626f770072656e6465725f756e63686172" + }, + { + "address": 2837568, + "bytes": "000080380000803f" + }, + { + "address": 2837712, + "bytes": "000000800000008000000080000000800000803f0000803f000080bf000000bf0000003f000000000000000000000000ffffff7fffffff7fffffff7fffffff7f00007f434405dbff2e06dbffac04dbff9c05dbff3333b33e3333b33e00000000000000bf0000003f00000000000000000000803f0000803f000000000000000000000080000000800000008000000080862fdbff0c31dbff2030dbffb030dbff8d33dbffa334dbffe033dbff4034dbff000000800000008000000080000000800000803f0000803f000000000000000001000100000000000000000000000000000000800000008000000080000000800000003f0000000000000000000000000000803f0000803f0000000000000000000000800000008000000080000000800000803f0000003f0ad723bc0ad7233c000000000000f03fa4707d3ff02374c9000000c0000080bf00000040f023744900004040000040c0000000000000000000000000000010c100000000000000000000d84100008040000000605555d53f0000d8c100000000000000000000e0bf7a008bfcfa21f9bfd7b3dd3f000080c0ffffff7fffffff7fffffff7fffffff7f00007f430000000000000000000000000000803f0000803f000000000000000000002041000000bf0000003f000020c1000020410000003f000020c1000000bf0000204136cd133f0000803f333313c0000080470000003f0000204100002041000000bf0000003f000020c1000000000000803f0000803f00000000000000000000803f000000000000000000000000000000000000803f0000000000000000000000000000803f000000000000000000002041000020410000003f000020c1000000bf0000000000000000000000000000803f0000803f00000000000000000000803f0000803f" + }, + { + "address": 2838928, + "bytes": "00007f430000803f0000803f0000003fabaaaa3e000080bfabaa2a3eabaa2a3f0000c040abaaaabe00007f43000000000000803f00000000000000000000803f0000803f00000000000000000000803f000000800000008000000080000000800000803f000000000000000000000000000000000000803f0000000000000000ffffffffffffff7fffffffffffffff7f8dedb5a0f7c6b03e000000000000f03f000000800000008000000080000000800000803f00000000000000000000803f00003443db0f4940db0f4940000034430000803f00000000000000000000803f000000800000008000000080000000800000803f00000000000000000000803f0000803f00000000000000000000803f17b7d138000000000000000000000000000000000000803f0000000000000000000000800000008000000080000000800050c3c70050c3c700000000000000000000003f0050c3470000803f000000000000003f0000000000000000000000000000803f00000000000000000000803f0000803f0000000000000000000000000000803f00000000000000000000803f0000003f0000003f00000000000000000000803f000000000000000000000000000000800000008000000080000000800000803f0000803f00000000000000000000003f00000000000000000000000000000000000000000000003f0000003fffffffffffffff7fffffffffffffff7f8dedb5a0f7c6b03e000000000000f03f00000080000000800000008000000080000000000000803f00000000000000000000803f0000003f000000000000000000000000000000000000003f0000003f000000000000803f0000000000000000000080bf000080bf0000000000000000110adcff110adcffe008dcff7f0adcff740adcff000000000000000000000000abaa2a3fabaa2a3fabaa2a3fabaa2a3f0000803f0000000000000000000000000000803f0000803f0000000000000000bd378635bd37863500000000000000000000003f00401c46000000000000000000000080000000800000008000000080ffffff7fffffff7fffffff7fffffff7fdb0fc9c0db0fc940000000000000000000000080000000800000008000000080db0fc93f0000003f0000803fabaaaa3f0000004000004040000080400000a040cdcccc3d000000000000000000000000000000800000008000000080000000800000003f0000803f000080bf00000000ee3ae53eee3ae53e0000000000000000ee3ae53e0000000000000000000000000000008000000080000000800000008089620d3f89620d3f00000000000000000000008000000080000000800000008089620d3f89620d3f0000000000000000fcfffffffcfffffffcfffffffcffffff0024744900247449002474c9002474c90000003fbd3786350000803f3d20dcfff21fdcffd120dcff6721dcff9720dcff9a9919400000003f00000000000000000000003f0000803f0000000000000000000000800000008000000080000000800000803f0000803f00000000000000000000003f0000803f00000000000000000000003f000048430000803f00000000fefffffffefffffffefffffffeffffffdb0f49400000003f0000803f0000003f000000bf00000000000000000000000000000080000000800000008000000080bd3786350000803f00000000000000000000003f0000803f0000000000000000db0fc9c0db0fc9400000003f0000803f00000000000000000000003f0ad7233c000080400000803f0000003f000000bf0000003f0ad7233c000080400000803f000020410000000000000000000000000000003f0ad7233c000080400000803f00b2ffff0001ffffd0ceffff0054ffff00000080000000800000008000000080ff510080ef0000805f000080af2b00800000003f0ad7233c000080400000803f0000003f0ad7233c000080400000803f" + }, + { + "address": 2841456, + "bytes": "0000803e0000803e00000000000000000000003f0000000000000000000000000000003f0000003f00000000000000000000003f0000000000000000000000000000003f0000003f000000000000000021c7dcffc8c8dcffc2c7dcff68c8dcff" + }, + { + "address": 2842720, + "bytes": "0000003f0000000000000000000000000000003f0000003f00000000000000000000803f000000000000000000000000000000800000008000000080000000800000003fbd37863500001644ae47813f" + }, + { + "address": 2842960, + "bytes": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101010101010101010101010101010109090909090909090909090909090909070707070707070707070707070707070707070707070707070707070707070708080202020202020202020202020202020202020202020202020202020202020a0303030303030303030303030403030b060606050808080808080808080808000c18243c60540c0c0c30480c0c0c0c0c0c0c0c0c0c0c0c0c000c0c0c0c0c000c000c0c0c180c0c0c0c0c180c180c0c0c0c0c0c0c0c0c180c0c0c0c0c180c0c0c0c0c0c0c180c0c0c0c0c0c0c0c0c240c240c0c0c240c0c0c0c0c240c240c0c0c240c0c0c0c0c0c0c0c0c0c00000000" + }, + { + "address": 2868912, + "bytes": "0000807b000080bf" + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderDescriptorObservations.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderDescriptorObservations.json new file mode 100644 index 0000000..d9c05c1 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/RenderDescriptorObservations.json @@ -0,0 +1,398 @@ +[ + { + "module": "Aim Assist", + "descriptor": "0x2e8cc0", + "address": "0x2e8cd8", + "flags_observation": 0 + }, + { + "module": "Auto Clicker", + "descriptor": "0x2e9330", + "address": "0x2e9348", + "flags_observation": 0 + }, + { + "module": "Auto Soup", + "descriptor": "0x2e96b0", + "address": "0x2e96c8", + "flags_observation": 0 + }, + { + "module": "Bridge Assist", + "descriptor": "0x2e9ac0", + "address": "0x2e9ad8", + "flags_observation": 0 + }, + { + "module": "Player ESP", + "descriptor": "0x2e9e80", + "address": "0x2e9e98", + "flags_observation": 0 + }, + { + "module": "Fast Place", + "descriptor": "0x2ea2d0", + "address": "0x2ea2e8", + "flags_observation": 0 + }, + { + "module": "Reach", + "descriptor": "0x2ea550", + "address": "0x2ea568", + "flags_observation": 0 + }, + { + "module": "Velocity", + "descriptor": "0x2ea7f0", + "address": "0x2ea808", + "flags_observation": 0 + }, + { + "module": "Anti Bot", + "descriptor": "0x2eacd0", + "address": "0x2eace8", + "flags_observation": 0 + }, + { + "module": "Auto Block", + "descriptor": "0x2eaff8", + "address": "0x2eb010", + "flags_observation": 0 + }, + { + "module": "Teams", + "descriptor": "0x2eb400", + "address": "0x2eb418", + "flags_observation": 0 + }, + { + "module": "GUI", + "descriptor": "0x2eb740", + "address": "0x2eb758", + "flags_observation": 30 + }, + { + "module": "Timer", + "descriptor": "0x2eba10", + "address": "0x2eba28", + "flags_observation": 0 + }, + { + "module": "Fake Lag", + "descriptor": "0x2ebcc0", + "address": "0x2ebcd8", + "flags_observation": 0 + }, + { + "module": "Criticals", + "descriptor": "0x2ec010", + "address": "0x2ec028", + "flags_observation": 0 + }, + { + "module": "No Item Release", + "descriptor": "0x2ec390", + "address": "0x2ec3a8", + "flags_observation": 0 + }, + { + "module": "Blink", + "descriptor": "0x2ec600", + "address": "0x2ec618", + "flags_observation": 0 + }, + { + "module": "Chest ESP", + "descriptor": "0x2ec908", + "address": "0x2ec920", + "flags_observation": 0 + }, + { + "module": "Hitboxes", + "descriptor": "0x2ecca8", + "address": "0x2eccc0", + "flags_observation": 0 + }, + { + "module": "Mod Overlay", + "descriptor": "0x2ecef0", + "address": "0x2ecf08", + "flags_observation": 4 + }, + { + "module": "Notifications", + "descriptor": "0x2ed320", + "address": "0x2ed338", + "flags_observation": 7 + }, + { + "module": "No Jump Delay", + "descriptor": "0x2ed630", + "address": "0x2ed648", + "flags_observation": 0 + }, + { + "module": "Sprint", + "descriptor": "0x2ed840", + "address": "0x2ed858", + "flags_observation": 0 + }, + { + "module": "Backtrack", + "descriptor": "0x2edad0", + "address": "0x2edae8", + "flags_observation": 0 + }, + { + "module": "Free Look", + "descriptor": "0x2edef0", + "address": "0x2edf08", + "flags_observation": 0 + }, + { + "module": "Auto Tool", + "descriptor": "0x2ee158", + "address": "0x2ee170", + "flags_observation": 0 + }, + { + "module": "Hit Select", + "descriptor": "0x2ee4f0", + "address": "0x2ee508", + "flags_observation": 0 + }, + { + "module": "Weapons", + "descriptor": "0x2ee930", + "address": "0x2ee948", + "flags_observation": 7 + }, + { + "module": "Refill", + "descriptor": "0x2eed90", + "address": "0x2eeda8", + "flags_observation": 14 + }, + { + "module": "Auto Pot", + "descriptor": "0x2ef128", + "address": "0x2ef140", + "flags_observation": 14 + }, + { + "module": "Inv Walk", + "descriptor": "0x2ef3d0", + "address": "0x2ef3e8", + "flags_observation": 0 + }, + { + "module": "Keep Sprint", + "descriptor": "0x2ef700", + "address": "0x2ef718", + "flags_observation": 0 + }, + { + "module": "Lag Range", + "descriptor": "0x2ef9c0", + "address": "0x2ef9d8", + "flags_observation": 0 + }, + { + "module": "Sprint Reset", + "descriptor": "0x2efd00", + "address": "0x2efd18", + "flags_observation": 0 + }, + { + "module": "Friends", + "descriptor": "0x2f0038", + "address": "0x2f0050", + "flags_observation": 20 + }, + { + "module": "Name Tags", + "descriptor": "0x2f02d0", + "address": "0x2f02e8", + "flags_observation": 0 + }, + { + "module": "Pointers", + "descriptor": "0x2f06c0", + "address": "0x2f06d8", + "flags_observation": 0 + }, + { + "module": "No Hit Delay", + "descriptor": "0x2f0b70", + "address": "0x2f0b88", + "flags_observation": 0 + }, + { + "module": "Ping Fix", + "descriptor": "0x2f0dd0", + "address": "0x2f0de8", + "flags_observation": 0 + }, + { + "module": "Chams", + "descriptor": "0x2f0fe0", + "address": "0x2f0ff8", + "flags_observation": 0 + }, + { + "module": "No Use Delay", + "descriptor": "0x2f1210", + "address": "0x2f1228", + "flags_observation": 0 + }, + { + "module": "Indicators", + "descriptor": "0x2f1440", + "address": "0x2f1458", + "flags_observation": 0 + }, + { + "module": "Block ESP", + "descriptor": "0x2f1740", + "address": "0x2f1758", + "flags_observation": 0 + }, + { + "module": "Item ESP", + "descriptor": "0x2f1a80", + "address": "0x2f1a98", + "flags_observation": 0 + }, + { + "module": "Fast Mine", + "descriptor": "0x2f1d90", + "address": "0x2f1da8", + "flags_observation": 0 + }, + { + "module": "Safe Walk", + "descriptor": "0x2f2030", + "address": "0x2f2048", + "flags_observation": 0 + }, + { + "module": "No Hurt Cam", + "descriptor": "0x2f22d8", + "address": "0x2f22f0", + "flags_observation": 0 + }, + { + "module": "Strafe", + "descriptor": "0x2f24e8", + "address": "0x2f2500", + "flags_observation": 0 + }, + { + "module": "Fast Accel", + "descriptor": "0x2f27f8", + "address": "0x2f2810", + "flags_observation": 0 + }, + { + "module": "Instant Stop", + "descriptor": "0x2f2a80", + "address": "0x2f2a98", + "flags_observation": 0 + }, + { + "module": "No Slow", + "descriptor": "0x2f2c90", + "address": "0x2f2ca8", + "flags_observation": 0 + }, + { + "module": "Item Use Fix", + "descriptor": "0x2f2f48", + "address": "0x2f2f60", + "flags_observation": 0 + }, + { + "module": "Timer Range", + "descriptor": "0x2f3160", + "address": "0x2f3178", + "flags_observation": 0 + }, + { + "module": "Auto Rod", + "descriptor": "0x2f3520", + "address": "0x2f3538", + "flags_observation": 6 + }, + { + "module": "Anti Debuff", + "descriptor": "0x2f3860", + "address": "0x2f3878", + "flags_observation": 0 + }, + { + "module": "Piercing", + "descriptor": "0x2f3ab0", + "address": "0x2f3ac8", + "flags_observation": 0 + }, + { + "module": "Trajectories", + "descriptor": "0x2f3df0", + "address": "0x2f3e08", + "flags_observation": 0 + }, + { + "module": "Knockback Delay", + "descriptor": "0x2f40f8", + "address": "0x2f4110", + "flags_observation": 0 + }, + { + "module": "Debug", + "descriptor": "0x2f4430", + "address": "0x2f4448", + "flags_observation": 4 + }, + { + "module": "Null Move", + "descriptor": "0x2f46a0", + "address": "0x2f46b8", + "flags_observation": 0 + }, + { + "module": "Ghost Hand", + "descriptor": "0x2f48b0", + "address": "0x2f48c8", + "flags_observation": 0 + }, + { + "module": "Inv Manager", + "descriptor": "0x2f4c40", + "address": "0x2f4c58", + "flags_observation": 0 + }, + { + "module": "Clutch", + "descriptor": "0x2f5580", + "address": "0x2f5598", + "flags_observation": 0 + }, + { + "module": "Auto Weapon", + "descriptor": "0x2f5af8", + "address": "0x2f5b10", + "flags_observation": 0 + }, + { + "module": "Knockback Displace", + "descriptor": "0x2f5d60", + "address": "0x2f5d78", + "flags_observation": 0 + }, + { + "module": "Block In", + "descriptor": "0x2f6108", + "address": "0x2f6120", + "flags_observation": 6 + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/StatusMetadata.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/StatusMetadata.json new file mode 100644 index 0000000..096e5fd --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/StatusMetadata.json @@ -0,0 +1,815 @@ +[ + { + "module": "Aim Assist", + "callback": "0x2bf00", + "formats": [ + { + "rva": "0x15031e", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "2bf00 push rbp", + "2bf01 sub rsp, 0x20", + "2bf05 lea rbp, [rsp + 0x20]", + "2bf0a mov eax, dword ptr [rip + 0x2bd110]", + "2bf10 lea rdx, [rip + 0x2bd0b9]", + "2bf17 mov r9, qword ptr [rdx + rax*8]", + "2bf1b lea r8, [rip + 0x1243fc]", + "2bf22 mov edx, 0x20", + "2bf27 call 0xab710", + "2bf2c nop ", + "2bf2d add rsp, 0x20", + "2bf31 pop rbp", + "2bf32 ret " + ], + "choice": "mode", + "label_table": "0x2e8fd0", + "labels": [ + "Regular", + "Linear", + "Lock-on", + "Silent" + ] + }, + { + "module": "Auto Clicker", + "callback": "0x2d370", + "formats": [ + { + "rva": "0x15059a", + "value": "%s" + } + ], + "settings": [ + "pattern" + ], + "multipliers": [], + "instructions": [ + "2d370 push rbp", + "2d371 sub rsp, 0x20", + "2d375 lea rbp, [rsp + 0x20]", + "2d37a mov eax, dword ptr [rip + 0x2bc300]", + "2d380 lea rdx, [rip + 0x2bc2b9]", + "2d387 mov r9, qword ptr [rdx + rax*8]", + "2d38b lea r8, [rip + 0x123208]", + "2d392 mov edx, 0x20", + "2d397 call 0xab710", + "2d39c nop ", + "2d39d add rsp, 0x20", + "2d3a1 pop rbp", + "2d3a2 ret " + ], + "choice": "pattern", + "label_table": "0x2e9640", + "labels": [ + "Jitter", + "Butterfly" + ] + }, + { + "module": "Player ESP", + "callback": "0x2f9f0", + "formats": [ + { + "rva": "0x150c8e", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "2f9f0 push rbp", + "2f9f1 sub rsp, 0x20", + "2f9f5 lea rbp, [rsp + 0x20]", + "2f9fa mov eax, dword ptr [rip + 0x2ba710]", + "2fa00 lea rdx, [rip + 0x2ba6c9]", + "2fa07 mov r9, qword ptr [rdx + rax*8]", + "2fa0b lea r8, [rip + 0x12127c]", + "2fa12 mov edx, 0x20", + "2fa17 call 0xab710", + "2fa1c nop ", + "2fa1d add rsp, 0x20", + "2fa21 pop rbp", + "2fa22 ret " + ], + "choice": "mode", + "label_table": "0x2ea0d0", + "labels": [ + "2D", + "3D" + ] + }, + { + "module": "Fast Place", + "callback": "0x2ff70", + "formats": [ + { + "rva": "0x150d7b", + "value": "%.1f" + } + ], + "settings": [ + "max_cps" + ], + "multipliers": [], + "instructions": [ + "2ff70 push rbp", + "2ff71 sub rsp, 0x20", + "2ff75 lea rbp, [rsp + 0x20]", + "2ff7a movss xmm0, dword ptr [rip + 0x2ba58e]", + "2ff82 cvtss2sd xmm3, xmm0", + "2ff86 lea r8, [rip + 0x120dee]", + "2ff8d mov edx, 0x20", + "2ff92 movq r9, xmm3", + "2ff97 call 0xab710", + "2ff9c nop ", + "2ff9d add rsp, 0x20", + "2ffa1 pop rbp", + "2ffa2 ret " + ] + }, + { + "module": "Reach", + "callback": "0x30140", + "formats": [ + { + "rva": "0x150e1b", + "value": "%.2f" + } + ], + "settings": [ + "distance" + ], + "multipliers": [], + "instructions": [ + "30140 push rbp", + "30141 sub rsp, 0x20", + "30145 lea rbp, [rsp + 0x20]", + "3014a movss xmm0, dword ptr [rip + 0x2ba63e]", + "30152 cvtss2sd xmm3, xmm0", + "30156 lea r8, [rip + 0x120cbe]", + "3015d mov edx, 0x20", + "30162 movq r9, xmm3", + "30167 call 0xab710", + "3016c nop ", + "3016d add rsp, 0x20", + "30171 pop rbp", + "30172 ret " + ] + }, + { + "module": "Velocity", + "callback": "0x30be0", + "formats": [ + { + "rva": "0x1510c5", + "value": "%s" + }, + { + "rva": "0x150f6c", + "value": "%.0f%%" + } + ], + "settings": [ + "mode", + "reduce_amount" + ], + "multipliers": [ + { + "rva": "0x150ea0", + "bits": "0x42c80000" + } + ], + "instructions": [ + "30be0 push rbp", + "30be1 sub rsp, 0x20", + "30be5 lea rbp, [rsp + 0x20]", + "30bea mov eax, dword ptr [rip + 0x2b9e60]", + "30bf0 test rax, rax", + "30bf3 je 0x30c13", + "30bf5 lea rdx, [rip + 0x2b9e04]", + "30bfc mov r9, qword ptr [rdx + rax*8]", + "30c00 lea r8, [rip + 0x1204be]", + "30c07 mov edx, 0x20", + "30c0c call 0xab710", + "30c11 jmp 0x30c3d", + "30c13 movss xmm0, dword ptr [rip + 0x2ba01d]", + "30c1b mulss xmm0, dword ptr [rip + 0x12027d]", + "30c23 cvtss2sd xmm3, xmm0", + "30c27 lea r8, [rip + 0x12033e]", + "30c2e mov edx, 0x20", + "30c33 movq r9, xmm3", + "30c38 call 0xab710", + "30c3d nop ", + "30c3e add rsp, 0x20", + "30c42 pop rbp", + "30c43 ret " + ], + "choice": "mode", + "label_table": "0x2eaa00", + "labels": [ + "Regular", + "Jump", + "Reduce", + "Ignore" + ] + }, + { + "module": "Timer", + "callback": "0x32af0", + "formats": [ + { + "rva": "0x151708", + "value": "%.2fx" + } + ], + "settings": [ + "speed" + ], + "multipliers": [], + "instructions": [ + "32af0 push rbp", + "32af1 sub rsp, 0x20", + "32af5 lea rbp, [rsp + 0x20]", + "32afa movss xmm0, dword ptr [rip + 0x2b914e]", + "32b02 cvtss2sd xmm3, xmm0", + "32b06 lea r8, [rip + 0x11ebfb]", + "32b0d mov edx, 0x20", + "32b12 movq r9, xmm3", + "32b17 call 0xab710", + "32b1c nop ", + "32b1d add rsp, 0x20", + "32b21 pop rbp", + "32b22 ret " + ] + }, + { + "module": "Fake Lag", + "callback": "0x32ed0", + "formats": [ + { + "rva": "0x151800", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "32ed0 push rbp", + "32ed1 sub rsp, 0x20", + "32ed5 lea rbp, [rsp + 0x20]", + "32eda mov eax, dword ptr [rip + 0x2b90c0]", + "32ee0 lea rdx, [rip + 0x2b9079]", + "32ee7 mov r9, qword ptr [rdx + rax*8]", + "32eeb lea r8, [rip + 0x11e90e]", + "32ef2 mov edx, 0x20", + "32ef7 call 0xab710", + "32efc nop ", + "32efd add rsp, 0x20", + "32f01 pop rbp", + "32f02 ret " + ], + "choice": "mode", + "label_table": "0x2ebf60", + "labels": [ + "Static", + "Pulse" + ] + }, + { + "module": "Criticals", + "callback": "0x33480", + "formats": [ + { + "rva": "0x151921", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "33480 push rbp", + "33481 sub rsp, 0x20", + "33485 lea rbp, [rsp + 0x20]", + "3348a mov eax, dword ptr [rip + 0x2b8e80]", + "33490 lea rdx, [rip + 0x2b8e39]", + "33497 mov r9, qword ptr [rdx + rax*8]", + "3349b lea r8, [rip + 0x11e47f]", + "334a2 mov edx, 0x20", + "334a7 call 0xab710", + "334ac nop ", + "334ad add rsp, 0x20", + "334b1 pop rbp", + "334b2 ret " + ], + "choice": "mode", + "label_table": "0x2ec2d0", + "labels": [ + "Packet", + "Timer" + ] + }, + { + "module": "No Item Release", + "callback": "0x33620", + "formats": [ + { + "rva": "0x151978", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "33620 push rbp", + "33621 sub rsp, 0x20", + "33625 lea rbp, [rsp + 0x20]", + "3362a mov eax, dword ptr [rip + 0x2b8fb8]", + "33630 lea rdx, [rip + 0x2b8f69]", + "33637 mov r9, qword ptr [rdx + rax*8]", + "3363b lea r8, [rip + 0x11e336]", + "33642 mov edx, 0x20", + "33647 call 0xab710", + "3364c nop ", + "3364d add rsp, 0x20", + "33651 pop rbp", + "33652 ret " + ], + "choice": "mode", + "label_table": "0x2ec5a0", + "labels": [ + "Sword", + "Consumable", + "All" + ] + }, + { + "module": "Blink", + "callback": "0x33950", + "formats": [ + { + "rva": "0x151a58", + "value": "%s" + } + ], + "settings": [ + "direction" + ], + "multipliers": [], + "instructions": [ + "33950 push rbp", + "33951 sub rsp, 0x20", + "33955 lea rbp, [rsp + 0x20]", + "3395a mov eax, dword ptr [rip + 0x2b8f58]", + "33960 lea rdx, [rip + 0x2b8f09]", + "33967 mov r9, qword ptr [rdx + rax*8]", + "3396b lea r8, [rip + 0x11e0e6]", + "33972 mov edx, 0x20", + "33977 call 0xab710", + "3397c nop ", + "3397d add rsp, 0x20", + "33981 pop rbp", + "33982 ret " + ], + "choice": "direction", + "label_table": "0x2ec870", + "labels": [ + "In", + "Out", + "Both" + ] + }, + { + "module": "Hitboxes", + "callback": "0x34040", + "formats": [ + { + "rva": "0x151c03", + "value": "%.2f" + } + ], + "settings": [ + "expand" + ], + "multipliers": [], + "instructions": [ + "34040 push rbp", + "34041 sub rsp, 0x20", + "34045 lea rbp, [rsp + 0x20]", + "3404a movss xmm0, dword ptr [rip + 0x2b8e96]", + "34052 cvtss2sd xmm3, xmm0", + "34056 lea r8, [rip + 0x11dba6]", + "3405d mov edx, 0x20", + "34062 movq r9, xmm3", + "34067 call 0xab710", + "3406c nop ", + "3406d add rsp, 0x20", + "34071 pop rbp", + "34072 ret " + ] + }, + { + "module": "Backtrack", + "callback": "0x36990", + "formats": [ + { + "rva": "0x15239a", + "value": "%.0fms" + } + ], + "settings": [ + "delay" + ], + "multipliers": [], + "instructions": [ + "36990 push rbp", + "36991 sub rsp, 0x20", + "36995 lea rbp, [rsp + 0x20]", + "3699a movss xmm0, dword ptr [rip + 0x2b748e]", + "369a2 cvtss2sd xmm3, xmm0", + "369a6 lea r8, [rip + 0x11b9ed]", + "369ad mov edx, 0x20", + "369b2 movq r9, xmm3", + "369b7 call 0xab710", + "369bc nop ", + "369bd add rsp, 0x20", + "369c1 pop rbp", + "369c2 ret " + ] + }, + { + "module": "Hit Select", + "callback": "0x37e10", + "formats": [ + { + "rva": "0x1528f0", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "37e10 push rbp", + "37e11 sub rsp, 0x20", + "37e15 lea rbp, [rsp + 0x20]", + "37e1a mov eax, dword ptr [rip + 0x2b6a80]", + "37e20 lea rdx, [rip + 0x2b6a39]", + "37e27 mov r9, qword ptr [rdx + rax*8]", + "37e2b lea r8, [rip + 0x11aabe]", + "37e32 mov edx, 0x20", + "37e37 call 0xab710", + "37e3c nop ", + "37e3d add rsp, 0x20", + "37e41 pop rbp", + "37e42 ret " + ], + "choice": "mode", + "label_table": "0x2ee860", + "labels": [ + "Burst", + "Criticals" + ] + }, + { + "module": "Inv Walk", + "callback": "0x39fb0", + "formats": [ + { + "rva": "0x152e17", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "39fb0 push rbp", + "39fb1 sub rsp, 0x20", + "39fb5 lea rbp, [rsp + 0x20]", + "39fba mov eax, dword ptr [rip + 0x2b5660]", + "39fc0 lea rdx, [rip + 0x2b5619]", + "39fc7 mov r9, qword ptr [rdx + rax*8]", + "39fcb lea r8, [rip + 0x118e45]", + "39fd2 mov edx, 0x20", + "39fd7 call 0xab710", + "39fdc nop ", + "39fdd add rsp, 0x20", + "39fe1 pop rbp", + "39fe2 ret " + ], + "choice": "mode", + "label_table": "0x2ef5e0", + "labels": [ + "Vanilla", + "Spoof" + ] + }, + { + "module": "Keep Sprint", + "callback": "0x3a380", + "formats": [ + { + "rva": "0x152e63", + "value": "%.0f%%" + } + ], + "settings": [ + "motion_mult" + ], + "multipliers": [ + { + "rva": "0x152e1c", + "bits": "0x42c80000" + } + ], + "instructions": [ + "3a380 push rbp", + "3a381 sub rsp, 0x20", + "3a385 lea rbp, [rsp + 0x20]", + "3a38a movss xmm0, dword ptr [rip + 0x2b55e6]", + "3a392 mulss xmm0, dword ptr [rip + 0x118a82]", + "3a39a cvtss2sd xmm3, xmm0", + "3a39e lea r8, [rip + 0x118abe]", + "3a3a5 mov edx, 0x20", + "3a3aa movq r9, xmm3", + "3a3af call 0xab710", + "3a3b4 nop ", + "3a3b5 add rsp, 0x20", + "3a3b9 pop rbp", + "3a3ba ret " + ] + }, + { + "module": "Lag Range", + "callback": "0x3acd0", + "formats": [ + { + "rva": "0x153053", + "value": "%.0fms" + } + ], + "settings": [ + "delay" + ], + "multipliers": [], + "instructions": [ + "3acd0 push rbp", + "3acd1 sub rsp, 0x20", + "3acd5 lea rbp, [rsp + 0x20]", + "3acda movss xmm0, dword ptr [rip + 0x2b4f96]", + "3ace2 cvtss2sd xmm3, xmm0", + "3ace6 lea r8, [rip + 0x118366]", + "3aced mov edx, 0x20", + "3acf2 movq r9, xmm3", + "3acf7 call 0xab710", + "3acfc nop ", + "3acfd add rsp, 0x20", + "3ad01 pop rbp", + "3ad02 ret " + ] + }, + { + "module": "Sprint Reset", + "callback": "0x3b110", + "formats": [ + { + "rva": "0x15316f", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "3b110 push rbp", + "3b111 sub rsp, 0x20", + "3b115 lea rbp, [rsp + 0x20]", + "3b11a mov eax, dword ptr [rip + 0x2b4e38]", + "3b120 lea rdx, [rip + 0x2b4de9]", + "3b127 mov r9, qword ptr [rdx + rax*8]", + "3b12b lea r8, [rip + 0x11803d]", + "3b132 mov edx, 0x20", + "3b137 call 0xab710", + "3b13c nop ", + "3b13d add rsp, 0x20", + "3b141 pop rbp", + "3b142 ret " + ], + "choice": "mode", + "label_table": "0x2eff10", + "labels": [ + "WTap", + "Sneak", + "NoStop" + ] + }, + { + "module": "Pointers", + "callback": "0x3e530", + "formats": [ + { + "rva": "0x153ea4", + "value": "%s" + } + ], + "settings": [ + "style" + ], + "multipliers": [], + "instructions": [ + "3e530 push rbp", + "3e531 sub rsp, 0x20", + "3e535 lea rbp, [rsp + 0x20]", + "3e53a mov eax, dword ptr [rip + 0x2b24d0]", + "3e540 lea rdx, [rip + 0x2b2489]", + "3e547 mov r9, qword ptr [rdx + rax*8]", + "3e54b lea r8, [rip + 0x115952]", + "3e552 mov edx, 0x20", + "3e557 call 0xab710", + "3e55c nop ", + "3e55d add rsp, 0x20", + "3e561 pop rbp", + "3e562 ret " + ], + "choice": "style", + "label_table": "0x2f09d0", + "labels": [ + "2D", + "3D" + ] + }, + { + "module": "No Hit Delay", + "callback": "0x3e690", + "formats": [ + { + "rva": "0x153eed", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "3e690 push rbp", + "3e691 sub rsp, 0x20", + "3e695 lea rbp, [rsp + 0x20]", + "3e69a mov eax, dword ptr [rip + 0x2b2720]", + "3e6a0 lea rdx, [rip + 0x2b26d9]", + "3e6a7 mov r9, qword ptr [rdx + rax*8]", + "3e6ab lea r8, [rip + 0x11583b]", + "3e6b2 mov edx, 0x20", + "3e6b7 call 0xab710", + "3e6bc nop ", + "3e6bd add rsp, 0x20", + "3e6c1 pop rbp", + "3e6c2 ret " + ], + "choice": "mode", + "label_table": "0x2f0d80", + "labels": [ + "Regular", + "Legit" + ] + }, + { + "module": "Fast Mine", + "callback": "0x41ce0", + "formats": [ + { + "rva": "0x1544a6", + "value": "%.2fx" + } + ], + "settings": [ + "speed" + ], + "multipliers": [], + "instructions": [ + "41ce0 push rbp", + "41ce1 sub rsp, 0x20", + "41ce5 lea rbp, [rsp + 0x20]", + "41cea movss xmm0, dword ptr [rip + 0x2b0336]", + "41cf2 cvtss2sd xmm3, xmm0", + "41cf6 lea r8, [rip + 0x1127a9]", + "41cfd mov edx, 0x20", + "41d02 movq r9, xmm3", + "41d07 call 0xab710", + "41d0c nop ", + "41d0d add rsp, 0x20", + "41d11 pop rbp", + "41d12 ret " + ] + }, + { + "module": "Timer Range", + "callback": "0x43bb0", + "formats": [ + { + "rva": "0x154a93", + "value": "%s" + } + ], + "settings": [ + "mode" + ], + "multipliers": [], + "instructions": [ + "43bb0 push rbp", + "43bb1 sub rsp, 0x20", + "43bb5 lea rbp, [rsp + 0x20]", + "43bba mov eax, dword ptr [rip + 0x2af850]", + "43bc0 lea rdx, [rip + 0x2af809]", + "43bc7 mov r9, qword ptr [rdx + rax*8]", + "43bcb lea r8, [rip + 0x110ec1]", + "43bd2 mov edx, 0x20", + "43bd7 call 0xab710", + "43bdc nop ", + "43bdd add rsp, 0x20", + "43be1 pop rbp", + "43be2 ret " + ], + "choice": "mode", + "label_table": "0x2f33d0", + "labels": [ + "Regular", + "Legit" + ] + }, + { + "module": "Knockback Delay", + "callback": "0x466a0", + "formats": [ + { + "rva": "0x1550fc", + "value": "%.0fms" + } + ], + "settings": [ + "max_delay" + ], + "multipliers": [], + "instructions": [ + "466a0 push rbp", + "466a1 sub rsp, 0x20", + "466a5 lea rbp, [rsp + 0x20]", + "466aa movss xmm0, dword ptr [rip + 0x2adc86]", + "466b2 cvtss2sd xmm3, xmm0", + "466b6 lea r8, [rip + 0x10ea3f]", + "466bd mov edx, 0x20", + "466c2 movq r9, xmm3", + "466c7 call 0xab710", + "466cc nop ", + "466cd add rsp, 0x20", + "466d1 pop rbp", + "466d2 ret " + ] + }, + { + "module": "Knockback Displace", + "callback": "0x4ab00", + "formats": [ + { + "rva": "0x1567a7", + "value": "%.0f\u00b0" + } + ], + "settings": [ + "angle" + ], + "multipliers": [], + "instructions": [ + "4ab00 push rbp", + "4ab01 sub rsp, 0x20", + "4ab05 lea rbp, [rsp + 0x20]", + "4ab0a movss xmm0, dword ptr [rip + 0x2ab4c6]", + "4ab12 cvtss2sd xmm3, xmm0", + "4ab16 lea r8, [rip + 0x10bc8a]", + "4ab1d mov edx, 0x20", + "4ab22 movq r9, xmm3", + "4ab27 call 0xab710", + "4ab2c nop ", + "4ab2d add rsp, 0x20", + "4ab31 pop rbp", + "4ab32 ret " + ] + } +] \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/WidgetMetadata.json b/SlinkyClient/src/main/resources/assets/slinkysemantic/WidgetMetadata.json new file mode 100644 index 0000000..28f3172 --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/WidgetMetadata.json @@ -0,0 +1,2020 @@ +{ + "Aim Assist": { + "mode": { + "setting_rva": "0x2e8ff0", + "label": "Mode", + "flag": 0 + }, + "hor_speed": { + "setting_rva": "0x2e8f20", + "label": "Horizontal speed", + "format": "%.1f" + }, + "ver_speed": { + "setting_rva": "0x2e8f58", + "label": "Vertical speed", + "format": "%.1f" + }, + "lock_on_vertical": { + "setting_rva": "0x2e8f90", + "label": "Vertical" + }, + "silent_move_correct": { + "setting_rva": "0x2e9050", + "label": "Keep move direction" + }, + "silent_ignore_manual_aim": { + "setting_rva": "0x2e9030", + "label": "Ignore manual aim" + }, + "predict": { + "setting_rva": "0x2e9190", + "label": "Predict", + "format": "%.0f%%" + }, + "aim_randomization": { + "setting_rva": "0x2e9238", + "label": "Randomization", + "format": "%.0f%%" + }, + "hor_hitbox_correct": { + "setting_rva": "0x2e91c8", + "label": "Horizontal", + "format": "%.0f%%" + }, + "ver_hitbox_correct": { + "setting_rva": "0x2e9200", + "label": "Vertical", + "format": "%.0f%%" + }, + "mode_target": { + "setting_rva": "0x2e9150", + "label": "Mode", + "flag": 0 + }, + "sort_by": { + "setting_rva": "0x2e92f0", + "label": "Sort by", + "flag": 0 + }, + "allow_exceed_fov": { + "setting_rva": "0x2e9290", + "label": "Increased FOV while locked" + }, + "range": { + "setting_rva": "0x2e9070", + "label": "Range", + "format": "%0.1f blocks", + "pair_format": "%0.1f - %0.1f blocks" + }, + "fov": { + "setting_rva": "0x2e8ed0", + "label": "FOV", + "format": "%0.0f\u00b0", + "pair_format": "%0.0f - %0.0f\u00b0" + }, + "require_sprint": { + "setting_rva": "0x2e90c0", + "label": "Sprinting" + }, + "require_mouse_pressed": { + "setting_rva": "0x2e90e0", + "label": "Mouse pressed" + }, + "require_mouse_moved": { + "setting_rva": "0x2e8fb0", + "label": "Mouse moved" + }, + "disable_on_block_break": { + "setting_rva": "0x2e9100", + "label": "Disable while breaking blocks" + }, + "require_weapon": { + "setting_rva": "0x2e9120", + "label": "Holding weapon" + }, + "ignore_invis": { + "setting_rva": "0x2e9270", + "label": "Ignore invisibles" + }, + "require_line_of_sight": { + "setting_rva": "0x2e92b0", + "label": "Not behind blocks" + } + }, + "Auto Clicker": { + "pattern": { + "setting_rva": "0x2e9650", + "label": "Click pattern", + "flag": 0 + }, + "target_cps": { + "setting_rva": "0x2e95e8", + "label": "Target CPS", + "format": "%0.1f CPS" + }, + "randomize_cps": { + "setting_rva": "0x2e9620", + "label": "Randomize" + }, + "exhaust": { + "setting_rva": "0x2e9690", + "label": "Simulate exhaust" + }, + "allow_block_break": { + "setting_rva": "0x2e9588", + "label": "Allow breaking blocks" + }, + "allow_inventory": { + "setting_rva": "0x2e9548", + "label": "Click in inventory" + }, + "inventory_randomize": { + "setting_rva": "0x2e9568", + "label": "Randomize speed" + }, + "require_weapon": { + "setting_rva": "0x2e95a8", + "label": "Holding weapon" + }, + "require_not_using_item": { + "setting_rva": "0x2e95c8", + "label": "Not using item" + } + }, + "Auto Soup": { + "single_soup_max_hp": { + "setting_rva": "0x2e98c0", + "label": "Single use", + "format": "%.1f\u2665" + }, + "double_soup_max_hp": { + "setting_rva": "0x2e9930", + "label": "Double use", + "format": "%.1f\u2665" + }, + "randomization": { + "setting_rva": "0x2e99d8", + "label": "Randomization", + "format": "%.0f%%" + }, + "delay_before": { + "setting_rva": "0x2e98f8", + "label": "Before switching slots", + "format": "%.0f ms" + }, + "delay_between": { + "setting_rva": "0x2e9968", + "label": "Between actions", + "format": "%.0f ms" + }, + "delay_after": { + "setting_rva": "0x2e99a0", + "label": "Cooldown", + "format": "%.0f ms" + }, + "drop_bowls": { + "setting_rva": "0x2e9a30", + "label": "Drop bowls" + }, + "override_item": { + "setting_rva": "0x2e9a10", + "label": "Override item type" + }, + "allowed_items": { + "setting_rva": "0x2e9a50", + "label": "Items", + "title": "Search item", + "suggestions_endpoint_present": true + } + }, + "Bridge Assist": { + "edge_offset": { + "setting_rva": "0x2e9dc8", + "label": "Edge offset", + "format": "%.2f blocks" + }, + "unsneak_delay": { + "setting_rva": "0x2e9e40", + "label": "Unsneak delay", + "format": "%.0f ms" + }, + "select_blocks": { + "setting_rva": "0x2e9d48", + "label": "Select blocks", + "flag": 0 + }, + "randomize": { + "setting_rva": "0x2e9e00", + "label": "Randomize" + }, + "sneak_on_jump": { + "setting_rva": "0x2e9da8", + "label": "Sneak on jump" + }, + "avoid_double_sneak": { + "setting_rva": "0x2e9e20", + "label": "Avoid double-sneaking" + }, + "require_sneak": { + "setting_rva": "0x2e9cd0", + "label": "Sneak key pressed" + }, + "require_holding_blocks": { + "setting_rva": "0x2e9d88", + "label": "Holding blocks" + }, + "require_looking_down": { + "setting_rva": "0x2e9cf0", + "label": "Looking down" + }, + "require_not_forward": { + "setting_rva": "0x2e9d10", + "label": "Not moving forward" + } + }, + "Player ESP": { + "mode": { + "setting_rva": "0x2ea0e0", + "label": "Style", + "flag": 0 + }, + "range": { + "setting_rva": "0x2ea1a0", + "label": "Range", + "format": "%0.0f blocks" + }, + "hide_friendlies": { + "setting_rva": "0x2ea238", + "label": "Hide friendlies" + }, + "color_mode": { + "setting_rva": "0x2ea290", + "label": "Colors", + "flag": 0 + }, + "color_enemies": { + "setting_rva": "0x2ea218", + "label": "Enemy color" + }, + "color_friendlies": { + "setting_rva": "0x2ea1f8", + "label": "Friendly color" + }, + "override_target_color": { + "setting_rva": "0x2ea258", + "label": "Override target color" + }, + "color_target": { + "setting_rva": "0x2ea1d8", + "label": "Target color" + }, + "line_width": { + "setting_rva": "0x2ea090", + "label": "Line width", + "format": "%0.0f px" + }, + "hurt_effect": { + "setting_rva": "0x2ea140", + "label": "Hurt effect" + }, + "filled": { + "setting_rva": "0x2ea160", + "label": "Filled" + }, + "show_2d_box": { + "setting_rva": "0x2ea120", + "label": "Show box" + }, + "show_health_bar": { + "setting_rva": "0x2ea180", + "label": "Show health bar" + } + }, + "Fast Place": { + "max_cps": { + "setting_rva": "0x2ea4e0", + "label": "Maximum CPS", + "format": "%0.1f CPS" + }, + "activate_delay": { + "setting_rva": "0x2ea518", + "label": "Activate delay", + "format": "%0.0f ms" + } + }, + "Reach": { + "distance": { + "setting_rva": "0x2ea760", + "label": "Distance", + "format": "%0.2f blocks" + }, + "activate_time": { + "setting_rva": "0x2ea798", + "label": "Activate for", + "format": "%.0f tick(s)" + }, + "require_sprint": { + "setting_rva": "0x2ea7d0", + "label": "Sprinting" + } + }, + "Velocity": { + "mode": { + "setting_rva": "0x2eaa20", + "label": "Mode", + "flag": 0 + }, + "reduce_chance": { + "setting_rva": "0x2eab98", + "label": "Chance", + "format": "%.0f%%" + }, + "fov": { + "setting_rva": "0x2eac40", + "label": "FOV", + "format": "%.0f\u00b0" + }, + "reduce_amount": { + "setting_rva": "0x2eac08", + "label": "Reduce to", + "format": "%.0f%%" + }, + "reduce_delay": { + "setting_rva": "0x2eabd0", + "label": "Reduce delay", + "format": "%.0f tick(s)" + }, + "jump_chance": { + "setting_rva": "0x2eac78", + "label": "Chance", + "format": "%.0f%%" + }, + "reduce_multiple_per_tick": { + "setting_rva": "0x2eab78", + "label": "Allow for double-clicks" + }, + "ignore_vertical": { + "setting_rva": "0x2eab38", + "label": "Ignore vertical", + "flag": 0 + }, + "ignore_chance": { + "setting_rva": "0x2eaa60", + "label": "Chance", + "format": "%.0f%%" + }, + "require_target": { + "setting_rva": "0x2eaaf8", + "label": "Looking at player" + }, + "require_mouse": { + "setting_rva": "0x2eaab8", + "label": "Mouse pressed" + }, + "require_forward": { + "setting_rva": "0x2eaa98", + "label": "Moving forward" + }, + "require_weapon": { + "setting_rva": "0x2eaad8", + "label": "Holding weapon" + }, + "require_sprinting_jump": { + "setting_rva": "0x2eacb0", + "label": "Sprinting" + } + }, + "Anti Bot": { + "invalid_uuid": { + "setting_rva": "0x2eaf58", + "label": "Invalid UUID", + "flag": 0 + }, + "invalid_username": { + "setting_rva": "0x2eafd8", + "label": "Invalid username" + }, + "always_invis": { + "setting_rva": "0x2eafb8", + "label": "Always invisible" + }, + "always_stationary": { + "setting_rva": "0x2eaf18", + "label": "Always stationary" + }, + "sleeping": { + "setting_rva": "0x2eaf98", + "label": "Sleeping" + }, + "min_age": { + "setting_rva": "0x2eaee0", + "label": "Minimum entity age", + "format": "%.0f s" + } + }, + "Auto Block": { + "range": { + "setting_rva": "0x2eb388", + "label": "Range", + "format": "%.1f blocks" + }, + "max_hurt_time": { + "setting_rva": "0x2eb2b0", + "label": "Maximum hurt time", + "format": "%.0f ms" + }, + "max_hold_time": { + "setting_rva": "0x2eb208", + "label": "Maximum hold duration", + "format": "%.0f ms" + }, + "fake_block_animation": { + "setting_rva": "0x2eb348", + "label": "Enabled" + }, + "fake_block_animation_require_target": { + "setting_rva": "0x2eb368", + "label": "Only within range" + }, + "lag_chance": { + "setting_rva": "0x2eb240", + "label": "Chance", + "format": "%.0f %%" + }, + "lag_duration": { + "setting_rva": "0x2eb278", + "label": "Maximum duration", + "format": "%.0f ms" + }, + "lag_flush_attack": { + "setting_rva": "0x2eb3c0", + "label": "Prevent delaying attacks" + }, + "lag_reblock": { + "setting_rva": "0x2eb3e0", + "label": "Block again immediately" + }, + "require_left_mouse_pressed": { + "setting_rva": "0x2eb2e8", + "label": "Left mouse pressed" + }, + "require_right_mouse_pressed": { + "setting_rva": "0x2eb308", + "label": "Right mouse pressed" + }, + "require_damage": { + "setting_rva": "0x2eb328", + "label": "Damaged" + } + }, + "Teams": { + "match_self_color": { + "setting_rva": "0x2eb610", + "label": "Match own nametag" + }, + "team_colors": { + "setting_rva": "0x2eb630", + "label": "Colors", + "title": "Search color", + "suggestions_endpoint_present": true + } + }, + "GUI": { + "scale": { + "setting_rva": "0x2eb970", + "label": "Scale", + "flag": 0 + }, + "accent_color": { + "setting_rva": "0x2eb720", + "label": "Accent color" + }, + "allow_input": { + "setting_rva": "0x2eb9b0", + "label": "Allow input while open" + }, + "compact": { + "setting_rva": "0x2eb9d0", + "label": "Compact" + }, + "wide": { + "setting_rva": "0x2eb9f0", + "label": "Wide" + } + }, + "Timer": { + "speed": { + "setting_rva": "0x2ebc20", + "label": "Speed", + "format": "%0.2fx" + }, + "require_mouse": { + "setting_rva": "0x2ebc58", + "label": "Mouse pressed" + }, + "require_damage": { + "setting_rva": "0x2ebc98", + "label": "Damage" + }, + "require_falling": { + "setting_rva": "0x2ebc78", + "label": "Falling" + } + }, + "Fake Lag": { + "mode": { + "setting_rva": "0x2ebf70", + "label": "Mode", + "flag": 0 + }, + "inbound": { + "setting_rva": "0x2ebed0", + "label": "Inbound", + "format": "%.0f ms" + }, + "outbound": { + "setting_rva": "0x2ebf08", + "label": "Outbound", + "format": "%.0f ms" + }, + "realtime_damage": { + "setting_rva": "0x2ebf40", + "label": "Realtime damage" + }, + "require_weapon": { + "setting_rva": "0x2ebfd0", + "label": "Holding weapon" + }, + "require_attack": { + "setting_rva": "0x2ebff0", + "label": "Attacked" + }, + "require_ingame": { + "setting_rva": "0x2ebfb0", + "label": "In-game" + } + }, + "Criticals": { + "mode": { + "setting_rva": "0x2ec2e0", + "label": "Mode", + "flag": 0 + }, + "chance": { + "setting_rva": "0x2ec258", + "label": "Chance", + "format": "%.0f%%" + }, + "max_delay": { + "setting_rva": "0x2ec220", + "label": "Maximum delay", + "format": "%.0f ms" + }, + "timer_speed": { + "setting_rva": "0x2ec320", + "label": "Timer speed", + "format": "%.2fx" + }, + "boost": { + "setting_rva": "0x2ec358", + "label": "Boost", + "format": "%.0f ms" + }, + "require_weapon": { + "setting_rva": "0x2ec2b0", + "label": "Holding weapon" + }, + "require_mouse_pressed": { + "setting_rva": "0x2ec290", + "label": "Mouse pressed" + } + }, + "No Item Release": { + "mode": { + "setting_rva": "0x2ec5b8", + "label": "Mode", + "flag": 0 + } + }, + "Blink": { + "direction": { + "setting_rva": "0x2ec888", + "label": "Direction", + "flag": 0 + }, + "max_duration": { + "setting_rva": "0x2ec830", + "label": "Maximum duration", + "format": "%.2f s" + }, + "disable_on_attack": { + "setting_rva": "0x2ec810", + "label": "Attack" + }, + "disable_on_block_interact": { + "setting_rva": "0x2ec8c8", + "label": "Block dig" + }, + "disable_on_block_dig": { + "setting_rva": "0x2ec8e8", + "label": "Block interact" + } + }, + "Chest ESP": { + "range": { + "setting_rva": "0x2ecb18", + "label": "Range", + "format": "%0.0f blocks" + }, + "render_chest": { + "setting_rva": "0x2ecb50", + "label": "Regular chests" + }, + "render_ender_chest": { + "setting_rva": "0x2ecb70", + "label": "Ender chests" + }, + "render_trapped_chest": { + "setting_rva": "0x2ecb90", + "label": "Trapped chests" + }, + "render_beacon": { + "setting_rva": "0x2ecbb0", + "label": "Beacons" + }, + "line_width": { + "setting_rva": "0x2ecbd0", + "label": "Line width", + "format": "%0.0f px" + }, + "color_chest": { + "setting_rva": "0x2ecc68", + "label": "Regular chests" + }, + "color_ender_chest": { + "setting_rva": "0x2ecc08", + "label": "Ender chests" + }, + "color_trapped_chest": { + "setting_rva": "0x2ecc28", + "label": "Trapped chests" + }, + "color_beacon": { + "setting_rva": "0x2ecc48", + "label": "Beacons" + }, + "filled": { + "setting_rva": "0x2ecc88", + "label": "Filled" + } + }, + "Hitboxes": { + "expand": { + "setting_rva": "0x2eceb8", + "label": "Expand", + "format": "%0.2f blocks" + } + }, + "Mod Overlay": { + "show_combat": { + "setting_rva": "0x2ed100", + "label": "Combat" + }, + "show_move": { + "setting_rva": "0x2ed120", + "label": "Move" + }, + "show_block": { + "setting_rva": "0x2ed140", + "label": "Block" + }, + "show_visual": { + "setting_rva": "0x2ed160", + "label": "Visual" + }, + "show_utility": { + "setting_rva": "0x2ed180", + "label": "Utility" + }, + "text_size": { + "setting_rva": "0x2ed200", + "label": "Text size", + "format": "%.0f px" + }, + "padding_x": { + "setting_rva": "0x2ed2b0", + "label": "Padding X", + "format": "%.0f px" + }, + "padding_y": { + "setting_rva": "0x2ed2e8", + "label": "Padding Y", + "format": "%.0f px" + }, + "bg_rounding": { + "setting_rva": "0x2ed278", + "label": "Rounding", + "format": "%.0f px" + }, + "name_color": { + "setting_rva": "0x2ed238", + "label": "Text color" + }, + "details_color": { + "setting_rva": "0x2ed258", + "label": "Details color" + }, + "lowercase": { + "setting_rva": "0x2ed1c0", + "label": "Lowercase" + }, + "show_details": { + "setting_rva": "0x2ed1e0", + "label": "Show details" + }, + "require_bound": { + "setting_rva": "0x2ed1a0", + "label": "Only bound modules" + } + }, + "Notifications": { + "hide_ingame": { + "setting_rva": "0x2ed610", + "label": "In-game" + }, + "hide_hold_notifs": { + "setting_rva": "0x2ed550", + "label": "Hold bind is used" + }, + "hide_bind_only": { + "setting_rva": "0x2ed530", + "label": "Module is bind-only" + }, + "show_combat": { + "setting_rva": "0x2ed570", + "label": "Combat" + }, + "show_move": { + "setting_rva": "0x2ed590", + "label": "Move" + }, + "show_block": { + "setting_rva": "0x2ed5b0", + "label": "Block" + }, + "show_visual": { + "setting_rva": "0x2ed5d0", + "label": "Visual" + }, + "show_utility": { + "setting_rva": "0x2ed5f0", + "label": "Utility" + } + }, + "No Jump Delay": {}, + "Sprint": { + "while_using_item": { + "setting_rva": "0x2eda70", + "label": "Using item" + }, + "while_backwards": { + "setting_rva": "0x2eda90", + "label": "Backwards" + }, + "while_sideways": { + "setting_rva": "0x2edab0", + "label": "Sideways" + }, + "while_in_gui": { + "setting_rva": "0x2eda50", + "label": "In inventory" + } + }, + "Backtrack": { + "target_dist": { + "setting_rva": "0x2eddb0", + "label": "Target distance", + "format": "%.1f blocks", + "pair_format": "%.1f - %.1f blocks" + }, + "delay": { + "setting_rva": "0x2ede00", + "label": "Maximum delay", + "format": "%.0f ms" + }, + "max_hurt_time": { + "setting_rva": "0x2edd78", + "label": "Maximum hurt time", + "format": "%.0f ms" + }, + "cooldown": { + "setting_rva": "0x2ede38", + "label": "Cooldown", + "format": "%.1f s" + }, + "disable_on_hit": { + "setting_rva": "0x2edeb0", + "label": "Disable when hit" + }, + "render_remote_pos": { + "setting_rva": "0x2eded0", + "label": "Enabled" + }, + "indicator_color": { + "setting_rva": "0x2edd18", + "label": "Color" + }, + "indicator_line_width": { + "setting_rva": "0x2edce0", + "label": "Line width", + "format": "%0.0f px" + }, + "indicator_filled": { + "setting_rva": "0x2edd58", + "label": "Filled" + }, + "indicator_rotate": { + "setting_rva": "0x2edd38", + "label": "Apply head rotation" + }, + "require_mouse_pressed": { + "setting_rva": "0x2ede70", + "label": "Mouse pressed" + }, + "require_weapon": { + "setting_rva": "0x2ede90", + "label": "Holding weapon" + } + }, + "Free Look": { + "target_perspective": { + "setting_rva": "0x2ee118", + "label": "Switch to", + "flag": 0 + } + }, + "Auto Tool": { + "activation_time": { + "setting_rva": "0x2ee370", + "label": "Activation time", + "format": "%.0f ms" + }, + "switch_back": { + "setting_rva": "0x2ee468", + "label": "Switch back when done" + }, + "allow_using_sword": { + "setting_rva": "0x2ee3c8", + "label": "Sword" + }, + "allow_using_tools": { + "setting_rva": "0x2ee3e8", + "label": "Tool" + }, + "allow_using_fists": { + "setting_rva": "0x2ee3a8", + "label": "Fists" + }, + "allow_using_other": { + "setting_rva": "0x2ee408", + "label": "Other" + }, + "require_sneak": { + "setting_rva": "0x2ee428", + "label": "Sneaking" + }, + "restrict_allowed_blocks": { + "setting_rva": "0x2ee448", + "label": "Restrict allowed blocks" + }, + "allowed_blocks": { + "setting_rva": "0x2ee488", + "label": "Allowed blocks", + "title": "Search item", + "suggestions_endpoint_present": true + } + }, + "Hit Select": { + "mode": { + "setting_rva": "0x2ee870", + "label": "Mode", + "flag": 0 + }, + "cancel_rate": { + "setting_rva": "0x2ee7e0", + "label": "In combat", + "format": "%.0f%%" + }, + "cancel_rate_air": { + "setting_rva": "0x2ee700", + "label": "Missed swings", + "format": "%.0f%%" + }, + "pause_dur": { + "setting_rva": "0x2ee738", + "label": "Pause duration", + "format": "%.0f ms" + }, + "wait_for_damage_dur": { + "setting_rva": "0x2ee770", + "label": "Wait for first hit", + "format": "%.0f ms" + }, + "trades_delay": { + "setting_rva": "0x2ee7a8", + "label": "Hit later in trades", + "format": "%.0f ms" + }, + "use_server_time": { + "setting_rva": "0x2ee8b0", + "label": "Use server attack time" + }, + "fake_swing": { + "setting_rva": "0x2ee910", + "label": "Fake swing" + }, + "crits_allow_reduce": { + "setting_rva": "0x2ee8d0", + "label": "Disable during knockback" + }, + "require_damage": { + "setting_rva": "0x2ee8f0", + "label": "Only while damaged" + }, + "require_sprint": { + "setting_rva": "0x2ee818", + "label": "Sprinting" + }, + "require_weapon": { + "setting_rva": "0x2ee838", + "label": "Holding weapon" + } + }, + "Weapons": { + "fist": { + "setting_rva": "0x2eeb40", + "label": "Fist" + }, + "swords": { + "setting_rva": "0x2eed00", + "label": "Swords" + }, + "axes": { + "setting_rva": "0x2eece0", + "label": "Axes" + }, + "extra_items": { + "setting_rva": "0x2eed20", + "label": "Extra", + "title": "Search item", + "suggestions_endpoint_present": true + }, + "enchant_sharpness": { + "setting_rva": "0x2eec80", + "label": "Sharpness" + }, + "enchant_knockback": { + "setting_rva": "0x2eeca0", + "label": "Knockback" + }, + "enchant_fire_aspect": { + "setting_rva": "0x2eecc0", + "label": "Fire aspect" + }, + "1": { + "setting_rva": "0x2eeb60", + "label": "Slot 1" + }, + "2": { + "setting_rva": "0x2eeb80", + "label": "Slot 2" + }, + "3": { + "setting_rva": "0x2eeba0", + "label": "Slot 3" + }, + "4": { + "setting_rva": "0x2eebc0", + "label": "Slot 4" + }, + "5": { + "setting_rva": "0x2eebe0", + "label": "Slot 5" + }, + "6": { + "setting_rva": "0x2eec00", + "label": "Slot 6" + }, + "7": { + "setting_rva": "0x2eec20", + "label": "Slot 7" + }, + "8": { + "setting_rva": "0x2eec40", + "label": "Slot 8" + }, + "9": { + "setting_rva": "0x2eec60", + "label": "Slot 9" + } + }, + "Refill": { + "refill_potion": { + "setting_rva": "0x2ef068", + "label": "Potions" + }, + "refill_potion_non_health": { + "setting_rva": "0x2ef088", + "label": "Allow non-health potions" + }, + "refill_soup": { + "setting_rva": "0x2ef048", + "label": "Soups" + }, + "simulate_button": { + "setting_rva": "0x2ef0e8", + "label": "Simulate button", + "flag": 0 + }, + "delay_after_open": { + "setting_rva": "0x2eefd8", + "label": "Delay after open", + "format": "%.0f ms" + }, + "delay_before_close": { + "setting_rva": "0x2eefa0", + "label": "Delay before close", + "format": "%.0f ms" + }, + "speed": { + "setting_rva": "0x2ef010", + "label": "Speed", + "format": "%.1fx" + }, + "smart_speed": { + "setting_rva": "0x2ef0a8", + "label": "Smart speed" + } + }, + "Auto Pot": { + "delay": { + "setting_rva": "0x2ef358", + "label": "Delay between actions", + "format": "%.0f ms" + }, + "prevent_waste": { + "setting_rva": "0x2ef390", + "label": "Prevent wasting health" + }, + "double_splash": { + "setting_rva": "0x2ef3b0", + "label": "Automatically do multiple splashes" + }, + "use_non_health": { + "setting_rva": "0x2ef338", + "label": "Use non-health potions" + } + }, + "Inv Walk": { + "mode": { + "setting_rva": "0x2ef5f0", + "label": "Mode", + "flag": 0 + }, + "stop_on_click": { + "setting_rva": "0x2ef648", + "label": "Stop on interact", + "flag": 0 + }, + "stop_duration": { + "setting_rva": "0x2ef688", + "label": "Stop duration", + "format": "%.0f ms" + }, + "stop_non_inv": { + "setting_rva": "0x2ef6c0", + "label": "Always stop", + "flag": 0 + } + }, + "Keep Sprint": { + "chance": { + "setting_rva": "0x2ef910", + "label": "Chance", + "format": "%.0f%%" + }, + "motion_mult": { + "setting_rva": "0x2ef948", + "label": "Retained speed", + "format": "%.0f%%" + }, + "allow_reduce": { + "setting_rva": "0x2ef9a0", + "label": "Allow reducing" + }, + "require_on_ground": { + "setting_rva": "0x2ef980", + "label": "On ground" + } + }, + "Lag Range": { + "delay": { + "setting_rva": "0x2efc48", + "label": "Maximum delay", + "format": "%.0f ms" + }, + "flush_sprint_reset": { + "setting_rva": "0x2efcc0", + "label": "Sprint reset" + }, + "flush_splash_potion": { + "setting_rva": "0x2efca0", + "label": "Used splash potion" + }, + "render_remote_pos": { + "setting_rva": "0x2efce0", + "label": "Enabled" + }, + "indicator_color": { + "setting_rva": "0x2efc08", + "label": "Color" + }, + "indicator_line_width": { + "setting_rva": "0x2efbd0", + "label": "Line width", + "format": "%0.0f px" + }, + "indicator_filled": { + "setting_rva": "0x2efc28", + "label": "Filled" + }, + "require_weapon": { + "setting_rva": "0x2efc80", + "label": "Holding weapon" + } + }, + "Sprint Reset": { + "mode": { + "setting_rva": "0x2eff28", + "label": "Mode", + "flag": 0 + }, + "delay": { + "setting_rva": "0x2eff68", + "label": "Delay", + "format": "%.0f ms" + }, + "duration": { + "setting_rva": "0x2f0000", + "label": "Stop duration", + "format": "%.0f ms" + }, + "randomize": { + "setting_rva": "0x2effa0", + "label": "Randomize" + }, + "wait_for_damage": { + "setting_rva": "0x2effc0", + "label": "Damaged" + }, + "require_weapon": { + "setting_rva": "0x2effe0", + "label": "Holding weapon" + } + }, + "Friends": { + "middle_click_add": { + "setting_rva": "0x2f0248", + "label": "Middle-click to add" + }, + "friends": { + "setting_rva": "0x2f0268", + "label": "Friends", + "title": "Enter friend username", + "suggestions_endpoint_present": false + } + }, + "Name Tags": { + "range": { + "setting_rva": "0x2f05b8", + "label": "Range", + "format": "%0.0f blocks" + }, + "scale": { + "setting_rva": "0x2f04e0", + "label": "Scale", + "format": "%0.0f %%" + }, + "show_own_name_tag": { + "setting_rva": "0x2f05f0", + "label": "Show own name tag" + }, + "use_display_name": { + "setting_rva": "0x2f0610", + "label": "Use display name format" + }, + "distance_scaling": { + "setting_rva": "0x2f0518", + "label": "Distance scaling" + }, + "background": { + "setting_rva": "0x2f0538", + "label": "Text background" + }, + "text_shadow": { + "setting_rva": "0x2f0558", + "label": "Text shadow" + }, + "show_health": { + "setting_rva": "0x2f0630", + "label": "Health" + }, + "health_fmt": { + "setting_rva": "0x2f0680", + "label": "Health format", + "flag": 0 + }, + "show_distance": { + "setting_rva": "0x2f0650", + "label": "Distance" + }, + "show_equipment": { + "setting_rva": "0x2f0578", + "label": "Equipment" + }, + "show_enchants": { + "setting_rva": "0x2f0598", + "label": "Enchantments" + } + }, + "Pointers": { + "range": { + "setting_rva": "0x2f0a98", + "label": "Range", + "format": "%0.0f blocks" + }, + "ignore_fov": { + "setting_rva": "0x2f0ad0", + "label": "Ignore within FOV", + "format": "%0.0f\u00b0" + }, + "hide_friendlies": { + "setting_rva": "0x2f0b48", + "label": "Hide friendlies" + }, + "style": { + "setting_rva": "0x2f09e0", + "label": "Style", + "flag": 0 + }, + "color_mode": { + "setting_rva": "0x2f0a58", + "label": "Colors", + "flag": 0 + }, + "near_far_range": { + "setting_rva": "0x2f08d0", + "label": "Transition between", + "format": "%0.0f blocks", + "pair_format": "%0.0f - %0.0f blocks" + }, + "color_near": { + "setting_rva": "0x2f0990", + "label": "Near color" + }, + "color_far": { + "setting_rva": "0x2f09b0", + "label": "Far color" + }, + "color_enemies": { + "setting_rva": "0x2f0b28", + "label": "Enemy color" + }, + "color_friendlies": { + "setting_rva": "0x2f0b08", + "label": "Friendly color" + }, + "scale": { + "setting_rva": "0x2f0920", + "label": "Scale", + "format": "%.0f%%" + }, + "radius": { + "setting_rva": "0x2f0958", + "label": "Radius", + "format": "%.0f" + }, + "scale_radius": { + "setting_rva": "0x2f0a20", + "label": "Distance-based radius" + } + }, + "No Hit Delay": { + "mode": { + "setting_rva": "0x2f0d90", + "label": "Mode", + "flag": 0 + } + }, + "Ping Fix": {}, + "Chams": { + "hide_friendlies": { + "setting_rva": "0x2f11f0", + "label": "Hide friendlies" + } + }, + "No Use Delay": { + "allow_desync": { + "setting_rva": "0x2f1420", + "label": "Allow desync abuse" + } + }, + "Indicators": { + "scale": { + "setting_rva": "0x2f1650", + "label": "Scale", + "format": "%.0f%%" + }, + "radius": { + "setting_rva": "0x2f1688", + "label": "Radius", + "format": "%.0f" + }, + "show_arrow": { + "setting_rva": "0x2f16c0", + "label": "Arrows" + }, + "show_fireball": { + "setting_rva": "0x2f16e0", + "label": "Fireballs" + }, + "show_pearl": { + "setting_rva": "0x2f1700", + "label": "Ender pearls" + }, + "require_coming_closer": { + "setting_rva": "0x2f1720", + "label": "Coming closer" + } + }, + "Block ESP": { + "range": { + "setting_rva": "0x2f1a28", + "label": "Range", + "format": "%0.0f chunk(s)" + }, + "allowed_blocks": { + "setting_rva": "0x2f1950", + "label": "Block types", + "title": "Search block", + "suggestions_endpoint_present": true + }, + "should_limit_block_render": { + "setting_rva": "0x2f1a60", + "label": "Enabled" + }, + "block_render_limit": { + "setting_rva": "0x2f19f0", + "label": "Limit per chunk", + "format": "%0.0f block(s)" + }, + "line_width": { + "setting_rva": "0x2f19b8", + "label": "Line width", + "format": "%0.0f px" + } + }, + "Item ESP": { + "range": { + "setting_rva": "0x2f1cb0", + "label": "Range", + "format": "%0.0f blocks" + }, + "show_count": { + "setting_rva": "0x2f1c90", + "label": "Show count" + }, + "allowed_items": { + "setting_rva": "0x2f1d28", + "label": "Item types", + "title": "Search item", + "suggestions_endpoint_present": true + }, + "highlight_all": { + "setting_rva": "0x2f1d08", + "label": "Highlight all items" + }, + "default_color": { + "setting_rva": "0x2f1ce8", + "label": "Default color" + } + }, + "Fast Mine": { + "speed": { + "setting_rva": "0x2f1ff8", + "label": "Speed", + "format": "%.2fx" + }, + "break_delay": { + "setting_rva": "0x2f1fa0", + "label": "Break delay", + "format": "%.0f ms" + }, + "decr_block_hit_delay": { + "setting_rva": "0x2f1fd8", + "label": "Always decrease break delay" + } + }, + "Safe Walk": { + "motion_multiplier": { + "setting_rva": "0x2f2240", + "label": "Motion", + "format": "%.2fx" + }, + "require_holding_blocks": { + "setting_rva": "0x2f22b8", + "label": "Holding blocks" + }, + "require_looking_down": { + "setting_rva": "0x2f2278", + "label": "Looking down" + }, + "require_not_forward": { + "setting_rva": "0x2f2298", + "label": "Not moving forward" + } + }, + "No Hurt Cam": {}, + "Strafe": { + "strength_jump": { + "setting_rva": "0x2f2768", + "label": "Jump", + "format": "%.0f%%" + }, + "strength_ground": { + "setting_rva": "0x2f27a0", + "label": "Ground", + "format": "%.0f%%" + }, + "strength_air": { + "setting_rva": "0x2f2730", + "label": "Air", + "format": "%.0f%%" + }, + "max_hurt_time": { + "setting_rva": "0x2f26f8", + "label": "Maximum hurt time", + "format": "%.0f ms" + }, + "require_weapon": { + "setting_rva": "0x2f27d8", + "label": "Holding weapon" + } + }, + "Fast Accel": { + "acceleration": { + "setting_rva": "0x2f2a08", + "label": "Boost", + "format": "%.0f%%" + }, + "require_not_damaged": { + "setting_rva": "0x2f2a60", + "label": "Not damaged" + }, + "require_weapon": { + "setting_rva": "0x2f2a40", + "label": "Holding weapon" + } + }, + "Instant Stop": {}, + "No Slow": { + "mult_sword": { + "setting_rva": "0x2f2ed8", + "label": "Sword", + "format": "%.0f%%" + }, + "mult_bow": { + "setting_rva": "0x2f2ea0", + "label": "Bow", + "format": "%.0f%%" + }, + "mult_consumables": { + "setting_rva": "0x2f2f10", + "label": "Consumables", + "format": "%.0f%%" + } + }, + "Item Use Fix": {}, + "Timer Range": { + "mode": { + "setting_rva": "0x2f33e0", + "label": "Mode", + "flag": 0 + }, + "min_dist": { + "setting_rva": "0x2f34e8", + "label": "Minimum distance", + "format": "%0.2f blocks" + }, + "duration": { + "setting_rva": "0x2f3478", + "label": "Duration", + "format": "%0.0f ms" + }, + "duration_legit": { + "setting_rva": "0x2f34b0", + "label": "Duration", + "format": "%0.0f ms" + }, + "cooldown": { + "setting_rva": "0x2f3440", + "label": "Cooldown", + "format": "%0.1f s" + }, + "block_while_frozen": { + "setting_rva": "0x2f3420", + "label": "Block while frozen" + }, + "require_mouse_pressed": { + "setting_rva": "0x2f3370", + "label": "Mouse pressed" + }, + "require_weapon": { + "setting_rva": "0x2f3390", + "label": "Holding weapon" + }, + "require_not_using_item": { + "setting_rva": "0x2f33b0", + "label": "Not using item" + } + }, + "Auto Rod": { + "retract_speed": { + "setting_rva": "0x2f37f0", + "label": "Retract speed", + "format": "%.2fx" + }, + "delay": { + "setting_rva": "0x2f3798", + "label": "Delay between actions", + "format": "%.0f ms" + }, + "randomize_delays": { + "setting_rva": "0x2f37d0", + "label": "Randomize delays" + }, + "always_switch_to_weapon": { + "setting_rva": "0x2f3778", + "label": "Always switch back to weapon" + }, + "allow_throwables": { + "setting_rva": "0x2f3758", + "label": "Allow using snowballs/eggs" + }, + "throw_speed": { + "setting_rva": "0x2f3828", + "label": "Throw speed", + "format": "%.1f CPS" + }, + "require_not_mouse_over": { + "setting_rva": "0x2f3738", + "label": "Not within melee range" + } + }, + "Anti Debuff": { + "blindness": { + "setting_rva": "0x2f3a70", + "label": "Blindness" + }, + "nausea": { + "setting_rva": "0x2f3a90", + "label": "Nausea" + } + }, + "Piercing": { + "sort_by": { + "setting_rva": "0x2f3d90", + "label": "Sort targets by", + "flag": 0 + }, + "non_players": { + "setting_rva": "0x2f3d00", + "label": "Non-player entities" + }, + "friendlies": { + "setting_rva": "0x2f3d20", + "label": "Friendlies" + }, + "bots": { + "setting_rva": "0x2f3d40", + "label": "Bots" + }, + "enemies": { + "setting_rva": "0x2f3d60", + "label": "Enemies" + }, + "blocks": { + "setting_rva": "0x2f3dd0", + "label": "Blocks" + }, + "require_weapon": { + "setting_rva": "0x2f3ce0", + "label": "Holding weapon" + }, + "require_inside_bb": { + "setting_rva": "0x2f3cc0", + "label": "Inside entity hitbox" + } + }, + "Trajectories": { + "line_width": { + "setting_rva": "0x2f4000", + "label": "Line width", + "format": "%0.0f px" + }, + "color_hit": { + "setting_rva": "0x2f4038", + "label": "Hit color" + }, + "color_miss": { + "setting_rva": "0x2f4058", + "label": "Miss color" + }, + "render_throwables": { + "setting_rva": "0x2f40d8", + "label": "Snowballs/eggs" + }, + "render_pearls": { + "setting_rva": "0x2f40b8", + "label": "Enderpearls" + }, + "render_bow": { + "setting_rva": "0x2f4078", + "label": "Bow" + }, + "render_uncharged_bow": { + "setting_rva": "0x2f4098", + "label": "Bow (uncharged)" + } + }, + "Knockback Delay": { + "range": { + "setting_rva": "0x2f4360", + "label": "Distance to target", + "format": "%.1f blocks" + }, + "chance": { + "setting_rva": "0x2f43f8", + "label": "Chance", + "format": "%.0f%%" + }, + "max_delay": { + "setting_rva": "0x2f4308", + "label": "Maximum delay", + "format": "%.0f ms" + }, + "require_air": { + "setting_rva": "0x2f4340", + "label": "In air" + }, + "require_target": { + "setting_rva": "0x2f43d8", + "label": "Looking at player" + }, + "require_mouse": { + "setting_rva": "0x2f43b8", + "label": "Mouse pressed" + }, + "require_weapon": { + "setting_rva": "0x2f4398", + "label": "Holding weapon" + } + }, + "Debug": { + "clicks": { + "setting_rva": "0x2f4680", + "label": "Clicks" + }, + "hurt_time": { + "setting_rva": "0x2f4640", + "label": "Hurt time" + }, + "item_use_state": { + "setting_rva": "0x2f4660", + "label": "Server item use state" + } + }, + "Null Move": {}, + "Ghost Hand": { + "non_players": { + "setting_rva": "0x2f4bc0", + "label": "Non-player entities" + }, + "friendlies": { + "setting_rva": "0x2f4c00", + "label": "Friendlies" + }, + "bots": { + "setting_rva": "0x2f4be0", + "label": "Bots" + }, + "enemies": { + "setting_rva": "0x2f4c20", + "label": "Enemies" + }, + "allow_using_sword": { + "setting_rva": "0x2f4b00", + "label": "Sword" + }, + "allow_using_tools": { + "setting_rva": "0x2f4b20", + "label": "Tool" + }, + "allow_using_fists": { + "setting_rva": "0x2f4ae0", + "label": "Fists" + }, + "allow_using_buckets": { + "setting_rva": "0x2f4b40", + "label": "Bucket" + }, + "allow_using_fns": { + "setting_rva": "0x2f4b60", + "label": "Flint and steel" + }, + "allow_using_cobweb": { + "setting_rva": "0x2f4b80", + "label": "Cobweb" + }, + "allow_using_other": { + "setting_rva": "0x2f4ba0", + "label": "Other" + }, + "require_mouse_pressed": { + "setting_rva": "0x2f4ac0", + "label": "Mouse pressed" + } + }, + "Inv Manager": { + "delay_after_open": { + "setting_rva": "0x2f4e50", + "label": "Delay after open", + "format": "%.0f ms" + }, + "speed": { + "setting_rva": "0x2f5230", + "label": "Speed", + "format": "%.1fx" + }, + "smart_speed": { + "setting_rva": "0x2f5268", + "label": "Smart speed" + }, + "randomize": { + "setting_rva": "0x2f5210", + "label": "Randomize" + }, + "equip_armor": { + "setting_rva": "0x2f4e88", + "label": "Enabled" + }, + "sort_hotbar": { + "setting_rva": "0x2f4ea8", + "label": "Enabled" + }, + "sort_hotbar_fallback": { + "setting_rva": "0x2f51f0", + "label": "Smart fallbacks" + }, + "1": { + "setting_rva": "0x2f4fb0", + "label": "Slot 1", + "flag": 1 + }, + "2": { + "setting_rva": "0x2f4ff0", + "label": "Slot 2", + "flag": 1 + }, + "3": { + "setting_rva": "0x2f5030", + "label": "Slot 3", + "flag": 1 + }, + "4": { + "setting_rva": "0x2f5070", + "label": "Slot 4", + "flag": 1 + }, + "5": { + "setting_rva": "0x2f50b0", + "label": "Slot 5", + "flag": 1 + }, + "6": { + "setting_rva": "0x2f50f0", + "label": "Slot 6", + "flag": 1 + }, + "7": { + "setting_rva": "0x2f5130", + "label": "Slot 7", + "flag": 1 + }, + "8": { + "setting_rva": "0x2f5170", + "label": "Slot 8", + "flag": 1 + }, + "9": { + "setting_rva": "0x2f51b0", + "label": "Slot 9", + "flag": 1 + } + }, + "Chest Stealer": { + "delay_after_open": { + "setting_rva": "0x2f5498", + "label": "Delay after open", + "format": "%.0f ms" + }, + "delay_before_close": { + "setting_rva": "0x2f54f0", + "label": "Delay before close", + "format": "%.0f ms" + }, + "speed": { + "setting_rva": "0x2f5528", + "label": "Speed", + "format": "%.1fx" + }, + "smart_speed": { + "setting_rva": "0x2f5560", + "label": "Smart speed" + }, + "require_vanilla_title": { + "setting_rva": "0x2f54d0", + "label": "Vanilla window title" + } + }, + "Clutch": { + "range": { + "setting_rva": "0x2f59d0", + "label": "Range", + "format": "%.0f block(s)" + }, + "max_aim_dist": { + "setting_rva": "0x2f5a08", + "label": "FOV", + "format": "%.0f\u00b0" + }, + "min_height": { + "setting_rva": "0x2f5998", + "label": "Minimum height", + "format": "%.0f block(s)" + }, + "click_speed": { + "setting_rva": "0x2f5790", + "label": "Click speed", + "format": "%.1f CPS" + }, + "randomization": { + "setting_rva": "0x2f5838", + "label": "Randomization", + "format": "%.0f%%" + }, + "select_blocks": { + "setting_rva": "0x2f5a98", + "label": "Select blocks", + "flag": 0 + }, + "sideways_only": { + "setting_rva": "0x2f5a40", + "label": "Only place sideways" + }, + "aim_speed": { + "setting_rva": "0x2f5870", + "label": "Base speed", + "format": "%.0f \u00b0/s" + }, + "aim_mult": { + "setting_rva": "0x2f58a8", + "label": "Acceleration", + "format": "%.3fx" + }, + "aim_mult_strength": { + "setting_rva": "0x2f58e0", + "label": "Acceleration strength", + "format": "%.0f%%" + }, + "aim_multipoint": { + "setting_rva": "0x2f5a60", + "label": "Multipoint" + }, + "snapback_delay": { + "setting_rva": "0x2f5800", + "label": "Delay", + "format": "%.0f ms" + }, + "snapback_duration": { + "setting_rva": "0x2f57c8", + "label": "Duration", + "format": "%.0f ms" + }, + "snapback_instant_on_jump": { + "setting_rva": "0x2f5918", + "label": "Keep jump direction" + }, + "snapback_disable_after": { + "setting_rva": "0x2f5ad8", + "label": "Disable afterwards" + }, + "require_air": { + "setting_rva": "0x2f5938", + "label": "In air" + }, + "require_damage": { + "setting_rva": "0x2f5958", + "label": "Damaged" + }, + "require_backwards": { + "setting_rva": "0x2f5978", + "label": "Moving backwards" + } + }, + "Auto Weapon": { + "activation_time": { + "setting_rva": "0x2f5d08", + "label": "Activation time", + "format": "%.0f ms" + }, + "require_mouse_pressed": { + "setting_rva": "0x2f5d40", + "label": "Mouse pressed" + } + }, + "Knockback Displace": { + "direction": { + "setting_rva": "0x2f6088", + "label": "Direction", + "flag": 0 + }, + "use_last_strafe": { + "setting_rva": "0x2f60e8", + "label": "Use last strafe direction" + }, + "angle": { + "setting_rva": "0x2f5fa8", + "label": "Angle", + "format": "%.0f\u00b0" + }, + "cooldown": { + "setting_rva": "0x2f5f70", + "label": "Cooldown", + "format": "%.0f ms" + }, + "hide_rotation": { + "setting_rva": "0x2f60c8", + "label": "Hide rotation from players" + }, + "require_no_kb": { + "setting_rva": "0x2f5fe0", + "label": "Not taking knockback" + }, + "require_weapon": { + "setting_rva": "0x2f6000", + "label": "Holding weapon" + }, + "require_kb_enchant": { + "setting_rva": "0x2f6020", + "label": "Knockback enchantment" + }, + "require_facing_away": { + "setting_rva": "0x2f6040", + "label": "Target facing away" + } + }, + "Block In": { + "speed": { + "setting_rva": "0x2f6338", + "label": "Speed", + "format": "%.0f%%" + }, + "require_ground": { + "setting_rva": "0x2f6318", + "label": "On ground" + } + }, + "Speed": { + "speed": { + "setting_rva": "0x2f6338", + "label": "Speed", + "format": "%.0f%%" + }, + "require_ground": { + "setting_rva": "0x2f6318", + "label": "On ground" + } + } +} \ No newline at end of file diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-Medium.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-Medium.ttf new file mode 100644 index 0000000..7e573f6 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-Medium.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-OFL.txt b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-OFL.txt new file mode 100644 index 0000000..21f6aff --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/InterSemiBold.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/InterSemiBold.ttf new file mode 100644 index 0000000..053185e Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/InterSemiBold.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter_18pt-Regular.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter_18pt-Regular.ttf new file mode 100644 index 0000000..0e9c951 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/Inter_18pt-Regular.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Medium.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Medium.ttf new file mode 100644 index 0000000..6d87c42 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Medium.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-OFL.txt b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-OFL.txt new file mode 100644 index 0000000..2e76eef --- /dev/null +++ b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-OFL.txt @@ -0,0 +1,88 @@ +Copyright 2020 The Open Sans Project Authors (https://github.com/googlefonts/opensans) + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Regular.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..8529c43 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-Regular.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-SemiBold.ttf b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-SemiBold.ttf new file mode 100644 index 0000000..f210dd9 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/fonts/OpenSans-SemiBold.ttf differ diff --git a/SlinkyClient/src/main/resources/assets/slinkysemantic/profile-icon-coverage.bin b/SlinkyClient/src/main/resources/assets/slinkysemantic/profile-icon-coverage.bin new file mode 100644 index 0000000..2cf4012 Binary files /dev/null and b/SlinkyClient/src/main/resources/assets/slinkysemantic/profile-icon-coverage.bin differ diff --git a/SlinkyClient/src/test/java/dev/slinky/ProjectSmokeTest.java b/SlinkyClient/src/test/java/dev/slinky/ProjectSmokeTest.java new file mode 100644 index 0000000..42586e8 --- /dev/null +++ b/SlinkyClient/src/test/java/dev/slinky/ProjectSmokeTest.java @@ -0,0 +1,99 @@ +package dev.slinky; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import dev.slinky.client.ClientContext; +import dev.slinky.config.ConfigurationJson; +import dev.slinky.config.json.JsonRuntime; +import dev.slinky.inject.Mappings; +import dev.slinky.inject.transform.SlinkyPatches; +import dev.slinky.module.CoreModules; +import dev.slinky.module.Module; +import dev.slinky.module.ModuleManager; +import dev.slinky.shaded.asm.ClassReader; +import dev.slinky.shaded.asm.Opcodes; +import dev.slinky.shaded.asm.tree.AbstractInsnNode; +import dev.slinky.shaded.asm.tree.ClassNode; +import dev.slinky.shaded.asm.tree.FieldNode; +import dev.slinky.shaded.asm.tree.InsnNode; +import dev.slinky.shaded.asm.tree.LdcInsnNode; +import dev.slinky.shaded.asm.tree.MethodInsnNode; +import dev.slinky.shaded.asm.tree.MethodNode; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class ProjectSmokeTest { + private static final Pattern CLIENT_CLASS = Pattern.compile("dev/slinky/[A-Za-z0-9_$/]+"); + + public static void main(String[] args) throws Exception { + ModuleManager manager = new ModuleManager(new ClientContext(null)); + CoreModules.register(manager); + assert manager.all().size() == 66 : "Module catalog no longer registers all 66 implementations"; + assert CoreModules.sourceOnlyIntervals().size() == 2; + for (Module module : manager.all()) { + assert module.getClass().getPackage().getName().startsWith("dev.slinky.module."); + } + + JsonObject configuration = new JsonObject(); + configuration.addProperty("profile", "caf\u00e9 \u4e16\u754c"); + configuration.addProperty("__bind", 4294967295L); + JsonArray settings = new JsonArray(); + settings.add(configuration.get("profile")); + settings.add(configuration.get("__bind")); + configuration.add("settings", settings); + assert ConfigurationJson.parse(ConfigurationJson.print(configuration)).equals(configuration); + try { + ConfigurationJson.parse(JsonRuntime.cString("{invalid")); + throw new AssertionError("Malformed configuration was accepted"); + } catch (IOException expected) { + assert expected.getMessage() != null; + } + + ClassNode transformer = new ClassNode(); + new ClassReader("dev.slinky.inject.transform.SlinkyPatches").accept(transformer, 0); + for (FieldNode field : transformer.fields) { + checkClassReferences(field.value); + } + for (MethodNode method : transformer.methods) { + for (AbstractInsnNode instruction : method.instructions) { + if (instruction instanceof LdcInsnNode) { + checkClassReferences(((LdcInsnNode)instruction).cst); + } + } + } + + Mappings.load(null); + boolean commandPatched = false; + for (SlinkyPatches.ClassEdits patch : SlinkyPatches.create(false)) { + for (SlinkyPatches.MethodEdit edit : patch.edits) { + if (edit.name.equals("sendChatMessage")) { + MethodNode method = new MethodNode(Opcodes.ACC_PUBLIC, edit.name, edit.desc, null, null); + method.instructions.add(new InsnNode(Opcodes.RETURN)); + assert edit.apply(method) == edit.expected; + for (AbstractInsnNode instruction : method.instructions) { + if (instruction instanceof MethodInsnNode) { + MethodInsnNode call = (MethodInsnNode)instruction; + assert call.owner.equals("dev/slinky/client/event/ClientEventBridge") : call.owner; + Class owner = Class.forName(call.owner.replace('/', '.'), false, ProjectSmokeTest.class.getClassLoader()); + assert owner.getMethod(call.name, String.class).getReturnType() == boolean.class; + commandPatched = true; + } + } + } + } + } + assert commandPatched : "Chat command patch was not exercised"; + System.out.println("Passed: 66 module registrations, JSON round trip and rejection, transformer class references, chat command patch."); + } + + private static void checkClassReferences(Object value) { + if (value instanceof String) { + Matcher matcher = CLIENT_CLASS.matcher((String)value); + while (matcher.find()) { + String path = "/" + matcher.group() + ".class"; + assert ProjectSmokeTest.class.getResource(path) != null : "Missing injected class " + path; + } + } + } +} diff --git a/SlinkyNative/CMakeLists.txt b/SlinkyNative/CMakeLists.txt new file mode 100644 index 0000000..2a7f157 --- /dev/null +++ b/SlinkyNative/CMakeLists.txt @@ -0,0 +1,27 @@ +add_library(SlinkyNative SHARED + src/DllMain.cpp + src/Logger.cpp + src/JvmManager.cpp + src/MinecraftDetector.cpp + src/NativeBridge.cpp + src/PayloadLoader.cpp + SlinkyNative.rc +) + +target_include_directories(SlinkyNative PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include/jdk + ${CMAKE_CURRENT_SOURCE_DIR}/include/jdk/win32 +) + +target_compile_definitions(SlinkyNative PRIVATE + _CRT_SECURE_NO_WARNINGS + WIN32_LEAN_AND_MEAN + EMBED_PAYLOAD_JARS +) + +set_target_properties(SlinkyNative PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + OUTPUT_NAME "SlinkyNative" +) diff --git a/SlinkyNative/SlinkyNative.rc b/SlinkyNative/SlinkyNative.rc new file mode 100644 index 0000000..eca17f0 --- /dev/null +++ b/SlinkyNative/SlinkyNative.rc @@ -0,0 +1,8 @@ +#include "include/Resource.h" + +// If the payload jars exist at build time, embed them as RT_RCDATA (10) +#ifdef EMBED_PAYLOAD_JARS +IDR_PAYLOAD_NAMED RCDATA "payload/slinky-named.jar" +IDR_PAYLOAD_SRG RCDATA "payload/slinky-srg.jar" +IDR_PAYLOAD_OFFICIAL RCDATA "payload/slinky-official.jar" +#endif diff --git a/SlinkyNative/include/JvmManager.hpp b/SlinkyNative/include/JvmManager.hpp new file mode 100644 index 0000000..c5311bc --- /dev/null +++ b/SlinkyNative/include/JvmManager.hpp @@ -0,0 +1,56 @@ +#pragma once + +#include +#include "jdk/jni.h" +#include "jdk/jvmti.h" +#include +#include + +namespace SlinkyNative { + +class JvmManager { +public: + static bool Initialize(); + static void Shutdown(); + + static JavaVM* GetJavaVM(); + static JNIEnv* GetEnv(); + static jvmtiEnv* GetJvmti(); + + // Hook state management for getClassBytes and retransformClass + static void SetCaptureTarget(jclass targetClass); + static std::vector GetCapturedBytes(); + static void ClearCapturedBytes(); + + static void SetReplacementData(jclass targetClass, const unsigned char* data, jint length); + static bool WasReplacementApplied(); + static void ClearReplacementData(); + +private: + static void JNICALL OnClassFileLoadHook( + jvmtiEnv* jvmti_env, + JNIEnv* jni_env, + jclass class_being_redefined, + jobject loader, + const char* name, + jobject protection_domain, + jint class_data_len, + const unsigned char* class_data, + jint* new_class_data_len, + unsigned char** new_class_data); + + static JavaVM* s_JavaVM; + static JNIEnv* s_JniEnv; + static jvmtiEnv* s_JvmtiEnv; + + static std::mutex s_HookMutex; + static jclass s_CaptureTarget; + static std::vector s_CapturedBytes; + + static jclass s_ReplacementTarget; + static const unsigned char* s_ReplacementData; + static jint s_ReplacementLength; + static bool s_ReplacementApplied; +}; + +} // namespace SlinkyNative diff --git a/SlinkyNative/include/Logger.hpp b/SlinkyNative/include/Logger.hpp new file mode 100644 index 0000000..f7a62ad --- /dev/null +++ b/SlinkyNative/include/Logger.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +namespace SlinkyNative { + +class Logger { +public: + static void Initialize(HMODULE hModule); + static void Shutdown(); + + // Log a wide string message with timestamp formatted identically to original Slinky + static void Log(const wchar_t* format, ...); + static void LogV(const wchar_t* format, va_list args); + + // Helper for char format strings + static void LogA(const char* format, ...); + + static const std::wstring& GetLogFilePath(); + +private: + static CRITICAL_SECTION s_CriticalSection; + static std::wstring s_LogFilePath; + static bool s_Initialized; +}; + +} // namespace SlinkyNative diff --git a/SlinkyNative/include/MinecraftDetector.hpp b/SlinkyNative/include/MinecraftDetector.hpp new file mode 100644 index 0000000..2259435 --- /dev/null +++ b/SlinkyNative/include/MinecraftDetector.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include "jdk/jni.h" +#include "jdk/jvmti.h" + +namespace SlinkyNative { + +enum class MappingType { + Unknown = 0, + Named = 101, // MCP mappings (resource 101) + Srg = 102, // SRG mappings (resource 102) + Official = 103 // Notch/Vanilla/Lunar/Badlion obfuscated mappings (resource 103) +}; + +struct MinecraftInfo { + MappingType mapping = MappingType::Unknown; + std::string mappingName; + int resourceId = 0; + jclass minecraftClass = nullptr; + jobject classLoader = nullptr; +}; + +class MinecraftDetector { +public: + static bool Detect(MinecraftInfo& outInfo); +}; + +} // namespace SlinkyNative diff --git a/SlinkyNative/include/NativeBridge.hpp b/SlinkyNative/include/NativeBridge.hpp new file mode 100644 index 0000000..c82d4e2 --- /dev/null +++ b/SlinkyNative/include/NativeBridge.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "jdk/jni.h" + +namespace SlinkyNative { + +class NativeBridge { +public: + static bool Register(JNIEnv* env, jobject classLoader); + + // JNI native method implementations + static jbyteArray JNICALL GetClassBytes(JNIEnv* env, jclass clazz, jclass targetClass); + static jint JNICALL RetransformClass(JNIEnv* env, jclass clazz, jclass targetClass, jbyteArray newBytecode); + static void JNICALL Log(JNIEnv* env, jclass clazz, jstring message); +}; + +} // namespace SlinkyNative diff --git a/SlinkyNative/include/PayloadLoader.hpp b/SlinkyNative/include/PayloadLoader.hpp new file mode 100644 index 0000000..5024820 --- /dev/null +++ b/SlinkyNative/include/PayloadLoader.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include +#include +#include "MinecraftDetector.hpp" + +namespace SlinkyNative { + +enum class InjectionStatus { + Success = 0, + AlreadyRunning, + Reloaded, + Failed +}; + +class PayloadLoader { +public: + static InjectionStatus LoadAndStart(HMODULE hModule, const MinecraftInfo& mcInfo); + +private: + static bool CheckPreviousState(JNIEnv* env, jobject classLoader, bool& outAlreadyRunning); + static bool ExtractPayloadJar(HMODULE hModule, const MinecraftInfo& mcInfo, std::wstring& outJarPath); + static bool AddJarToClassLoader(JNIEnv* env, jobject classLoader, const std::wstring& jarPath); + static bool DefinePayloadClasses(JNIEnv* env, jobject classLoader, const std::wstring& jarPath); + static bool LaunchBootstrap(JNIEnv* env, jobject classLoader, const MinecraftInfo& mcInfo, HMODULE hModule); +}; + +} // namespace SlinkyNative diff --git a/SlinkyNative/include/Resource.h b/SlinkyNative/include/Resource.h new file mode 100644 index 0000000..dba369a --- /dev/null +++ b/SlinkyNative/include/Resource.h @@ -0,0 +1,5 @@ +#pragma once + +#define IDR_PAYLOAD_NAMED 101 +#define IDR_PAYLOAD_SRG 102 +#define IDR_PAYLOAD_OFFICIAL 103 diff --git a/SlinkyNative/include/jdk/classfile_constants.h b/SlinkyNative/include/jdk/classfile_constants.h new file mode 100644 index 0000000..1fa6e3c --- /dev/null +++ b/SlinkyNative/include/jdk/classfile_constants.h @@ -0,0 +1,560 @@ +/* + * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef CLASSFILE_CONSTANTS_H +#define CLASSFILE_CONSTANTS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Classfile version number for this information */ +#define JVM_CLASSFILE_MAJOR_VERSION 52 +#define JVM_CLASSFILE_MINOR_VERSION 0 + +/* Flags */ + +enum { + JVM_ACC_PUBLIC = 0x0001, + JVM_ACC_PRIVATE = 0x0002, + JVM_ACC_PROTECTED = 0x0004, + JVM_ACC_STATIC = 0x0008, + JVM_ACC_FINAL = 0x0010, + JVM_ACC_SYNCHRONIZED = 0x0020, + JVM_ACC_SUPER = 0x0020, + JVM_ACC_VOLATILE = 0x0040, + JVM_ACC_BRIDGE = 0x0040, + JVM_ACC_TRANSIENT = 0x0080, + JVM_ACC_VARARGS = 0x0080, + JVM_ACC_NATIVE = 0x0100, + JVM_ACC_INTERFACE = 0x0200, + JVM_ACC_ABSTRACT = 0x0400, + JVM_ACC_STRICT = 0x0800, + JVM_ACC_SYNTHETIC = 0x1000, + JVM_ACC_ANNOTATION = 0x2000, + JVM_ACC_ENUM = 0x4000 +}; + +/* Used in newarray instruction. */ + +enum { + JVM_T_BOOLEAN = 4, + JVM_T_CHAR = 5, + JVM_T_FLOAT = 6, + JVM_T_DOUBLE = 7, + JVM_T_BYTE = 8, + JVM_T_SHORT = 9, + JVM_T_INT = 10, + JVM_T_LONG = 11 +}; + +/* Constant Pool Entries */ + +enum { + JVM_CONSTANT_Utf8 = 1, + JVM_CONSTANT_Unicode = 2, /* unused */ + JVM_CONSTANT_Integer = 3, + JVM_CONSTANT_Float = 4, + JVM_CONSTANT_Long = 5, + JVM_CONSTANT_Double = 6, + JVM_CONSTANT_Class = 7, + JVM_CONSTANT_String = 8, + JVM_CONSTANT_Fieldref = 9, + JVM_CONSTANT_Methodref = 10, + JVM_CONSTANT_InterfaceMethodref = 11, + JVM_CONSTANT_NameAndType = 12, + JVM_CONSTANT_MethodHandle = 15, // JSR 292 + JVM_CONSTANT_MethodType = 16, // JSR 292 + JVM_CONSTANT_InvokeDynamic = 18 +}; + +/* JVM_CONSTANT_MethodHandle subtypes */ +enum { + JVM_REF_getField = 1, + JVM_REF_getStatic = 2, + JVM_REF_putField = 3, + JVM_REF_putStatic = 4, + JVM_REF_invokeVirtual = 5, + JVM_REF_invokeStatic = 6, + JVM_REF_invokeSpecial = 7, + JVM_REF_newInvokeSpecial = 8, + JVM_REF_invokeInterface = 9 +}; + +/* StackMapTable type item numbers */ + +enum { + JVM_ITEM_Top = 0, + JVM_ITEM_Integer = 1, + JVM_ITEM_Float = 2, + JVM_ITEM_Double = 3, + JVM_ITEM_Long = 4, + JVM_ITEM_Null = 5, + JVM_ITEM_UninitializedThis = 6, + JVM_ITEM_Object = 7, + JVM_ITEM_Uninitialized = 8 +}; + +/* Type signatures */ + +enum { + JVM_SIGNATURE_ARRAY = '[', + JVM_SIGNATURE_BYTE = 'B', + JVM_SIGNATURE_CHAR = 'C', + JVM_SIGNATURE_CLASS = 'L', + JVM_SIGNATURE_ENDCLASS = ';', + JVM_SIGNATURE_ENUM = 'E', + JVM_SIGNATURE_FLOAT = 'F', + JVM_SIGNATURE_DOUBLE = 'D', + JVM_SIGNATURE_FUNC = '(', + JVM_SIGNATURE_ENDFUNC = ')', + JVM_SIGNATURE_INT = 'I', + JVM_SIGNATURE_LONG = 'J', + JVM_SIGNATURE_SHORT = 'S', + JVM_SIGNATURE_VOID = 'V', + JVM_SIGNATURE_BOOLEAN = 'Z' +}; + +/* Opcodes */ + +enum { + JVM_OPC_nop = 0, + JVM_OPC_aconst_null = 1, + JVM_OPC_iconst_m1 = 2, + JVM_OPC_iconst_0 = 3, + JVM_OPC_iconst_1 = 4, + JVM_OPC_iconst_2 = 5, + JVM_OPC_iconst_3 = 6, + JVM_OPC_iconst_4 = 7, + JVM_OPC_iconst_5 = 8, + JVM_OPC_lconst_0 = 9, + JVM_OPC_lconst_1 = 10, + JVM_OPC_fconst_0 = 11, + JVM_OPC_fconst_1 = 12, + JVM_OPC_fconst_2 = 13, + JVM_OPC_dconst_0 = 14, + JVM_OPC_dconst_1 = 15, + JVM_OPC_bipush = 16, + JVM_OPC_sipush = 17, + JVM_OPC_ldc = 18, + JVM_OPC_ldc_w = 19, + JVM_OPC_ldc2_w = 20, + JVM_OPC_iload = 21, + JVM_OPC_lload = 22, + JVM_OPC_fload = 23, + JVM_OPC_dload = 24, + JVM_OPC_aload = 25, + JVM_OPC_iload_0 = 26, + JVM_OPC_iload_1 = 27, + JVM_OPC_iload_2 = 28, + JVM_OPC_iload_3 = 29, + JVM_OPC_lload_0 = 30, + JVM_OPC_lload_1 = 31, + JVM_OPC_lload_2 = 32, + JVM_OPC_lload_3 = 33, + JVM_OPC_fload_0 = 34, + JVM_OPC_fload_1 = 35, + JVM_OPC_fload_2 = 36, + JVM_OPC_fload_3 = 37, + JVM_OPC_dload_0 = 38, + JVM_OPC_dload_1 = 39, + JVM_OPC_dload_2 = 40, + JVM_OPC_dload_3 = 41, + JVM_OPC_aload_0 = 42, + JVM_OPC_aload_1 = 43, + JVM_OPC_aload_2 = 44, + JVM_OPC_aload_3 = 45, + JVM_OPC_iaload = 46, + JVM_OPC_laload = 47, + JVM_OPC_faload = 48, + JVM_OPC_daload = 49, + JVM_OPC_aaload = 50, + JVM_OPC_baload = 51, + JVM_OPC_caload = 52, + JVM_OPC_saload = 53, + JVM_OPC_istore = 54, + JVM_OPC_lstore = 55, + JVM_OPC_fstore = 56, + JVM_OPC_dstore = 57, + JVM_OPC_astore = 58, + JVM_OPC_istore_0 = 59, + JVM_OPC_istore_1 = 60, + JVM_OPC_istore_2 = 61, + JVM_OPC_istore_3 = 62, + JVM_OPC_lstore_0 = 63, + JVM_OPC_lstore_1 = 64, + JVM_OPC_lstore_2 = 65, + JVM_OPC_lstore_3 = 66, + JVM_OPC_fstore_0 = 67, + JVM_OPC_fstore_1 = 68, + JVM_OPC_fstore_2 = 69, + JVM_OPC_fstore_3 = 70, + JVM_OPC_dstore_0 = 71, + JVM_OPC_dstore_1 = 72, + JVM_OPC_dstore_2 = 73, + JVM_OPC_dstore_3 = 74, + JVM_OPC_astore_0 = 75, + JVM_OPC_astore_1 = 76, + JVM_OPC_astore_2 = 77, + JVM_OPC_astore_3 = 78, + JVM_OPC_iastore = 79, + JVM_OPC_lastore = 80, + JVM_OPC_fastore = 81, + JVM_OPC_dastore = 82, + JVM_OPC_aastore = 83, + JVM_OPC_bastore = 84, + JVM_OPC_castore = 85, + JVM_OPC_sastore = 86, + JVM_OPC_pop = 87, + JVM_OPC_pop2 = 88, + JVM_OPC_dup = 89, + JVM_OPC_dup_x1 = 90, + JVM_OPC_dup_x2 = 91, + JVM_OPC_dup2 = 92, + JVM_OPC_dup2_x1 = 93, + JVM_OPC_dup2_x2 = 94, + JVM_OPC_swap = 95, + JVM_OPC_iadd = 96, + JVM_OPC_ladd = 97, + JVM_OPC_fadd = 98, + JVM_OPC_dadd = 99, + JVM_OPC_isub = 100, + JVM_OPC_lsub = 101, + JVM_OPC_fsub = 102, + JVM_OPC_dsub = 103, + JVM_OPC_imul = 104, + JVM_OPC_lmul = 105, + JVM_OPC_fmul = 106, + JVM_OPC_dmul = 107, + JVM_OPC_idiv = 108, + JVM_OPC_ldiv = 109, + JVM_OPC_fdiv = 110, + JVM_OPC_ddiv = 111, + JVM_OPC_irem = 112, + JVM_OPC_lrem = 113, + JVM_OPC_frem = 114, + JVM_OPC_drem = 115, + JVM_OPC_ineg = 116, + JVM_OPC_lneg = 117, + JVM_OPC_fneg = 118, + JVM_OPC_dneg = 119, + JVM_OPC_ishl = 120, + JVM_OPC_lshl = 121, + JVM_OPC_ishr = 122, + JVM_OPC_lshr = 123, + JVM_OPC_iushr = 124, + JVM_OPC_lushr = 125, + JVM_OPC_iand = 126, + JVM_OPC_land = 127, + JVM_OPC_ior = 128, + JVM_OPC_lor = 129, + JVM_OPC_ixor = 130, + JVM_OPC_lxor = 131, + JVM_OPC_iinc = 132, + JVM_OPC_i2l = 133, + JVM_OPC_i2f = 134, + JVM_OPC_i2d = 135, + JVM_OPC_l2i = 136, + JVM_OPC_l2f = 137, + JVM_OPC_l2d = 138, + JVM_OPC_f2i = 139, + JVM_OPC_f2l = 140, + JVM_OPC_f2d = 141, + JVM_OPC_d2i = 142, + JVM_OPC_d2l = 143, + JVM_OPC_d2f = 144, + JVM_OPC_i2b = 145, + JVM_OPC_i2c = 146, + JVM_OPC_i2s = 147, + JVM_OPC_lcmp = 148, + JVM_OPC_fcmpl = 149, + JVM_OPC_fcmpg = 150, + JVM_OPC_dcmpl = 151, + JVM_OPC_dcmpg = 152, + JVM_OPC_ifeq = 153, + JVM_OPC_ifne = 154, + JVM_OPC_iflt = 155, + JVM_OPC_ifge = 156, + JVM_OPC_ifgt = 157, + JVM_OPC_ifle = 158, + JVM_OPC_if_icmpeq = 159, + JVM_OPC_if_icmpne = 160, + JVM_OPC_if_icmplt = 161, + JVM_OPC_if_icmpge = 162, + JVM_OPC_if_icmpgt = 163, + JVM_OPC_if_icmple = 164, + JVM_OPC_if_acmpeq = 165, + JVM_OPC_if_acmpne = 166, + JVM_OPC_goto = 167, + JVM_OPC_jsr = 168, + JVM_OPC_ret = 169, + JVM_OPC_tableswitch = 170, + JVM_OPC_lookupswitch = 171, + JVM_OPC_ireturn = 172, + JVM_OPC_lreturn = 173, + JVM_OPC_freturn = 174, + JVM_OPC_dreturn = 175, + JVM_OPC_areturn = 176, + JVM_OPC_return = 177, + JVM_OPC_getstatic = 178, + JVM_OPC_putstatic = 179, + JVM_OPC_getfield = 180, + JVM_OPC_putfield = 181, + JVM_OPC_invokevirtual = 182, + JVM_OPC_invokespecial = 183, + JVM_OPC_invokestatic = 184, + JVM_OPC_invokeinterface = 185, + JVM_OPC_invokedynamic = 186, + JVM_OPC_new = 187, + JVM_OPC_newarray = 188, + JVM_OPC_anewarray = 189, + JVM_OPC_arraylength = 190, + JVM_OPC_athrow = 191, + JVM_OPC_checkcast = 192, + JVM_OPC_instanceof = 193, + JVM_OPC_monitorenter = 194, + JVM_OPC_monitorexit = 195, + JVM_OPC_wide = 196, + JVM_OPC_multianewarray = 197, + JVM_OPC_ifnull = 198, + JVM_OPC_ifnonnull = 199, + JVM_OPC_goto_w = 200, + JVM_OPC_jsr_w = 201, + JVM_OPC_MAX = 201 +}; + +/* Opcode length initializer, use with something like: + * unsigned char opcode_length[JVM_OPC_MAX+1] = JVM_OPCODE_LENGTH_INITIALIZER; + */ +#define JVM_OPCODE_LENGTH_INITIALIZER { \ + 1, /* nop */ \ + 1, /* aconst_null */ \ + 1, /* iconst_m1 */ \ + 1, /* iconst_0 */ \ + 1, /* iconst_1 */ \ + 1, /* iconst_2 */ \ + 1, /* iconst_3 */ \ + 1, /* iconst_4 */ \ + 1, /* iconst_5 */ \ + 1, /* lconst_0 */ \ + 1, /* lconst_1 */ \ + 1, /* fconst_0 */ \ + 1, /* fconst_1 */ \ + 1, /* fconst_2 */ \ + 1, /* dconst_0 */ \ + 1, /* dconst_1 */ \ + 2, /* bipush */ \ + 3, /* sipush */ \ + 2, /* ldc */ \ + 3, /* ldc_w */ \ + 3, /* ldc2_w */ \ + 2, /* iload */ \ + 2, /* lload */ \ + 2, /* fload */ \ + 2, /* dload */ \ + 2, /* aload */ \ + 1, /* iload_0 */ \ + 1, /* iload_1 */ \ + 1, /* iload_2 */ \ + 1, /* iload_3 */ \ + 1, /* lload_0 */ \ + 1, /* lload_1 */ \ + 1, /* lload_2 */ \ + 1, /* lload_3 */ \ + 1, /* fload_0 */ \ + 1, /* fload_1 */ \ + 1, /* fload_2 */ \ + 1, /* fload_3 */ \ + 1, /* dload_0 */ \ + 1, /* dload_1 */ \ + 1, /* dload_2 */ \ + 1, /* dload_3 */ \ + 1, /* aload_0 */ \ + 1, /* aload_1 */ \ + 1, /* aload_2 */ \ + 1, /* aload_3 */ \ + 1, /* iaload */ \ + 1, /* laload */ \ + 1, /* faload */ \ + 1, /* daload */ \ + 1, /* aaload */ \ + 1, /* baload */ \ + 1, /* caload */ \ + 1, /* saload */ \ + 2, /* istore */ \ + 2, /* lstore */ \ + 2, /* fstore */ \ + 2, /* dstore */ \ + 2, /* astore */ \ + 1, /* istore_0 */ \ + 1, /* istore_1 */ \ + 1, /* istore_2 */ \ + 1, /* istore_3 */ \ + 1, /* lstore_0 */ \ + 1, /* lstore_1 */ \ + 1, /* lstore_2 */ \ + 1, /* lstore_3 */ \ + 1, /* fstore_0 */ \ + 1, /* fstore_1 */ \ + 1, /* fstore_2 */ \ + 1, /* fstore_3 */ \ + 1, /* dstore_0 */ \ + 1, /* dstore_1 */ \ + 1, /* dstore_2 */ \ + 1, /* dstore_3 */ \ + 1, /* astore_0 */ \ + 1, /* astore_1 */ \ + 1, /* astore_2 */ \ + 1, /* astore_3 */ \ + 1, /* iastore */ \ + 1, /* lastore */ \ + 1, /* fastore */ \ + 1, /* dastore */ \ + 1, /* aastore */ \ + 1, /* bastore */ \ + 1, /* castore */ \ + 1, /* sastore */ \ + 1, /* pop */ \ + 1, /* pop2 */ \ + 1, /* dup */ \ + 1, /* dup_x1 */ \ + 1, /* dup_x2 */ \ + 1, /* dup2 */ \ + 1, /* dup2_x1 */ \ + 1, /* dup2_x2 */ \ + 1, /* swap */ \ + 1, /* iadd */ \ + 1, /* ladd */ \ + 1, /* fadd */ \ + 1, /* dadd */ \ + 1, /* isub */ \ + 1, /* lsub */ \ + 1, /* fsub */ \ + 1, /* dsub */ \ + 1, /* imul */ \ + 1, /* lmul */ \ + 1, /* fmul */ \ + 1, /* dmul */ \ + 1, /* idiv */ \ + 1, /* ldiv */ \ + 1, /* fdiv */ \ + 1, /* ddiv */ \ + 1, /* irem */ \ + 1, /* lrem */ \ + 1, /* frem */ \ + 1, /* drem */ \ + 1, /* ineg */ \ + 1, /* lneg */ \ + 1, /* fneg */ \ + 1, /* dneg */ \ + 1, /* ishl */ \ + 1, /* lshl */ \ + 1, /* ishr */ \ + 1, /* lshr */ \ + 1, /* iushr */ \ + 1, /* lushr */ \ + 1, /* iand */ \ + 1, /* land */ \ + 1, /* ior */ \ + 1, /* lor */ \ + 1, /* ixor */ \ + 1, /* lxor */ \ + 3, /* iinc */ \ + 1, /* i2l */ \ + 1, /* i2f */ \ + 1, /* i2d */ \ + 1, /* l2i */ \ + 1, /* l2f */ \ + 1, /* l2d */ \ + 1, /* f2i */ \ + 1, /* f2l */ \ + 1, /* f2d */ \ + 1, /* d2i */ \ + 1, /* d2l */ \ + 1, /* d2f */ \ + 1, /* i2b */ \ + 1, /* i2c */ \ + 1, /* i2s */ \ + 1, /* lcmp */ \ + 1, /* fcmpl */ \ + 1, /* fcmpg */ \ + 1, /* dcmpl */ \ + 1, /* dcmpg */ \ + 3, /* ifeq */ \ + 3, /* ifne */ \ + 3, /* iflt */ \ + 3, /* ifge */ \ + 3, /* ifgt */ \ + 3, /* ifle */ \ + 3, /* if_icmpeq */ \ + 3, /* if_icmpne */ \ + 3, /* if_icmplt */ \ + 3, /* if_icmpge */ \ + 3, /* if_icmpgt */ \ + 3, /* if_icmple */ \ + 3, /* if_acmpeq */ \ + 3, /* if_acmpne */ \ + 3, /* goto */ \ + 3, /* jsr */ \ + 2, /* ret */ \ + 99, /* tableswitch */ \ + 99, /* lookupswitch */ \ + 1, /* ireturn */ \ + 1, /* lreturn */ \ + 1, /* freturn */ \ + 1, /* dreturn */ \ + 1, /* areturn */ \ + 1, /* return */ \ + 3, /* getstatic */ \ + 3, /* putstatic */ \ + 3, /* getfield */ \ + 3, /* putfield */ \ + 3, /* invokevirtual */ \ + 3, /* invokespecial */ \ + 3, /* invokestatic */ \ + 5, /* invokeinterface */ \ + 5, /* invokedynamic */ \ + 3, /* new */ \ + 2, /* newarray */ \ + 3, /* anewarray */ \ + 1, /* arraylength */ \ + 1, /* athrow */ \ + 3, /* checkcast */ \ + 3, /* instanceof */ \ + 1, /* monitorenter */ \ + 1, /* monitorexit */ \ + 0, /* wide */ \ + 4, /* multianewarray */ \ + 3, /* ifnull */ \ + 3, /* ifnonnull */ \ + 5, /* goto_w */ \ + 5 /* jsr_w */ \ +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* CLASSFILE_CONSTANTS */ diff --git a/SlinkyNative/include/jdk/jawt.h b/SlinkyNative/include/jdk/jawt.h new file mode 100644 index 0000000..e0f682f --- /dev/null +++ b/SlinkyNative/include/jdk/jawt.h @@ -0,0 +1,299 @@ +/* + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JAWT_H_ +#define _JAVASOFT_JAWT_H_ + +#include "jni.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * AWT native interface (new in JDK 1.3) + * + * The AWT native interface allows a native C or C++ application a means + * by which to access native structures in AWT. This is to facilitate moving + * legacy C and C++ applications to Java and to target the needs of the + * community who, at present, wish to do their own native rendering to canvases + * for performance reasons. Standard extensions such as Java3D also require a + * means to access the underlying native data structures of AWT. + * + * There may be future extensions to this API depending on demand. + * + * A VM does not have to implement this API in order to pass the JCK. + * It is recommended, however, that this API is implemented on VMs that support + * standard extensions, such as Java3D. + * + * Since this is a native API, any program which uses it cannot be considered + * 100% pure java. + */ + +/* + * AWT Native Drawing Surface (JAWT_DrawingSurface). + * + * For each platform, there is a native drawing surface structure. This + * platform-specific structure can be found in jawt_md.h. It is recommended + * that additional platforms follow the same model. It is also recommended + * that VMs on Win32 and Solaris support the existing structures in jawt_md.h. + * + ******************* + * EXAMPLE OF USAGE: + ******************* + * + * In Win32, a programmer wishes to access the HWND of a canvas to perform + * native rendering into it. The programmer has declared the paint() method + * for their canvas subclass to be native: + * + * + * MyCanvas.java: + * + * import java.awt.*; + * + * public class MyCanvas extends Canvas { + * + * static { + * System.loadLibrary("mylib"); + * } + * + * public native void paint(Graphics g); + * } + * + * + * myfile.c: + * + * #include "jawt_md.h" + * #include + * + * JNIEXPORT void JNICALL + * Java_MyCanvas_paint(JNIEnv* env, jobject canvas, jobject graphics) + * { + * JAWT awt; + * JAWT_DrawingSurface* ds; + * JAWT_DrawingSurfaceInfo* dsi; + * JAWT_Win32DrawingSurfaceInfo* dsi_win; + * jboolean result; + * jint lock; + * + * // Get the AWT + * awt.version = JAWT_VERSION_1_3; + * result = JAWT_GetAWT(env, &awt); + * assert(result != JNI_FALSE); + * + * // Get the drawing surface + * ds = awt.GetDrawingSurface(env, canvas); + * assert(ds != NULL); + * + * // Lock the drawing surface + * lock = ds->Lock(ds); + * assert((lock & JAWT_LOCK_ERROR) == 0); + * + * // Get the drawing surface info + * dsi = ds->GetDrawingSurfaceInfo(ds); + * + * // Get the platform-specific drawing info + * dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo; + * + * ////////////////////////////// + * // !!! DO PAINTING HERE !!! // + * ////////////////////////////// + * + * // Free the drawing surface info + * ds->FreeDrawingSurfaceInfo(dsi); + * + * // Unlock the drawing surface + * ds->Unlock(ds); + * + * // Free the drawing surface + * awt.FreeDrawingSurface(ds); + * } + * + */ + +/* + * JAWT_Rectangle + * Structure for a native rectangle. + */ +typedef struct jawt_Rectangle { + jint x; + jint y; + jint width; + jint height; +} JAWT_Rectangle; + +struct jawt_DrawingSurface; + +/* + * JAWT_DrawingSurfaceInfo + * Structure for containing the underlying drawing information of a component. + */ +typedef struct jawt_DrawingSurfaceInfo { + /* + * Pointer to the platform-specific information. This can be safely + * cast to a JAWT_Win32DrawingSurfaceInfo on Windows or a + * JAWT_X11DrawingSurfaceInfo on Solaris. On Mac OS X this is a + * pointer to a NSObject that conforms to the JAWT_SurfaceLayers + * protocol. See jawt_md.h for details. + */ + void* platformInfo; + /* Cached pointer to the underlying drawing surface */ + struct jawt_DrawingSurface* ds; + /* Bounding rectangle of the drawing surface */ + JAWT_Rectangle bounds; + /* Number of rectangles in the clip */ + jint clipSize; + /* Clip rectangle array */ + JAWT_Rectangle* clip; +} JAWT_DrawingSurfaceInfo; + +#define JAWT_LOCK_ERROR 0x00000001 +#define JAWT_LOCK_CLIP_CHANGED 0x00000002 +#define JAWT_LOCK_BOUNDS_CHANGED 0x00000004 +#define JAWT_LOCK_SURFACE_CHANGED 0x00000008 + +/* + * JAWT_DrawingSurface + * Structure for containing the underlying drawing information of a component. + * All operations on a JAWT_DrawingSurface MUST be performed from the same + * thread as the call to GetDrawingSurface. + */ +typedef struct jawt_DrawingSurface { + /* + * Cached reference to the Java environment of the calling thread. + * If Lock(), Unlock(), GetDrawingSurfaceInfo() or + * FreeDrawingSurfaceInfo() are called from a different thread, + * this data member should be set before calling those functions. + */ + JNIEnv* env; + /* Cached reference to the target object */ + jobject target; + /* + * Lock the surface of the target component for native rendering. + * When finished drawing, the surface must be unlocked with + * Unlock(). This function returns a bitmask with one or more of the + * following values: + * + * JAWT_LOCK_ERROR - When an error has occurred and the surface could not + * be locked. + * + * JAWT_LOCK_CLIP_CHANGED - When the clip region has changed. + * + * JAWT_LOCK_BOUNDS_CHANGED - When the bounds of the surface have changed. + * + * JAWT_LOCK_SURFACE_CHANGED - When the surface itself has changed + */ + jint (JNICALL *Lock) + (struct jawt_DrawingSurface* ds); + /* + * Get the drawing surface info. + * The value returned may be cached, but the values may change if + * additional calls to Lock() or Unlock() are made. + * Lock() must be called before this can return a valid value. + * Returns NULL if an error has occurred. + * When finished with the returned value, FreeDrawingSurfaceInfo must be + * called. + */ + JAWT_DrawingSurfaceInfo* (JNICALL *GetDrawingSurfaceInfo) + (struct jawt_DrawingSurface* ds); + /* + * Free the drawing surface info. + */ + void (JNICALL *FreeDrawingSurfaceInfo) + (JAWT_DrawingSurfaceInfo* dsi); + /* + * Unlock the drawing surface of the target component for native rendering. + */ + void (JNICALL *Unlock) + (struct jawt_DrawingSurface* ds); +} JAWT_DrawingSurface; + +/* + * JAWT + * Structure for containing native AWT functions. + */ +typedef struct jawt { + /* + * Version of this structure. This must always be set before + * calling JAWT_GetAWT() + */ + jint version; + /* + * Return a drawing surface from a target jobject. This value + * may be cached. + * Returns NULL if an error has occurred. + * Target must be a java.awt.Component (should be a Canvas + * or Window for native rendering). + * FreeDrawingSurface() must be called when finished with the + * returned JAWT_DrawingSurface. + */ + JAWT_DrawingSurface* (JNICALL *GetDrawingSurface) + (JNIEnv* env, jobject target); + /* + * Free the drawing surface allocated in GetDrawingSurface. + */ + void (JNICALL *FreeDrawingSurface) + (JAWT_DrawingSurface* ds); + /* + * Since 1.4 + * Locks the entire AWT for synchronization purposes + */ + void (JNICALL *Lock)(JNIEnv* env); + /* + * Since 1.4 + * Unlocks the entire AWT for synchronization purposes + */ + void (JNICALL *Unlock)(JNIEnv* env); + /* + * Since 1.4 + * Returns a reference to a java.awt.Component from a native + * platform handle. On Windows, this corresponds to an HWND; + * on Solaris and Linux, this is a Drawable. For other platforms, + * see the appropriate machine-dependent header file for a description. + * The reference returned by this function is a local + * reference that is only valid in this environment. + * This function returns a NULL reference if no component could be + * found with matching platform information. + */ + jobject (JNICALL *GetComponent)(JNIEnv* env, void* platformInfo); + +} JAWT; + +/* + * Get the AWT native structure. This function returns JNI_FALSE if + * an error occurs. + */ +_JNI_IMPORT_OR_EXPORT_ +jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt); + +#define JAWT_VERSION_1_3 0x00010003 +#define JAWT_VERSION_1_4 0x00010004 +#define JAWT_VERSION_1_7 0x00010007 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* !_JAVASOFT_JAWT_H_ */ diff --git a/SlinkyNative/include/jdk/jdwpTransport.h b/SlinkyNative/include/jdk/jdwpTransport.h new file mode 100644 index 0000000..32ccdea --- /dev/null +++ b/SlinkyNative/include/jdk/jdwpTransport.h @@ -0,0 +1,259 @@ +/* + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Java Debug Wire Protocol Transport Service Provider Interface. + */ + +#ifndef JDWPTRANSPORT_H +#define JDWPTRANSPORT_H + +#include "jni.h" + +enum { + JDWPTRANSPORT_VERSION_1_0 = 0x00010000 +}; + +#ifdef __cplusplus +extern "C" { +#endif + +struct jdwpTransportNativeInterface_; + +struct _jdwpTransportEnv; + +#ifdef __cplusplus +typedef _jdwpTransportEnv jdwpTransportEnv; +#else +typedef const struct jdwpTransportNativeInterface_ *jdwpTransportEnv; +#endif /* __cplusplus */ + +/* + * Errors. Universal errors with JVMTI/JVMDI equivalents keep the + * values the same. + */ +typedef enum { + JDWPTRANSPORT_ERROR_NONE = 0, + JDWPTRANSPORT_ERROR_ILLEGAL_ARGUMENT = 103, + JDWPTRANSPORT_ERROR_OUT_OF_MEMORY = 110, + JDWPTRANSPORT_ERROR_INTERNAL = 113, + JDWPTRANSPORT_ERROR_ILLEGAL_STATE = 201, + JDWPTRANSPORT_ERROR_IO_ERROR = 202, + JDWPTRANSPORT_ERROR_TIMEOUT = 203, + JDWPTRANSPORT_ERROR_MSG_NOT_AVAILABLE = 204 +} jdwpTransportError; + + +/* + * Structure to define capabilities + */ +typedef struct { + unsigned int can_timeout_attach :1; + unsigned int can_timeout_accept :1; + unsigned int can_timeout_handshake :1; + unsigned int reserved3 :1; + unsigned int reserved4 :1; + unsigned int reserved5 :1; + unsigned int reserved6 :1; + unsigned int reserved7 :1; + unsigned int reserved8 :1; + unsigned int reserved9 :1; + unsigned int reserved10 :1; + unsigned int reserved11 :1; + unsigned int reserved12 :1; + unsigned int reserved13 :1; + unsigned int reserved14 :1; + unsigned int reserved15 :1; +} JDWPTransportCapabilities; + + +/* + * Structures to define packet layout. + * + * See: http://java.sun.com/j2se/1.5/docs/guide/jpda/jdwp-spec.html + */ + +enum { + /* + * If additional flags are added that apply to jdwpCmdPacket, + * then debugLoop.c: reader() will need to be updated to + * accept more than JDWPTRANSPORT_FLAGS_NONE. + */ + JDWPTRANSPORT_FLAGS_NONE = 0x0, + JDWPTRANSPORT_FLAGS_REPLY = 0x80 +}; + +typedef struct { + jint len; + jint id; + jbyte flags; + jbyte cmdSet; + jbyte cmd; + jbyte *data; +} jdwpCmdPacket; + +typedef struct { + jint len; + jint id; + jbyte flags; + jshort errorCode; + jbyte *data; +} jdwpReplyPacket; + +typedef struct { + union { + jdwpCmdPacket cmd; + jdwpReplyPacket reply; + } type; +} jdwpPacket; + +/* + * JDWP functions called by the transport. + */ +typedef struct jdwpTransportCallback { + void *(*alloc)(jint numBytes); /* Call this for all allocations */ + void (*free)(void *buffer); /* Call this for all deallocations */ +} jdwpTransportCallback; + +typedef jint (JNICALL *jdwpTransport_OnLoad_t)(JavaVM *jvm, + jdwpTransportCallback *callback, + jint version, + jdwpTransportEnv** env); + + + +/* Function Interface */ + +struct jdwpTransportNativeInterface_ { + /* 1 : RESERVED */ + void *reserved1; + + /* 2 : Get Capabilities */ + jdwpTransportError (JNICALL *GetCapabilities)(jdwpTransportEnv* env, + JDWPTransportCapabilities *capabilities_ptr); + + /* 3 : Attach */ + jdwpTransportError (JNICALL *Attach)(jdwpTransportEnv* env, + const char* address, + jlong attach_timeout, + jlong handshake_timeout); + + /* 4: StartListening */ + jdwpTransportError (JNICALL *StartListening)(jdwpTransportEnv* env, + const char* address, + char** actual_address); + + /* 5: StopListening */ + jdwpTransportError (JNICALL *StopListening)(jdwpTransportEnv* env); + + /* 6: Accept */ + jdwpTransportError (JNICALL *Accept)(jdwpTransportEnv* env, + jlong accept_timeout, + jlong handshake_timeout); + + /* 7: IsOpen */ + jboolean (JNICALL *IsOpen)(jdwpTransportEnv* env); + + /* 8: Close */ + jdwpTransportError (JNICALL *Close)(jdwpTransportEnv* env); + + /* 9: ReadPacket */ + jdwpTransportError (JNICALL *ReadPacket)(jdwpTransportEnv* env, + jdwpPacket *pkt); + + /* 10: Write Packet */ + jdwpTransportError (JNICALL *WritePacket)(jdwpTransportEnv* env, + const jdwpPacket* pkt); + + /* 11: GetLastError */ + jdwpTransportError (JNICALL *GetLastError)(jdwpTransportEnv* env, + char** error); + +}; + + +/* + * Use inlined functions so that C++ code can use syntax such as + * env->Attach("mymachine:5000", 10*1000, 0); + * + * rather than using C's :- + * + * (*env)->Attach(env, "mymachine:5000", 10*1000, 0); + */ +struct _jdwpTransportEnv { + const struct jdwpTransportNativeInterface_ *functions; +#ifdef __cplusplus + + jdwpTransportError GetCapabilities(JDWPTransportCapabilities *capabilities_ptr) { + return functions->GetCapabilities(this, capabilities_ptr); + } + + jdwpTransportError Attach(const char* address, jlong attach_timeout, + jlong handshake_timeout) { + return functions->Attach(this, address, attach_timeout, handshake_timeout); + } + + jdwpTransportError StartListening(const char* address, + char** actual_address) { + return functions->StartListening(this, address, actual_address); + } + + jdwpTransportError StopListening(void) { + return functions->StopListening(this); + } + + jdwpTransportError Accept(jlong accept_timeout, jlong handshake_timeout) { + return functions->Accept(this, accept_timeout, handshake_timeout); + } + + jboolean IsOpen(void) { + return functions->IsOpen(this); + } + + jdwpTransportError Close(void) { + return functions->Close(this); + } + + jdwpTransportError ReadPacket(jdwpPacket *pkt) { + return functions->ReadPacket(this, pkt); + } + + jdwpTransportError WritePacket(const jdwpPacket* pkt) { + return functions->WritePacket(this, pkt); + } + + jdwpTransportError GetLastError(char** error) { + return functions->GetLastError(this, error); + } + + +#endif /* __cplusplus */ +}; + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* JDWPTRANSPORT_H */ diff --git a/SlinkyNative/include/jdk/jni.h b/SlinkyNative/include/jdk/jni.h new file mode 100644 index 0000000..2e83cb7 --- /dev/null +++ b/SlinkyNative/include/jdk/jni.h @@ -0,0 +1,1960 @@ +/* + * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * We used part of Netscape's Java Runtime Interface (JRI) as the starting + * point of our design and implementation. + */ + +/****************************************************************************** + * Java Runtime Interface + * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. + *****************************************************************************/ + +#ifndef _JAVASOFT_JNI_H_ +#define _JAVASOFT_JNI_H_ + +#include +#include + +/* jni_md.h contains the machine-dependent typedefs for jbyte, jint + and jlong */ + +#include "jni_md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * JNI Types + */ + +#ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H + +typedef unsigned char jboolean; +typedef unsigned short jchar; +typedef short jshort; +typedef float jfloat; +typedef double jdouble; + +typedef jint jsize; + +#ifdef __cplusplus + +class _jobject {}; +class _jclass : public _jobject {}; +class _jthrowable : public _jobject {}; +class _jstring : public _jobject {}; +class _jarray : public _jobject {}; +class _jbooleanArray : public _jarray {}; +class _jbyteArray : public _jarray {}; +class _jcharArray : public _jarray {}; +class _jshortArray : public _jarray {}; +class _jintArray : public _jarray {}; +class _jlongArray : public _jarray {}; +class _jfloatArray : public _jarray {}; +class _jdoubleArray : public _jarray {}; +class _jobjectArray : public _jarray {}; + +typedef _jobject *jobject; +typedef _jclass *jclass; +typedef _jthrowable *jthrowable; +typedef _jstring *jstring; +typedef _jarray *jarray; +typedef _jbooleanArray *jbooleanArray; +typedef _jbyteArray *jbyteArray; +typedef _jcharArray *jcharArray; +typedef _jshortArray *jshortArray; +typedef _jintArray *jintArray; +typedef _jlongArray *jlongArray; +typedef _jfloatArray *jfloatArray; +typedef _jdoubleArray *jdoubleArray; +typedef _jobjectArray *jobjectArray; + +#else + +struct _jobject; + +typedef struct _jobject *jobject; +typedef jobject jclass; +typedef jobject jthrowable; +typedef jobject jstring; +typedef jobject jarray; +typedef jarray jbooleanArray; +typedef jarray jbyteArray; +typedef jarray jcharArray; +typedef jarray jshortArray; +typedef jarray jintArray; +typedef jarray jlongArray; +typedef jarray jfloatArray; +typedef jarray jdoubleArray; +typedef jarray jobjectArray; + +#endif + +typedef jobject jweak; + +typedef union jvalue { + jboolean z; + jbyte b; + jchar c; + jshort s; + jint i; + jlong j; + jfloat f; + jdouble d; + jobject l; +} jvalue; + +struct _jfieldID; +typedef struct _jfieldID *jfieldID; + +struct _jmethodID; +typedef struct _jmethodID *jmethodID; + +/* Return values from jobjectRefType */ +typedef enum _jobjectType { + JNIInvalidRefType = 0, + JNILocalRefType = 1, + JNIGlobalRefType = 2, + JNIWeakGlobalRefType = 3 +} jobjectRefType; + + +#endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ + +/* + * jboolean constants + */ + +#define JNI_FALSE 0 +#define JNI_TRUE 1 + +/* + * possible return values for JNI functions. + */ + +#define JNI_OK 0 /* success */ +#define JNI_ERR (-1) /* unknown error */ +#define JNI_EDETACHED (-2) /* thread detached from the VM */ +#define JNI_EVERSION (-3) /* JNI version error */ +#define JNI_ENOMEM (-4) /* not enough memory */ +#define JNI_EEXIST (-5) /* VM already created */ +#define JNI_EINVAL (-6) /* invalid arguments */ + +/* + * used in ReleaseScalarArrayElements + */ + +#define JNI_COMMIT 1 +#define JNI_ABORT 2 + +/* + * used in RegisterNatives to describe native method name, signature, + * and function pointer. + */ + +typedef struct { + char *name; + char *signature; + void *fnPtr; +} JNINativeMethod; + +/* + * JNI Native Method Interface. + */ + +struct JNINativeInterface_; + +struct JNIEnv_; + +#ifdef __cplusplus +typedef JNIEnv_ JNIEnv; +#else +typedef const struct JNINativeInterface_ *JNIEnv; +#endif + +/* + * JNI Invocation Interface. + */ + +struct JNIInvokeInterface_; + +struct JavaVM_; + +#ifdef __cplusplus +typedef JavaVM_ JavaVM; +#else +typedef const struct JNIInvokeInterface_ *JavaVM; +#endif + +struct JNINativeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + void *reserved3; + jint (JNICALL *GetVersion)(JNIEnv *env); + + jclass (JNICALL *DefineClass) + (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, + jsize len); + jclass (JNICALL *FindClass) + (JNIEnv *env, const char *name); + + jmethodID (JNICALL *FromReflectedMethod) + (JNIEnv *env, jobject method); + jfieldID (JNICALL *FromReflectedField) + (JNIEnv *env, jobject field); + + jobject (JNICALL *ToReflectedMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); + + jclass (JNICALL *GetSuperclass) + (JNIEnv *env, jclass sub); + jboolean (JNICALL *IsAssignableFrom) + (JNIEnv *env, jclass sub, jclass sup); + + jobject (JNICALL *ToReflectedField) + (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); + + jint (JNICALL *Throw) + (JNIEnv *env, jthrowable obj); + jint (JNICALL *ThrowNew) + (JNIEnv *env, jclass clazz, const char *msg); + jthrowable (JNICALL *ExceptionOccurred) + (JNIEnv *env); + void (JNICALL *ExceptionDescribe) + (JNIEnv *env); + void (JNICALL *ExceptionClear) + (JNIEnv *env); + void (JNICALL *FatalError) + (JNIEnv *env, const char *msg); + + jint (JNICALL *PushLocalFrame) + (JNIEnv *env, jint capacity); + jobject (JNICALL *PopLocalFrame) + (JNIEnv *env, jobject result); + + jobject (JNICALL *NewGlobalRef) + (JNIEnv *env, jobject lobj); + void (JNICALL *DeleteGlobalRef) + (JNIEnv *env, jobject gref); + void (JNICALL *DeleteLocalRef) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsSameObject) + (JNIEnv *env, jobject obj1, jobject obj2); + jobject (JNICALL *NewLocalRef) + (JNIEnv *env, jobject ref); + jint (JNICALL *EnsureLocalCapacity) + (JNIEnv *env, jint capacity); + + jobject (JNICALL *AllocObject) + (JNIEnv *env, jclass clazz); + jobject (JNICALL *NewObject) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *NewObjectV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *NewObjectA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jclass (JNICALL *GetObjectClass) + (JNIEnv *env, jobject obj); + jboolean (JNICALL *IsInstanceOf) + (JNIEnv *env, jobject obj, jclass clazz); + + jmethodID (JNICALL *GetMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallObjectMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jobject (JNICALL *CallObjectMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jobject (JNICALL *CallObjectMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jboolean (JNICALL *CallBooleanMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jboolean (JNICALL *CallBooleanMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jboolean (JNICALL *CallBooleanMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jbyte (JNICALL *CallByteMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jbyte (JNICALL *CallByteMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jbyte (JNICALL *CallByteMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallCharMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jchar (JNICALL *CallCharMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jchar (JNICALL *CallCharMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallShortMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jshort (JNICALL *CallShortMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jshort (JNICALL *CallShortMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallIntMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jint (JNICALL *CallIntMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jint (JNICALL *CallIntMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallLongMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jlong (JNICALL *CallLongMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jlong (JNICALL *CallLongMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallFloatMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jfloat (JNICALL *CallFloatMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jfloat (JNICALL *CallFloatMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallDoubleMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + jdouble (JNICALL *CallDoubleMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + jdouble (JNICALL *CallDoubleMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallVoidMethod) + (JNIEnv *env, jobject obj, jmethodID methodID, ...); + void (JNICALL *CallVoidMethodV) + (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); + void (JNICALL *CallVoidMethodA) + (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); + + jobject (JNICALL *CallNonvirtualObjectMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallNonvirtualObjectMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jobject (JNICALL *CallNonvirtualObjectMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jboolean (JNICALL *CallNonvirtualBooleanMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallNonvirtualBooleanMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jboolean (JNICALL *CallNonvirtualBooleanMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jbyte (JNICALL *CallNonvirtualByteMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallNonvirtualByteMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jbyte (JNICALL *CallNonvirtualByteMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jchar (JNICALL *CallNonvirtualCharMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallNonvirtualCharMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jchar (JNICALL *CallNonvirtualCharMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jshort (JNICALL *CallNonvirtualShortMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallNonvirtualShortMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jshort (JNICALL *CallNonvirtualShortMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jint (JNICALL *CallNonvirtualIntMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallNonvirtualIntMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jint (JNICALL *CallNonvirtualIntMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jlong (JNICALL *CallNonvirtualLongMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallNonvirtualLongMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jlong (JNICALL *CallNonvirtualLongMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jfloat (JNICALL *CallNonvirtualFloatMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallNonvirtualFloatMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jfloat (JNICALL *CallNonvirtualFloatMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + jdouble (JNICALL *CallNonvirtualDoubleMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallNonvirtualDoubleMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + jdouble (JNICALL *CallNonvirtualDoubleMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue *args); + + void (JNICALL *CallNonvirtualVoidMethod) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); + void (JNICALL *CallNonvirtualVoidMethodV) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + va_list args); + void (JNICALL *CallNonvirtualVoidMethodA) + (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, + const jvalue * args); + + jfieldID (JNICALL *GetFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *GetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jboolean (JNICALL *GetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jbyte (JNICALL *GetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jchar (JNICALL *GetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jshort (JNICALL *GetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jint (JNICALL *GetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jlong (JNICALL *GetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jfloat (JNICALL *GetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + jdouble (JNICALL *GetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID); + + void (JNICALL *SetObjectField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); + void (JNICALL *SetBooleanField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); + void (JNICALL *SetByteField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); + void (JNICALL *SetCharField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); + void (JNICALL *SetShortField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); + void (JNICALL *SetIntField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); + void (JNICALL *SetLongField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); + void (JNICALL *SetFloatField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); + void (JNICALL *SetDoubleField) + (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); + + jmethodID (JNICALL *GetStaticMethodID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + + jobject (JNICALL *CallStaticObjectMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jobject (JNICALL *CallStaticObjectMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jobject (JNICALL *CallStaticObjectMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jboolean (JNICALL *CallStaticBooleanMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jboolean (JNICALL *CallStaticBooleanMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jboolean (JNICALL *CallStaticBooleanMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jbyte (JNICALL *CallStaticByteMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jbyte (JNICALL *CallStaticByteMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jbyte (JNICALL *CallStaticByteMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jchar (JNICALL *CallStaticCharMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jchar (JNICALL *CallStaticCharMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jchar (JNICALL *CallStaticCharMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jshort (JNICALL *CallStaticShortMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jshort (JNICALL *CallStaticShortMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jshort (JNICALL *CallStaticShortMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jint (JNICALL *CallStaticIntMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jint (JNICALL *CallStaticIntMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jint (JNICALL *CallStaticIntMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jlong (JNICALL *CallStaticLongMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jlong (JNICALL *CallStaticLongMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jlong (JNICALL *CallStaticLongMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jfloat (JNICALL *CallStaticFloatMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jfloat (JNICALL *CallStaticFloatMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jfloat (JNICALL *CallStaticFloatMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + jdouble (JNICALL *CallStaticDoubleMethod) + (JNIEnv *env, jclass clazz, jmethodID methodID, ...); + jdouble (JNICALL *CallStaticDoubleMethodV) + (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); + jdouble (JNICALL *CallStaticDoubleMethodA) + (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); + + void (JNICALL *CallStaticVoidMethod) + (JNIEnv *env, jclass cls, jmethodID methodID, ...); + void (JNICALL *CallStaticVoidMethodV) + (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); + void (JNICALL *CallStaticVoidMethodA) + (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); + + jfieldID (JNICALL *GetStaticFieldID) + (JNIEnv *env, jclass clazz, const char *name, const char *sig); + jobject (JNICALL *GetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jboolean (JNICALL *GetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jbyte (JNICALL *GetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jchar (JNICALL *GetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jshort (JNICALL *GetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jint (JNICALL *GetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jlong (JNICALL *GetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jfloat (JNICALL *GetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + jdouble (JNICALL *GetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID); + + void (JNICALL *SetStaticObjectField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); + void (JNICALL *SetStaticBooleanField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); + void (JNICALL *SetStaticByteField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); + void (JNICALL *SetStaticCharField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); + void (JNICALL *SetStaticShortField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); + void (JNICALL *SetStaticIntField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); + void (JNICALL *SetStaticLongField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); + void (JNICALL *SetStaticFloatField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); + void (JNICALL *SetStaticDoubleField) + (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); + + jstring (JNICALL *NewString) + (JNIEnv *env, const jchar *unicode, jsize len); + jsize (JNICALL *GetStringLength) + (JNIEnv *env, jstring str); + const jchar *(JNICALL *GetStringChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringChars) + (JNIEnv *env, jstring str, const jchar *chars); + + jstring (JNICALL *NewStringUTF) + (JNIEnv *env, const char *utf); + jsize (JNICALL *GetStringUTFLength) + (JNIEnv *env, jstring str); + const char* (JNICALL *GetStringUTFChars) + (JNIEnv *env, jstring str, jboolean *isCopy); + void (JNICALL *ReleaseStringUTFChars) + (JNIEnv *env, jstring str, const char* chars); + + + jsize (JNICALL *GetArrayLength) + (JNIEnv *env, jarray array); + + jobjectArray (JNICALL *NewObjectArray) + (JNIEnv *env, jsize len, jclass clazz, jobject init); + jobject (JNICALL *GetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index); + void (JNICALL *SetObjectArrayElement) + (JNIEnv *env, jobjectArray array, jsize index, jobject val); + + jbooleanArray (JNICALL *NewBooleanArray) + (JNIEnv *env, jsize len); + jbyteArray (JNICALL *NewByteArray) + (JNIEnv *env, jsize len); + jcharArray (JNICALL *NewCharArray) + (JNIEnv *env, jsize len); + jshortArray (JNICALL *NewShortArray) + (JNIEnv *env, jsize len); + jintArray (JNICALL *NewIntArray) + (JNIEnv *env, jsize len); + jlongArray (JNICALL *NewLongArray) + (JNIEnv *env, jsize len); + jfloatArray (JNICALL *NewFloatArray) + (JNIEnv *env, jsize len); + jdoubleArray (JNICALL *NewDoubleArray) + (JNIEnv *env, jsize len); + + jboolean * (JNICALL *GetBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *isCopy); + jbyte * (JNICALL *GetByteArrayElements) + (JNIEnv *env, jbyteArray array, jboolean *isCopy); + jchar * (JNICALL *GetCharArrayElements) + (JNIEnv *env, jcharArray array, jboolean *isCopy); + jshort * (JNICALL *GetShortArrayElements) + (JNIEnv *env, jshortArray array, jboolean *isCopy); + jint * (JNICALL *GetIntArrayElements) + (JNIEnv *env, jintArray array, jboolean *isCopy); + jlong * (JNICALL *GetLongArrayElements) + (JNIEnv *env, jlongArray array, jboolean *isCopy); + jfloat * (JNICALL *GetFloatArrayElements) + (JNIEnv *env, jfloatArray array, jboolean *isCopy); + jdouble * (JNICALL *GetDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jboolean *isCopy); + + void (JNICALL *ReleaseBooleanArrayElements) + (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); + void (JNICALL *ReleaseByteArrayElements) + (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); + void (JNICALL *ReleaseCharArrayElements) + (JNIEnv *env, jcharArray array, jchar *elems, jint mode); + void (JNICALL *ReleaseShortArrayElements) + (JNIEnv *env, jshortArray array, jshort *elems, jint mode); + void (JNICALL *ReleaseIntArrayElements) + (JNIEnv *env, jintArray array, jint *elems, jint mode); + void (JNICALL *ReleaseLongArrayElements) + (JNIEnv *env, jlongArray array, jlong *elems, jint mode); + void (JNICALL *ReleaseFloatArrayElements) + (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); + void (JNICALL *ReleaseDoubleArrayElements) + (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); + + void (JNICALL *GetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); + void (JNICALL *GetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); + void (JNICALL *GetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); + void (JNICALL *GetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); + void (JNICALL *GetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); + void (JNICALL *GetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); + void (JNICALL *GetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); + void (JNICALL *GetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); + + void (JNICALL *SetBooleanArrayRegion) + (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); + void (JNICALL *SetByteArrayRegion) + (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); + void (JNICALL *SetCharArrayRegion) + (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); + void (JNICALL *SetShortArrayRegion) + (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); + void (JNICALL *SetIntArrayRegion) + (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); + void (JNICALL *SetLongArrayRegion) + (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); + void (JNICALL *SetFloatArrayRegion) + (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); + void (JNICALL *SetDoubleArrayRegion) + (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); + + jint (JNICALL *RegisterNatives) + (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, + jint nMethods); + jint (JNICALL *UnregisterNatives) + (JNIEnv *env, jclass clazz); + + jint (JNICALL *MonitorEnter) + (JNIEnv *env, jobject obj); + jint (JNICALL *MonitorExit) + (JNIEnv *env, jobject obj); + + jint (JNICALL *GetJavaVM) + (JNIEnv *env, JavaVM **vm); + + void (JNICALL *GetStringRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); + void (JNICALL *GetStringUTFRegion) + (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); + + void * (JNICALL *GetPrimitiveArrayCritical) + (JNIEnv *env, jarray array, jboolean *isCopy); + void (JNICALL *ReleasePrimitiveArrayCritical) + (JNIEnv *env, jarray array, void *carray, jint mode); + + const jchar * (JNICALL *GetStringCritical) + (JNIEnv *env, jstring string, jboolean *isCopy); + void (JNICALL *ReleaseStringCritical) + (JNIEnv *env, jstring string, const jchar *cstring); + + jweak (JNICALL *NewWeakGlobalRef) + (JNIEnv *env, jobject obj); + void (JNICALL *DeleteWeakGlobalRef) + (JNIEnv *env, jweak ref); + + jboolean (JNICALL *ExceptionCheck) + (JNIEnv *env); + + jobject (JNICALL *NewDirectByteBuffer) + (JNIEnv* env, void* address, jlong capacity); + void* (JNICALL *GetDirectBufferAddress) + (JNIEnv* env, jobject buf); + jlong (JNICALL *GetDirectBufferCapacity) + (JNIEnv* env, jobject buf); + + /* New JNI 1.6 Features */ + + jobjectRefType (JNICALL *GetObjectRefType) + (JNIEnv* env, jobject obj); +}; + +/* + * We use inlined functions for C++ so that programmers can write: + * + * env->FindClass("java/lang/String") + * + * in C++ rather than: + * + * (*env)->FindClass(env, "java/lang/String") + * + * in C. + */ + +struct JNIEnv_ { + const struct JNINativeInterface_ *functions; +#ifdef __cplusplus + + jint GetVersion() { + return functions->GetVersion(this); + } + jclass DefineClass(const char *name, jobject loader, const jbyte *buf, + jsize len) { + return functions->DefineClass(this, name, loader, buf, len); + } + jclass FindClass(const char *name) { + return functions->FindClass(this, name); + } + jmethodID FromReflectedMethod(jobject method) { + return functions->FromReflectedMethod(this,method); + } + jfieldID FromReflectedField(jobject field) { + return functions->FromReflectedField(this,field); + } + + jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { + return functions->ToReflectedMethod(this, cls, methodID, isStatic); + } + + jclass GetSuperclass(jclass sub) { + return functions->GetSuperclass(this, sub); + } + jboolean IsAssignableFrom(jclass sub, jclass sup) { + return functions->IsAssignableFrom(this, sub, sup); + } + + jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { + return functions->ToReflectedField(this,cls,fieldID,isStatic); + } + + jint Throw(jthrowable obj) { + return functions->Throw(this, obj); + } + jint ThrowNew(jclass clazz, const char *msg) { + return functions->ThrowNew(this, clazz, msg); + } + jthrowable ExceptionOccurred() { + return functions->ExceptionOccurred(this); + } + void ExceptionDescribe() { + functions->ExceptionDescribe(this); + } + void ExceptionClear() { + functions->ExceptionClear(this); + } + void FatalError(const char *msg) { + functions->FatalError(this, msg); + } + + jint PushLocalFrame(jint capacity) { + return functions->PushLocalFrame(this,capacity); + } + jobject PopLocalFrame(jobject result) { + return functions->PopLocalFrame(this,result); + } + + jobject NewGlobalRef(jobject lobj) { + return functions->NewGlobalRef(this,lobj); + } + void DeleteGlobalRef(jobject gref) { + functions->DeleteGlobalRef(this,gref); + } + void DeleteLocalRef(jobject obj) { + functions->DeleteLocalRef(this, obj); + } + + jboolean IsSameObject(jobject obj1, jobject obj2) { + return functions->IsSameObject(this,obj1,obj2); + } + + jobject NewLocalRef(jobject ref) { + return functions->NewLocalRef(this,ref); + } + jint EnsureLocalCapacity(jint capacity) { + return functions->EnsureLocalCapacity(this,capacity); + } + + jobject AllocObject(jclass clazz) { + return functions->AllocObject(this,clazz); + } + jobject NewObject(jclass clazz, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args, methodID); + result = functions->NewObjectV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject NewObjectV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->NewObjectV(this,clazz,methodID,args); + } + jobject NewObjectA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->NewObjectA(this,clazz,methodID,args); + } + + jclass GetObjectClass(jobject obj) { + return functions->GetObjectClass(this,obj); + } + jboolean IsInstanceOf(jobject obj, jclass clazz) { + return functions->IsInstanceOf(this,obj,clazz); + } + + jmethodID GetMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetMethodID(this,clazz,name,sig); + } + + jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallObjectMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jobject CallObjectMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallObjectMethodV(this,obj,methodID,args); + } + jobject CallObjectMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallObjectMethodA(this,obj,methodID,args); + } + + jboolean CallBooleanMethod(jobject obj, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallBooleanMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallBooleanMethodV(this,obj,methodID,args); + } + jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallBooleanMethodA(this,obj,methodID, args); + } + + jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallByteMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jbyte CallByteMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallByteMethodV(this,obj,methodID,args); + } + jbyte CallByteMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallByteMethodA(this,obj,methodID,args); + } + + jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallCharMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jchar CallCharMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallCharMethodV(this,obj,methodID,args); + } + jchar CallCharMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallCharMethodA(this,obj,methodID,args); + } + + jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallShortMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jshort CallShortMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallShortMethodV(this,obj,methodID,args); + } + jshort CallShortMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallShortMethodA(this,obj,methodID,args); + } + + jint CallIntMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallIntMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jint CallIntMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallIntMethodV(this,obj,methodID,args); + } + jint CallIntMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallIntMethodA(this,obj,methodID,args); + } + + jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallLongMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jlong CallLongMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallLongMethodV(this,obj,methodID,args); + } + jlong CallLongMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallLongMethodA(this,obj,methodID,args); + } + + jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallFloatMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jfloat CallFloatMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallFloatMethodV(this,obj,methodID,args); + } + jfloat CallFloatMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallFloatMethodA(this,obj,methodID,args); + } + + jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallDoubleMethodV(this,obj,methodID,args); + va_end(args); + return result; + } + jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, + va_list args) { + return functions->CallDoubleMethodV(this,obj,methodID,args); + } + jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + return functions->CallDoubleMethodA(this,obj,methodID,args); + } + + void CallVoidMethod(jobject obj, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallVoidMethodV(this,obj,methodID,args); + va_end(args); + } + void CallVoidMethodV(jobject obj, jmethodID methodID, + va_list args) { + functions->CallVoidMethodV(this,obj,methodID,args); + } + void CallVoidMethodA(jobject obj, jmethodID methodID, + const jvalue * args) { + functions->CallVoidMethodA(this,obj,methodID,args); + } + + jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualObjectMethodV(this,obj,clazz, + methodID,args); + } + jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualObjectMethodA(this,obj,clazz, + methodID,args); + } + + jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, + methodID,args); + } + jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, + methodID, args); + } + + jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualByteMethodV(this,obj,clazz, + methodID,args); + } + jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualByteMethodA(this,obj,clazz, + methodID,args); + } + + jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualCharMethodV(this,obj,clazz, + methodID,args); + } + jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualCharMethodA(this,obj,clazz, + methodID,args); + } + + jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualShortMethodV(this,obj,clazz, + methodID,args); + } + jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualShortMethodA(this,obj,clazz, + methodID,args); + } + + jint CallNonvirtualIntMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualIntMethodV(this,obj,clazz, + methodID,args); + } + jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualIntMethodA(this,obj,clazz, + methodID,args); + } + + jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallNonvirtualLongMethodV(this,obj,clazz, + methodID,args); + } + jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, + jmethodID methodID, const jvalue * args) { + return functions->CallNonvirtualLongMethodA(this,obj,clazz, + methodID,args); + } + + jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualFloatMethodV(this,obj,clazz, + methodID,args); + } + jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualFloatMethodA(this,obj,clazz, + methodID,args); + } + + jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + va_end(args); + return result; + } + jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, + methodID,args); + } + jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, + methodID,args); + } + + void CallNonvirtualVoidMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + va_end(args); + } + void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, + jmethodID methodID, + va_list args) { + functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); + } + void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, + jmethodID methodID, + const jvalue * args) { + functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); + } + + jfieldID GetFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetFieldID(this,clazz,name,sig); + } + + jobject GetObjectField(jobject obj, jfieldID fieldID) { + return functions->GetObjectField(this,obj,fieldID); + } + jboolean GetBooleanField(jobject obj, jfieldID fieldID) { + return functions->GetBooleanField(this,obj,fieldID); + } + jbyte GetByteField(jobject obj, jfieldID fieldID) { + return functions->GetByteField(this,obj,fieldID); + } + jchar GetCharField(jobject obj, jfieldID fieldID) { + return functions->GetCharField(this,obj,fieldID); + } + jshort GetShortField(jobject obj, jfieldID fieldID) { + return functions->GetShortField(this,obj,fieldID); + } + jint GetIntField(jobject obj, jfieldID fieldID) { + return functions->GetIntField(this,obj,fieldID); + } + jlong GetLongField(jobject obj, jfieldID fieldID) { + return functions->GetLongField(this,obj,fieldID); + } + jfloat GetFloatField(jobject obj, jfieldID fieldID) { + return functions->GetFloatField(this,obj,fieldID); + } + jdouble GetDoubleField(jobject obj, jfieldID fieldID) { + return functions->GetDoubleField(this,obj,fieldID); + } + + void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { + functions->SetObjectField(this,obj,fieldID,val); + } + void SetBooleanField(jobject obj, jfieldID fieldID, + jboolean val) { + functions->SetBooleanField(this,obj,fieldID,val); + } + void SetByteField(jobject obj, jfieldID fieldID, + jbyte val) { + functions->SetByteField(this,obj,fieldID,val); + } + void SetCharField(jobject obj, jfieldID fieldID, + jchar val) { + functions->SetCharField(this,obj,fieldID,val); + } + void SetShortField(jobject obj, jfieldID fieldID, + jshort val) { + functions->SetShortField(this,obj,fieldID,val); + } + void SetIntField(jobject obj, jfieldID fieldID, + jint val) { + functions->SetIntField(this,obj,fieldID,val); + } + void SetLongField(jobject obj, jfieldID fieldID, + jlong val) { + functions->SetLongField(this,obj,fieldID,val); + } + void SetFloatField(jobject obj, jfieldID fieldID, + jfloat val) { + functions->SetFloatField(this,obj,fieldID,val); + } + void SetDoubleField(jobject obj, jfieldID fieldID, + jdouble val) { + functions->SetDoubleField(this,obj,fieldID,val); + } + + jmethodID GetStaticMethodID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticMethodID(this,clazz,name,sig); + } + + jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, + ...) { + va_list args; + jobject result; + va_start(args,methodID); + result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, + va_list args) { + return functions->CallStaticObjectMethodV(this,clazz,methodID,args); + } + jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, + const jvalue *args) { + return functions->CallStaticObjectMethodA(this,clazz,methodID,args); + } + + jboolean CallStaticBooleanMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jboolean result; + va_start(args,methodID); + result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jboolean CallStaticBooleanMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); + } + jboolean CallStaticBooleanMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); + } + + jbyte CallStaticByteMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jbyte result; + va_start(args,methodID); + result = functions->CallStaticByteMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jbyte CallStaticByteMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticByteMethodV(this,clazz,methodID,args); + } + jbyte CallStaticByteMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticByteMethodA(this,clazz,methodID,args); + } + + jchar CallStaticCharMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jchar result; + va_start(args,methodID); + result = functions->CallStaticCharMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jchar CallStaticCharMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticCharMethodV(this,clazz,methodID,args); + } + jchar CallStaticCharMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticCharMethodA(this,clazz,methodID,args); + } + + jshort CallStaticShortMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jshort result; + va_start(args,methodID); + result = functions->CallStaticShortMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jshort CallStaticShortMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticShortMethodV(this,clazz,methodID,args); + } + jshort CallStaticShortMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticShortMethodA(this,clazz,methodID,args); + } + + jint CallStaticIntMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jint result; + va_start(args,methodID); + result = functions->CallStaticIntMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jint CallStaticIntMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticIntMethodV(this,clazz,methodID,args); + } + jint CallStaticIntMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticIntMethodA(this,clazz,methodID,args); + } + + jlong CallStaticLongMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jlong result; + va_start(args,methodID); + result = functions->CallStaticLongMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jlong CallStaticLongMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticLongMethodV(this,clazz,methodID,args); + } + jlong CallStaticLongMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticLongMethodA(this,clazz,methodID,args); + } + + jfloat CallStaticFloatMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jfloat result; + va_start(args,methodID); + result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jfloat CallStaticFloatMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticFloatMethodV(this,clazz,methodID,args); + } + jfloat CallStaticFloatMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticFloatMethodA(this,clazz,methodID,args); + } + + jdouble CallStaticDoubleMethod(jclass clazz, + jmethodID methodID, ...) { + va_list args; + jdouble result; + va_start(args,methodID); + result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + va_end(args); + return result; + } + jdouble CallStaticDoubleMethodV(jclass clazz, + jmethodID methodID, va_list args) { + return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); + } + jdouble CallStaticDoubleMethodA(jclass clazz, + jmethodID methodID, const jvalue *args) { + return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); + } + + void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { + va_list args; + va_start(args,methodID); + functions->CallStaticVoidMethodV(this,cls,methodID,args); + va_end(args); + } + void CallStaticVoidMethodV(jclass cls, jmethodID methodID, + va_list args) { + functions->CallStaticVoidMethodV(this,cls,methodID,args); + } + void CallStaticVoidMethodA(jclass cls, jmethodID methodID, + const jvalue * args) { + functions->CallStaticVoidMethodA(this,cls,methodID,args); + } + + jfieldID GetStaticFieldID(jclass clazz, const char *name, + const char *sig) { + return functions->GetStaticFieldID(this,clazz,name,sig); + } + jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticObjectField(this,clazz,fieldID); + } + jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticBooleanField(this,clazz,fieldID); + } + jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticByteField(this,clazz,fieldID); + } + jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticCharField(this,clazz,fieldID); + } + jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticShortField(this,clazz,fieldID); + } + jint GetStaticIntField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticIntField(this,clazz,fieldID); + } + jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticLongField(this,clazz,fieldID); + } + jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticFloatField(this,clazz,fieldID); + } + jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { + return functions->GetStaticDoubleField(this,clazz,fieldID); + } + + void SetStaticObjectField(jclass clazz, jfieldID fieldID, + jobject value) { + functions->SetStaticObjectField(this,clazz,fieldID,value); + } + void SetStaticBooleanField(jclass clazz, jfieldID fieldID, + jboolean value) { + functions->SetStaticBooleanField(this,clazz,fieldID,value); + } + void SetStaticByteField(jclass clazz, jfieldID fieldID, + jbyte value) { + functions->SetStaticByteField(this,clazz,fieldID,value); + } + void SetStaticCharField(jclass clazz, jfieldID fieldID, + jchar value) { + functions->SetStaticCharField(this,clazz,fieldID,value); + } + void SetStaticShortField(jclass clazz, jfieldID fieldID, + jshort value) { + functions->SetStaticShortField(this,clazz,fieldID,value); + } + void SetStaticIntField(jclass clazz, jfieldID fieldID, + jint value) { + functions->SetStaticIntField(this,clazz,fieldID,value); + } + void SetStaticLongField(jclass clazz, jfieldID fieldID, + jlong value) { + functions->SetStaticLongField(this,clazz,fieldID,value); + } + void SetStaticFloatField(jclass clazz, jfieldID fieldID, + jfloat value) { + functions->SetStaticFloatField(this,clazz,fieldID,value); + } + void SetStaticDoubleField(jclass clazz, jfieldID fieldID, + jdouble value) { + functions->SetStaticDoubleField(this,clazz,fieldID,value); + } + + jstring NewString(const jchar *unicode, jsize len) { + return functions->NewString(this,unicode,len); + } + jsize GetStringLength(jstring str) { + return functions->GetStringLength(this,str); + } + const jchar *GetStringChars(jstring str, jboolean *isCopy) { + return functions->GetStringChars(this,str,isCopy); + } + void ReleaseStringChars(jstring str, const jchar *chars) { + functions->ReleaseStringChars(this,str,chars); + } + + jstring NewStringUTF(const char *utf) { + return functions->NewStringUTF(this,utf); + } + jsize GetStringUTFLength(jstring str) { + return functions->GetStringUTFLength(this,str); + } + const char* GetStringUTFChars(jstring str, jboolean *isCopy) { + return functions->GetStringUTFChars(this,str,isCopy); + } + void ReleaseStringUTFChars(jstring str, const char* chars) { + functions->ReleaseStringUTFChars(this,str,chars); + } + + jsize GetArrayLength(jarray array) { + return functions->GetArrayLength(this,array); + } + + jobjectArray NewObjectArray(jsize len, jclass clazz, + jobject init) { + return functions->NewObjectArray(this,len,clazz,init); + } + jobject GetObjectArrayElement(jobjectArray array, jsize index) { + return functions->GetObjectArrayElement(this,array,index); + } + void SetObjectArrayElement(jobjectArray array, jsize index, + jobject val) { + functions->SetObjectArrayElement(this,array,index,val); + } + + jbooleanArray NewBooleanArray(jsize len) { + return functions->NewBooleanArray(this,len); + } + jbyteArray NewByteArray(jsize len) { + return functions->NewByteArray(this,len); + } + jcharArray NewCharArray(jsize len) { + return functions->NewCharArray(this,len); + } + jshortArray NewShortArray(jsize len) { + return functions->NewShortArray(this,len); + } + jintArray NewIntArray(jsize len) { + return functions->NewIntArray(this,len); + } + jlongArray NewLongArray(jsize len) { + return functions->NewLongArray(this,len); + } + jfloatArray NewFloatArray(jsize len) { + return functions->NewFloatArray(this,len); + } + jdoubleArray NewDoubleArray(jsize len) { + return functions->NewDoubleArray(this,len); + } + + jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { + return functions->GetBooleanArrayElements(this,array,isCopy); + } + jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { + return functions->GetByteArrayElements(this,array,isCopy); + } + jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { + return functions->GetCharArrayElements(this,array,isCopy); + } + jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { + return functions->GetShortArrayElements(this,array,isCopy); + } + jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { + return functions->GetIntArrayElements(this,array,isCopy); + } + jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { + return functions->GetLongArrayElements(this,array,isCopy); + } + jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { + return functions->GetFloatArrayElements(this,array,isCopy); + } + jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { + return functions->GetDoubleArrayElements(this,array,isCopy); + } + + void ReleaseBooleanArrayElements(jbooleanArray array, + jboolean *elems, + jint mode) { + functions->ReleaseBooleanArrayElements(this,array,elems,mode); + } + void ReleaseByteArrayElements(jbyteArray array, + jbyte *elems, + jint mode) { + functions->ReleaseByteArrayElements(this,array,elems,mode); + } + void ReleaseCharArrayElements(jcharArray array, + jchar *elems, + jint mode) { + functions->ReleaseCharArrayElements(this,array,elems,mode); + } + void ReleaseShortArrayElements(jshortArray array, + jshort *elems, + jint mode) { + functions->ReleaseShortArrayElements(this,array,elems,mode); + } + void ReleaseIntArrayElements(jintArray array, + jint *elems, + jint mode) { + functions->ReleaseIntArrayElements(this,array,elems,mode); + } + void ReleaseLongArrayElements(jlongArray array, + jlong *elems, + jint mode) { + functions->ReleaseLongArrayElements(this,array,elems,mode); + } + void ReleaseFloatArrayElements(jfloatArray array, + jfloat *elems, + jint mode) { + functions->ReleaseFloatArrayElements(this,array,elems,mode); + } + void ReleaseDoubleArrayElements(jdoubleArray array, + jdouble *elems, + jint mode) { + functions->ReleaseDoubleArrayElements(this,array,elems,mode); + } + + void GetBooleanArrayRegion(jbooleanArray array, + jsize start, jsize len, jboolean *buf) { + functions->GetBooleanArrayRegion(this,array,start,len,buf); + } + void GetByteArrayRegion(jbyteArray array, + jsize start, jsize len, jbyte *buf) { + functions->GetByteArrayRegion(this,array,start,len,buf); + } + void GetCharArrayRegion(jcharArray array, + jsize start, jsize len, jchar *buf) { + functions->GetCharArrayRegion(this,array,start,len,buf); + } + void GetShortArrayRegion(jshortArray array, + jsize start, jsize len, jshort *buf) { + functions->GetShortArrayRegion(this,array,start,len,buf); + } + void GetIntArrayRegion(jintArray array, + jsize start, jsize len, jint *buf) { + functions->GetIntArrayRegion(this,array,start,len,buf); + } + void GetLongArrayRegion(jlongArray array, + jsize start, jsize len, jlong *buf) { + functions->GetLongArrayRegion(this,array,start,len,buf); + } + void GetFloatArrayRegion(jfloatArray array, + jsize start, jsize len, jfloat *buf) { + functions->GetFloatArrayRegion(this,array,start,len,buf); + } + void GetDoubleArrayRegion(jdoubleArray array, + jsize start, jsize len, jdouble *buf) { + functions->GetDoubleArrayRegion(this,array,start,len,buf); + } + + void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + const jboolean *buf) { + functions->SetBooleanArrayRegion(this,array,start,len,buf); + } + void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, + const jbyte *buf) { + functions->SetByteArrayRegion(this,array,start,len,buf); + } + void SetCharArrayRegion(jcharArray array, jsize start, jsize len, + const jchar *buf) { + functions->SetCharArrayRegion(this,array,start,len,buf); + } + void SetShortArrayRegion(jshortArray array, jsize start, jsize len, + const jshort *buf) { + functions->SetShortArrayRegion(this,array,start,len,buf); + } + void SetIntArrayRegion(jintArray array, jsize start, jsize len, + const jint *buf) { + functions->SetIntArrayRegion(this,array,start,len,buf); + } + void SetLongArrayRegion(jlongArray array, jsize start, jsize len, + const jlong *buf) { + functions->SetLongArrayRegion(this,array,start,len,buf); + } + void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + const jfloat *buf) { + functions->SetFloatArrayRegion(this,array,start,len,buf); + } + void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + const jdouble *buf) { + functions->SetDoubleArrayRegion(this,array,start,len,buf); + } + + jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, + jint nMethods) { + return functions->RegisterNatives(this,clazz,methods,nMethods); + } + jint UnregisterNatives(jclass clazz) { + return functions->UnregisterNatives(this,clazz); + } + + jint MonitorEnter(jobject obj) { + return functions->MonitorEnter(this,obj); + } + jint MonitorExit(jobject obj) { + return functions->MonitorExit(this,obj); + } + + jint GetJavaVM(JavaVM **vm) { + return functions->GetJavaVM(this,vm); + } + + void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { + functions->GetStringRegion(this,str,start,len,buf); + } + void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { + functions->GetStringUTFRegion(this,str,start,len,buf); + } + + void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { + return functions->GetPrimitiveArrayCritical(this,array,isCopy); + } + void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { + functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); + } + + const jchar * GetStringCritical(jstring string, jboolean *isCopy) { + return functions->GetStringCritical(this,string,isCopy); + } + void ReleaseStringCritical(jstring string, const jchar *cstring) { + functions->ReleaseStringCritical(this,string,cstring); + } + + jweak NewWeakGlobalRef(jobject obj) { + return functions->NewWeakGlobalRef(this,obj); + } + void DeleteWeakGlobalRef(jweak ref) { + functions->DeleteWeakGlobalRef(this,ref); + } + + jboolean ExceptionCheck() { + return functions->ExceptionCheck(this); + } + + jobject NewDirectByteBuffer(void* address, jlong capacity) { + return functions->NewDirectByteBuffer(this, address, capacity); + } + void* GetDirectBufferAddress(jobject buf) { + return functions->GetDirectBufferAddress(this, buf); + } + jlong GetDirectBufferCapacity(jobject buf) { + return functions->GetDirectBufferCapacity(this, buf); + } + jobjectRefType GetObjectRefType(jobject obj) { + return functions->GetObjectRefType(this, obj); + } + +#endif /* __cplusplus */ +}; + +typedef struct JavaVMOption { + char *optionString; + void *extraInfo; +} JavaVMOption; + +typedef struct JavaVMInitArgs { + jint version; + + jint nOptions; + JavaVMOption *options; + jboolean ignoreUnrecognized; +} JavaVMInitArgs; + +typedef struct JavaVMAttachArgs { + jint version; + + char *name; + jobject group; +} JavaVMAttachArgs; + +/* These will be VM-specific. */ + +#define JDK1_2 +#define JDK1_4 + +/* End VM-specific. */ + +struct JNIInvokeInterface_ { + void *reserved0; + void *reserved1; + void *reserved2; + + jint (JNICALL *DestroyJavaVM)(JavaVM *vm); + + jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); + + jint (JNICALL *DetachCurrentThread)(JavaVM *vm); + + jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); + + jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); +}; + +struct JavaVM_ { + const struct JNIInvokeInterface_ *functions; +#ifdef __cplusplus + + jint DestroyJavaVM() { + return functions->DestroyJavaVM(this); + } + jint AttachCurrentThread(void **penv, void *args) { + return functions->AttachCurrentThread(this, penv, args); + } + jint DetachCurrentThread() { + return functions->DetachCurrentThread(this); + } + + jint GetEnv(void **penv, jint version) { + return functions->GetEnv(this, penv, version); + } + jint AttachCurrentThreadAsDaemon(void **penv, void *args) { + return functions->AttachCurrentThreadAsDaemon(this, penv, args); + } +#endif +}; + +#ifdef _JNI_IMPLEMENTATION_ +#define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT +#else +#define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT +#endif +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetDefaultJavaVMInitArgs(void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); + +_JNI_IMPORT_OR_EXPORT_ jint JNICALL +JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); + +/* Defined by native libraries. */ +JNIEXPORT jint JNICALL +JNI_OnLoad(JavaVM *vm, void *reserved); + +JNIEXPORT void JNICALL +JNI_OnUnload(JavaVM *vm, void *reserved); + +#define JNI_VERSION_1_1 0x00010001 +#define JNI_VERSION_1_2 0x00010002 +#define JNI_VERSION_1_4 0x00010004 +#define JNI_VERSION_1_6 0x00010006 +#define JNI_VERSION_1_8 0x00010008 + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVASOFT_JNI_H_ */ diff --git a/SlinkyNative/include/jdk/jvmti.h b/SlinkyNative/include/jdk/jvmti.h new file mode 100644 index 0000000..ee708cb --- /dev/null +++ b/SlinkyNative/include/jdk/jvmti.h @@ -0,0 +1,2534 @@ +/* + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */ + + + /* Include file for the Java(tm) Virtual Machine Tool Interface */ + +#ifndef _JAVA_JVMTI_H_ +#define _JAVA_JVMTI_H_ + +#include "jni.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + JVMTI_VERSION_1 = 0x30010000, + JVMTI_VERSION_1_0 = 0x30010000, + JVMTI_VERSION_1_1 = 0x30010100, + JVMTI_VERSION_1_2 = 0x30010200, + + JVMTI_VERSION = 0x30000000 + (1 * 0x10000) + (2 * 0x100) + 1 /* version: 1.2.1 */ +}; + +JNIEXPORT jint JNICALL +Agent_OnLoad(JavaVM *vm, char *options, void *reserved); + +JNIEXPORT jint JNICALL +Agent_OnAttach(JavaVM* vm, char* options, void* reserved); + +JNIEXPORT void JNICALL +Agent_OnUnload(JavaVM *vm); + + /* Forward declaration of the environment */ + +struct _jvmtiEnv; + +struct jvmtiInterface_1_; + +#ifdef __cplusplus +typedef _jvmtiEnv jvmtiEnv; +#else +typedef const struct jvmtiInterface_1_ *jvmtiEnv; +#endif /* __cplusplus */ + +/* Derived Base Types */ + +typedef jobject jthread; +typedef jobject jthreadGroup; +typedef jlong jlocation; +struct _jrawMonitorID; +typedef struct _jrawMonitorID *jrawMonitorID; +typedef struct JNINativeInterface_ jniNativeInterface; + + /* Constants */ + + + /* Thread State Flags */ + +enum { + JVMTI_THREAD_STATE_ALIVE = 0x0001, + JVMTI_THREAD_STATE_TERMINATED = 0x0002, + JVMTI_THREAD_STATE_RUNNABLE = 0x0004, + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400, + JVMTI_THREAD_STATE_WAITING = 0x0080, + JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010, + JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020, + JVMTI_THREAD_STATE_SLEEPING = 0x0040, + JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100, + JVMTI_THREAD_STATE_PARKED = 0x0200, + JVMTI_THREAD_STATE_SUSPENDED = 0x100000, + JVMTI_THREAD_STATE_INTERRUPTED = 0x200000, + JVMTI_THREAD_STATE_IN_NATIVE = 0x400000, + JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000, + JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000, + JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000 +}; + + /* java.lang.Thread.State Conversion Masks */ + +enum { + JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT, + JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0, + JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED, + JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE, + JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER, + JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY, + JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +}; + + /* Thread Priority Constants */ + +enum { + JVMTI_THREAD_MIN_PRIORITY = 1, + JVMTI_THREAD_NORM_PRIORITY = 5, + JVMTI_THREAD_MAX_PRIORITY = 10 +}; + + /* Heap Filter Flags */ + +enum { + JVMTI_HEAP_FILTER_TAGGED = 0x4, + JVMTI_HEAP_FILTER_UNTAGGED = 0x8, + JVMTI_HEAP_FILTER_CLASS_TAGGED = 0x10, + JVMTI_HEAP_FILTER_CLASS_UNTAGGED = 0x20 +}; + + /* Heap Visit Control Flags */ + +enum { + JVMTI_VISIT_OBJECTS = 0x100, + JVMTI_VISIT_ABORT = 0x8000 +}; + + /* Heap Reference Enumeration */ + +typedef enum { + JVMTI_HEAP_REFERENCE_CLASS = 1, + JVMTI_HEAP_REFERENCE_FIELD = 2, + JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT = 3, + JVMTI_HEAP_REFERENCE_CLASS_LOADER = 4, + JVMTI_HEAP_REFERENCE_SIGNERS = 5, + JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN = 6, + JVMTI_HEAP_REFERENCE_INTERFACE = 7, + JVMTI_HEAP_REFERENCE_STATIC_FIELD = 8, + JVMTI_HEAP_REFERENCE_CONSTANT_POOL = 9, + JVMTI_HEAP_REFERENCE_SUPERCLASS = 10, + JVMTI_HEAP_REFERENCE_JNI_GLOBAL = 21, + JVMTI_HEAP_REFERENCE_SYSTEM_CLASS = 22, + JVMTI_HEAP_REFERENCE_MONITOR = 23, + JVMTI_HEAP_REFERENCE_STACK_LOCAL = 24, + JVMTI_HEAP_REFERENCE_JNI_LOCAL = 25, + JVMTI_HEAP_REFERENCE_THREAD = 26, + JVMTI_HEAP_REFERENCE_OTHER = 27 +} jvmtiHeapReferenceKind; + + /* Primitive Type Enumeration */ + +typedef enum { + JVMTI_PRIMITIVE_TYPE_BOOLEAN = 90, + JVMTI_PRIMITIVE_TYPE_BYTE = 66, + JVMTI_PRIMITIVE_TYPE_CHAR = 67, + JVMTI_PRIMITIVE_TYPE_SHORT = 83, + JVMTI_PRIMITIVE_TYPE_INT = 73, + JVMTI_PRIMITIVE_TYPE_LONG = 74, + JVMTI_PRIMITIVE_TYPE_FLOAT = 70, + JVMTI_PRIMITIVE_TYPE_DOUBLE = 68 +} jvmtiPrimitiveType; + + /* Heap Object Filter Enumeration */ + +typedef enum { + JVMTI_HEAP_OBJECT_TAGGED = 1, + JVMTI_HEAP_OBJECT_UNTAGGED = 2, + JVMTI_HEAP_OBJECT_EITHER = 3 +} jvmtiHeapObjectFilter; + + /* Heap Root Kind Enumeration */ + +typedef enum { + JVMTI_HEAP_ROOT_JNI_GLOBAL = 1, + JVMTI_HEAP_ROOT_SYSTEM_CLASS = 2, + JVMTI_HEAP_ROOT_MONITOR = 3, + JVMTI_HEAP_ROOT_STACK_LOCAL = 4, + JVMTI_HEAP_ROOT_JNI_LOCAL = 5, + JVMTI_HEAP_ROOT_THREAD = 6, + JVMTI_HEAP_ROOT_OTHER = 7 +} jvmtiHeapRootKind; + + /* Object Reference Enumeration */ + +typedef enum { + JVMTI_REFERENCE_CLASS = 1, + JVMTI_REFERENCE_FIELD = 2, + JVMTI_REFERENCE_ARRAY_ELEMENT = 3, + JVMTI_REFERENCE_CLASS_LOADER = 4, + JVMTI_REFERENCE_SIGNERS = 5, + JVMTI_REFERENCE_PROTECTION_DOMAIN = 6, + JVMTI_REFERENCE_INTERFACE = 7, + JVMTI_REFERENCE_STATIC_FIELD = 8, + JVMTI_REFERENCE_CONSTANT_POOL = 9 +} jvmtiObjectReferenceKind; + + /* Iteration Control Enumeration */ + +typedef enum { + JVMTI_ITERATION_CONTINUE = 1, + JVMTI_ITERATION_IGNORE = 2, + JVMTI_ITERATION_ABORT = 0 +} jvmtiIterationControl; + + /* Class Status Flags */ + +enum { + JVMTI_CLASS_STATUS_VERIFIED = 1, + JVMTI_CLASS_STATUS_PREPARED = 2, + JVMTI_CLASS_STATUS_INITIALIZED = 4, + JVMTI_CLASS_STATUS_ERROR = 8, + JVMTI_CLASS_STATUS_ARRAY = 16, + JVMTI_CLASS_STATUS_PRIMITIVE = 32 +}; + + /* Event Enable/Disable */ + +typedef enum { + JVMTI_ENABLE = 1, + JVMTI_DISABLE = 0 +} jvmtiEventMode; + + /* Extension Function/Event Parameter Types */ + +typedef enum { + JVMTI_TYPE_JBYTE = 101, + JVMTI_TYPE_JCHAR = 102, + JVMTI_TYPE_JSHORT = 103, + JVMTI_TYPE_JINT = 104, + JVMTI_TYPE_JLONG = 105, + JVMTI_TYPE_JFLOAT = 106, + JVMTI_TYPE_JDOUBLE = 107, + JVMTI_TYPE_JBOOLEAN = 108, + JVMTI_TYPE_JOBJECT = 109, + JVMTI_TYPE_JTHREAD = 110, + JVMTI_TYPE_JCLASS = 111, + JVMTI_TYPE_JVALUE = 112, + JVMTI_TYPE_JFIELDID = 113, + JVMTI_TYPE_JMETHODID = 114, + JVMTI_TYPE_CCHAR = 115, + JVMTI_TYPE_CVOID = 116, + JVMTI_TYPE_JNIENV = 117 +} jvmtiParamTypes; + + /* Extension Function/Event Parameter Kinds */ + +typedef enum { + JVMTI_KIND_IN = 91, + JVMTI_KIND_IN_PTR = 92, + JVMTI_KIND_IN_BUF = 93, + JVMTI_KIND_ALLOC_BUF = 94, + JVMTI_KIND_ALLOC_ALLOC_BUF = 95, + JVMTI_KIND_OUT = 96, + JVMTI_KIND_OUT_BUF = 97 +} jvmtiParamKind; + + /* Timer Kinds */ + +typedef enum { + JVMTI_TIMER_USER_CPU = 30, + JVMTI_TIMER_TOTAL_CPU = 31, + JVMTI_TIMER_ELAPSED = 32 +} jvmtiTimerKind; + + /* Phases of execution */ + +typedef enum { + JVMTI_PHASE_ONLOAD = 1, + JVMTI_PHASE_PRIMORDIAL = 2, + JVMTI_PHASE_START = 6, + JVMTI_PHASE_LIVE = 4, + JVMTI_PHASE_DEAD = 8 +} jvmtiPhase; + + /* Version Interface Types */ + +enum { + JVMTI_VERSION_INTERFACE_JNI = 0x00000000, + JVMTI_VERSION_INTERFACE_JVMTI = 0x30000000 +}; + + /* Version Masks */ + +enum { + JVMTI_VERSION_MASK_INTERFACE_TYPE = 0x70000000, + JVMTI_VERSION_MASK_MAJOR = 0x0FFF0000, + JVMTI_VERSION_MASK_MINOR = 0x0000FF00, + JVMTI_VERSION_MASK_MICRO = 0x000000FF +}; + + /* Version Shifts */ + +enum { + JVMTI_VERSION_SHIFT_MAJOR = 16, + JVMTI_VERSION_SHIFT_MINOR = 8, + JVMTI_VERSION_SHIFT_MICRO = 0 +}; + + /* Verbose Flag Enumeration */ + +typedef enum { + JVMTI_VERBOSE_OTHER = 0, + JVMTI_VERBOSE_GC = 1, + JVMTI_VERBOSE_CLASS = 2, + JVMTI_VERBOSE_JNI = 4 +} jvmtiVerboseFlag; + + /* JLocation Format Enumeration */ + +typedef enum { + JVMTI_JLOCATION_JVMBCI = 1, + JVMTI_JLOCATION_MACHINEPC = 2, + JVMTI_JLOCATION_OTHER = 0 +} jvmtiJlocationFormat; + + /* Resource Exhaustion Flags */ + +enum { + JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR = 0x0001, + JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP = 0x0002, + JVMTI_RESOURCE_EXHAUSTED_THREADS = 0x0004 +}; + + /* Errors */ + +typedef enum { + JVMTI_ERROR_NONE = 0, + JVMTI_ERROR_INVALID_THREAD = 10, + JVMTI_ERROR_INVALID_THREAD_GROUP = 11, + JVMTI_ERROR_INVALID_PRIORITY = 12, + JVMTI_ERROR_THREAD_NOT_SUSPENDED = 13, + JVMTI_ERROR_THREAD_SUSPENDED = 14, + JVMTI_ERROR_THREAD_NOT_ALIVE = 15, + JVMTI_ERROR_INVALID_OBJECT = 20, + JVMTI_ERROR_INVALID_CLASS = 21, + JVMTI_ERROR_CLASS_NOT_PREPARED = 22, + JVMTI_ERROR_INVALID_METHODID = 23, + JVMTI_ERROR_INVALID_LOCATION = 24, + JVMTI_ERROR_INVALID_FIELDID = 25, + JVMTI_ERROR_NO_MORE_FRAMES = 31, + JVMTI_ERROR_OPAQUE_FRAME = 32, + JVMTI_ERROR_TYPE_MISMATCH = 34, + JVMTI_ERROR_INVALID_SLOT = 35, + JVMTI_ERROR_DUPLICATE = 40, + JVMTI_ERROR_NOT_FOUND = 41, + JVMTI_ERROR_INVALID_MONITOR = 50, + JVMTI_ERROR_NOT_MONITOR_OWNER = 51, + JVMTI_ERROR_INTERRUPT = 52, + JVMTI_ERROR_INVALID_CLASS_FORMAT = 60, + JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION = 61, + JVMTI_ERROR_FAILS_VERIFICATION = 62, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED = 63, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED = 64, + JVMTI_ERROR_INVALID_TYPESTATE = 65, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED = 66, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED = 67, + JVMTI_ERROR_UNSUPPORTED_VERSION = 68, + JVMTI_ERROR_NAMES_DONT_MATCH = 69, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED = 70, + JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED = 71, + JVMTI_ERROR_UNMODIFIABLE_CLASS = 79, + JVMTI_ERROR_NOT_AVAILABLE = 98, + JVMTI_ERROR_MUST_POSSESS_CAPABILITY = 99, + JVMTI_ERROR_NULL_POINTER = 100, + JVMTI_ERROR_ABSENT_INFORMATION = 101, + JVMTI_ERROR_INVALID_EVENT_TYPE = 102, + JVMTI_ERROR_ILLEGAL_ARGUMENT = 103, + JVMTI_ERROR_NATIVE_METHOD = 104, + JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED = 106, + JVMTI_ERROR_OUT_OF_MEMORY = 110, + JVMTI_ERROR_ACCESS_DENIED = 111, + JVMTI_ERROR_WRONG_PHASE = 112, + JVMTI_ERROR_INTERNAL = 113, + JVMTI_ERROR_UNATTACHED_THREAD = 115, + JVMTI_ERROR_INVALID_ENVIRONMENT = 116, + JVMTI_ERROR_MAX = 116 +} jvmtiError; + + /* Event IDs */ + +typedef enum { + JVMTI_MIN_EVENT_TYPE_VAL = 50, + JVMTI_EVENT_VM_INIT = 50, + JVMTI_EVENT_VM_DEATH = 51, + JVMTI_EVENT_THREAD_START = 52, + JVMTI_EVENT_THREAD_END = 53, + JVMTI_EVENT_CLASS_FILE_LOAD_HOOK = 54, + JVMTI_EVENT_CLASS_LOAD = 55, + JVMTI_EVENT_CLASS_PREPARE = 56, + JVMTI_EVENT_VM_START = 57, + JVMTI_EVENT_EXCEPTION = 58, + JVMTI_EVENT_EXCEPTION_CATCH = 59, + JVMTI_EVENT_SINGLE_STEP = 60, + JVMTI_EVENT_FRAME_POP = 61, + JVMTI_EVENT_BREAKPOINT = 62, + JVMTI_EVENT_FIELD_ACCESS = 63, + JVMTI_EVENT_FIELD_MODIFICATION = 64, + JVMTI_EVENT_METHOD_ENTRY = 65, + JVMTI_EVENT_METHOD_EXIT = 66, + JVMTI_EVENT_NATIVE_METHOD_BIND = 67, + JVMTI_EVENT_COMPILED_METHOD_LOAD = 68, + JVMTI_EVENT_COMPILED_METHOD_UNLOAD = 69, + JVMTI_EVENT_DYNAMIC_CODE_GENERATED = 70, + JVMTI_EVENT_DATA_DUMP_REQUEST = 71, + JVMTI_EVENT_MONITOR_WAIT = 73, + JVMTI_EVENT_MONITOR_WAITED = 74, + JVMTI_EVENT_MONITOR_CONTENDED_ENTER = 75, + JVMTI_EVENT_MONITOR_CONTENDED_ENTERED = 76, + JVMTI_EVENT_RESOURCE_EXHAUSTED = 80, + JVMTI_EVENT_GARBAGE_COLLECTION_START = 81, + JVMTI_EVENT_GARBAGE_COLLECTION_FINISH = 82, + JVMTI_EVENT_OBJECT_FREE = 83, + JVMTI_EVENT_VM_OBJECT_ALLOC = 84, + JVMTI_MAX_EVENT_TYPE_VAL = 84 +} jvmtiEvent; + + + /* Pre-Declarations */ +struct _jvmtiThreadInfo; +typedef struct _jvmtiThreadInfo jvmtiThreadInfo; +struct _jvmtiMonitorStackDepthInfo; +typedef struct _jvmtiMonitorStackDepthInfo jvmtiMonitorStackDepthInfo; +struct _jvmtiThreadGroupInfo; +typedef struct _jvmtiThreadGroupInfo jvmtiThreadGroupInfo; +struct _jvmtiFrameInfo; +typedef struct _jvmtiFrameInfo jvmtiFrameInfo; +struct _jvmtiStackInfo; +typedef struct _jvmtiStackInfo jvmtiStackInfo; +struct _jvmtiHeapReferenceInfoField; +typedef struct _jvmtiHeapReferenceInfoField jvmtiHeapReferenceInfoField; +struct _jvmtiHeapReferenceInfoArray; +typedef struct _jvmtiHeapReferenceInfoArray jvmtiHeapReferenceInfoArray; +struct _jvmtiHeapReferenceInfoConstantPool; +typedef struct _jvmtiHeapReferenceInfoConstantPool jvmtiHeapReferenceInfoConstantPool; +struct _jvmtiHeapReferenceInfoStackLocal; +typedef struct _jvmtiHeapReferenceInfoStackLocal jvmtiHeapReferenceInfoStackLocal; +struct _jvmtiHeapReferenceInfoJniLocal; +typedef struct _jvmtiHeapReferenceInfoJniLocal jvmtiHeapReferenceInfoJniLocal; +struct _jvmtiHeapReferenceInfoReserved; +typedef struct _jvmtiHeapReferenceInfoReserved jvmtiHeapReferenceInfoReserved; +union _jvmtiHeapReferenceInfo; +typedef union _jvmtiHeapReferenceInfo jvmtiHeapReferenceInfo; +struct _jvmtiHeapCallbacks; +typedef struct _jvmtiHeapCallbacks jvmtiHeapCallbacks; +struct _jvmtiClassDefinition; +typedef struct _jvmtiClassDefinition jvmtiClassDefinition; +struct _jvmtiMonitorUsage; +typedef struct _jvmtiMonitorUsage jvmtiMonitorUsage; +struct _jvmtiLineNumberEntry; +typedef struct _jvmtiLineNumberEntry jvmtiLineNumberEntry; +struct _jvmtiLocalVariableEntry; +typedef struct _jvmtiLocalVariableEntry jvmtiLocalVariableEntry; +struct _jvmtiParamInfo; +typedef struct _jvmtiParamInfo jvmtiParamInfo; +struct _jvmtiExtensionFunctionInfo; +typedef struct _jvmtiExtensionFunctionInfo jvmtiExtensionFunctionInfo; +struct _jvmtiExtensionEventInfo; +typedef struct _jvmtiExtensionEventInfo jvmtiExtensionEventInfo; +struct _jvmtiTimerInfo; +typedef struct _jvmtiTimerInfo jvmtiTimerInfo; +struct _jvmtiAddrLocationMap; +typedef struct _jvmtiAddrLocationMap jvmtiAddrLocationMap; + + /* Function Types */ + +typedef void (JNICALL *jvmtiStartFunction) + (jvmtiEnv* jvmti_env, JNIEnv* jni_env, void* arg); + +typedef jint (JNICALL *jvmtiHeapIterationCallback) + (jlong class_tag, jlong size, jlong* tag_ptr, jint length, void* user_data); + +typedef jint (JNICALL *jvmtiHeapReferenceCallback) + (jvmtiHeapReferenceKind reference_kind, const jvmtiHeapReferenceInfo* reference_info, jlong class_tag, jlong referrer_class_tag, jlong size, jlong* tag_ptr, jlong* referrer_tag_ptr, jint length, void* user_data); + +typedef jint (JNICALL *jvmtiPrimitiveFieldCallback) + (jvmtiHeapReferenceKind kind, const jvmtiHeapReferenceInfo* info, jlong object_class_tag, jlong* object_tag_ptr, jvalue value, jvmtiPrimitiveType value_type, void* user_data); + +typedef jint (JNICALL *jvmtiArrayPrimitiveValueCallback) + (jlong class_tag, jlong size, jlong* tag_ptr, jint element_count, jvmtiPrimitiveType element_type, const void* elements, void* user_data); + +typedef jint (JNICALL *jvmtiStringPrimitiveValueCallback) + (jlong class_tag, jlong size, jlong* tag_ptr, const jchar* value, jint value_length, void* user_data); + +typedef jint (JNICALL *jvmtiReservedCallback) + (); + +typedef jvmtiIterationControl (JNICALL *jvmtiHeapObjectCallback) + (jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); + +typedef jvmtiIterationControl (JNICALL *jvmtiHeapRootCallback) + (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, void* user_data); + +typedef jvmtiIterationControl (JNICALL *jvmtiStackReferenceCallback) + (jvmtiHeapRootKind root_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong thread_tag, jint depth, jmethodID method, jint slot, void* user_data); + +typedef jvmtiIterationControl (JNICALL *jvmtiObjectReferenceCallback) + (jvmtiObjectReferenceKind reference_kind, jlong class_tag, jlong size, jlong* tag_ptr, jlong referrer_tag, jint referrer_index, void* user_data); + +typedef jvmtiError (JNICALL *jvmtiExtensionFunction) + (jvmtiEnv* jvmti_env, ...); + +typedef void (JNICALL *jvmtiExtensionEvent) + (jvmtiEnv* jvmti_env, ...); + + + /* Structure Types */ +struct _jvmtiThreadInfo { + char* name; + jint priority; + jboolean is_daemon; + jthreadGroup thread_group; + jobject context_class_loader; +}; +struct _jvmtiMonitorStackDepthInfo { + jobject monitor; + jint stack_depth; +}; +struct _jvmtiThreadGroupInfo { + jthreadGroup parent; + char* name; + jint max_priority; + jboolean is_daemon; +}; +struct _jvmtiFrameInfo { + jmethodID method; + jlocation location; +}; +struct _jvmtiStackInfo { + jthread thread; + jint state; + jvmtiFrameInfo* frame_buffer; + jint frame_count; +}; +struct _jvmtiHeapReferenceInfoField { + jint index; +}; +struct _jvmtiHeapReferenceInfoArray { + jint index; +}; +struct _jvmtiHeapReferenceInfoConstantPool { + jint index; +}; +struct _jvmtiHeapReferenceInfoStackLocal { + jlong thread_tag; + jlong thread_id; + jint depth; + jmethodID method; + jlocation location; + jint slot; +}; +struct _jvmtiHeapReferenceInfoJniLocal { + jlong thread_tag; + jlong thread_id; + jint depth; + jmethodID method; +}; +struct _jvmtiHeapReferenceInfoReserved { + jlong reserved1; + jlong reserved2; + jlong reserved3; + jlong reserved4; + jlong reserved5; + jlong reserved6; + jlong reserved7; + jlong reserved8; +}; +union _jvmtiHeapReferenceInfo { + jvmtiHeapReferenceInfoField field; + jvmtiHeapReferenceInfoArray array; + jvmtiHeapReferenceInfoConstantPool constant_pool; + jvmtiHeapReferenceInfoStackLocal stack_local; + jvmtiHeapReferenceInfoJniLocal jni_local; + jvmtiHeapReferenceInfoReserved other; +}; +struct _jvmtiHeapCallbacks { + jvmtiHeapIterationCallback heap_iteration_callback; + jvmtiHeapReferenceCallback heap_reference_callback; + jvmtiPrimitiveFieldCallback primitive_field_callback; + jvmtiArrayPrimitiveValueCallback array_primitive_value_callback; + jvmtiStringPrimitiveValueCallback string_primitive_value_callback; + jvmtiReservedCallback reserved5; + jvmtiReservedCallback reserved6; + jvmtiReservedCallback reserved7; + jvmtiReservedCallback reserved8; + jvmtiReservedCallback reserved9; + jvmtiReservedCallback reserved10; + jvmtiReservedCallback reserved11; + jvmtiReservedCallback reserved12; + jvmtiReservedCallback reserved13; + jvmtiReservedCallback reserved14; + jvmtiReservedCallback reserved15; +}; +struct _jvmtiClassDefinition { + jclass klass; + jint class_byte_count; + const unsigned char* class_bytes; +}; +struct _jvmtiMonitorUsage { + jthread owner; + jint entry_count; + jint waiter_count; + jthread* waiters; + jint notify_waiter_count; + jthread* notify_waiters; +}; +struct _jvmtiLineNumberEntry { + jlocation start_location; + jint line_number; +}; +struct _jvmtiLocalVariableEntry { + jlocation start_location; + jint length; + char* name; + char* signature; + char* generic_signature; + jint slot; +}; +struct _jvmtiParamInfo { + char* name; + jvmtiParamKind kind; + jvmtiParamTypes base_type; + jboolean null_ok; +}; +struct _jvmtiExtensionFunctionInfo { + jvmtiExtensionFunction func; + char* id; + char* short_description; + jint param_count; + jvmtiParamInfo* params; + jint error_count; + jvmtiError* errors; +}; +struct _jvmtiExtensionEventInfo { + jint extension_event_index; + char* id; + char* short_description; + jint param_count; + jvmtiParamInfo* params; +}; +struct _jvmtiTimerInfo { + jlong max_value; + jboolean may_skip_forward; + jboolean may_skip_backward; + jvmtiTimerKind kind; + jlong reserved1; + jlong reserved2; +}; +struct _jvmtiAddrLocationMap { + const void* start_address; + jlocation location; +}; + +typedef struct { + unsigned int can_tag_objects : 1; + unsigned int can_generate_field_modification_events : 1; + unsigned int can_generate_field_access_events : 1; + unsigned int can_get_bytecodes : 1; + unsigned int can_get_synthetic_attribute : 1; + unsigned int can_get_owned_monitor_info : 1; + unsigned int can_get_current_contended_monitor : 1; + unsigned int can_get_monitor_info : 1; + unsigned int can_pop_frame : 1; + unsigned int can_redefine_classes : 1; + unsigned int can_signal_thread : 1; + unsigned int can_get_source_file_name : 1; + unsigned int can_get_line_numbers : 1; + unsigned int can_get_source_debug_extension : 1; + unsigned int can_access_local_variables : 1; + unsigned int can_maintain_original_method_order : 1; + unsigned int can_generate_single_step_events : 1; + unsigned int can_generate_exception_events : 1; + unsigned int can_generate_frame_pop_events : 1; + unsigned int can_generate_breakpoint_events : 1; + unsigned int can_suspend : 1; + unsigned int can_redefine_any_class : 1; + unsigned int can_get_current_thread_cpu_time : 1; + unsigned int can_get_thread_cpu_time : 1; + unsigned int can_generate_method_entry_events : 1; + unsigned int can_generate_method_exit_events : 1; + unsigned int can_generate_all_class_hook_events : 1; + unsigned int can_generate_compiled_method_load_events : 1; + unsigned int can_generate_monitor_events : 1; + unsigned int can_generate_vm_object_alloc_events : 1; + unsigned int can_generate_native_method_bind_events : 1; + unsigned int can_generate_garbage_collection_events : 1; + unsigned int can_generate_object_free_events : 1; + unsigned int can_force_early_return : 1; + unsigned int can_get_owned_monitor_stack_depth_info : 1; + unsigned int can_get_constant_pool : 1; + unsigned int can_set_native_method_prefix : 1; + unsigned int can_retransform_classes : 1; + unsigned int can_retransform_any_class : 1; + unsigned int can_generate_resource_exhaustion_heap_events : 1; + unsigned int can_generate_resource_exhaustion_threads_events : 1; + unsigned int : 7; + unsigned int : 16; + unsigned int : 16; + unsigned int : 16; + unsigned int : 16; + unsigned int : 16; +} jvmtiCapabilities; + + + /* Event Definitions */ + +typedef void (JNICALL *jvmtiEventReserved)(void); + + +typedef void (JNICALL *jvmtiEventBreakpoint) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location); + +typedef void (JNICALL *jvmtiEventClassFileLoadHook) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jclass class_being_redefined, + jobject loader, + const char* name, + jobject protection_domain, + jint class_data_len, + const unsigned char* class_data, + jint* new_class_data_len, + unsigned char** new_class_data); + +typedef void (JNICALL *jvmtiEventClassLoad) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jclass klass); + +typedef void (JNICALL *jvmtiEventClassPrepare) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jclass klass); + +typedef void (JNICALL *jvmtiEventCompiledMethodLoad) + (jvmtiEnv *jvmti_env, + jmethodID method, + jint code_size, + const void* code_addr, + jint map_length, + const jvmtiAddrLocationMap* map, + const void* compile_info); + +typedef void (JNICALL *jvmtiEventCompiledMethodUnload) + (jvmtiEnv *jvmti_env, + jmethodID method, + const void* code_addr); + +typedef void (JNICALL *jvmtiEventDataDumpRequest) + (jvmtiEnv *jvmti_env); + +typedef void (JNICALL *jvmtiEventDynamicCodeGenerated) + (jvmtiEnv *jvmti_env, + const char* name, + const void* address, + jint length); + +typedef void (JNICALL *jvmtiEventException) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location, + jobject exception, + jmethodID catch_method, + jlocation catch_location); + +typedef void (JNICALL *jvmtiEventExceptionCatch) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location, + jobject exception); + +typedef void (JNICALL *jvmtiEventFieldAccess) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location, + jclass field_klass, + jobject object, + jfieldID field); + +typedef void (JNICALL *jvmtiEventFieldModification) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location, + jclass field_klass, + jobject object, + jfieldID field, + char signature_type, + jvalue new_value); + +typedef void (JNICALL *jvmtiEventFramePop) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jboolean was_popped_by_exception); + +typedef void (JNICALL *jvmtiEventGarbageCollectionFinish) + (jvmtiEnv *jvmti_env); + +typedef void (JNICALL *jvmtiEventGarbageCollectionStart) + (jvmtiEnv *jvmti_env); + +typedef void (JNICALL *jvmtiEventMethodEntry) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method); + +typedef void (JNICALL *jvmtiEventMethodExit) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jboolean was_popped_by_exception, + jvalue return_value); + +typedef void (JNICALL *jvmtiEventMonitorContendedEnter) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jobject object); + +typedef void (JNICALL *jvmtiEventMonitorContendedEntered) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jobject object); + +typedef void (JNICALL *jvmtiEventMonitorWait) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jobject object, + jlong timeout); + +typedef void (JNICALL *jvmtiEventMonitorWaited) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jobject object, + jboolean timed_out); + +typedef void (JNICALL *jvmtiEventNativeMethodBind) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + void* address, + void** new_address_ptr); + +typedef void (JNICALL *jvmtiEventObjectFree) + (jvmtiEnv *jvmti_env, + jlong tag); + +typedef void (JNICALL *jvmtiEventResourceExhausted) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jint flags, + const void* reserved, + const char* description); + +typedef void (JNICALL *jvmtiEventSingleStep) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jmethodID method, + jlocation location); + +typedef void (JNICALL *jvmtiEventThreadEnd) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread); + +typedef void (JNICALL *jvmtiEventThreadStart) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread); + +typedef void (JNICALL *jvmtiEventVMDeath) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env); + +typedef void (JNICALL *jvmtiEventVMInit) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread); + +typedef void (JNICALL *jvmtiEventVMObjectAlloc) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env, + jthread thread, + jobject object, + jclass object_klass, + jlong size); + +typedef void (JNICALL *jvmtiEventVMStart) + (jvmtiEnv *jvmti_env, + JNIEnv* jni_env); + + /* Event Callback Structure */ + +typedef struct { + /* 50 : VM Initialization Event */ + jvmtiEventVMInit VMInit; + /* 51 : VM Death Event */ + jvmtiEventVMDeath VMDeath; + /* 52 : Thread Start */ + jvmtiEventThreadStart ThreadStart; + /* 53 : Thread End */ + jvmtiEventThreadEnd ThreadEnd; + /* 54 : Class File Load Hook */ + jvmtiEventClassFileLoadHook ClassFileLoadHook; + /* 55 : Class Load */ + jvmtiEventClassLoad ClassLoad; + /* 56 : Class Prepare */ + jvmtiEventClassPrepare ClassPrepare; + /* 57 : VM Start Event */ + jvmtiEventVMStart VMStart; + /* 58 : Exception */ + jvmtiEventException Exception; + /* 59 : Exception Catch */ + jvmtiEventExceptionCatch ExceptionCatch; + /* 60 : Single Step */ + jvmtiEventSingleStep SingleStep; + /* 61 : Frame Pop */ + jvmtiEventFramePop FramePop; + /* 62 : Breakpoint */ + jvmtiEventBreakpoint Breakpoint; + /* 63 : Field Access */ + jvmtiEventFieldAccess FieldAccess; + /* 64 : Field Modification */ + jvmtiEventFieldModification FieldModification; + /* 65 : Method Entry */ + jvmtiEventMethodEntry MethodEntry; + /* 66 : Method Exit */ + jvmtiEventMethodExit MethodExit; + /* 67 : Native Method Bind */ + jvmtiEventNativeMethodBind NativeMethodBind; + /* 68 : Compiled Method Load */ + jvmtiEventCompiledMethodLoad CompiledMethodLoad; + /* 69 : Compiled Method Unload */ + jvmtiEventCompiledMethodUnload CompiledMethodUnload; + /* 70 : Dynamic Code Generated */ + jvmtiEventDynamicCodeGenerated DynamicCodeGenerated; + /* 71 : Data Dump Request */ + jvmtiEventDataDumpRequest DataDumpRequest; + /* 72 */ + jvmtiEventReserved reserved72; + /* 73 : Monitor Wait */ + jvmtiEventMonitorWait MonitorWait; + /* 74 : Monitor Waited */ + jvmtiEventMonitorWaited MonitorWaited; + /* 75 : Monitor Contended Enter */ + jvmtiEventMonitorContendedEnter MonitorContendedEnter; + /* 76 : Monitor Contended Entered */ + jvmtiEventMonitorContendedEntered MonitorContendedEntered; + /* 77 */ + jvmtiEventReserved reserved77; + /* 78 */ + jvmtiEventReserved reserved78; + /* 79 */ + jvmtiEventReserved reserved79; + /* 80 : Resource Exhausted */ + jvmtiEventResourceExhausted ResourceExhausted; + /* 81 : Garbage Collection Start */ + jvmtiEventGarbageCollectionStart GarbageCollectionStart; + /* 82 : Garbage Collection Finish */ + jvmtiEventGarbageCollectionFinish GarbageCollectionFinish; + /* 83 : Object Free */ + jvmtiEventObjectFree ObjectFree; + /* 84 : VM Object Allocation */ + jvmtiEventVMObjectAlloc VMObjectAlloc; +} jvmtiEventCallbacks; + + + /* Function Interface */ + +typedef struct jvmtiInterface_1_ { + + /* 1 : RESERVED */ + void *reserved1; + + /* 2 : Set Event Notification Mode */ + jvmtiError (JNICALL *SetEventNotificationMode) (jvmtiEnv* env, + jvmtiEventMode mode, + jvmtiEvent event_type, + jthread event_thread, + ...); + + /* 3 : RESERVED */ + void *reserved3; + + /* 4 : Get All Threads */ + jvmtiError (JNICALL *GetAllThreads) (jvmtiEnv* env, + jint* threads_count_ptr, + jthread** threads_ptr); + + /* 5 : Suspend Thread */ + jvmtiError (JNICALL *SuspendThread) (jvmtiEnv* env, + jthread thread); + + /* 6 : Resume Thread */ + jvmtiError (JNICALL *ResumeThread) (jvmtiEnv* env, + jthread thread); + + /* 7 : Stop Thread */ + jvmtiError (JNICALL *StopThread) (jvmtiEnv* env, + jthread thread, + jobject exception); + + /* 8 : Interrupt Thread */ + jvmtiError (JNICALL *InterruptThread) (jvmtiEnv* env, + jthread thread); + + /* 9 : Get Thread Info */ + jvmtiError (JNICALL *GetThreadInfo) (jvmtiEnv* env, + jthread thread, + jvmtiThreadInfo* info_ptr); + + /* 10 : Get Owned Monitor Info */ + jvmtiError (JNICALL *GetOwnedMonitorInfo) (jvmtiEnv* env, + jthread thread, + jint* owned_monitor_count_ptr, + jobject** owned_monitors_ptr); + + /* 11 : Get Current Contended Monitor */ + jvmtiError (JNICALL *GetCurrentContendedMonitor) (jvmtiEnv* env, + jthread thread, + jobject* monitor_ptr); + + /* 12 : Run Agent Thread */ + jvmtiError (JNICALL *RunAgentThread) (jvmtiEnv* env, + jthread thread, + jvmtiStartFunction proc, + const void* arg, + jint priority); + + /* 13 : Get Top Thread Groups */ + jvmtiError (JNICALL *GetTopThreadGroups) (jvmtiEnv* env, + jint* group_count_ptr, + jthreadGroup** groups_ptr); + + /* 14 : Get Thread Group Info */ + jvmtiError (JNICALL *GetThreadGroupInfo) (jvmtiEnv* env, + jthreadGroup group, + jvmtiThreadGroupInfo* info_ptr); + + /* 15 : Get Thread Group Children */ + jvmtiError (JNICALL *GetThreadGroupChildren) (jvmtiEnv* env, + jthreadGroup group, + jint* thread_count_ptr, + jthread** threads_ptr, + jint* group_count_ptr, + jthreadGroup** groups_ptr); + + /* 16 : Get Frame Count */ + jvmtiError (JNICALL *GetFrameCount) (jvmtiEnv* env, + jthread thread, + jint* count_ptr); + + /* 17 : Get Thread State */ + jvmtiError (JNICALL *GetThreadState) (jvmtiEnv* env, + jthread thread, + jint* thread_state_ptr); + + /* 18 : Get Current Thread */ + jvmtiError (JNICALL *GetCurrentThread) (jvmtiEnv* env, + jthread* thread_ptr); + + /* 19 : Get Frame Location */ + jvmtiError (JNICALL *GetFrameLocation) (jvmtiEnv* env, + jthread thread, + jint depth, + jmethodID* method_ptr, + jlocation* location_ptr); + + /* 20 : Notify Frame Pop */ + jvmtiError (JNICALL *NotifyFramePop) (jvmtiEnv* env, + jthread thread, + jint depth); + + /* 21 : Get Local Variable - Object */ + jvmtiError (JNICALL *GetLocalObject) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jobject* value_ptr); + + /* 22 : Get Local Variable - Int */ + jvmtiError (JNICALL *GetLocalInt) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jint* value_ptr); + + /* 23 : Get Local Variable - Long */ + jvmtiError (JNICALL *GetLocalLong) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jlong* value_ptr); + + /* 24 : Get Local Variable - Float */ + jvmtiError (JNICALL *GetLocalFloat) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jfloat* value_ptr); + + /* 25 : Get Local Variable - Double */ + jvmtiError (JNICALL *GetLocalDouble) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jdouble* value_ptr); + + /* 26 : Set Local Variable - Object */ + jvmtiError (JNICALL *SetLocalObject) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jobject value); + + /* 27 : Set Local Variable - Int */ + jvmtiError (JNICALL *SetLocalInt) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jint value); + + /* 28 : Set Local Variable - Long */ + jvmtiError (JNICALL *SetLocalLong) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jlong value); + + /* 29 : Set Local Variable - Float */ + jvmtiError (JNICALL *SetLocalFloat) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jfloat value); + + /* 30 : Set Local Variable - Double */ + jvmtiError (JNICALL *SetLocalDouble) (jvmtiEnv* env, + jthread thread, + jint depth, + jint slot, + jdouble value); + + /* 31 : Create Raw Monitor */ + jvmtiError (JNICALL *CreateRawMonitor) (jvmtiEnv* env, + const char* name, + jrawMonitorID* monitor_ptr); + + /* 32 : Destroy Raw Monitor */ + jvmtiError (JNICALL *DestroyRawMonitor) (jvmtiEnv* env, + jrawMonitorID monitor); + + /* 33 : Raw Monitor Enter */ + jvmtiError (JNICALL *RawMonitorEnter) (jvmtiEnv* env, + jrawMonitorID monitor); + + /* 34 : Raw Monitor Exit */ + jvmtiError (JNICALL *RawMonitorExit) (jvmtiEnv* env, + jrawMonitorID monitor); + + /* 35 : Raw Monitor Wait */ + jvmtiError (JNICALL *RawMonitorWait) (jvmtiEnv* env, + jrawMonitorID monitor, + jlong millis); + + /* 36 : Raw Monitor Notify */ + jvmtiError (JNICALL *RawMonitorNotify) (jvmtiEnv* env, + jrawMonitorID monitor); + + /* 37 : Raw Monitor Notify All */ + jvmtiError (JNICALL *RawMonitorNotifyAll) (jvmtiEnv* env, + jrawMonitorID monitor); + + /* 38 : Set Breakpoint */ + jvmtiError (JNICALL *SetBreakpoint) (jvmtiEnv* env, + jmethodID method, + jlocation location); + + /* 39 : Clear Breakpoint */ + jvmtiError (JNICALL *ClearBreakpoint) (jvmtiEnv* env, + jmethodID method, + jlocation location); + + /* 40 : RESERVED */ + void *reserved40; + + /* 41 : Set Field Access Watch */ + jvmtiError (JNICALL *SetFieldAccessWatch) (jvmtiEnv* env, + jclass klass, + jfieldID field); + + /* 42 : Clear Field Access Watch */ + jvmtiError (JNICALL *ClearFieldAccessWatch) (jvmtiEnv* env, + jclass klass, + jfieldID field); + + /* 43 : Set Field Modification Watch */ + jvmtiError (JNICALL *SetFieldModificationWatch) (jvmtiEnv* env, + jclass klass, + jfieldID field); + + /* 44 : Clear Field Modification Watch */ + jvmtiError (JNICALL *ClearFieldModificationWatch) (jvmtiEnv* env, + jclass klass, + jfieldID field); + + /* 45 : Is Modifiable Class */ + jvmtiError (JNICALL *IsModifiableClass) (jvmtiEnv* env, + jclass klass, + jboolean* is_modifiable_class_ptr); + + /* 46 : Allocate */ + jvmtiError (JNICALL *Allocate) (jvmtiEnv* env, + jlong size, + unsigned char** mem_ptr); + + /* 47 : Deallocate */ + jvmtiError (JNICALL *Deallocate) (jvmtiEnv* env, + unsigned char* mem); + + /* 48 : Get Class Signature */ + jvmtiError (JNICALL *GetClassSignature) (jvmtiEnv* env, + jclass klass, + char** signature_ptr, + char** generic_ptr); + + /* 49 : Get Class Status */ + jvmtiError (JNICALL *GetClassStatus) (jvmtiEnv* env, + jclass klass, + jint* status_ptr); + + /* 50 : Get Source File Name */ + jvmtiError (JNICALL *GetSourceFileName) (jvmtiEnv* env, + jclass klass, + char** source_name_ptr); + + /* 51 : Get Class Modifiers */ + jvmtiError (JNICALL *GetClassModifiers) (jvmtiEnv* env, + jclass klass, + jint* modifiers_ptr); + + /* 52 : Get Class Methods */ + jvmtiError (JNICALL *GetClassMethods) (jvmtiEnv* env, + jclass klass, + jint* method_count_ptr, + jmethodID** methods_ptr); + + /* 53 : Get Class Fields */ + jvmtiError (JNICALL *GetClassFields) (jvmtiEnv* env, + jclass klass, + jint* field_count_ptr, + jfieldID** fields_ptr); + + /* 54 : Get Implemented Interfaces */ + jvmtiError (JNICALL *GetImplementedInterfaces) (jvmtiEnv* env, + jclass klass, + jint* interface_count_ptr, + jclass** interfaces_ptr); + + /* 55 : Is Interface */ + jvmtiError (JNICALL *IsInterface) (jvmtiEnv* env, + jclass klass, + jboolean* is_interface_ptr); + + /* 56 : Is Array Class */ + jvmtiError (JNICALL *IsArrayClass) (jvmtiEnv* env, + jclass klass, + jboolean* is_array_class_ptr); + + /* 57 : Get Class Loader */ + jvmtiError (JNICALL *GetClassLoader) (jvmtiEnv* env, + jclass klass, + jobject* classloader_ptr); + + /* 58 : Get Object Hash Code */ + jvmtiError (JNICALL *GetObjectHashCode) (jvmtiEnv* env, + jobject object, + jint* hash_code_ptr); + + /* 59 : Get Object Monitor Usage */ + jvmtiError (JNICALL *GetObjectMonitorUsage) (jvmtiEnv* env, + jobject object, + jvmtiMonitorUsage* info_ptr); + + /* 60 : Get Field Name (and Signature) */ + jvmtiError (JNICALL *GetFieldName) (jvmtiEnv* env, + jclass klass, + jfieldID field, + char** name_ptr, + char** signature_ptr, + char** generic_ptr); + + /* 61 : Get Field Declaring Class */ + jvmtiError (JNICALL *GetFieldDeclaringClass) (jvmtiEnv* env, + jclass klass, + jfieldID field, + jclass* declaring_class_ptr); + + /* 62 : Get Field Modifiers */ + jvmtiError (JNICALL *GetFieldModifiers) (jvmtiEnv* env, + jclass klass, + jfieldID field, + jint* modifiers_ptr); + + /* 63 : Is Field Synthetic */ + jvmtiError (JNICALL *IsFieldSynthetic) (jvmtiEnv* env, + jclass klass, + jfieldID field, + jboolean* is_synthetic_ptr); + + /* 64 : Get Method Name (and Signature) */ + jvmtiError (JNICALL *GetMethodName) (jvmtiEnv* env, + jmethodID method, + char** name_ptr, + char** signature_ptr, + char** generic_ptr); + + /* 65 : Get Method Declaring Class */ + jvmtiError (JNICALL *GetMethodDeclaringClass) (jvmtiEnv* env, + jmethodID method, + jclass* declaring_class_ptr); + + /* 66 : Get Method Modifiers */ + jvmtiError (JNICALL *GetMethodModifiers) (jvmtiEnv* env, + jmethodID method, + jint* modifiers_ptr); + + /* 67 : RESERVED */ + void *reserved67; + + /* 68 : Get Max Locals */ + jvmtiError (JNICALL *GetMaxLocals) (jvmtiEnv* env, + jmethodID method, + jint* max_ptr); + + /* 69 : Get Arguments Size */ + jvmtiError (JNICALL *GetArgumentsSize) (jvmtiEnv* env, + jmethodID method, + jint* size_ptr); + + /* 70 : Get Line Number Table */ + jvmtiError (JNICALL *GetLineNumberTable) (jvmtiEnv* env, + jmethodID method, + jint* entry_count_ptr, + jvmtiLineNumberEntry** table_ptr); + + /* 71 : Get Method Location */ + jvmtiError (JNICALL *GetMethodLocation) (jvmtiEnv* env, + jmethodID method, + jlocation* start_location_ptr, + jlocation* end_location_ptr); + + /* 72 : Get Local Variable Table */ + jvmtiError (JNICALL *GetLocalVariableTable) (jvmtiEnv* env, + jmethodID method, + jint* entry_count_ptr, + jvmtiLocalVariableEntry** table_ptr); + + /* 73 : Set Native Method Prefix */ + jvmtiError (JNICALL *SetNativeMethodPrefix) (jvmtiEnv* env, + const char* prefix); + + /* 74 : Set Native Method Prefixes */ + jvmtiError (JNICALL *SetNativeMethodPrefixes) (jvmtiEnv* env, + jint prefix_count, + char** prefixes); + + /* 75 : Get Bytecodes */ + jvmtiError (JNICALL *GetBytecodes) (jvmtiEnv* env, + jmethodID method, + jint* bytecode_count_ptr, + unsigned char** bytecodes_ptr); + + /* 76 : Is Method Native */ + jvmtiError (JNICALL *IsMethodNative) (jvmtiEnv* env, + jmethodID method, + jboolean* is_native_ptr); + + /* 77 : Is Method Synthetic */ + jvmtiError (JNICALL *IsMethodSynthetic) (jvmtiEnv* env, + jmethodID method, + jboolean* is_synthetic_ptr); + + /* 78 : Get Loaded Classes */ + jvmtiError (JNICALL *GetLoadedClasses) (jvmtiEnv* env, + jint* class_count_ptr, + jclass** classes_ptr); + + /* 79 : Get Classloader Classes */ + jvmtiError (JNICALL *GetClassLoaderClasses) (jvmtiEnv* env, + jobject initiating_loader, + jint* class_count_ptr, + jclass** classes_ptr); + + /* 80 : Pop Frame */ + jvmtiError (JNICALL *PopFrame) (jvmtiEnv* env, + jthread thread); + + /* 81 : Force Early Return - Object */ + jvmtiError (JNICALL *ForceEarlyReturnObject) (jvmtiEnv* env, + jthread thread, + jobject value); + + /* 82 : Force Early Return - Int */ + jvmtiError (JNICALL *ForceEarlyReturnInt) (jvmtiEnv* env, + jthread thread, + jint value); + + /* 83 : Force Early Return - Long */ + jvmtiError (JNICALL *ForceEarlyReturnLong) (jvmtiEnv* env, + jthread thread, + jlong value); + + /* 84 : Force Early Return - Float */ + jvmtiError (JNICALL *ForceEarlyReturnFloat) (jvmtiEnv* env, + jthread thread, + jfloat value); + + /* 85 : Force Early Return - Double */ + jvmtiError (JNICALL *ForceEarlyReturnDouble) (jvmtiEnv* env, + jthread thread, + jdouble value); + + /* 86 : Force Early Return - Void */ + jvmtiError (JNICALL *ForceEarlyReturnVoid) (jvmtiEnv* env, + jthread thread); + + /* 87 : Redefine Classes */ + jvmtiError (JNICALL *RedefineClasses) (jvmtiEnv* env, + jint class_count, + const jvmtiClassDefinition* class_definitions); + + /* 88 : Get Version Number */ + jvmtiError (JNICALL *GetVersionNumber) (jvmtiEnv* env, + jint* version_ptr); + + /* 89 : Get Capabilities */ + jvmtiError (JNICALL *GetCapabilities) (jvmtiEnv* env, + jvmtiCapabilities* capabilities_ptr); + + /* 90 : Get Source Debug Extension */ + jvmtiError (JNICALL *GetSourceDebugExtension) (jvmtiEnv* env, + jclass klass, + char** source_debug_extension_ptr); + + /* 91 : Is Method Obsolete */ + jvmtiError (JNICALL *IsMethodObsolete) (jvmtiEnv* env, + jmethodID method, + jboolean* is_obsolete_ptr); + + /* 92 : Suspend Thread List */ + jvmtiError (JNICALL *SuspendThreadList) (jvmtiEnv* env, + jint request_count, + const jthread* request_list, + jvmtiError* results); + + /* 93 : Resume Thread List */ + jvmtiError (JNICALL *ResumeThreadList) (jvmtiEnv* env, + jint request_count, + const jthread* request_list, + jvmtiError* results); + + /* 94 : RESERVED */ + void *reserved94; + + /* 95 : RESERVED */ + void *reserved95; + + /* 96 : RESERVED */ + void *reserved96; + + /* 97 : RESERVED */ + void *reserved97; + + /* 98 : RESERVED */ + void *reserved98; + + /* 99 : RESERVED */ + void *reserved99; + + /* 100 : Get All Stack Traces */ + jvmtiError (JNICALL *GetAllStackTraces) (jvmtiEnv* env, + jint max_frame_count, + jvmtiStackInfo** stack_info_ptr, + jint* thread_count_ptr); + + /* 101 : Get Thread List Stack Traces */ + jvmtiError (JNICALL *GetThreadListStackTraces) (jvmtiEnv* env, + jint thread_count, + const jthread* thread_list, + jint max_frame_count, + jvmtiStackInfo** stack_info_ptr); + + /* 102 : Get Thread Local Storage */ + jvmtiError (JNICALL *GetThreadLocalStorage) (jvmtiEnv* env, + jthread thread, + void** data_ptr); + + /* 103 : Set Thread Local Storage */ + jvmtiError (JNICALL *SetThreadLocalStorage) (jvmtiEnv* env, + jthread thread, + const void* data); + + /* 104 : Get Stack Trace */ + jvmtiError (JNICALL *GetStackTrace) (jvmtiEnv* env, + jthread thread, + jint start_depth, + jint max_frame_count, + jvmtiFrameInfo* frame_buffer, + jint* count_ptr); + + /* 105 : RESERVED */ + void *reserved105; + + /* 106 : Get Tag */ + jvmtiError (JNICALL *GetTag) (jvmtiEnv* env, + jobject object, + jlong* tag_ptr); + + /* 107 : Set Tag */ + jvmtiError (JNICALL *SetTag) (jvmtiEnv* env, + jobject object, + jlong tag); + + /* 108 : Force Garbage Collection */ + jvmtiError (JNICALL *ForceGarbageCollection) (jvmtiEnv* env); + + /* 109 : Iterate Over Objects Reachable From Object */ + jvmtiError (JNICALL *IterateOverObjectsReachableFromObject) (jvmtiEnv* env, + jobject object, + jvmtiObjectReferenceCallback object_reference_callback, + const void* user_data); + + /* 110 : Iterate Over Reachable Objects */ + jvmtiError (JNICALL *IterateOverReachableObjects) (jvmtiEnv* env, + jvmtiHeapRootCallback heap_root_callback, + jvmtiStackReferenceCallback stack_ref_callback, + jvmtiObjectReferenceCallback object_ref_callback, + const void* user_data); + + /* 111 : Iterate Over Heap */ + jvmtiError (JNICALL *IterateOverHeap) (jvmtiEnv* env, + jvmtiHeapObjectFilter object_filter, + jvmtiHeapObjectCallback heap_object_callback, + const void* user_data); + + /* 112 : Iterate Over Instances Of Class */ + jvmtiError (JNICALL *IterateOverInstancesOfClass) (jvmtiEnv* env, + jclass klass, + jvmtiHeapObjectFilter object_filter, + jvmtiHeapObjectCallback heap_object_callback, + const void* user_data); + + /* 113 : RESERVED */ + void *reserved113; + + /* 114 : Get Objects With Tags */ + jvmtiError (JNICALL *GetObjectsWithTags) (jvmtiEnv* env, + jint tag_count, + const jlong* tags, + jint* count_ptr, + jobject** object_result_ptr, + jlong** tag_result_ptr); + + /* 115 : Follow References */ + jvmtiError (JNICALL *FollowReferences) (jvmtiEnv* env, + jint heap_filter, + jclass klass, + jobject initial_object, + const jvmtiHeapCallbacks* callbacks, + const void* user_data); + + /* 116 : Iterate Through Heap */ + jvmtiError (JNICALL *IterateThroughHeap) (jvmtiEnv* env, + jint heap_filter, + jclass klass, + const jvmtiHeapCallbacks* callbacks, + const void* user_data); + + /* 117 : RESERVED */ + void *reserved117; + + /* 118 : RESERVED */ + void *reserved118; + + /* 119 : RESERVED */ + void *reserved119; + + /* 120 : Set JNI Function Table */ + jvmtiError (JNICALL *SetJNIFunctionTable) (jvmtiEnv* env, + const jniNativeInterface* function_table); + + /* 121 : Get JNI Function Table */ + jvmtiError (JNICALL *GetJNIFunctionTable) (jvmtiEnv* env, + jniNativeInterface** function_table); + + /* 122 : Set Event Callbacks */ + jvmtiError (JNICALL *SetEventCallbacks) (jvmtiEnv* env, + const jvmtiEventCallbacks* callbacks, + jint size_of_callbacks); + + /* 123 : Generate Events */ + jvmtiError (JNICALL *GenerateEvents) (jvmtiEnv* env, + jvmtiEvent event_type); + + /* 124 : Get Extension Functions */ + jvmtiError (JNICALL *GetExtensionFunctions) (jvmtiEnv* env, + jint* extension_count_ptr, + jvmtiExtensionFunctionInfo** extensions); + + /* 125 : Get Extension Events */ + jvmtiError (JNICALL *GetExtensionEvents) (jvmtiEnv* env, + jint* extension_count_ptr, + jvmtiExtensionEventInfo** extensions); + + /* 126 : Set Extension Event Callback */ + jvmtiError (JNICALL *SetExtensionEventCallback) (jvmtiEnv* env, + jint extension_event_index, + jvmtiExtensionEvent callback); + + /* 127 : Dispose Environment */ + jvmtiError (JNICALL *DisposeEnvironment) (jvmtiEnv* env); + + /* 128 : Get Error Name */ + jvmtiError (JNICALL *GetErrorName) (jvmtiEnv* env, + jvmtiError error, + char** name_ptr); + + /* 129 : Get JLocation Format */ + jvmtiError (JNICALL *GetJLocationFormat) (jvmtiEnv* env, + jvmtiJlocationFormat* format_ptr); + + /* 130 : Get System Properties */ + jvmtiError (JNICALL *GetSystemProperties) (jvmtiEnv* env, + jint* count_ptr, + char*** property_ptr); + + /* 131 : Get System Property */ + jvmtiError (JNICALL *GetSystemProperty) (jvmtiEnv* env, + const char* property, + char** value_ptr); + + /* 132 : Set System Property */ + jvmtiError (JNICALL *SetSystemProperty) (jvmtiEnv* env, + const char* property, + const char* value); + + /* 133 : Get Phase */ + jvmtiError (JNICALL *GetPhase) (jvmtiEnv* env, + jvmtiPhase* phase_ptr); + + /* 134 : Get Current Thread CPU Timer Information */ + jvmtiError (JNICALL *GetCurrentThreadCpuTimerInfo) (jvmtiEnv* env, + jvmtiTimerInfo* info_ptr); + + /* 135 : Get Current Thread CPU Time */ + jvmtiError (JNICALL *GetCurrentThreadCpuTime) (jvmtiEnv* env, + jlong* nanos_ptr); + + /* 136 : Get Thread CPU Timer Information */ + jvmtiError (JNICALL *GetThreadCpuTimerInfo) (jvmtiEnv* env, + jvmtiTimerInfo* info_ptr); + + /* 137 : Get Thread CPU Time */ + jvmtiError (JNICALL *GetThreadCpuTime) (jvmtiEnv* env, + jthread thread, + jlong* nanos_ptr); + + /* 138 : Get Timer Information */ + jvmtiError (JNICALL *GetTimerInfo) (jvmtiEnv* env, + jvmtiTimerInfo* info_ptr); + + /* 139 : Get Time */ + jvmtiError (JNICALL *GetTime) (jvmtiEnv* env, + jlong* nanos_ptr); + + /* 140 : Get Potential Capabilities */ + jvmtiError (JNICALL *GetPotentialCapabilities) (jvmtiEnv* env, + jvmtiCapabilities* capabilities_ptr); + + /* 141 : RESERVED */ + void *reserved141; + + /* 142 : Add Capabilities */ + jvmtiError (JNICALL *AddCapabilities) (jvmtiEnv* env, + const jvmtiCapabilities* capabilities_ptr); + + /* 143 : Relinquish Capabilities */ + jvmtiError (JNICALL *RelinquishCapabilities) (jvmtiEnv* env, + const jvmtiCapabilities* capabilities_ptr); + + /* 144 : Get Available Processors */ + jvmtiError (JNICALL *GetAvailableProcessors) (jvmtiEnv* env, + jint* processor_count_ptr); + + /* 145 : Get Class Version Numbers */ + jvmtiError (JNICALL *GetClassVersionNumbers) (jvmtiEnv* env, + jclass klass, + jint* minor_version_ptr, + jint* major_version_ptr); + + /* 146 : Get Constant Pool */ + jvmtiError (JNICALL *GetConstantPool) (jvmtiEnv* env, + jclass klass, + jint* constant_pool_count_ptr, + jint* constant_pool_byte_count_ptr, + unsigned char** constant_pool_bytes_ptr); + + /* 147 : Get Environment Local Storage */ + jvmtiError (JNICALL *GetEnvironmentLocalStorage) (jvmtiEnv* env, + void** data_ptr); + + /* 148 : Set Environment Local Storage */ + jvmtiError (JNICALL *SetEnvironmentLocalStorage) (jvmtiEnv* env, + const void* data); + + /* 149 : Add To Bootstrap Class Loader Search */ + jvmtiError (JNICALL *AddToBootstrapClassLoaderSearch) (jvmtiEnv* env, + const char* segment); + + /* 150 : Set Verbose Flag */ + jvmtiError (JNICALL *SetVerboseFlag) (jvmtiEnv* env, + jvmtiVerboseFlag flag, + jboolean value); + + /* 151 : Add To System Class Loader Search */ + jvmtiError (JNICALL *AddToSystemClassLoaderSearch) (jvmtiEnv* env, + const char* segment); + + /* 152 : Retransform Classes */ + jvmtiError (JNICALL *RetransformClasses) (jvmtiEnv* env, + jint class_count, + const jclass* classes); + + /* 153 : Get Owned Monitor Stack Depth Info */ + jvmtiError (JNICALL *GetOwnedMonitorStackDepthInfo) (jvmtiEnv* env, + jthread thread, + jint* monitor_info_count_ptr, + jvmtiMonitorStackDepthInfo** monitor_info_ptr); + + /* 154 : Get Object Size */ + jvmtiError (JNICALL *GetObjectSize) (jvmtiEnv* env, + jobject object, + jlong* size_ptr); + + /* 155 : Get Local Instance */ + jvmtiError (JNICALL *GetLocalInstance) (jvmtiEnv* env, + jthread thread, + jint depth, + jobject* value_ptr); + +} jvmtiInterface_1; + +struct _jvmtiEnv { + const struct jvmtiInterface_1_ *functions; +#ifdef __cplusplus + + + jvmtiError Allocate(jlong size, + unsigned char** mem_ptr) { + return functions->Allocate(this, size, mem_ptr); + } + + jvmtiError Deallocate(unsigned char* mem) { + return functions->Deallocate(this, mem); + } + + jvmtiError GetThreadState(jthread thread, + jint* thread_state_ptr) { + return functions->GetThreadState(this, thread, thread_state_ptr); + } + + jvmtiError GetCurrentThread(jthread* thread_ptr) { + return functions->GetCurrentThread(this, thread_ptr); + } + + jvmtiError GetAllThreads(jint* threads_count_ptr, + jthread** threads_ptr) { + return functions->GetAllThreads(this, threads_count_ptr, threads_ptr); + } + + jvmtiError SuspendThread(jthread thread) { + return functions->SuspendThread(this, thread); + } + + jvmtiError SuspendThreadList(jint request_count, + const jthread* request_list, + jvmtiError* results) { + return functions->SuspendThreadList(this, request_count, request_list, results); + } + + jvmtiError ResumeThread(jthread thread) { + return functions->ResumeThread(this, thread); + } + + jvmtiError ResumeThreadList(jint request_count, + const jthread* request_list, + jvmtiError* results) { + return functions->ResumeThreadList(this, request_count, request_list, results); + } + + jvmtiError StopThread(jthread thread, + jobject exception) { + return functions->StopThread(this, thread, exception); + } + + jvmtiError InterruptThread(jthread thread) { + return functions->InterruptThread(this, thread); + } + + jvmtiError GetThreadInfo(jthread thread, + jvmtiThreadInfo* info_ptr) { + return functions->GetThreadInfo(this, thread, info_ptr); + } + + jvmtiError GetOwnedMonitorInfo(jthread thread, + jint* owned_monitor_count_ptr, + jobject** owned_monitors_ptr) { + return functions->GetOwnedMonitorInfo(this, thread, owned_monitor_count_ptr, owned_monitors_ptr); + } + + jvmtiError GetOwnedMonitorStackDepthInfo(jthread thread, + jint* monitor_info_count_ptr, + jvmtiMonitorStackDepthInfo** monitor_info_ptr) { + return functions->GetOwnedMonitorStackDepthInfo(this, thread, monitor_info_count_ptr, monitor_info_ptr); + } + + jvmtiError GetCurrentContendedMonitor(jthread thread, + jobject* monitor_ptr) { + return functions->GetCurrentContendedMonitor(this, thread, monitor_ptr); + } + + jvmtiError RunAgentThread(jthread thread, + jvmtiStartFunction proc, + const void* arg, + jint priority) { + return functions->RunAgentThread(this, thread, proc, arg, priority); + } + + jvmtiError SetThreadLocalStorage(jthread thread, + const void* data) { + return functions->SetThreadLocalStorage(this, thread, data); + } + + jvmtiError GetThreadLocalStorage(jthread thread, + void** data_ptr) { + return functions->GetThreadLocalStorage(this, thread, data_ptr); + } + + jvmtiError GetTopThreadGroups(jint* group_count_ptr, + jthreadGroup** groups_ptr) { + return functions->GetTopThreadGroups(this, group_count_ptr, groups_ptr); + } + + jvmtiError GetThreadGroupInfo(jthreadGroup group, + jvmtiThreadGroupInfo* info_ptr) { + return functions->GetThreadGroupInfo(this, group, info_ptr); + } + + jvmtiError GetThreadGroupChildren(jthreadGroup group, + jint* thread_count_ptr, + jthread** threads_ptr, + jint* group_count_ptr, + jthreadGroup** groups_ptr) { + return functions->GetThreadGroupChildren(this, group, thread_count_ptr, threads_ptr, group_count_ptr, groups_ptr); + } + + jvmtiError GetStackTrace(jthread thread, + jint start_depth, + jint max_frame_count, + jvmtiFrameInfo* frame_buffer, + jint* count_ptr) { + return functions->GetStackTrace(this, thread, start_depth, max_frame_count, frame_buffer, count_ptr); + } + + jvmtiError GetAllStackTraces(jint max_frame_count, + jvmtiStackInfo** stack_info_ptr, + jint* thread_count_ptr) { + return functions->GetAllStackTraces(this, max_frame_count, stack_info_ptr, thread_count_ptr); + } + + jvmtiError GetThreadListStackTraces(jint thread_count, + const jthread* thread_list, + jint max_frame_count, + jvmtiStackInfo** stack_info_ptr) { + return functions->GetThreadListStackTraces(this, thread_count, thread_list, max_frame_count, stack_info_ptr); + } + + jvmtiError GetFrameCount(jthread thread, + jint* count_ptr) { + return functions->GetFrameCount(this, thread, count_ptr); + } + + jvmtiError PopFrame(jthread thread) { + return functions->PopFrame(this, thread); + } + + jvmtiError GetFrameLocation(jthread thread, + jint depth, + jmethodID* method_ptr, + jlocation* location_ptr) { + return functions->GetFrameLocation(this, thread, depth, method_ptr, location_ptr); + } + + jvmtiError NotifyFramePop(jthread thread, + jint depth) { + return functions->NotifyFramePop(this, thread, depth); + } + + jvmtiError ForceEarlyReturnObject(jthread thread, + jobject value) { + return functions->ForceEarlyReturnObject(this, thread, value); + } + + jvmtiError ForceEarlyReturnInt(jthread thread, + jint value) { + return functions->ForceEarlyReturnInt(this, thread, value); + } + + jvmtiError ForceEarlyReturnLong(jthread thread, + jlong value) { + return functions->ForceEarlyReturnLong(this, thread, value); + } + + jvmtiError ForceEarlyReturnFloat(jthread thread, + jfloat value) { + return functions->ForceEarlyReturnFloat(this, thread, value); + } + + jvmtiError ForceEarlyReturnDouble(jthread thread, + jdouble value) { + return functions->ForceEarlyReturnDouble(this, thread, value); + } + + jvmtiError ForceEarlyReturnVoid(jthread thread) { + return functions->ForceEarlyReturnVoid(this, thread); + } + + jvmtiError FollowReferences(jint heap_filter, + jclass klass, + jobject initial_object, + const jvmtiHeapCallbacks* callbacks, + const void* user_data) { + return functions->FollowReferences(this, heap_filter, klass, initial_object, callbacks, user_data); + } + + jvmtiError IterateThroughHeap(jint heap_filter, + jclass klass, + const jvmtiHeapCallbacks* callbacks, + const void* user_data) { + return functions->IterateThroughHeap(this, heap_filter, klass, callbacks, user_data); + } + + jvmtiError GetTag(jobject object, + jlong* tag_ptr) { + return functions->GetTag(this, object, tag_ptr); + } + + jvmtiError SetTag(jobject object, + jlong tag) { + return functions->SetTag(this, object, tag); + } + + jvmtiError GetObjectsWithTags(jint tag_count, + const jlong* tags, + jint* count_ptr, + jobject** object_result_ptr, + jlong** tag_result_ptr) { + return functions->GetObjectsWithTags(this, tag_count, tags, count_ptr, object_result_ptr, tag_result_ptr); + } + + jvmtiError ForceGarbageCollection() { + return functions->ForceGarbageCollection(this); + } + + jvmtiError IterateOverObjectsReachableFromObject(jobject object, + jvmtiObjectReferenceCallback object_reference_callback, + const void* user_data) { + return functions->IterateOverObjectsReachableFromObject(this, object, object_reference_callback, user_data); + } + + jvmtiError IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback, + jvmtiStackReferenceCallback stack_ref_callback, + jvmtiObjectReferenceCallback object_ref_callback, + const void* user_data) { + return functions->IterateOverReachableObjects(this, heap_root_callback, stack_ref_callback, object_ref_callback, user_data); + } + + jvmtiError IterateOverHeap(jvmtiHeapObjectFilter object_filter, + jvmtiHeapObjectCallback heap_object_callback, + const void* user_data) { + return functions->IterateOverHeap(this, object_filter, heap_object_callback, user_data); + } + + jvmtiError IterateOverInstancesOfClass(jclass klass, + jvmtiHeapObjectFilter object_filter, + jvmtiHeapObjectCallback heap_object_callback, + const void* user_data) { + return functions->IterateOverInstancesOfClass(this, klass, object_filter, heap_object_callback, user_data); + } + + jvmtiError GetLocalObject(jthread thread, + jint depth, + jint slot, + jobject* value_ptr) { + return functions->GetLocalObject(this, thread, depth, slot, value_ptr); + } + + jvmtiError GetLocalInstance(jthread thread, + jint depth, + jobject* value_ptr) { + return functions->GetLocalInstance(this, thread, depth, value_ptr); + } + + jvmtiError GetLocalInt(jthread thread, + jint depth, + jint slot, + jint* value_ptr) { + return functions->GetLocalInt(this, thread, depth, slot, value_ptr); + } + + jvmtiError GetLocalLong(jthread thread, + jint depth, + jint slot, + jlong* value_ptr) { + return functions->GetLocalLong(this, thread, depth, slot, value_ptr); + } + + jvmtiError GetLocalFloat(jthread thread, + jint depth, + jint slot, + jfloat* value_ptr) { + return functions->GetLocalFloat(this, thread, depth, slot, value_ptr); + } + + jvmtiError GetLocalDouble(jthread thread, + jint depth, + jint slot, + jdouble* value_ptr) { + return functions->GetLocalDouble(this, thread, depth, slot, value_ptr); + } + + jvmtiError SetLocalObject(jthread thread, + jint depth, + jint slot, + jobject value) { + return functions->SetLocalObject(this, thread, depth, slot, value); + } + + jvmtiError SetLocalInt(jthread thread, + jint depth, + jint slot, + jint value) { + return functions->SetLocalInt(this, thread, depth, slot, value); + } + + jvmtiError SetLocalLong(jthread thread, + jint depth, + jint slot, + jlong value) { + return functions->SetLocalLong(this, thread, depth, slot, value); + } + + jvmtiError SetLocalFloat(jthread thread, + jint depth, + jint slot, + jfloat value) { + return functions->SetLocalFloat(this, thread, depth, slot, value); + } + + jvmtiError SetLocalDouble(jthread thread, + jint depth, + jint slot, + jdouble value) { + return functions->SetLocalDouble(this, thread, depth, slot, value); + } + + jvmtiError SetBreakpoint(jmethodID method, + jlocation location) { + return functions->SetBreakpoint(this, method, location); + } + + jvmtiError ClearBreakpoint(jmethodID method, + jlocation location) { + return functions->ClearBreakpoint(this, method, location); + } + + jvmtiError SetFieldAccessWatch(jclass klass, + jfieldID field) { + return functions->SetFieldAccessWatch(this, klass, field); + } + + jvmtiError ClearFieldAccessWatch(jclass klass, + jfieldID field) { + return functions->ClearFieldAccessWatch(this, klass, field); + } + + jvmtiError SetFieldModificationWatch(jclass klass, + jfieldID field) { + return functions->SetFieldModificationWatch(this, klass, field); + } + + jvmtiError ClearFieldModificationWatch(jclass klass, + jfieldID field) { + return functions->ClearFieldModificationWatch(this, klass, field); + } + + jvmtiError GetLoadedClasses(jint* class_count_ptr, + jclass** classes_ptr) { + return functions->GetLoadedClasses(this, class_count_ptr, classes_ptr); + } + + jvmtiError GetClassLoaderClasses(jobject initiating_loader, + jint* class_count_ptr, + jclass** classes_ptr) { + return functions->GetClassLoaderClasses(this, initiating_loader, class_count_ptr, classes_ptr); + } + + jvmtiError GetClassSignature(jclass klass, + char** signature_ptr, + char** generic_ptr) { + return functions->GetClassSignature(this, klass, signature_ptr, generic_ptr); + } + + jvmtiError GetClassStatus(jclass klass, + jint* status_ptr) { + return functions->GetClassStatus(this, klass, status_ptr); + } + + jvmtiError GetSourceFileName(jclass klass, + char** source_name_ptr) { + return functions->GetSourceFileName(this, klass, source_name_ptr); + } + + jvmtiError GetClassModifiers(jclass klass, + jint* modifiers_ptr) { + return functions->GetClassModifiers(this, klass, modifiers_ptr); + } + + jvmtiError GetClassMethods(jclass klass, + jint* method_count_ptr, + jmethodID** methods_ptr) { + return functions->GetClassMethods(this, klass, method_count_ptr, methods_ptr); + } + + jvmtiError GetClassFields(jclass klass, + jint* field_count_ptr, + jfieldID** fields_ptr) { + return functions->GetClassFields(this, klass, field_count_ptr, fields_ptr); + } + + jvmtiError GetImplementedInterfaces(jclass klass, + jint* interface_count_ptr, + jclass** interfaces_ptr) { + return functions->GetImplementedInterfaces(this, klass, interface_count_ptr, interfaces_ptr); + } + + jvmtiError GetClassVersionNumbers(jclass klass, + jint* minor_version_ptr, + jint* major_version_ptr) { + return functions->GetClassVersionNumbers(this, klass, minor_version_ptr, major_version_ptr); + } + + jvmtiError GetConstantPool(jclass klass, + jint* constant_pool_count_ptr, + jint* constant_pool_byte_count_ptr, + unsigned char** constant_pool_bytes_ptr) { + return functions->GetConstantPool(this, klass, constant_pool_count_ptr, constant_pool_byte_count_ptr, constant_pool_bytes_ptr); + } + + jvmtiError IsInterface(jclass klass, + jboolean* is_interface_ptr) { + return functions->IsInterface(this, klass, is_interface_ptr); + } + + jvmtiError IsArrayClass(jclass klass, + jboolean* is_array_class_ptr) { + return functions->IsArrayClass(this, klass, is_array_class_ptr); + } + + jvmtiError IsModifiableClass(jclass klass, + jboolean* is_modifiable_class_ptr) { + return functions->IsModifiableClass(this, klass, is_modifiable_class_ptr); + } + + jvmtiError GetClassLoader(jclass klass, + jobject* classloader_ptr) { + return functions->GetClassLoader(this, klass, classloader_ptr); + } + + jvmtiError GetSourceDebugExtension(jclass klass, + char** source_debug_extension_ptr) { + return functions->GetSourceDebugExtension(this, klass, source_debug_extension_ptr); + } + + jvmtiError RetransformClasses(jint class_count, + const jclass* classes) { + return functions->RetransformClasses(this, class_count, classes); + } + + jvmtiError RedefineClasses(jint class_count, + const jvmtiClassDefinition* class_definitions) { + return functions->RedefineClasses(this, class_count, class_definitions); + } + + jvmtiError GetObjectSize(jobject object, + jlong* size_ptr) { + return functions->GetObjectSize(this, object, size_ptr); + } + + jvmtiError GetObjectHashCode(jobject object, + jint* hash_code_ptr) { + return functions->GetObjectHashCode(this, object, hash_code_ptr); + } + + jvmtiError GetObjectMonitorUsage(jobject object, + jvmtiMonitorUsage* info_ptr) { + return functions->GetObjectMonitorUsage(this, object, info_ptr); + } + + jvmtiError GetFieldName(jclass klass, + jfieldID field, + char** name_ptr, + char** signature_ptr, + char** generic_ptr) { + return functions->GetFieldName(this, klass, field, name_ptr, signature_ptr, generic_ptr); + } + + jvmtiError GetFieldDeclaringClass(jclass klass, + jfieldID field, + jclass* declaring_class_ptr) { + return functions->GetFieldDeclaringClass(this, klass, field, declaring_class_ptr); + } + + jvmtiError GetFieldModifiers(jclass klass, + jfieldID field, + jint* modifiers_ptr) { + return functions->GetFieldModifiers(this, klass, field, modifiers_ptr); + } + + jvmtiError IsFieldSynthetic(jclass klass, + jfieldID field, + jboolean* is_synthetic_ptr) { + return functions->IsFieldSynthetic(this, klass, field, is_synthetic_ptr); + } + + jvmtiError GetMethodName(jmethodID method, + char** name_ptr, + char** signature_ptr, + char** generic_ptr) { + return functions->GetMethodName(this, method, name_ptr, signature_ptr, generic_ptr); + } + + jvmtiError GetMethodDeclaringClass(jmethodID method, + jclass* declaring_class_ptr) { + return functions->GetMethodDeclaringClass(this, method, declaring_class_ptr); + } + + jvmtiError GetMethodModifiers(jmethodID method, + jint* modifiers_ptr) { + return functions->GetMethodModifiers(this, method, modifiers_ptr); + } + + jvmtiError GetMaxLocals(jmethodID method, + jint* max_ptr) { + return functions->GetMaxLocals(this, method, max_ptr); + } + + jvmtiError GetArgumentsSize(jmethodID method, + jint* size_ptr) { + return functions->GetArgumentsSize(this, method, size_ptr); + } + + jvmtiError GetLineNumberTable(jmethodID method, + jint* entry_count_ptr, + jvmtiLineNumberEntry** table_ptr) { + return functions->GetLineNumberTable(this, method, entry_count_ptr, table_ptr); + } + + jvmtiError GetMethodLocation(jmethodID method, + jlocation* start_location_ptr, + jlocation* end_location_ptr) { + return functions->GetMethodLocation(this, method, start_location_ptr, end_location_ptr); + } + + jvmtiError GetLocalVariableTable(jmethodID method, + jint* entry_count_ptr, + jvmtiLocalVariableEntry** table_ptr) { + return functions->GetLocalVariableTable(this, method, entry_count_ptr, table_ptr); + } + + jvmtiError GetBytecodes(jmethodID method, + jint* bytecode_count_ptr, + unsigned char** bytecodes_ptr) { + return functions->GetBytecodes(this, method, bytecode_count_ptr, bytecodes_ptr); + } + + jvmtiError IsMethodNative(jmethodID method, + jboolean* is_native_ptr) { + return functions->IsMethodNative(this, method, is_native_ptr); + } + + jvmtiError IsMethodSynthetic(jmethodID method, + jboolean* is_synthetic_ptr) { + return functions->IsMethodSynthetic(this, method, is_synthetic_ptr); + } + + jvmtiError IsMethodObsolete(jmethodID method, + jboolean* is_obsolete_ptr) { + return functions->IsMethodObsolete(this, method, is_obsolete_ptr); + } + + jvmtiError SetNativeMethodPrefix(const char* prefix) { + return functions->SetNativeMethodPrefix(this, prefix); + } + + jvmtiError SetNativeMethodPrefixes(jint prefix_count, + char** prefixes) { + return functions->SetNativeMethodPrefixes(this, prefix_count, prefixes); + } + + jvmtiError CreateRawMonitor(const char* name, + jrawMonitorID* monitor_ptr) { + return functions->CreateRawMonitor(this, name, monitor_ptr); + } + + jvmtiError DestroyRawMonitor(jrawMonitorID monitor) { + return functions->DestroyRawMonitor(this, monitor); + } + + jvmtiError RawMonitorEnter(jrawMonitorID monitor) { + return functions->RawMonitorEnter(this, monitor); + } + + jvmtiError RawMonitorExit(jrawMonitorID monitor) { + return functions->RawMonitorExit(this, monitor); + } + + jvmtiError RawMonitorWait(jrawMonitorID monitor, + jlong millis) { + return functions->RawMonitorWait(this, monitor, millis); + } + + jvmtiError RawMonitorNotify(jrawMonitorID monitor) { + return functions->RawMonitorNotify(this, monitor); + } + + jvmtiError RawMonitorNotifyAll(jrawMonitorID monitor) { + return functions->RawMonitorNotifyAll(this, monitor); + } + + jvmtiError SetJNIFunctionTable(const jniNativeInterface* function_table) { + return functions->SetJNIFunctionTable(this, function_table); + } + + jvmtiError GetJNIFunctionTable(jniNativeInterface** function_table) { + return functions->GetJNIFunctionTable(this, function_table); + } + + jvmtiError SetEventCallbacks(const jvmtiEventCallbacks* callbacks, + jint size_of_callbacks) { + return functions->SetEventCallbacks(this, callbacks, size_of_callbacks); + } + + jvmtiError SetEventNotificationMode(jvmtiEventMode mode, + jvmtiEvent event_type, + jthread event_thread, + ...) { + return functions->SetEventNotificationMode(this, mode, event_type, event_thread); + } + + jvmtiError GenerateEvents(jvmtiEvent event_type) { + return functions->GenerateEvents(this, event_type); + } + + jvmtiError GetExtensionFunctions(jint* extension_count_ptr, + jvmtiExtensionFunctionInfo** extensions) { + return functions->GetExtensionFunctions(this, extension_count_ptr, extensions); + } + + jvmtiError GetExtensionEvents(jint* extension_count_ptr, + jvmtiExtensionEventInfo** extensions) { + return functions->GetExtensionEvents(this, extension_count_ptr, extensions); + } + + jvmtiError SetExtensionEventCallback(jint extension_event_index, + jvmtiExtensionEvent callback) { + return functions->SetExtensionEventCallback(this, extension_event_index, callback); + } + + jvmtiError GetPotentialCapabilities(jvmtiCapabilities* capabilities_ptr) { + return functions->GetPotentialCapabilities(this, capabilities_ptr); + } + + jvmtiError AddCapabilities(const jvmtiCapabilities* capabilities_ptr) { + return functions->AddCapabilities(this, capabilities_ptr); + } + + jvmtiError RelinquishCapabilities(const jvmtiCapabilities* capabilities_ptr) { + return functions->RelinquishCapabilities(this, capabilities_ptr); + } + + jvmtiError GetCapabilities(jvmtiCapabilities* capabilities_ptr) { + return functions->GetCapabilities(this, capabilities_ptr); + } + + jvmtiError GetCurrentThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { + return functions->GetCurrentThreadCpuTimerInfo(this, info_ptr); + } + + jvmtiError GetCurrentThreadCpuTime(jlong* nanos_ptr) { + return functions->GetCurrentThreadCpuTime(this, nanos_ptr); + } + + jvmtiError GetThreadCpuTimerInfo(jvmtiTimerInfo* info_ptr) { + return functions->GetThreadCpuTimerInfo(this, info_ptr); + } + + jvmtiError GetThreadCpuTime(jthread thread, + jlong* nanos_ptr) { + return functions->GetThreadCpuTime(this, thread, nanos_ptr); + } + + jvmtiError GetTimerInfo(jvmtiTimerInfo* info_ptr) { + return functions->GetTimerInfo(this, info_ptr); + } + + jvmtiError GetTime(jlong* nanos_ptr) { + return functions->GetTime(this, nanos_ptr); + } + + jvmtiError GetAvailableProcessors(jint* processor_count_ptr) { + return functions->GetAvailableProcessors(this, processor_count_ptr); + } + + jvmtiError AddToBootstrapClassLoaderSearch(const char* segment) { + return functions->AddToBootstrapClassLoaderSearch(this, segment); + } + + jvmtiError AddToSystemClassLoaderSearch(const char* segment) { + return functions->AddToSystemClassLoaderSearch(this, segment); + } + + jvmtiError GetSystemProperties(jint* count_ptr, + char*** property_ptr) { + return functions->GetSystemProperties(this, count_ptr, property_ptr); + } + + jvmtiError GetSystemProperty(const char* property, + char** value_ptr) { + return functions->GetSystemProperty(this, property, value_ptr); + } + + jvmtiError SetSystemProperty(const char* property, + const char* value) { + return functions->SetSystemProperty(this, property, value); + } + + jvmtiError GetPhase(jvmtiPhase* phase_ptr) { + return functions->GetPhase(this, phase_ptr); + } + + jvmtiError DisposeEnvironment() { + return functions->DisposeEnvironment(this); + } + + jvmtiError SetEnvironmentLocalStorage(const void* data) { + return functions->SetEnvironmentLocalStorage(this, data); + } + + jvmtiError GetEnvironmentLocalStorage(void** data_ptr) { + return functions->GetEnvironmentLocalStorage(this, data_ptr); + } + + jvmtiError GetVersionNumber(jint* version_ptr) { + return functions->GetVersionNumber(this, version_ptr); + } + + jvmtiError GetErrorName(jvmtiError error, + char** name_ptr) { + return functions->GetErrorName(this, error, name_ptr); + } + + jvmtiError SetVerboseFlag(jvmtiVerboseFlag flag, + jboolean value) { + return functions->SetVerboseFlag(this, flag, value); + } + + jvmtiError GetJLocationFormat(jvmtiJlocationFormat* format_ptr) { + return functions->GetJLocationFormat(this, format_ptr); + } + +#endif /* __cplusplus */ +}; + + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ + +#endif /* !_JAVA_JVMTI_H_ */ + diff --git a/SlinkyNative/include/jdk/jvmticmlr.h b/SlinkyNative/include/jdk/jvmticmlr.h new file mode 100644 index 0000000..c2106d3 --- /dev/null +++ b/SlinkyNative/include/jdk/jvmticmlr.h @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * This header file defines the data structures sent by the VM + * through the JVMTI CompiledMethodLoad callback function via the + * "void * compile_info" parameter. The memory pointed to by the + * compile_info parameter may not be referenced after returning from + * the CompiledMethodLoad callback. These are VM implementation + * specific data structures that may evolve in future releases. A + * JVMTI agent should interpret a non-NULL compile_info as a pointer + * to a region of memory containing a list of records. In a typical + * usage scenario, a JVMTI agent would cast each record to a + * jvmtiCompiledMethodLoadRecordHeader, a struct that represents + * arbitrary information. This struct contains a kind field to indicate + * the kind of information being passed, and a pointer to the next + * record. If the kind field indicates inlining information, then the + * agent would cast the record to a jvmtiCompiledMethodLoadInlineRecord. + * This record contains an array of PCStackInfo structs, which indicate + * for every pc address what are the methods on the invocation stack. + * The "methods" and "bcis" fields in each PCStackInfo struct specify a + * 1-1 mapping between these inlined methods and their bytecode indices. + * This can be used to derive the proper source lines of the inlined + * methods. + */ + +#ifndef _JVMTI_CMLR_H_ +#define _JVMTI_CMLR_H_ + +enum { + JVMTI_CMLR_MAJOR_VERSION_1 = 0x00000001, + JVMTI_CMLR_MINOR_VERSION_0 = 0x00000000, + + JVMTI_CMLR_MAJOR_VERSION = 0x00000001, + JVMTI_CMLR_MINOR_VERSION = 0x00000000 + + /* + * This comment is for the "JDK import from HotSpot" sanity check: + * version: 1.0.0 + */ +}; + +typedef enum { + JVMTI_CMLR_DUMMY = 1, + JVMTI_CMLR_INLINE_INFO = 2 +} jvmtiCMLRKind; + +/* + * Record that represents arbitrary information passed through JVMTI + * CompiledMethodLoadEvent void pointer. + */ +typedef struct _jvmtiCompiledMethodLoadRecordHeader { + jvmtiCMLRKind kind; /* id for the kind of info passed in the record */ + jint majorinfoversion; /* major and minor info version values. Init'ed */ + jint minorinfoversion; /* to current version value in jvmtiExport.cpp. */ + + struct _jvmtiCompiledMethodLoadRecordHeader* next; +} jvmtiCompiledMethodLoadRecordHeader; + +/* + * Record that gives information about the methods on the compile-time + * stack at a specific pc address of a compiled method. Each element in + * the methods array maps to same element in the bcis array. + */ +typedef struct _PCStackInfo { + void* pc; /* the pc address for this compiled method */ + jint numstackframes; /* number of methods on the stack */ + jmethodID* methods; /* array of numstackframes method ids */ + jint* bcis; /* array of numstackframes bytecode indices */ +} PCStackInfo; + +/* + * Record that contains inlining information for each pc address of + * an nmethod. + */ +typedef struct _jvmtiCompiledMethodLoadInlineRecord { + jvmtiCompiledMethodLoadRecordHeader header; /* common header for casting */ + jint numpcs; /* number of pc descriptors in this nmethod */ + PCStackInfo* pcinfo; /* array of numpcs pc descriptors */ +} jvmtiCompiledMethodLoadInlineRecord; + +/* + * Dummy record used to test that we can pass records with different + * information through the void pointer provided that they can be cast + * to a jvmtiCompiledMethodLoadRecordHeader. + */ + +typedef struct _jvmtiCompiledMethodLoadDummyRecord { + jvmtiCompiledMethodLoadRecordHeader header; /* common header for casting */ + char message[50]; +} jvmtiCompiledMethodLoadDummyRecord; + +#endif diff --git a/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCallbacks.h b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCallbacks.h new file mode 100644 index 0000000..d2428b8 --- /dev/null +++ b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCallbacks.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * AccessBridgeCallbacks.h 1.17 05/03/21 + */ + +/* + * Header file defining callback typedefs for Windows routines + * which are called from Java (responding to events, etc.). + */ + +#ifndef __AccessBridgeCallbacks_H__ +#define __AccessBridgeCallbacks_H__ + +#include +#include "AccessBridgePackages.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*AccessBridge_PropertyChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + wchar_t *property, wchar_t *oldValue, wchar_t *newValue); + +typedef void (*AccessBridge_JavaShutdownFP) (long vmID); +typedef void (*AccessBridge_JavaShutdownFP) (long vmID); + +typedef void (*AccessBridge_FocusGainedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_FocusLostFP) (long vmID, JOBJECT64 event, JOBJECT64 source); + +typedef void (*AccessBridge_CaretUpdateFP) (long vmID, JOBJECT64 event, JOBJECT64 source); + +typedef void (*AccessBridge_MouseClickedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MouseEnteredFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MouseExitedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MousePressedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MouseReleasedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); + +typedef void (*AccessBridge_MenuCanceledFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MenuDeselectedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_MenuSelectedFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PopupMenuCanceledFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PopupMenuWillBecomeInvisibleFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PopupMenuWillBecomeVisibleFP) (long vmID, JOBJECT64 event, JOBJECT64 source); + +typedef void (*AccessBridge_PropertyNameChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + wchar_t *oldName, wchar_t *newName); +typedef void (*AccessBridge_PropertyDescriptionChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + wchar_t *oldDescription, wchar_t *newDescription); +typedef void (*AccessBridge_PropertyStateChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + wchar_t *oldState, wchar_t *newState); +typedef void (*AccessBridge_PropertyValueChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + wchar_t *oldValue, wchar_t *newValue); +typedef void (*AccessBridge_PropertySelectionChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PropertyTextChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PropertyCaretChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + int oldPosition, int newPosition); +typedef void (*AccessBridge_PropertyVisibleDataChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source); +typedef void (*AccessBridge_PropertyChildChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 source, + JOBJECT64 oldChild, JOBJECT64 newChild); +typedef void (*AccessBridge_PropertyActiveDescendentChangeFP) (long vmID, JOBJECT64 event, + JOBJECT64 source, + JOBJECT64 oldActiveDescendent, + JOBJECT64 newActiveDescendent); + +typedef void (*AccessBridge_PropertyTableModelChangeFP) (long vmID, JOBJECT64 event, JOBJECT64 src, + wchar_t *oldValue, wchar_t *newValue); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.c b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.c new file mode 100644 index 0000000..70ab3ef --- /dev/null +++ b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.c @@ -0,0 +1,1131 @@ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)AccessBridgeCalls.c 1.25 05/08/22 + */ + +/* + * Wrapper functions around calls to the AccessBridge DLL + */ + + +#include +#include + + +//#define ACCESSBRIDGE_32 +//#define ACCESSBRIDGE_64 + +#include "AccessBridgeCalls.h" +#include "AccessBridgeDebug.h" + +#ifdef __cplusplus +extern "C" { +#endif + + HINSTANCE theAccessBridgeInstance; + AccessBridgeFPs theAccessBridge; + + BOOL theAccessBridgeInitializedFlag = FALSE; + +#define LOAD_FP(result, type, name) \ + PrintDebugString("LOAD_FP loading: %s ...", name); \ + if ((theAccessBridge.result = \ + (type) GetProcAddress(theAccessBridgeInstance, name)) == (type) 0) { \ + PrintDebugString("LOAD_FP failed: %s", name); \ + return FALSE; \ + } + + BOOL initializeAccessBridge() { + +#ifdef ACCESSBRIDGE_ARCH_32 // For 32bit AT new bridge + theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-32"); +#else +#ifdef ACCESSBRIDGE_ARCH_64 // For 64bit AT new bridge + theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-64"); +#else // legacy + theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE"); +#endif +#endif + if (theAccessBridgeInstance != 0) { + LOAD_FP(Windows_run, Windows_runFP, "Windows_run"); + + LOAD_FP(SetJavaShutdown, SetJavaShutdownFP, "setJavaShutdownFP"); + LOAD_FP(SetFocusGained, SetFocusGainedFP, "setFocusGainedFP"); + LOAD_FP(SetFocusLost, SetFocusLostFP, "setFocusLostFP"); + + LOAD_FP(SetCaretUpdate, SetCaretUpdateFP, "setCaretUpdateFP"); + + LOAD_FP(SetMouseClicked, SetMouseClickedFP, "setMouseClickedFP"); + LOAD_FP(SetMouseEntered, SetMouseEnteredFP, "setMouseEnteredFP"); + LOAD_FP(SetMouseExited, SetMouseExitedFP, "setMouseExitedFP"); + LOAD_FP(SetMousePressed, SetMousePressedFP, "setMousePressedFP"); + LOAD_FP(SetMouseReleased, SetMouseReleasedFP, "setMouseReleasedFP"); + + LOAD_FP(SetMenuCanceled, SetMenuCanceledFP, "setMenuCanceledFP"); + LOAD_FP(SetMenuDeselected, SetMenuDeselectedFP, "setMenuDeselectedFP"); + LOAD_FP(SetMenuSelected, SetMenuSelectedFP, "setMenuSelectedFP"); + LOAD_FP(SetPopupMenuCanceled, SetPopupMenuCanceledFP, "setPopupMenuCanceledFP"); + LOAD_FP(SetPopupMenuWillBecomeInvisible, SetPopupMenuWillBecomeInvisibleFP, "setPopupMenuWillBecomeInvisibleFP"); + LOAD_FP(SetPopupMenuWillBecomeVisible, SetPopupMenuWillBecomeVisibleFP, "setPopupMenuWillBecomeVisibleFP"); + + LOAD_FP(SetPropertyNameChange, SetPropertyNameChangeFP, "setPropertyNameChangeFP"); + LOAD_FP(SetPropertyDescriptionChange, SetPropertyDescriptionChangeFP, "setPropertyDescriptionChangeFP"); + LOAD_FP(SetPropertyStateChange, SetPropertyStateChangeFP, "setPropertyStateChangeFP"); + LOAD_FP(SetPropertyValueChange, SetPropertyValueChangeFP, "setPropertyValueChangeFP"); + LOAD_FP(SetPropertySelectionChange, SetPropertySelectionChangeFP, "setPropertySelectionChangeFP"); + LOAD_FP(SetPropertyTextChange, SetPropertyTextChangeFP, "setPropertyTextChangeFP"); + LOAD_FP(SetPropertyCaretChange, SetPropertyCaretChangeFP, "setPropertyCaretChangeFP"); + LOAD_FP(SetPropertyVisibleDataChange, SetPropertyVisibleDataChangeFP, "setPropertyVisibleDataChangeFP"); + LOAD_FP(SetPropertyChildChange, SetPropertyChildChangeFP, "setPropertyChildChangeFP"); + LOAD_FP(SetPropertyActiveDescendentChange, SetPropertyActiveDescendentChangeFP, "setPropertyActiveDescendentChangeFP"); + + LOAD_FP(SetPropertyTableModelChange, SetPropertyTableModelChangeFP, "setPropertyTableModelChangeFP"); + + LOAD_FP(ReleaseJavaObject, ReleaseJavaObjectFP, "releaseJavaObject"); + LOAD_FP(GetVersionInfo, GetVersionInfoFP, "getVersionInfo"); + + LOAD_FP(IsJavaWindow, IsJavaWindowFP, "isJavaWindow"); + LOAD_FP(IsSameObject, IsSameObjectFP, "isSameObject"); + LOAD_FP(GetAccessibleContextFromHWND, GetAccessibleContextFromHWNDFP, "getAccessibleContextFromHWND"); + LOAD_FP(getHWNDFromAccessibleContext, getHWNDFromAccessibleContextFP, "getHWNDFromAccessibleContext"); + + LOAD_FP(GetAccessibleContextAt, GetAccessibleContextAtFP, "getAccessibleContextAt"); + LOAD_FP(GetAccessibleContextWithFocus, GetAccessibleContextWithFocusFP, "getAccessibleContextWithFocus"); + LOAD_FP(GetAccessibleContextInfo, GetAccessibleContextInfoFP, "getAccessibleContextInfo"); + LOAD_FP(GetAccessibleChildFromContext, GetAccessibleChildFromContextFP, "getAccessibleChildFromContext"); + LOAD_FP(GetAccessibleParentFromContext, GetAccessibleParentFromContextFP, "getAccessibleParentFromContext"); + + /* begin AccessibleTable */ + LOAD_FP(getAccessibleTableInfo, getAccessibleTableInfoFP, "getAccessibleTableInfo"); + LOAD_FP(getAccessibleTableCellInfo, getAccessibleTableCellInfoFP, "getAccessibleTableCellInfo"); + + LOAD_FP(getAccessibleTableRowHeader, getAccessibleTableRowHeaderFP, "getAccessibleTableRowHeader"); + LOAD_FP(getAccessibleTableColumnHeader, getAccessibleTableColumnHeaderFP, "getAccessibleTableColumnHeader"); + + LOAD_FP(getAccessibleTableRowDescription, getAccessibleTableRowDescriptionFP, "getAccessibleTableRowDescription"); + LOAD_FP(getAccessibleTableColumnDescription, getAccessibleTableColumnDescriptionFP, "getAccessibleTableColumnDescription"); + + LOAD_FP(getAccessibleTableRowSelectionCount, getAccessibleTableRowSelectionCountFP, + "getAccessibleTableRowSelectionCount"); + LOAD_FP(isAccessibleTableRowSelected, isAccessibleTableRowSelectedFP, + "isAccessibleTableRowSelected"); + LOAD_FP(getAccessibleTableRowSelections, getAccessibleTableRowSelectionsFP, + "getAccessibleTableRowSelections"); + + LOAD_FP(getAccessibleTableColumnSelectionCount, getAccessibleTableColumnSelectionCountFP, + "getAccessibleTableColumnSelectionCount"); + LOAD_FP(isAccessibleTableColumnSelected, isAccessibleTableColumnSelectedFP, + "isAccessibleTableColumnSelected"); + LOAD_FP(getAccessibleTableColumnSelections, getAccessibleTableColumnSelectionsFP, + "getAccessibleTableColumnSelections"); + + LOAD_FP(getAccessibleTableRow, getAccessibleTableRowFP, + "getAccessibleTableRow"); + LOAD_FP(getAccessibleTableColumn, getAccessibleTableColumnFP, + "getAccessibleTableColumn"); + LOAD_FP(getAccessibleTableIndex, getAccessibleTableIndexFP, + "getAccessibleTableIndex"); + + /* end AccessibleTable */ + + /* AccessibleRelationSet */ + LOAD_FP(getAccessibleRelationSet, getAccessibleRelationSetFP, "getAccessibleRelationSet"); + + /* AccessibleHypertext */ + LOAD_FP(getAccessibleHypertext, getAccessibleHypertextFP, "getAccessibleHypertext"); + LOAD_FP(activateAccessibleHyperlink, activateAccessibleHyperlinkFP, "activateAccessibleHyperlink"); + LOAD_FP(getAccessibleHyperlinkCount, getAccessibleHyperlinkCountFP, "getAccessibleHyperlinkCount"); + LOAD_FP(getAccessibleHypertextExt, getAccessibleHypertextExtFP, "getAccessibleHypertextExt"); + LOAD_FP(getAccessibleHypertextLinkIndex, getAccessibleHypertextLinkIndexFP, "getAccessibleHypertextLinkIndex"); + LOAD_FP(getAccessibleHyperlink, getAccessibleHyperlinkFP, "getAccessibleHyperlink"); + + /* Accessible KeyBinding, Icon and Action */ + LOAD_FP(getAccessibleKeyBindings, getAccessibleKeyBindingsFP, "getAccessibleKeyBindings"); + LOAD_FP(getAccessibleIcons, getAccessibleIconsFP, "getAccessibleIcons"); + LOAD_FP(getAccessibleActions, getAccessibleActionsFP, "getAccessibleActions"); + LOAD_FP(doAccessibleActions, doAccessibleActionsFP, "doAccessibleActions"); + + /* AccessibleText */ + LOAD_FP(GetAccessibleTextInfo, GetAccessibleTextInfoFP, "getAccessibleTextInfo"); + LOAD_FP(GetAccessibleTextItems, GetAccessibleTextItemsFP, "getAccessibleTextItems"); + LOAD_FP(GetAccessibleTextSelectionInfo, GetAccessibleTextSelectionInfoFP, "getAccessibleTextSelectionInfo"); + LOAD_FP(GetAccessibleTextAttributes, GetAccessibleTextAttributesFP, "getAccessibleTextAttributes"); + LOAD_FP(GetAccessibleTextRect, GetAccessibleTextRectFP, "getAccessibleTextRect"); + LOAD_FP(GetAccessibleTextLineBounds, GetAccessibleTextLineBoundsFP, "getAccessibleTextLineBounds"); + LOAD_FP(GetAccessibleTextRange, GetAccessibleTextRangeFP, "getAccessibleTextRange"); + + LOAD_FP(GetCurrentAccessibleValueFromContext, GetCurrentAccessibleValueFromContextFP, "getCurrentAccessibleValueFromContext"); + LOAD_FP(GetMaximumAccessibleValueFromContext, GetMaximumAccessibleValueFromContextFP, "getMaximumAccessibleValueFromContext"); + LOAD_FP(GetMinimumAccessibleValueFromContext, GetMinimumAccessibleValueFromContextFP, "getMinimumAccessibleValueFromContext"); + + LOAD_FP(AddAccessibleSelectionFromContext, AddAccessibleSelectionFromContextFP, "addAccessibleSelectionFromContext"); + LOAD_FP(ClearAccessibleSelectionFromContext, ClearAccessibleSelectionFromContextFP, "clearAccessibleSelectionFromContext"); + LOAD_FP(GetAccessibleSelectionFromContext, GetAccessibleSelectionFromContextFP, "getAccessibleSelectionFromContext"); + LOAD_FP(GetAccessibleSelectionCountFromContext, GetAccessibleSelectionCountFromContextFP, "getAccessibleSelectionCountFromContext"); + LOAD_FP(IsAccessibleChildSelectedFromContext, IsAccessibleChildSelectedFromContextFP, "isAccessibleChildSelectedFromContext"); + LOAD_FP(RemoveAccessibleSelectionFromContext, RemoveAccessibleSelectionFromContextFP, "removeAccessibleSelectionFromContext"); + LOAD_FP(SelectAllAccessibleSelectionFromContext, SelectAllAccessibleSelectionFromContextFP, "selectAllAccessibleSelectionFromContext"); + + LOAD_FP(setTextContents, setTextContentsFP, "setTextContents"); + LOAD_FP(getParentWithRole, getParentWithRoleFP, "getParentWithRole"); + LOAD_FP(getTopLevelObject, getTopLevelObjectFP, "getTopLevelObject"); + LOAD_FP(getParentWithRoleElseRoot, getParentWithRoleElseRootFP, "getParentWithRoleElseRoot"); + LOAD_FP(getObjectDepth, getObjectDepthFP, "getObjectDepth"); + LOAD_FP(getActiveDescendent, getActiveDescendentFP, "getActiveDescendent"); + + // additional methods for Teton + LOAD_FP(getVirtualAccessibleName, getVirtualAccessibleNameFP, "getVirtualAccessibleName"); + LOAD_FP(requestFocus, requestFocusFP, "requestFocus"); + LOAD_FP(selectTextRange, selectTextRangeFP, "selectTextRange"); + LOAD_FP(getTextAttributesInRange, getTextAttributesInRangeFP, "getTextAttributesInRange"); + LOAD_FP(getVisibleChildrenCount, getVisibleChildrenCountFP, "getVisibleChildrenCount"); + LOAD_FP(getVisibleChildren, getVisibleChildrenFP, "getVisibleChildren"); + LOAD_FP(setCaretPosition, setCaretPositionFP, "setCaretPosition"); + LOAD_FP(getCaretLocation, getCaretLocationFP, "getCaretLocation"); + + LOAD_FP(getEventsWaiting, getEventsWaitingFP, "getEventsWaiting"); + + theAccessBridge.Windows_run(); + + theAccessBridgeInitializedFlag = TRUE; + PrintDebugString("theAccessBridgeInitializedFlag = TRUE"); + return TRUE; + } else { + return FALSE; + } + } + + + BOOL shutdownAccessBridge() { + BOOL result; + DWORD error; + theAccessBridgeInitializedFlag = FALSE; + if (theAccessBridgeInstance != (HANDLE) 0) { + result = FreeLibrary(theAccessBridgeInstance); + if (result != TRUE) { + error = GetLastError(); + } + return TRUE; + } + return FALSE; + } + + + void SetJavaShutdown(AccessBridge_JavaShutdownFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetJavaShutdown(fp); + } + } + + void SetFocusGained(AccessBridge_FocusGainedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetFocusGained(fp); + } + } + + void SetFocusLost(AccessBridge_FocusLostFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetFocusLost(fp); + } + } + + + void SetCaretUpdate(AccessBridge_CaretUpdateFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetCaretUpdate(fp); + } + } + + + void SetMouseClicked(AccessBridge_MouseClickedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMouseClicked(fp); + } + } + + void SetMouseEntered(AccessBridge_MouseEnteredFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMouseEntered(fp); + } + } + + void SetMouseExited(AccessBridge_MouseExitedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMouseExited(fp); + } + } + + void SetMousePressed(AccessBridge_MousePressedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMousePressed(fp); + } + } + + void SetMouseReleased(AccessBridge_MouseReleasedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMouseReleased(fp); + } + } + + + void SetMenuCanceled(AccessBridge_MenuCanceledFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMenuCanceled(fp); + } + } + + void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMenuDeselected(fp); + } + } + + void SetMenuSelected(AccessBridge_MenuSelectedFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetMenuSelected(fp); + } + } + + void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPopupMenuCanceled(fp); + } + } + + void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPopupMenuWillBecomeInvisible(fp); + } + } + + void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPopupMenuWillBecomeVisible(fp); + } + } + + + void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyNameChange(fp); + } + } + + void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyDescriptionChange(fp); + } + } + + void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyStateChange(fp); + } + } + + void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyValueChange(fp); + } + } + + void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertySelectionChange(fp); + } + } + + void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyTextChange(fp); + } + } + + void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyCaretChange(fp); + } + } + + void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyVisibleDataChange(fp); + } + } + + void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyChildChange(fp); + } + } + + void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyActiveDescendentChange(fp); + } + } + + void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SetPropertyTableModelChange(fp); + } + } + + /** + * General routines + */ + void ReleaseJavaObject(long vmID, Java_Object object) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.ReleaseJavaObject(vmID, object); + } + } + + BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetVersionInfo(vmID, info); + } + return FALSE; + } + + + /** + * Window routines + */ + BOOL IsJavaWindow(HWND window) { + if (theAccessBridgeInitializedFlag == TRUE) { + BOOL ret ; + ret = theAccessBridge.IsJavaWindow(window); + return ret ; + + } + return FALSE; + } + + + /** + * Returns the virtual machine ID and AccessibleContext for a top-level window + */ + BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleContextFromHWND(target, vmID, ac); + } + return FALSE; + } + + /** + * Returns the HWND from the AccessibleContext of a top-level window. Returns 0 + * on error or if the AccessibleContext does not refer to a top-level window. + */ + HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getHWNDFromAccessibleContext(vmID, accesibleContext); + } + return (HWND)0; + } + + /** + * returns whether two objects are the same + */ + BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.IsSameObject(vmID, obj1, obj2); + } + return FALSE; + } + + /** + * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and + * be editable. The maximum text length is MAX_STRING_SIZE - 1. + * Returns whether successful + */ + BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.setTextContents(vmID, accessibleContext, text); + } + return FALSE; + } + + /** + * Returns the Accessible Context with the specified role that is the + * ancestor of a given object. The role is one of the role strings + * defined in AccessBridgePackages.h + * If there is no ancestor object that has the specified role, + * returns (AccessibleContext)0. + */ + AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, + const wchar_t *role) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getParentWithRole(vmID, accessibleContext, role); + } + return (AccessibleContext)0; + } + + /** + * Returns the Accessible Context with the specified role that is the + * ancestor of a given object. The role is one of the role strings + * defined in AccessBridgePackages.h. If an object with the specified + * role does not exist, returns the top level object for the Java Window. + * Returns (AccessibleContext)0 on error. + */ + AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, + const wchar_t *role) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getParentWithRoleElseRoot(vmID, accessibleContext, role); + } + return (AccessibleContext)0; + } + + /** + * Returns the Accessible Context for the top level object in + * a Java Window. This is same Accessible Context that is obtained + * from GetAccessibleContextFromHWND for that window. Returns + * (AccessibleContext)0 on error. + */ + AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getTopLevelObject(vmID, accessibleContext); + } + return (AccessibleContext)0; + } + + /** + * Returns how deep in the object hierarchy a given object is. + * The top most object in the object hierarchy has an object depth of 0. + * Returns -1 on error. + */ + int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getObjectDepth(vmID, accessibleContext); + } + return -1; + } + + /** + * Returns the Accessible Context of the current ActiveDescendent of an object. + * This method assumes the ActiveDescendent is the component that is currently + * selected in a container object. + * Returns (AccessibleContext)0 on error or if there is no selection. + */ + AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getActiveDescendent(vmID, accessibleContext); + } + return (AccessibleContext)0; + } + + + /** + * Accessible Context routines + */ + BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, + jint x, jint y, AccessibleContext *ac) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleContextAt(vmID, acParent, x, y, ac); + } + return FALSE; + } + + BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleContextWithFocus(window, vmID, ac); + } + return FALSE; + } + + BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleContextInfo(vmID, ac, info); + } + return FALSE; + } + + AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index); + } + return (AccessibleContext) 0; + } + + AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleParentFromContext(vmID, ac); + } + return (AccessibleContext) 0; + } + + /* begin AccessibleTable routines */ + + /* + * get information about an AccessibleTable + */ + BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableInfo(vmID, acParent, tableInfo); + } + return FALSE; + } + + /* + * get information about an AccessibleTable cell + */ + BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, + jint row, jint column, AccessibleTableCellInfo *tableCellInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableCellInfo(vmID, accessibleTable, row, column, tableCellInfo); + } + return FALSE; + } + + /* + * get information about an AccessibleTable row header + */ + BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableRowHeader(vmID, acParent, tableInfo); + } + return FALSE; + } + + /* + * get information about an AccessibleTable column header + */ + BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableColumnHeader(vmID, acParent, tableInfo); + } + return FALSE; + } + + /* + * return a description of an AccessibleTable row header + */ + AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableRowDescription(vmID, acParent, row); + } + return (AccessibleContext)0; + } + + /* + * return a description of an AccessibleTable column header + */ + AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableColumnDescription(vmID, acParent, column); + } + return (AccessibleContext)0; + } + + /* + * return the number of rows selected in an AccessibleTable + */ + jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableRowSelectionCount(vmID, table); + } + return -1; + } + + /* + * return whether a row is selected in an AccessibleTable + */ + BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.isAccessibleTableRowSelected(vmID, table, row); + } + return FALSE; + } + + /* + * get an array of selected rows in an AccessibleTable + */ + BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableRowSelections(vmID, table, count, selections); + } + return FALSE; + } + + /* + * return the number of columns selected in an AccessibleTable + */ + jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableColumnSelectionCount(vmID, table); + } + return -1; + } + + /* + * return whether a column is selected in an AccessibleTable + */ + BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.isAccessibleTableColumnSelected(vmID, table, column); + } + return FALSE; + } + + /* + * get an array of columns selected in an AccessibleTable + */ + BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableColumnSelections(vmID, table, count, selections); + } + return FALSE; + } + + /* + * return the row number for a cell at a given index + */ + jint + getAccessibleTableRow(long vmID, AccessibleTable table, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableRow(vmID, table, index); + } + return -1; + } + + /* + * return the column number for a cell at a given index + */ + jint + getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableColumn(vmID, table, index); + } + return -1; + } + + /* + * return the index of a cell at a given row and column + */ + jint + getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleTableIndex(vmID, table, row, column); + } + return -1; + } + + /* end AccessibleTable routines */ + + + /** + * Accessible Text routines + */ + BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextInfo(vmID, at, textInfo, x, y); + } + return FALSE; + } + + BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index); + } + return FALSE; + } + + BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextSelectionInfo(vmID, at, textSelection); + } + return FALSE; + } + + BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes); + } + return FALSE; + } + + BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index); + } + return FALSE; + } + + BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex); + } + return FALSE; + } + + BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleTextRange(vmID, at, start, end, text, len); + } + return FALSE; + } + + /** + * AccessibleRelationSet routines + */ + BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, + AccessibleRelationSetInfo *relationSetInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo); + } + return FALSE; + } + + /** + * AccessibleHypertext routines + */ + + // Gets AccessibleHypertext for an AccessibleContext + BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, + AccessibleHypertextInfo *hypertextInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleHypertext(vmID, accessibleContext, hypertextInfo); + } + return FALSE; + } + + // Activates an AccessibleHyperlink for an AccessibleContext + BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, + AccessibleHyperlink accessibleHyperlink) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.activateAccessibleHyperlink(vmID, accessibleContext, accessibleHyperlink); + } + return FALSE; + } + + /* + * Returns the number of hyperlinks in a component + * Maps to AccessibleHypertext.getLinkCount. + * Returns -1 on error. + */ + jint getAccessibleHyperlinkCount(const long vmID, + const AccessibleContext accessibleContext) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleHyperlinkCount(vmID, accessibleContext); + } + return -1; + } + + /* + * This method is used to iterate through the hyperlinks in a component. It + * returns hypertext information for a component starting at hyperlink index + * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will + * be returned for each call to this method. + * returns FALSE on error. + */ + BOOL getAccessibleHypertextExt(const long vmID, + const AccessibleContext accessibleContext, + const jint nStartIndex, + /* OUT */ AccessibleHypertextInfo *hypertextInfo) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleHypertextExt(vmID, + accessibleContext, + nStartIndex, + hypertextInfo); + } + return FALSE; + } + + /* + * Returns the index into an array of hyperlinks that is associated with + * a character index in document; + * Maps to AccessibleHypertext.getLinkIndex. + * Returns -1 on error. + */ + jint getAccessibleHypertextLinkIndex(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleHypertextLinkIndex(vmID, + hypertext, + nIndex); + } + return -1; + } + + /* + * Returns the nth hyperlink in a document. + * Maps to AccessibleHypertext.getLink. + * Returns -1 on error + */ + BOOL getAccessibleHyperlink(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex, + /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) { + + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleHyperlink(vmID, + hypertext, + nIndex, + hyperlinkInfo); + } + return FALSE; + } + + + /* Accessible KeyBindings, Icons and Actions */ + BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, + AccessibleKeyBindings *keyBindings) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleKeyBindings(vmID, accessibleContext, keyBindings); + } + return FALSE; + } + + BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, + AccessibleIcons *icons) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleIcons(vmID, accessibleContext, icons); + } + return FALSE; + } + + BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, + AccessibleActions *actions) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getAccessibleActions(vmID, accessibleContext, actions); + } + return FALSE; + } + + BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, + AccessibleActionsToDo *actionsToDo, jint *failure) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.doAccessibleActions(vmID, accessibleContext, actionsToDo, failure); + } + return FALSE; + } + + /** + * Accessible Value routines + */ + BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetCurrentAccessibleValueFromContext(vmID, av, value, len); + } + return FALSE; + } + + BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetMaximumAccessibleValueFromContext(vmID, av, value, len); + } + return FALSE; + } + + BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetMinimumAccessibleValueFromContext(vmID, av, value, len); + } + return FALSE; + } + + + /** + * Accessible Selection routines + */ + void addAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.AddAccessibleSelectionFromContext(vmID, as, i); + } + } + + void clearAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.ClearAccessibleSelectionFromContext(vmID, as); + } + } + + JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleSelectionFromContext(vmID, as, i); + } + return (JOBJECT64) 0; + } + + int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.GetAccessibleSelectionCountFromContext(vmID, as); + } + return -1; + } + + BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.IsAccessibleChildSelectedFromContext(vmID, as, i); + } + return FALSE; + } + + void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.RemoveAccessibleSelectionFromContext(vmID, as, i); + } + } + + void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { + if (theAccessBridgeInitializedFlag == TRUE) { + theAccessBridge.SelectAllAccessibleSelectionFromContext(vmID, as); + } + } + + /** + * Additional methods for Teton + */ + + /** + * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns + * whether successful. + * + * Bug ID 4916682 - Implement JAWS AccessibleName policy + */ + BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, + wchar_t *name, int len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getVirtualAccessibleName(vmID, accessibleContext, name, len); + } + return FALSE; + } + + /** + * Request focus for a component. Returns whether successful; + * + * Bug ID 4944757 - requestFocus method needed + */ + BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.requestFocus(vmID, accessibleContext); + } + return FALSE; + } + + /** + * Selects text between two indices. Selection includes the text at the start index + * and the text at the end index. Returns whether successful; + * + * Bug ID 4944758 - selectTextRange method needed + */ + BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, + const int startIndex, const int endIndex) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.selectTextRange(vmID, accessibleContext, startIndex, endIndex); + } + return FALSE; + } + + /** + * Get text attributes between two indices. The attribute list includes the text at the + * start index and the text at the end index. Returns whether successful; + * + * Bug ID 4944761 - getTextAttributes between two indices method needed + */ + BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, + const int startIndex, const int endIndex, + AccessibleTextAttributesInfo *attributes, short *len) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getTextAttributesInRange(vmID, accessibleContext, startIndex, + endIndex, attributes, len); + } + return FALSE; + } + + /** + * Returns the number of visible children of a component. Returns -1 on error. + * + * Bug ID 4944762- getVisibleChildren for list-like components needed + */ + int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getVisibleChildrenCount(vmID, accessibleContext); + } + return FALSE; + } + + /** + * Gets the visible children of an AccessibleContext. Returns whether successful; + * + * Bug ID 4944762- getVisibleChildren for list-like components needed + */ + BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, + const int startIndex, VisibleChildrenInfo *visibleChildrenInfo) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getVisibleChildren(vmID, accessibleContext, startIndex, + visibleChildrenInfo); + } + return FALSE; + } + + /** + * Set the caret to a text position. Returns whether successful; + * + * Bug ID 4944770 - setCaretPosition method needed + */ + BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, + const int position) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.setCaretPosition(vmID, accessibleContext, position); + } + return FALSE; + } + + /** + * Gets the text caret location + */ + BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index); + } + return FALSE; + } + + /** + * Gets the number of events waiting to fire + */ + int getEventsWaiting() { + if (theAccessBridgeInitializedFlag == TRUE) { + return theAccessBridge.getEventsWaiting(); + } + return FALSE; + } + +#ifdef __cplusplus +} +#endif diff --git a/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.h b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.h new file mode 100644 index 0000000..7ee7c3a --- /dev/null +++ b/SlinkyNative/include/jdk/win32/bridge/AccessBridgeCalls.h @@ -0,0 +1,706 @@ +/* + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Wrapper functions around calls to the AccessBridge DLL + */ + +#include +#include +#include "AccessBridgeCallbacks.h" +#include "AccessBridgePackages.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define null NULL + + typedef JOBJECT64 AccessibleContext; + typedef JOBJECT64 AccessibleText; + typedef JOBJECT64 AccessibleValue; + typedef JOBJECT64 AccessibleSelection; + typedef JOBJECT64 Java_Object; + typedef JOBJECT64 PropertyChangeEvent; + typedef JOBJECT64 FocusEvent; + typedef JOBJECT64 CaretEvent; + typedef JOBJECT64 MouseEvent; + typedef JOBJECT64 MenuEvent; + typedef JOBJECT64 AccessibleTable; + typedef JOBJECT64 AccessibleHyperlink; + typedef JOBJECT64 AccessibleHypertext; + + + typedef void (*Windows_runFP) (); + + typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp); + + typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp); + typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp); + typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp); + + typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp); + + typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp); + typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp); + typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp); + typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp); + typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp); + + typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp); + typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp); + typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp); + typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp); + typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp); + typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp); + + typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp); + typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp); + typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp); + typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp); + typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp); + typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp); + typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp); + typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp); + typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp); + typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp); + + typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp); + + typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object); + + typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info); + + typedef BOOL (*IsJavaWindowFP) (HWND window); + typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2); + typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac); + typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac); + + typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent, + jint x, jint y, AccessibleContext *ac); + typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac); + typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info); + typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i); + typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac); + + /* begin AccessibleTable */ + typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo); + typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable, + jint row, jint column, AccessibleTableCellInfo *tableCellInfo); + + typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); + typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); + + typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row); + typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column); + + typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table); + typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row); + typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count, + jint *selections); + + typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table); + typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column); + typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count, + jint *selections); + + typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index); + typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index); + typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column); + /* end AccessibleTable */ + + /* AccessibleRelationSet */ + typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext, + AccessibleRelationSetInfo *relationSetInfo); + + /* AccessibleHypertext */ + typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext, + AccessibleHypertextInfo *hypertextInfo); + + typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext, + AccessibleHyperlink accessibleHyperlink); + + typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID, + const AccessibleContext accessibleContext); + + typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID, + const AccessibleContext accessibleContext, + const jint nStartIndex, + AccessibleHypertextInfo *hypertextInfo); + + typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex); + + typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex, + AccessibleHyperlinkInfo *hyperlinkInfo); + + + /* Accessible KeyBindings, Icons and Actions */ + typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext, + AccessibleKeyBindings *keyBindings); + + typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext, + AccessibleIcons *icons); + + typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, + AccessibleActions *actions); + + typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, + AccessibleActionsToDo *actionsToDo, jint *failure); + + + /* AccessibleText */ + + typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); + typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); + typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); + typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); + typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); + typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); + typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); + + typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); + typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); + typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); + + typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); + typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); + typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); + typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as); + typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i); + typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); + typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); + + /* Utility methods */ + + typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text); + typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); + typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); + typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac); + typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac); + typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac); + + + typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext, + wchar_t *name, int len); + + typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext); + + typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext, + const int startIndex, const int endIndex); + + typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext, + const int startIndex, const int endIndex, + AccessibleTextAttributesInfo *attributes, short *len); + + typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext); + + typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext, + const int startIndex, VisibleChildrenInfo *children); + + typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position); + + typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index); + + typedef int (*getEventsWaitingFP) (); + + typedef struct AccessBridgeFPsTag { + Windows_runFP Windows_run; + + SetPropertyChangeFP SetPropertyChange; + + SetJavaShutdownFP SetJavaShutdown; + SetFocusGainedFP SetFocusGained; + SetFocusLostFP SetFocusLost; + + SetCaretUpdateFP SetCaretUpdate; + + SetMouseClickedFP SetMouseClicked; + SetMouseEnteredFP SetMouseEntered; + SetMouseExitedFP SetMouseExited; + SetMousePressedFP SetMousePressed; + SetMouseReleasedFP SetMouseReleased; + + SetMenuCanceledFP SetMenuCanceled; + SetMenuDeselectedFP SetMenuDeselected; + SetMenuSelectedFP SetMenuSelected; + SetPopupMenuCanceledFP SetPopupMenuCanceled; + SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible; + SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible; + + SetPropertyNameChangeFP SetPropertyNameChange; + SetPropertyDescriptionChangeFP SetPropertyDescriptionChange; + SetPropertyStateChangeFP SetPropertyStateChange; + SetPropertyValueChangeFP SetPropertyValueChange; + SetPropertySelectionChangeFP SetPropertySelectionChange; + SetPropertyTextChangeFP SetPropertyTextChange; + SetPropertyCaretChangeFP SetPropertyCaretChange; + SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange; + SetPropertyChildChangeFP SetPropertyChildChange; + SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange; + + SetPropertyTableModelChangeFP SetPropertyTableModelChange; + + ReleaseJavaObjectFP ReleaseJavaObject; + GetVersionInfoFP GetVersionInfo; + + IsJavaWindowFP IsJavaWindow; + IsSameObjectFP IsSameObject; + GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND; + getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext; + + GetAccessibleContextAtFP GetAccessibleContextAt; + GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus; + GetAccessibleContextInfoFP GetAccessibleContextInfo; + GetAccessibleChildFromContextFP GetAccessibleChildFromContext; + GetAccessibleParentFromContextFP GetAccessibleParentFromContext; + + getAccessibleTableInfoFP getAccessibleTableInfo; + getAccessibleTableCellInfoFP getAccessibleTableCellInfo; + + getAccessibleTableRowHeaderFP getAccessibleTableRowHeader; + getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader; + + getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription; + getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription; + + getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount; + isAccessibleTableRowSelectedFP isAccessibleTableRowSelected; + getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections; + + getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount; + isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected; + getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections; + + getAccessibleTableRowFP getAccessibleTableRow; + getAccessibleTableColumnFP getAccessibleTableColumn; + getAccessibleTableIndexFP getAccessibleTableIndex; + + getAccessibleRelationSetFP getAccessibleRelationSet; + + getAccessibleHypertextFP getAccessibleHypertext; + activateAccessibleHyperlinkFP activateAccessibleHyperlink; + getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount; + getAccessibleHypertextExtFP getAccessibleHypertextExt; + getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex; + getAccessibleHyperlinkFP getAccessibleHyperlink; + + getAccessibleKeyBindingsFP getAccessibleKeyBindings; + getAccessibleIconsFP getAccessibleIcons; + getAccessibleActionsFP getAccessibleActions; + doAccessibleActionsFP doAccessibleActions; + + GetAccessibleTextInfoFP GetAccessibleTextInfo; + GetAccessibleTextItemsFP GetAccessibleTextItems; + GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo; + GetAccessibleTextAttributesFP GetAccessibleTextAttributes; + GetAccessibleTextRectFP GetAccessibleTextRect; + GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds; + GetAccessibleTextRangeFP GetAccessibleTextRange; + + GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext; + GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext; + GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext; + + AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext; + ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext; + GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext; + GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext; + IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext; + RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext; + SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext; + + setTextContentsFP setTextContents; + getParentWithRoleFP getParentWithRole; + getTopLevelObjectFP getTopLevelObject; + getParentWithRoleElseRootFP getParentWithRoleElseRoot; + getObjectDepthFP getObjectDepth; + getActiveDescendentFP getActiveDescendent; + + getVirtualAccessibleNameFP getVirtualAccessibleName; + requestFocusFP requestFocus; + selectTextRangeFP selectTextRange; + getTextAttributesInRangeFP getTextAttributesInRange; + getVisibleChildrenCountFP getVisibleChildrenCount; + getVisibleChildrenFP getVisibleChildren; + setCaretPositionFP setCaretPosition; + getCaretLocationFP getCaretLocation; + + getEventsWaitingFP getEventsWaiting; + + } AccessBridgeFPs; + + + /** + * Initialize the world + */ + BOOL initializeAccessBridge(); + BOOL shutdownAccessBridge(); + + /** + * Window routines + */ + BOOL IsJavaWindow(HWND window); + + // Returns the virtual machine ID and AccessibleContext for a top-level window + BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac); + + // Returns the HWND from the AccessibleContext of a top-level window + HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac); + + + /** + * Event handling routines + */ + void SetJavaShutdown(AccessBridge_JavaShutdownFP fp); + void SetFocusGained(AccessBridge_FocusGainedFP fp); + void SetFocusLost(AccessBridge_FocusLostFP fp); + + void SetCaretUpdate(AccessBridge_CaretUpdateFP fp); + + void SetMouseClicked(AccessBridge_MouseClickedFP fp); + void SetMouseEntered(AccessBridge_MouseEnteredFP fp); + void SetMouseExited(AccessBridge_MouseExitedFP fp); + void SetMousePressed(AccessBridge_MousePressedFP fp); + void SetMouseReleased(AccessBridge_MouseReleasedFP fp); + + void SetMenuCanceled(AccessBridge_MenuCanceledFP fp); + void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp); + void SetMenuSelected(AccessBridge_MenuSelectedFP fp); + void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp); + void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp); + void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp); + + void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp); + void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp); + void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp); + void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp); + void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp); + void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp); + void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp); + void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp); + void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp); + void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp); + + void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp); + + + /** + * General routines + */ + void ReleaseJavaObject(long vmID, Java_Object object); + BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info); + HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext); + + /** + * Accessible Context routines + */ + BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, + jint x, jint y, AccessibleContext *ac); + BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac); + BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info); + AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index); + AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac); + + /** + * Accessible Text routines + */ + BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); + BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); + BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); + BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); + BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); + BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); + BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); + + /* begin AccessibleTable routines */ + BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); + + BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column, + AccessibleTableCellInfo *tableCellInfo); + + BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); + BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); + + AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row); + AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column); + + jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table); + BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row); + BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections); + + jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table); + BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column); + BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections); + + jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index); + jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index); + jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column); + /* end AccessibleTable */ + + /* ----- AccessibleRelationSet routines */ + BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, + AccessibleRelationSetInfo *relationSetInfo); + + /* ----- AccessibleHypertext routines */ + + /* + * Returns hypertext information associated with a component. + */ + BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, + AccessibleHypertextInfo *hypertextInfo); + + /* + * Requests that a hyperlink be activated. + */ + BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, + AccessibleHyperlink accessibleHyperlink); + + /* + * Returns the number of hyperlinks in a component + * Maps to AccessibleHypertext.getLinkCount. + * Returns -1 on error. + */ + jint getAccessibleHyperlinkCount(const long vmID, + const AccessibleHypertext hypertext); + + /* + * This method is used to iterate through the hyperlinks in a component. It + * returns hypertext information for a component starting at hyperlink index + * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will + * be returned for each call to this method. + * Returns FALSE on error. + */ + BOOL getAccessibleHypertextExt(const long vmID, + const AccessibleContext accessibleContext, + const jint nStartIndex, + /* OUT */ AccessibleHypertextInfo *hypertextInfo); + + /* + * Returns the index into an array of hyperlinks that is associated with + * a character index in document; maps to AccessibleHypertext.getLinkIndex + * Returns -1 on error. + */ + jint getAccessibleHypertextLinkIndex(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex); + + /* + * Returns the nth hyperlink in a document + * Maps to AccessibleHypertext.getLink. + * Returns FALSE on error + */ + BOOL getAccessibleHyperlink(const long vmID, + const AccessibleHypertext hypertext, + const jint nIndex, + /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo); + + /* Accessible KeyBindings, Icons and Actions */ + + /* + * Returns a list of key bindings associated with a component. + */ + BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, + AccessibleKeyBindings *keyBindings); + + /* + * Returns a list of icons associate with a component. + */ + BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, + AccessibleIcons *icons); + + /* + * Returns a list of actions that a component can perform. + */ + BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, + AccessibleActions *actions); + + /* + * Request that a list of AccessibleActions be performed by a component. + * Returns TRUE if all actions are performed. Returns FALSE + * when the first requested action fails in which case "failure" + * contains the index of the action that failed. + */ + BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, + AccessibleActionsToDo *actionsToDo, jint *failure); + + + + /* Additional utility methods */ + + /* + * Returns whether two object references refer to the same object. + */ + BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2); + + /** + * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and + * be editable. The maximum text length that can be set is MAX_STRING_SIZE - 1. + * Returns whether successful + */ + BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text); + + /** + * Returns the Accessible Context with the specified role that is the + * ancestor of a given object. The role is one of the role strings + * defined in AccessBridgePackages.h + * If there is no ancestor object that has the specified role, + * returns (AccessibleContext)0. + */ + AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, + const wchar_t *role); + + /** + * Returns the Accessible Context with the specified role that is the + * ancestor of a given object. The role is one of the role strings + * defined in AccessBridgePackages.h. If an object with the specified + * role does not exist, returns the top level object for the Java Window. + * Returns (AccessibleContext)0 on error. + */ + AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, + const wchar_t *role); + + /** + * Returns the Accessible Context for the top level object in + * a Java Window. This is same Accessible Context that is obtained + * from GetAccessibleContextFromHWND for that window. Returns + * (AccessibleContext)0 on error. + */ + AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext); + + /** + * Returns how deep in the object hierarchy a given object is. + * The top most object in the object hierarchy has an object depth of 0. + * Returns -1 on error. + */ + int getObjectDepth (const long vmID, const AccessibleContext accessibleContext); + + /** + * Returns the Accessible Context of the current ActiveDescendent of an object. + * This method assumes the ActiveDescendent is the component that is currently + * selected in a container object. + * Returns (AccessibleContext)0 on error or if there is no selection. + */ + AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext); + + /** + /** + * Accessible Value routines + */ + BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); + BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); + BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); + + /** + * Accessible Selection routines + */ + void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); + void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as); + JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); + int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as); + BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i); + void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); + void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as); + + /** + * Additional methods for Teton + */ + + /** + * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns + * whether successful. + * + * Bug ID 4916682 - Implement JAWS AccessibleName policy + */ + BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, + wchar_t *name, int len); + + /** + * Request focus for a component. Returns whether successful. + * + * Bug ID 4944757 - requestFocus method needed + */ + BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext); + + /** + * Selects text between two indices. Selection includes the text at the start index + * and the text at the end index. Returns whether successful. + * + * Bug ID 4944758 - selectTextRange method needed + */ + BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex, + const int endIndex); + + /** + * Get text attributes between two indices. The attribute list includes the text at the + * start index and the text at the end index. Returns whether successful; + * + * Bug ID 4944761 - getTextAttributes between two indices method needed + */ + BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, + const int startIndex, const int endIndex, + AccessibleTextAttributesInfo *attributes, short *len); + + /** + * Returns the number of visible children of a component. Returns -1 on error. + * + * Bug ID 4944762- getVisibleChildren for list-like components needed + */ + int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext); + + /** + * Gets the visible children of an AccessibleContext. Returns whether successful. + * + * Bug ID 4944762- getVisibleChildren for list-like components needed + */ + BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, + const int startIndex, + VisibleChildrenInfo *visibleChildrenInfo); + + /** + * Set the caret to a text position. Returns whether successful. + * + * Bug ID 4944770 - setCaretPosition method needed + */ + BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, + const int position); + + /** + * Gets the text caret location + */ + BOOL getCaretLocation(long vmID, AccessibleContext ac, + AccessibleTextRectInfo *rectInfo, jint index); + + /** + * Gets the number of events waiting to fire + */ + int getEventsWaiting(); + +#ifdef __cplusplus +} +#endif diff --git a/SlinkyNative/include/jdk/win32/bridge/AccessBridgePackages.h b/SlinkyNative/include/jdk/win32/bridge/AccessBridgePackages.h new file mode 100644 index 0000000..564dd7f --- /dev/null +++ b/SlinkyNative/include/jdk/win32/bridge/AccessBridgePackages.h @@ -0,0 +1,2215 @@ +/* + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Header file for packages of paramaters passed between Java Accessibility + * and native Assistive Technologies + */ + +#ifndef __AccessBridgePackages_H__ +#define __AccessBridgePackages_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef ACCESSBRIDGE_ARCH_LEGACY +typedef jobject JOBJECT64; +typedef HWND ABHWND64; +#define ABHandleToLong +#define ABLongToHandle +#else +typedef jlong JOBJECT64; +typedef long ABHWND64; +#define ABHandleToLong HandleToLong +#define ABLongToHandle LongToHandle +#endif + +#define MAX_BUFFER_SIZE 10240 +#define MAX_STRING_SIZE 1024 +#define SHORT_STRING_SIZE 256 + + // object types + typedef JOBJECT64 AccessibleContext; + typedef JOBJECT64 AccessibleText; + typedef JOBJECT64 AccessibleValue; + typedef JOBJECT64 AccessibleSelection; + typedef JOBJECT64 Java_Object; + typedef JOBJECT64 PropertyChangeEvent; + typedef JOBJECT64 FocusEvent; + typedef JOBJECT64 CaretEvent; + typedef JOBJECT64 MouseEvent; + typedef JOBJECT64 MenuEvent; + typedef JOBJECT64 AccessibleTable; + typedef JOBJECT64 AccessibleHyperlink; + typedef JOBJECT64 AccessibleHypertext; + + /** + ****************************************************** + * Java event types + ****************************************************** + */ + +#define cPropertyChangeEvent (jlong) 1 // 1 +#define cFocusGainedEvent (jlong) 2 // 2 +#define cFocusLostEvent (jlong) 4 // 4 +#define cCaretUpdateEvent (jlong) 8 // 8 +#define cMouseClickedEvent (jlong) 16 // 10 +#define cMouseEnteredEvent (jlong) 32 // 20 +#define cMouseExitedEvent (jlong) 64 // 40 +#define cMousePressedEvent (jlong) 128 // 80 +#define cMouseReleasedEvent (jlong) 256 // 100 +#define cMenuCanceledEvent (jlong) 512 // 200 +#define cMenuDeselectedEvent (jlong) 1024 // 400 +#define cMenuSelectedEvent (jlong) 2048 // 800 +#define cPopupMenuCanceledEvent (jlong) 4096 // 1000 +#define cPopupMenuWillBecomeInvisibleEvent (jlong) 8192 // 2000 +#define cPopupMenuWillBecomeVisibleEvent (jlong) 16384 // 4000 +#define cJavaShutdownEvent (jlong) 32768 // 8000 + + /** + ****************************************************** + * Accessible Roles + * Defines all AccessibleRoles in Local.US + ****************************************************** + */ + + /** + * Object is used to alert the user about something. + */ +#define ACCESSIBLE_ALERT L"alert" + + /** + * The header for a column of data. + */ +#define ACCESSIBLE_COLUMN_HEADER L"column header" + + /** + * Object that can be drawn into and is used to trap + * events. + * see ACCESSIBLE_FRAME + * see ACCESSIBLE_GLASS_PANE + * see ACCESSIBLE_LAYERED_PANE + */ +#define ACCESSIBLE_CANVAS L"canvas" + + /** + * A list of choices the user can select from. Also optionally + * allows the user to enter a choice of their own. + */ +#define ACCESSIBLE_COMBO_BOX L"combo box" + + /** + * An iconified internal frame in a DESKTOP_PANE. + * see ACCESSIBLE_DESKTOP_PANE + * see ACCESSIBLE_INTERNAL_FRAME + */ +#define ACCESSIBLE_DESKTOP_ICON L"desktop icon" + + /** + * A frame-like object that is clipped by a desktop pane. The + * desktop pane, internal frame, and desktop icon objects are + * often used to create multiple document interfaces within an + * application. + * see ACCESSIBLE_DESKTOP_ICON + * see ACCESSIBLE_DESKTOP_PANE + * see ACCESSIBLE_FRAME + */ +#define ACCESSIBLE_INTERNAL_FRAME L"internal frame" + + /** + * A pane that supports internal frames and + * iconified versions of those internal frames. + * see ACCESSIBLE_DESKTOP_ICON + * see ACCESSIBLE_INTERNAL_FRAME + */ +#define ACCESSIBLE_DESKTOP_PANE L"desktop pane" + + /** + * A specialized pane whose primary use is inside a DIALOG + * see ACCESSIBLE_DIALOG + */ +#define ACCESSIBLE_OPTION_PANE L"option pane" + + /** + * A top level window with no title or border. + * see ACCESSIBLE_FRAME + * see ACCESSIBLE_DIALOG + */ +#define ACCESSIBLE_WINDOW L"window" + + /** + * A top level window with a title bar, border, menu bar, etc. It is + * often used as the primary window for an application. + * see ACCESSIBLE_DIALOG + * see ACCESSIBLE_CANVAS + * see ACCESSIBLE_WINDOW + */ +#define ACCESSIBLE_FRAME L"frame" + + /** + * A top level window with title bar and a border. A dialog is similar + * to a frame, but it has fewer properties and is often used as a + * secondary window for an application. + * see ACCESSIBLE_FRAME + * see ACCESSIBLE_WINDOW + */ +#define ACCESSIBLE_DIALOG L"dialog" + + /** + * A specialized dialog that lets the user choose a color. + */ +#define ACCESSIBLE_COLOR_CHOOSER L"color chooser" + + + /** + * A pane that allows the user to navigate through + * and select the contents of a directory. May be used + * by a file chooser. + * see ACCESSIBLE_FILE_CHOOSER + */ +#define ACCESSIBLE_DIRECTORY_PANE L"directory pane" + + /** + * A specialized dialog that displays the files in the directory + * and lets the user select a file, browse a different directory, + * or specify a filename. May use the directory pane to show the + * contents of a directory. + * see ACCESSIBLE_DIRECTORY_PANE + */ +#define ACCESSIBLE_FILE_CHOOSER L"file chooser" + + /** + * An object that fills up space in a user interface. It is often + * used in interfaces to tweak the spacing between components, + * but serves no other purpose. + */ +#define ACCESSIBLE_FILLER L"filler" + + /** + * A hypertext anchor + */ +#define ACCESSIBLE_HYPERLINK L"hyperlink" + + /** + * A small fixed size picture, typically used to decorate components. + */ +#define ACCESSIBLE_ICON L"icon" + + /** + * An object used to present an icon or short string in an interface. + */ +#define ACCESSIBLE_LABEL L"label" + + /** + * A specialized pane that has a glass pane and a layered pane as its + * children. + * see ACCESSIBLE_GLASS_PANE + * see ACCESSIBLE_LAYERED_PANE + */ +#define ACCESSIBLE_ROOT_PANE L"root pane" + + /** + * A pane that is guaranteed to be painted on top + * of all panes beneath it. + * see ACCESSIBLE_ROOT_PANE + * see ACCESSIBLE_CANVAS + */ +#define ACCESSIBLE_GLASS_PANE L"glass pane" + + /** + * A specialized pane that allows its children to be drawn in layers, + * providing a form of stacking order. This is usually the pane that + * holds the menu bar as well as the pane that contains most of the + * visual components in a window. + * see ACCESSIBLE_GLASS_PANE + * see ACCESSIBLE_ROOT_PANE + */ +#define ACCESSIBLE_LAYERED_PANE L"layered pane" + + /** + * An object that presents a list of objects to the user and allows the + * user to select one or more of them. A list is usually contained + * within a scroll pane. + * see ACCESSIBLE_SCROLL_PANE + * see ACCESSIBLE_LIST_ITEM + */ +#define ACCESSIBLE_LIST L"list" + + /** + * An object that presents an element in a list. A list is usually + * contained within a scroll pane. + * see ACCESSIBLE_SCROLL_PANE + * see ACCESSIBLE_LIST + */ +#define ACCESSIBLE_LIST_ITEM L"list item" + + /** + * An object usually drawn at the top of the primary dialog box of + * an application that contains a list of menus the user can choose + * from. For example, a menu bar might contain menus for "File," + * "Edit," and "Help." + * see ACCESSIBLE_MENU + * see ACCESSIBLE_POPUP_MENU + * see ACCESSIBLE_LAYERED_PANE + */ +#define ACCESSIBLE_MENU_BAR L"menu bar" + + /** + * A temporary window that is usually used to offer the user a + * list of choices, and then hides when the user selects one of + * those choices. + * see ACCESSIBLE_MENU + * see ACCESSIBLE_MENU_ITEM + */ +#define ACCESSIBLE_POPUP_MENU L"popup menu" + + /** + * An object usually found inside a menu bar that contains a list + * of actions the user can choose from. A menu can have any object + * as its children, but most often they are menu items, other menus, + * or rudimentary objects such as radio buttons, check boxes, or + * separators. For example, an application may have an "Edit" menu + * that contains menu items for "Cut" and "Paste." + * see ACCESSIBLE_MENU_BAR + * see ACCESSIBLE_MENU_ITEM + * see ACCESSIBLE_SEPARATOR + * see ACCESSIBLE_RADIO_BUTTON + * see ACCESSIBLE_CHECK_BOX + * see ACCESSIBLE_POPUP_MENU + */ +#define ACCESSIBLE_MENU L"menu" + + /** + * An object usually contained in a menu that presents an action + * the user can choose. For example, the "Cut" menu item in an + * "Edit" menu would be an action the user can select to cut the + * selected area of text in a document. + * see ACCESSIBLE_MENU_BAR + * see ACCESSIBLE_SEPARATOR + * see ACCESSIBLE_POPUP_MENU + */ +#define ACCESSIBLE_MENU_ITEM L"menu item" + + /** + * An object usually contained in a menu to provide a visual + * and logical separation of the contents in a menu. For example, + * the "File" menu of an application might contain menu items for + * "Open," "Close," and "Exit," and will place a separator between + * "Close" and "Exit" menu items. + * see ACCESSIBLE_MENU + * see ACCESSIBLE_MENU_ITEM + */ +#define ACCESSIBLE_SEPARATOR L"separator" + + /** + * An object that presents a series of panels (or page tabs), one at a + * time, through some mechanism provided by the object. The most common + * mechanism is a list of tabs at the top of the panel. The children of + * a page tab list are all page tabs. + * see ACCESSIBLE_PAGE_TAB + */ +#define ACCESSIBLE_PAGE_TAB_LIST L"page tab list" + + /** + * An object that is a child of a page tab list. Its sole child is + * the panel that is to be presented to the user when the user + * selects the page tab from the list of tabs in the page tab list. + * see ACCESSIBLE_PAGE_TAB_LIST + */ +#define ACCESSIBLE_PAGE_TAB L"page tab" + + /** + * A generic container that is often used to group objects. + */ +#define ACCESSIBLE_PANEL L"panel" + + /** + * An object used to indicate how much of a task has been completed. + */ +#define ACCESSIBLE_PROGRESS_BAR L"progress bar" + + /** + * A text object used for passwords, or other places where the + * text contents is not shown visibly to the user + */ +#define ACCESSIBLE_PASSWORD_TEXT L"password text" + + /** + * An object the user can manipulate to tell the application to do + * something. + * see ACCESSIBLE_CHECK_BOX + * see ACCESSIBLE_TOGGLE_BUTTON + * see ACCESSIBLE_RADIO_BUTTON + */ +#define ACCESSIBLE_PUSH_BUTTON L"push button" + + /** + * A specialized push button that can be checked or unchecked, but + * does not provide a separate indicator for the current state. + * see ACCESSIBLE_PUSH_BUTTON + * see ACCESSIBLE_CHECK_BOX + * see ACCESSIBLE_RADIO_BUTTON + */ +#define ACCESSIBLE_TOGGLE_BUTTON L"toggle button" + + /** + * A choice that can be checked or unchecked and provides a + * separate indicator for the current state. + * see ACCESSIBLE_PUSH_BUTTON + * see ACCESSIBLE_TOGGLE_BUTTON + * see ACCESSIBLE_RADIO_BUTTON + */ +#define ACCESSIBLE_CHECK_BOX L"check box" + + /** + * A specialized check box that will cause other radio buttons in the + * same group to become unchecked when this one is checked. + * see ACCESSIBLE_PUSH_BUTTON + * see ACCESSIBLE_TOGGLE_BUTTON + * see ACCESSIBLE_CHECK_BOX + */ +#define ACCESSIBLE_RADIO_BUTTON L"radio button" + + /** + * The header for a row of data. + */ +#define ACCESSIBLE_ROW_HEADER L"row header" + + /** + * An object that allows a user to incrementally view a large amount + * of information. Its children can include scroll bars and a viewport. + * see ACCESSIBLE_SCROLL_BAR + * see ACCESSIBLE_VIEWPORT + */ +#define ACCESSIBLE_SCROLL_PANE L"scroll pane" + + /** + * An object usually used to allow a user to incrementally view a + * large amount of data. Usually used only by a scroll pane. + * see ACCESSIBLE_SCROLL_PANE + */ +#define ACCESSIBLE_SCROLL_BAR L"scroll bar" + + /** + * An object usually used in a scroll pane. It represents the portion + * of the entire data that the user can see. As the user manipulates + * the scroll bars, the contents of the viewport can change. + * see ACCESSIBLE_SCROLL_PANE + */ +#define ACCESSIBLE_VIEWPORT L"viewport" + + /** + * An object that allows the user to select from a bounded range. For + * example, a slider might be used to select a number between 0 and 100. + */ +#define ACCESSIBLE_SLIDER L"slider" + + /** + * A specialized panel that presents two other panels at the same time. + * Between the two panels is a divider the user can manipulate to make + * one panel larger and the other panel smaller. + */ +#define ACCESSIBLE_SPLIT_PANE L"split pane" + + /** + * An object used to present information in terms of rows and columns. + * An example might include a spreadsheet application. + */ +#define ACCESSIBLE_TABLE L"table" + + /** + * An object that presents text to the user. The text is usually + * editable by the user as opposed to a label. + * see ACCESSIBLE_LABEL + */ +#define ACCESSIBLE_TEXT L"text" + + /** + * An object used to present hierarchical information to the user. + * The individual nodes in the tree can be collapsed and expanded + * to provide selective disclosure of the tree's contents. + */ +#define ACCESSIBLE_TREE L"tree" + + /** + * A bar or palette usually composed of push buttons or toggle buttons. + * It is often used to provide the most frequently used functions for an + * application. + */ +#define ACCESSIBLE_TOOL_BAR L"tool bar" + + /** + * An object that provides information about another object. The + * accessibleDescription property of the tool tip is often displayed + * to the user in a small L"help bubble" when the user causes the + * mouse to hover over the object associated with the tool tip. + */ +#define ACCESSIBLE_TOOL_TIP L"tool tip" + + /** + * An AWT component, but nothing else is known about it. + * see ACCESSIBLE_SWING_COMPONENT + * see ACCESSIBLE_UNKNOWN + */ +#define ACCESSIBLE_AWT_COMPONENT L"awt component" + + /** + * A Swing component, but nothing else is known about it. + * see ACCESSIBLE_AWT_COMPONENT + * see ACCESSIBLE_UNKNOWN + */ +#define ACCESSIBLE_SWING_COMPONENT L"swing component" + + /** + * The object contains some Accessible information, but its role is + * not known. + * see ACCESSIBLE_AWT_COMPONENT + * see ACCESSIBLE_SWING_COMPONENT + */ +#define ACCESSIBLE_UNKNOWN L"unknown" + + /** + * A STATUS_BAR is an simple component that can contain + * multiple labels of status information to the user. + */ +#define ACCESSIBLE_STATUS_BAR L"status bar" + + /** + * A DATE_EDITOR is a component that allows users to edit + * java.util.Date and java.util.Time objects + */ +#define ACCESSIBLE_DATE_EDITOR L"date editor" + + /** + * A SPIN_BOX is a simple spinner component and its main use + * is for simple numbers. + */ +#define ACCESSIBLE_SPIN_BOX L"spin box" + + /** + * A FONT_CHOOSER is a component that lets the user pick various + * attributes for fonts. + */ +#define ACCESSIBLE_FONT_CHOOSER L"font chooser" + + /** + * A GROUP_BOX is a simple container that contains a border + * around it and contains components inside it. + */ +#define ACCESSIBLE_GROUP_BOX L"group box" + + /** + * A text header + */ +#define ACCESSIBLE_HEADER L"header" + + /** + * A text footer + */ +#define ACCESSIBLE_FOOTER L"footer" + + /** + * A text paragraph + */ +#define ACCESSIBLE_PARAGRAPH L"paragraph" + + /** + * A ruler is an object used to measure distance + */ +#define ACCESSIBLE_RULER L"ruler" + + /** + * A role indicating the object acts as a formula for + * calculating a value. An example is a formula in + * a spreadsheet cell. + */ +#define ACCESSIBLE_EDITBAR L"editbar" + + /** + * A role indicating the object monitors the progress + * of some operation. + */ +#define PROGRESS_MONITOR L"progress monitor" + + + /** + ****************************************************** + * Accessibility event types + ****************************************************** + */ + +#define cPropertyNameChangeEvent (jlong) 1 // 1 +#define cPropertyDescriptionChangeEvent (jlong) 2 // 2 +#define cPropertyStateChangeEvent (jlong) 4 // 4 +#define cPropertyValueChangeEvent (jlong) 8 // 8 +#define cPropertySelectionChangeEvent (jlong) 16 // 10 +#define cPropertyTextChangeEvent (jlong) 32 // 20 +#define cPropertyCaretChangeEvent (jlong) 64 // 40 +#define cPropertyVisibleDataChangeEvent (jlong) 128 // 80 +#define cPropertyChildChangeEvent (jlong) 256 // 100 +#define cPropertyActiveDescendentChangeEvent (jlong) 512 // 200 +#define cPropertyTableModelChangeEvent (jlong) 1024 // 400 + + /** + ****************************************************** + * optional AccessibleContext interfaces + * + * This version of the bridge reuses the accessibleValue + * field in the AccessibleContextInfo struct to represent + * additional optional interfaces that are supported by + * the Java AccessibleContext. This is backwardly compatable + * because the old accessibleValue was set to the BOOL + * value TRUE (i.e., 1) if the AccessibleValue interface is + * supported. + ****************************************************** + */ + +#define cAccessibleValueInterface (jlong) 1 // 1 << 1 (TRUE) +#define cAccessibleActionInterface (jlong) 2 // 1 << 2 +#define cAccessibleComponentInterface (jlong) 4 // 1 << 3 +#define cAccessibleSelectionInterface (jlong) 8 // 1 << 4 +#define cAccessibleTableInterface (jlong) 16 // 1 << 5 +#define cAccessibleTextInterface (jlong) 32 // 1 << 6 +#define cAccessibleHypertextInterface (jlong) 64 // 1 << 7 + + + /** + ****************************************************** + * Accessibility information bundles + ****************************************************** + */ + + typedef struct AccessBridgeVersionInfoTag { + wchar_t VMversion[SHORT_STRING_SIZE]; // output of "java -version" + wchar_t bridgeJavaClassVersion[SHORT_STRING_SIZE]; // version of the AccessBridge.class + wchar_t bridgeJavaDLLVersion[SHORT_STRING_SIZE]; // version of JavaAccessBridge.dll + wchar_t bridgeWinDLLVersion[SHORT_STRING_SIZE]; // version of WindowsAccessBridge.dll + } AccessBridgeVersionInfo; + + + typedef struct AccessibleContextInfoTag { + wchar_t name[MAX_STRING_SIZE]; // the AccessibleName of the object + wchar_t description[MAX_STRING_SIZE]; // the AccessibleDescription of the object + + wchar_t role[SHORT_STRING_SIZE]; // localized AccesibleRole string + wchar_t role_en_US[SHORT_STRING_SIZE]; // AccesibleRole string in the en_US locale + wchar_t states[SHORT_STRING_SIZE]; // localized AccesibleStateSet string (comma separated) + wchar_t states_en_US[SHORT_STRING_SIZE]; // AccesibleStateSet string in the en_US locale (comma separated) + + jint indexInParent; // index of object in parent + jint childrenCount; // # of children, if any + + jint x; // screen coords in pixels + jint y; // " + jint width; // pixel width of object + jint height; // pixel height of object + + BOOL accessibleComponent; // flags for various additional + BOOL accessibleAction; // Java Accessibility interfaces + BOOL accessibleSelection; // FALSE if this object doesn't + BOOL accessibleText; // implement the additional interface + // in question + + // BOOL accessibleValue; // old BOOL indicating whether AccessibleValue is supported + BOOL accessibleInterfaces; // new bitfield containing additional interface flags + + } AccessibleContextInfo; + + + + // AccessibleText packages + typedef struct AccessibleTextInfoTag { + jint charCount; // # of characters in this text object + jint caretIndex; // index of caret + jint indexAtPoint; // index at the passsed in point + } AccessibleTextInfo; + + typedef struct AccessibleTextItemsInfoTag { + wchar_t letter; + wchar_t word[SHORT_STRING_SIZE]; + wchar_t sentence[MAX_STRING_SIZE]; + } AccessibleTextItemsInfo; + + typedef struct AccessibleTextSelectionInfoTag { + jint selectionStartIndex; + jint selectionEndIndex; + wchar_t selectedText[MAX_STRING_SIZE]; + } AccessibleTextSelectionInfo; + + typedef struct AccessibleTextRectInfoTag { + jint x; // bounding rect of char at index + jint y; // " + jint width; // " + jint height; // " + } AccessibleTextRectInfo; + + // standard attributes for text; note: tabstops are not supported + typedef struct AccessibleTextAttributesInfoTag { + BOOL bold; + BOOL italic; + BOOL underline; + BOOL strikethrough; + BOOL superscript; + BOOL subscript; + + wchar_t backgroundColor[SHORT_STRING_SIZE]; + wchar_t foregroundColor[SHORT_STRING_SIZE]; + wchar_t fontFamily[SHORT_STRING_SIZE]; + jint fontSize; + + jint alignment; + jint bidiLevel; + + jfloat firstLineIndent; + jfloat leftIndent; + jfloat rightIndent; + jfloat lineSpacing; + jfloat spaceAbove; + jfloat spaceBelow; + + wchar_t fullAttributesString[MAX_STRING_SIZE]; + } AccessibleTextAttributesInfo; + + /** + ****************************************************** + * IPC management typedefs + ****************************************************** + */ + +#define cMemoryMappedNameSize 255 + + /** + * sent by the WindowsDLL -> the memory-mapped file is setup + * + */ + typedef struct MemoryMappedFileCreatedPackageTag { +// HWND bridgeWindow; // redundant, but easier to get to here... + ABHWND64 bridgeWindow; // redundant, but easier to get to here... + char filename[cMemoryMappedNameSize]; + } MemoryMappedFileCreatedPackage; + + + + + /** + * sent when a new JavaVM attaches to the Bridge + * + */ + typedef struct JavaVMCreatedPackageTag { + ABHWND64 bridgeWindow; + long vmID; + } JavaVMCreatedPackage; + + /** + * sent when a JavaVM detatches from the Bridge + * + */ + typedef struct JavaVMDestroyedPackageTag { + ABHWND64 bridgeWindow; + } JavaVMDestroyedPackage; + + /** + * sent when a new AT attaches to the Bridge + * + */ + typedef struct WindowsATCreatedPackageTag { + ABHWND64 bridgeWindow; + } WindowsATCreatedPackage; + + /** + * sent when an AT detatches from the Bridge + * + */ + typedef struct WindowsATDestroyedPackageTag { + ABHWND64 bridgeWindow; + } WindowsATDestroyedPackage; + + + /** + * sent by JVM Bridges in response to a WindowsATCreate + * message; saying "howdy, welcome to the neighborhood" + * + */ + typedef struct JavaVMPresentNotificationPackageTag { + ABHWND64 bridgeWindow; + long vmID; + } JavaVMPresentNotificationPackage; + + /** + * sent by AT Bridges in response to a JavaVMCreate + * message; saying "howdy, welcome to the neighborhood" + * + */ + typedef struct WindowsATPresentNotificationPackageTag { + ABHWND64 bridgeWindow; + } WindowsATPresentNotificationPackage; + + + /** + ****************************************************** + * Core packages + ****************************************************** + */ + + typedef struct ReleaseJavaObjectPackageTag { + long vmID; + JOBJECT64 object; + } ReleaseJavaObjectPackage; + + typedef struct GetAccessBridgeVersionPackageTag { + long vmID; // can't get VM info w/out a VM! + AccessBridgeVersionInfo rVersionInfo; + } GetAccessBridgeVersionPackage; + + typedef struct IsSameObjectPackageTag { + long vmID; + JOBJECT64 obj1; + JOBJECT64 obj2; + jboolean rResult; + } IsSameObjectPackage; + + /** + ****************************************************** + * Windows packages + ****************************************************** + */ + + typedef struct IsJavaWindowPackageTag { + jint window; + jboolean rResult; + } IsJavaWindowPackage; + + typedef struct GetAccessibleContextFromHWNDPackageTag { + jint window; + long rVMID; + JOBJECT64 rAccessibleContext; + } GetAccessibleContextFromHWNDPackage; + + typedef struct GetHWNDFromAccessibleContextPackageTag { + JOBJECT64 accessibleContext; + ABHWND64 rHWND; + } GetHWNDFromAccessibleContextPackage; + + /** +****************************************************** +* AccessibleContext packages +****************************************************** +*/ + + typedef struct GetAccessibleContextAtPackageTag { + jint x; + jint y; + long vmID; + JOBJECT64 AccessibleContext; // look within this AC + JOBJECT64 rAccessibleContext; + } GetAccessibleContextAtPackage; + + typedef struct GetAccessibleContextWithFocusPackageTag { + long rVMID; + JOBJECT64 rAccessibleContext; + } GetAccessibleContextWithFocusPackage; + + typedef struct GetAccessibleContextInfoPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + AccessibleContextInfo rAccessibleContextInfo; + } GetAccessibleContextInfoPackage; + + typedef struct GetAccessibleChildFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint childIndex; + JOBJECT64 rAccessibleContext; + } GetAccessibleChildFromContextPackage; + + typedef struct GetAccessibleParentFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + JOBJECT64 rAccessibleContext; + } GetAccessibleParentFromContextPackage; + + /** +****************************************************** +* AccessibleTable packages +****************************************************** +*/ + +#define MAX_TABLE_SELECTIONS 64 + + // table information + typedef struct AccessibleTableInfoTag { + JOBJECT64 caption; // AccesibleContext + JOBJECT64 summary; // AccessibleContext + jint rowCount; + jint columnCount; + JOBJECT64 accessibleContext; + JOBJECT64 accessibleTable; + } AccessibleTableInfo; + + typedef struct GetAccessibleTableInfoPackageTag { + long vmID; + JOBJECT64 accessibleContext; + AccessibleTableInfo rTableInfo; + } GetAccessibleTableInfoPackage; + + // table cell information + typedef struct AccessibleTableCellInfoTag { + JOBJECT64 accessibleContext; + jint index; + jint row; + jint column; + jint rowExtent; + jint columnExtent; + jboolean isSelected; + } AccessibleTableCellInfo; + + typedef struct GetAccessibleTableCellInfoPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint row; + jint column; + AccessibleTableCellInfo rTableCellInfo; + } GetAccessibleTableCellInfoPackage; + + typedef struct GetAccessibleTableRowHeaderPackageTag { + long vmID; + JOBJECT64 accessibleContext; + AccessibleTableInfo rTableInfo; + } GetAccessibleTableRowHeaderPackage; + + typedef struct GetAccessibleTableColumnHeaderPackageTag { + long vmID; + JOBJECT64 accessibleContext; + AccessibleTableInfo rTableInfo; + } GetAccessibleTableColumnHeaderPackage; + + typedef struct GetAccessibleTableRowDescriptionPackageTag { + long vmID; + JOBJECT64 accessibleContext; + jint row; + JOBJECT64 rAccessibleContext; + } GetAccessibleTableRowDescriptionPackage; + + typedef struct GetAccessibleTableColumnDescriptionPackageTag { + long vmID; + JOBJECT64 accessibleContext; + jint column; + JOBJECT64 rAccessibleContext; + } GetAccessibleTableColumnDescriptionPackage; + + typedef struct GetAccessibleTableRowSelectionCountPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint rCount; + } GetAccessibleTableRowSelectionCountPackage; + + typedef struct IsAccessibleTableRowSelectedPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint row; + jboolean rResult; + } IsAccessibleTableRowSelectedPackage; + + typedef struct GetAccessibleTableRowSelectionsPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint count; + jint rSelections[MAX_TABLE_SELECTIONS]; + } GetAccessibleTableRowSelectionsPackage; + + typedef struct GetAccessibleTableColumnSelectionCountPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint rCount; + } GetAccessibleTableColumnSelectionCountPackage; + + typedef struct IsAccessibleTableColumnSelectedPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint column; + jboolean rResult; + } IsAccessibleTableColumnSelectedPackage; + + typedef struct GetAccessibleTableColumnSelectionsPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint count; + jint rSelections[MAX_TABLE_SELECTIONS]; + } GetAccessibleTableColumnSelectionsPackage; + + + typedef struct GetAccessibleTableRowPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint index; + jint rRow; + } GetAccessibleTableRowPackage; + + typedef struct GetAccessibleTableColumnPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint index; + jint rColumn; + } GetAccessibleTableColumnPackage; + + typedef struct GetAccessibleTableIndexPackageTag { + long vmID; + JOBJECT64 accessibleTable; + jint row; + jint column; + jint rIndex; + } GetAccessibleTableIndexPackage; + + + /** + ****************************************************** + * AccessibleRelationSet packages + ****************************************************** + */ + +#define MAX_RELATION_TARGETS 25 +#define MAX_RELATIONS 5 + + typedef struct AccessibleRelationInfoTag { + wchar_t key[SHORT_STRING_SIZE]; + jint targetCount; + JOBJECT64 targets[MAX_RELATION_TARGETS]; // AccessibleContexts + } AccessibleRelationInfo; + + typedef struct AccessibleRelationSetInfoTag { + jint relationCount; + AccessibleRelationInfo relations[MAX_RELATIONS]; + } AccessibleRelationSetInfo; + + typedef struct GetAccessibleRelationSetPackageTag { + long vmID; + JOBJECT64 accessibleContext; + AccessibleRelationSetInfo rAccessibleRelationSetInfo; + } GetAccessibleRelationSetPackage; + + /** + ****************************************************** + * AccessibleHypertext packagess + ****************************************************** + */ + +#define MAX_HYPERLINKS 64 // maximum number of hyperlinks returned + + // hyperlink information + typedef struct AccessibleHyperlinkInfoTag { + wchar_t text[SHORT_STRING_SIZE]; // the hyperlink text + jint startIndex; //index in the hypertext document where the link begins + jint endIndex; //index in the hypertext document where the link ends + JOBJECT64 accessibleHyperlink; // AccessibleHyperlink object + } AccessibleHyperlinkInfo; + + // hypertext information + typedef struct AccessibleHypertextInfoTag { + jint linkCount; // number of hyperlinks + AccessibleHyperlinkInfo links[MAX_HYPERLINKS]; // the hyperlinks + JOBJECT64 accessibleHypertext; // AccessibleHypertext object + } AccessibleHypertextInfo; + + // struct for sending a message to get the hypertext for an AccessibleContext + typedef struct GetAccessibleHypertextPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext with hypertext + AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext + } GetAccessibleHypertextPackage; + + // struct for sending an message to activate a hyperlink + typedef struct ActivateAccessibleHyperlinkPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext containing the link + JOBJECT64 accessibleHyperlink; // the link to activate + BOOL rResult; // hyperlink activation return value + } ActivateAccessibleHyperlinkPackage; + + // struct for sending a message to get the number of hyperlinks in a component + typedef struct GetAccessibleHyperlinkCountPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext containing AccessibleHypertext + jint rLinkCount; // link count return value + } GetAccessibleHyperlinkCountPackage; + + // struct for sending a message to get the hypertext for an AccessibleContext + // starting at a specified index in the document + typedef struct GetAccessibleHypertextExtPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext with hypertext + jint startIndex; // start index in document + AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext + BOOL rSuccess; // whether call succeeded + } GetAccessibleHypertextExtPackage; + + // struct for sending a message to get the nth hyperlink in a document; + // maps to AccessibleHypertext.getLink + typedef struct GetAccessibleHyperlinkPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 hypertext; // AccessibleHypertext + jint linkIndex; // hyperlink index + AccessibleHyperlinkInfo rAccessibleHyperlinkInfo; // returned hyperlink + } GetAccessibleHyperlinkPackage; + + // struct for sending a message to get the index into an array + // of hyperlinks that is associated with a character index in a + // document; maps to AccessibleHypertext.getLinkIndex + typedef struct GetAccessibleHypertextLinkIndexPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 hypertext; // AccessibleHypertext + jint charIndex; // character index in document + jint rLinkIndex; // returned hyperlink index + } GetAccessibleHypertextLinkIndexPackage; + + /** + ****************************************************** + * Accessible Key Bindings packages + ****************************************************** + */ + +#define MAX_KEY_BINDINGS 10 + + // keyboard character modifiers +#define ACCESSIBLE_SHIFT_KEYSTROKE 1 +#define ACCESSIBLE_CONTROL_KEYSTROKE 2 +#define ACCESSIBLE_META_KEYSTROKE 4 +#define ACCESSIBLE_ALT_KEYSTROKE 8 +#define ACCESSIBLE_ALT_GRAPH_KEYSTROKE 16 +#define ACCESSIBLE_BUTTON1_KEYSTROKE 32 +#define ACCESSIBLE_BUTTON2_KEYSTROKE 64 +#define ACCESSIBLE_BUTTON3_KEYSTROKE 128 +#define ACCESSIBLE_FKEY_KEYSTROKE 256 // F key pressed, character contains 1-24 +#define ACCESSIBLE_CONTROLCODE_KEYSTROKE 512 // Control code key pressed, character contains control code. + +// The supported control code keys are: +#define ACCESSIBLE_VK_BACK_SPACE 8 +#define ACCESSIBLE_VK_DELETE 127 +#define ACCESSIBLE_VK_DOWN 40 +#define ACCESSIBLE_VK_END 35 +#define ACCESSIBLE_VK_HOME 36 +#define ACCESSIBLE_VK_INSERT 155 +#define ACCESSIBLE_VK_KP_DOWN 225 +#define ACCESSIBLE_VK_KP_LEFT 226 +#define ACCESSIBLE_VK_KP_RIGHT 227 +#define ACCESSIBLE_VK_KP_UP 224 +#define ACCESSIBLE_VK_LEFT 37 +#define ACCESSIBLE_VK_PAGE_DOWN 34 +#define ACCESSIBLE_VK_PAGE_UP 33 +#define ACCESSIBLE_VK_RIGHT 39 +#define ACCESSIBLE_VK_UP 38 + + // a key binding associates with a component + typedef struct AccessibleKeyBindingInfoTag { + jchar character; // the key character + jint modifiers; // the key modifiers + } AccessibleKeyBindingInfo; + + // all of the key bindings associated with a component + typedef struct AccessibleKeyBindingsTag { + int keyBindingsCount; // number of key bindings + AccessibleKeyBindingInfo keyBindingInfo[MAX_KEY_BINDINGS]; + } AccessibleKeyBindings; + + // struct to get the key bindings associated with a component + typedef struct GetAccessibleKeyBindingsPackageTag { + long vmID; // the virtual machine id + JOBJECT64 accessibleContext; // the component + AccessibleKeyBindings rAccessibleKeyBindings; // the key bindings + } GetAccessibleKeyBindingsPackage; + + /** +****************************************************** +* AccessibleIcon packages +****************************************************** +*/ +#define MAX_ICON_INFO 8 + + // an icon assocated with a component + typedef struct AccessibleIconInfoTag { + wchar_t description[SHORT_STRING_SIZE]; // icon description + jint height; // icon height + jint width; // icon width + } AccessibleIconInfo; + + // all of the icons associated with a component + typedef struct AccessibleIconsTag { + jint iconsCount; // number of icons + AccessibleIconInfo iconInfo[MAX_ICON_INFO]; // the icons + } AccessibleIcons; + + // struct to get the icons associated with a component + typedef struct GetAccessibleIconsPackageTag { + long vmID; // the virtual machine id + JOBJECT64 accessibleContext; // the component + AccessibleIcons rAccessibleIcons; // the icons + } GetAccessibleIconsPackage; + + + /** +****************************************************** +* AccessibleAction packages +****************************************************** +*/ +#define MAX_ACTION_INFO 256 +#define MAX_ACTIONS_TO_DO 32 + + // an action assocated with a component + typedef struct AccessibleActionInfoTag { + wchar_t name[SHORT_STRING_SIZE]; // action name + } AccessibleActionInfo; + + // all of the actions associated with a component + typedef struct AccessibleActionsTag { + jint actionsCount; // number of actions + AccessibleActionInfo actionInfo[MAX_ACTION_INFO]; // the action information + } AccessibleActions; + + // struct for requesting the actions associated with a component + typedef struct GetAccessibleActionsPackageTag { + long vmID; + JOBJECT64 accessibleContext; // the component + AccessibleActions rAccessibleActions; // the actions + } GetAccessibleActionsPackage; + + // list of AccessibleActions to do + typedef struct AccessibleActionsToDoTag { + jint actionsCount; // number of actions to do + AccessibleActionInfo actions[MAX_ACTIONS_TO_DO];// the accessible actions to do + } AccessibleActionsToDo; + + // struct for sending an message to do one or more actions + typedef struct DoAccessibleActionsPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // component to do the action + AccessibleActionsToDo actionsToDo; // the accessible actions to do + BOOL rResult; // action return value + jint failure; // index of action that failed if rResult is FALSE + } DoAccessibleActionsPackage; + + /** +****************************************************** +* AccessibleText packages +****************************************************** +*/ + + typedef struct GetAccessibleTextInfoPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint x; + jint y; + AccessibleTextInfo rTextInfo; + } GetAccessibleTextInfoPackage; + + typedef struct GetAccessibleTextItemsPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + AccessibleTextItemsInfo rTextItemsInfo; + } GetAccessibleTextItemsPackage; + + typedef struct GetAccessibleTextSelectionInfoPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + AccessibleTextSelectionInfo rTextSelectionItemsInfo; + } GetAccessibleTextSelectionInfoPackage; + + typedef struct GetAccessibleTextAttributeInfoPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + AccessibleTextAttributesInfo rAttributeInfo; + } GetAccessibleTextAttributeInfoPackage; + + typedef struct GetAccessibleTextRectInfoPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + AccessibleTextRectInfo rTextRectInfo; + } GetAccessibleTextRectInfoPackage; + + typedef struct GetCaretLocationPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + AccessibleTextRectInfo rTextRectInfo; + } GetCaretLocationPackage; + + typedef struct GetAccessibleTextLineBoundsPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + jint rLineStart; + jint rLineEnd; + } GetAccessibleTextLineBoundsPackage; + + typedef struct GetAccessibleTextRangePackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint start; + jint end; + wchar_t rText[MAX_BUFFER_SIZE]; + } GetAccessibleTextRangePackage; + + /** +****************************************************** +* +* Utility method packages +****************************************************** +*/ + + typedef struct SetTextContentsPackageTag { + long vmID; + JOBJECT64 accessibleContext; // the text field + wchar_t text[MAX_STRING_SIZE]; // the text + BOOL rResult; + } SetTextContentsPackage; + + typedef struct GetParentWithRolePackageTag { + long vmID; + JOBJECT64 accessibleContext; + wchar_t role[SHORT_STRING_SIZE]; // one of Accessible Roles above + JOBJECT64 rAccessibleContext; + } GetParentWithRolePackage; + + typedef struct GetTopLevelObjectPackageTag { + long vmID; + JOBJECT64 accessibleContext; + JOBJECT64 rAccessibleContext; + } GetTopLevelObjectPackage; + + typedef struct GetParentWithRoleElseRootPackageTag { + long vmID; + JOBJECT64 accessibleContext; + wchar_t role[SHORT_STRING_SIZE]; // one of Accessible Roles above + JOBJECT64 rAccessibleContext; + } GetParentWithRoleElseRootPackage; + + typedef struct GetObjectDepthPackageTag { + long vmID; + JOBJECT64 accessibleContext; + jint rResult; + } GetObjectDepthPackage; + + typedef struct GetActiveDescendentPackageTag { + long vmID; + JOBJECT64 accessibleContext; + JOBJECT64 rAccessibleContext; + } GetActiveDescendentPackage; + + /** +****************************************************** +* AccessibleValue packages +****************************************************** +*/ + + typedef struct GetCurrentAccessibleValueFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + wchar_t rValue[SHORT_STRING_SIZE]; + } GetCurrentAccessibleValueFromContextPackage; + + typedef struct GetMaximumAccessibleValueFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + wchar_t rValue[SHORT_STRING_SIZE]; + } GetMaximumAccessibleValueFromContextPackage; + + typedef struct GetMinimumAccessibleValueFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + wchar_t rValue[SHORT_STRING_SIZE]; + } GetMinimumAccessibleValueFromContextPackage; + + + /** +****************************************************** +* AccessibleSelection packages +****************************************************** +*/ + + typedef struct AddAccessibleSelectionFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + } AddAccessibleSelectionFromContextPackage; + + typedef struct ClearAccessibleSelectionFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + } ClearAccessibleSelectionFromContextPackage; + + typedef struct GetAccessibleSelectionFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + JOBJECT64 rAccessibleContext; + } GetAccessibleSelectionFromContextPackage; + + typedef struct GetAccessibleSelectionCountFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint rCount; + } GetAccessibleSelectionCountFromContextPackage; + + typedef struct IsAccessibleChildSelectedFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + jboolean rResult; + } IsAccessibleChildSelectedFromContextPackage; + + typedef struct RemoveAccessibleSelectionFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + jint index; + } RemoveAccessibleSelectionFromContextPackage; + + typedef struct SelectAllAccessibleSelectionFromContextPackageTag { + long vmID; + JOBJECT64 AccessibleContext; + } SelectAllAccessibleSelectionFromContextPackage; + + + /** +****************************************************** +* Java Event Notification Registration packages +****************************************************** +*/ + + typedef struct AddJavaEventNotificationPackageTag { + jlong type; + //HWND DLLwindow; + ABHWND64 DLLwindow; + } AddJavaEventNotificationPackage; + + typedef struct RemoveJavaEventNotificationPackageTag { + jlong type; + //HWND DLLwindow; + ABHWND64 DLLwindow; + } RemoveJavaEventNotificationPackage; + + + /** +****************************************************** +* Accessibility Event Notification Registration packages +****************************************************** +*/ + + typedef struct AddAccessibilityEventNotificationPackageTag { + jlong type; + //HWND DLLwindow; + ABHWND64 DLLwindow; + } AddAccessibilityEventNotificationPackage; + + typedef struct RemoveAccessibilityEventNotificationPackageTag { + jlong type; + //HWND DLLwindow; + ABHWND64 DLLwindow; + } RemoveAccessibilityEventNotificationPackage; + + + /** +****************************************************** +* Accessibility Property Change Event packages +****************************************************** +*/ + + typedef struct PropertyCaretChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + jint oldPosition; + jint newPosition; + } PropertyCaretChangePackage; + + typedef struct PropertyDescriptionChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + wchar_t oldDescription[SHORT_STRING_SIZE]; + wchar_t newDescription[SHORT_STRING_SIZE]; + } PropertyDescriptionChangePackage; + + typedef struct PropertyNameChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + wchar_t oldName[SHORT_STRING_SIZE]; + wchar_t newName[SHORT_STRING_SIZE]; + } PropertyNameChangePackage; + + typedef struct PropertySelectionChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PropertySelectionChangePackage; + + typedef struct PropertyStateChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + wchar_t oldState[SHORT_STRING_SIZE]; + wchar_t newState[SHORT_STRING_SIZE]; + } PropertyStateChangePackage; + + typedef struct PropertyTextChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PropertyTextChangePackage; + + typedef struct PropertyValueChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + wchar_t oldValue[SHORT_STRING_SIZE]; + wchar_t newValue[SHORT_STRING_SIZE]; + } PropertyValueChangePackage; + + typedef struct PropertyVisibleDataChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PropertyVisibleDataChangePackage; + + typedef struct PropertyChildChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + JOBJECT64 oldChildAccessibleContext; + JOBJECT64 newChildAccessibleContext; + } PropertyChildChangePackage; + + typedef struct PropertyActiveDescendentChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + JOBJECT64 oldActiveDescendentAccessibleContext; + JOBJECT64 newActiveDescendentAccessibleContext; + } PropertyActiveDescendentChangePackage; + + + // String format for newValue is: + // "type" one of "INSERT", "UPDATE" or "DELETE" + // "firstRow" + // "lastRow" + // "firstColumn" + // "lastColumn" + // + // oldValue is currently unused + // + typedef struct PropertyTableModelChangePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + wchar_t oldValue[SHORT_STRING_SIZE]; + wchar_t newValue[SHORT_STRING_SIZE]; + } PropertyTableModelChangePackage; + + + /** +****************************************************** +* Property Change Event packages +****************************************************** +*/ + + /* + typedef struct PropertyChangePackageTag { + long vmID; + jobject Event; + jobject AccessibleContextSource; + char propertyName[SHORT_STRING_SIZE]; + char oldValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getOldValue().toString() + char newValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getNewValue().toString() + } PropertyChangePackage; + */ + + /* + * Java shutdown event package + */ + typedef struct JavaShutdownPackageTag { + long vmID; + } JavaShutdownPackage; + + + /** +****************************************************** +* Focus Event packages +****************************************************** +*/ + + typedef struct FocusGainedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } FocusGainedPackage; + + typedef struct FocusLostPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } FocusLostPackage; + + + /** +****************************************************** +* Caret Event packages +****************************************************** +*/ + + typedef struct CaretUpdatePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } CaretUpdatePackage; + + + /** +****************************************************** +* Mouse Event packages +****************************************************** +*/ + + typedef struct MouseClickedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MouseClickedPackage; + + typedef struct MouseEnteredPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MouseEnteredPackage; + + typedef struct MouseExitedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MouseExitedPackage; + + typedef struct MousePressedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MousePressedPackage; + + typedef struct MouseReleasedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MouseReleasedPackage; + + + /** +****************************************************** +* Menu/PopupMenu Event packages +****************************************************** +*/ + + typedef struct MenuCanceledPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MenuCanceledPackage; + + typedef struct MenuDeselectedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MenuDeselectedPackage; + + typedef struct MenuSelectedPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } MenuSelectedPackage; + + + typedef struct PopupMenuCanceledPackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PopupMenuCanceledPackage; + + typedef struct PopupMenuWillBecomeInvisiblePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PopupMenuWillBecomeInvisiblePackage; + + typedef struct PopupMenuWillBecomeVisiblePackageTag { + long vmID; + JOBJECT64 Event; + JOBJECT64 AccessibleContextSource; + } PopupMenuWillBecomeVisiblePackage; + + /** +****************************************************** +* Additional methods for Teton +****************************************************** +*/ + + /** + * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns + * whether successful. + * + * Bug ID 4916682 - Implement JAWS AccessibleName policy + */ + typedef struct GetVirtualAccessibleNamePackageTag { + long vmID; + AccessibleContext accessibleContext; + wchar_t rName[MAX_STRING_SIZE]; + int len; + } GetVirtualAccessibleNamePackage; + + /** + * Request focus for a component. Returns whether successful; + * + * Bug ID 4944757 - requestFocus method needed + */ + typedef struct RequestFocusPackageTag { + long vmID; + AccessibleContext accessibleContext; + } RequestFocusPackage; + + /** + * Selects text between two indices. Selection includes the text at the start index + * and the text at the end index. Returns whether successful; + * + * Bug ID 4944758 - selectTextRange method needed + */ + typedef struct SelectTextRangePackageTag { + long vmID; + AccessibleContext accessibleContext; + jint startIndex; + jint endIndex; + } SelectTextRangePackage; + + /** + * Gets the number of contiguous characters with the same attributes. + * + * Bug ID 4944761 - getTextAttributes between two indices method needed + */ + typedef struct GetTextAttributesInRangePackageTag { + long vmID; + AccessibleContext accessibleContext; + jint startIndex; // start index (inclusive) + jint endIndex; // end index (inclusive) + AccessibleTextAttributesInfo attributes; // character attributes to match + short rLength; // number of contiguous characters with matching attributes + } GetTextAttributesInRangePackage; + +#define MAX_VISIBLE_CHILDREN 256 + + // visible children information + typedef struct VisibleChildenInfoTag { + int returnedChildrenCount; // number of children returned + AccessibleContext children[MAX_VISIBLE_CHILDREN]; // the visible children + } VisibleChildrenInfo; + + // struct for sending a message to get the number of visible children + typedef struct GetVisibleChildrenCountPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext of parent component + jint rChildrenCount; // visible children count return value + } GetVisibleChildrenCountPackage; + + // struct for sending a message to get the hypertext for an AccessibleContext + // starting at a specified index in the document + typedef struct GetVisibleChildrenPackageTag { + long vmID; // the virtual machine ID + JOBJECT64 accessibleContext; // AccessibleContext of parent component + jint startIndex; // start index for retrieving children + VisibleChildrenInfo rVisibleChildrenInfo; // returned info + BOOL rSuccess; // whether call succeeded + } GetVisibleChildrenPackage; + + /** + * Set the caret to a text position. Returns whether successful; + * + * Bug ID 4944770 - setCaretPosition method needed + */ + typedef struct SetCaretPositionPackageTag { + long vmID; + AccessibleContext accessibleContext; + jint position; + } SetCaretPositionPackage; + + + /** + ****************************************************** + * Wrapping up all of the packages + ****************************************************** + */ + + /** + * What is the type of this package + */ + typedef enum PackageType { + + cMemoryMappedFileCreatedPackage = 0x11000, + + // many of these will go away... + cJavaVMCreatedPackage = 0x10000, + cJavaVMDestroyedPackage, + cWindowsATCreatedPackage, + cWindowsATDestroyedPackage, + cJavaVMPresentNotificationPackage, + cWindowsATPresentNotificationPackage, + + cReleaseJavaObjectPackage = 1, + cGetAccessBridgeVersionPackage = 2, + + cGetAccessibleContextFromHWNDPackage = 0x10, + cIsJavaWindowPackage, + cGetHWNDFromAccessibleContextPackage, + + cGetAccessibleContextAtPackage = 0x100, + cGetAccessibleContextWithFocusPackage, + cGetAccessibleContextInfoPackage, + cGetAccessibleChildFromContextPackage, + cGetAccessibleParentFromContextPackage, + cIsSameObjectPackage, + + cGetAccessibleTextInfoPackage = 0x200, + cGetAccessibleTextItemsPackage, + cGetAccessibleTextSelectionInfoPackage, + cGetAccessibleTextAttributeInfoPackage, + cGetAccessibleTextRectInfoPackage, + cGetAccessibleTextLineBoundsPackage, + cGetAccessibleTextRangePackage, + + cGetCurrentAccessibleValueFromContextPackage = 0x300, + cGetMaximumAccessibleValueFromContextPackage, + cGetMinimumAccessibleValueFromContextPackage, + + cAddAccessibleSelectionFromContextPackage = 0x400, + cClearAccessibleSelectionFromContextPackage, + cGetAccessibleSelectionFromContextPackage, + cGetAccessibleSelectionCountFromContextPackage, + cIsAccessibleChildSelectedFromContextPackage, + cRemoveAccessibleSelectionFromContextPackage, + cSelectAllAccessibleSelectionFromContextPackage, + + cAddJavaEventNotificationPackage = 0x900, + cRemoveJavaEventNotificationPackage, + cAddAccessibilityEventNotificationPackage, + cRemoveAccessibilityEventNotificationPackage, + + cPropertyChangePackage = 0x1000, + + cJavaShutdownPackage = 0x1010, + cFocusGainedPackage, + cFocusLostPackage, + + cCaretUpdatePackage = 0x1020, + + cMouseClickedPackage = 0x1030, + cMouseEnteredPackage, + cMouseExitedPackage, + cMousePressedPackage, + cMouseReleasedPackage, + + cMenuCanceledPackage = 0x1040, + cMenuDeselectedPackage, + cMenuSelectedPackage, + cPopupMenuCanceledPackage, + cPopupMenuWillBecomeInvisiblePackage, + cPopupMenuWillBecomeVisiblePackage, + + cPropertyCaretChangePackage = 0x1100, + cPropertyDescriptionChangePackage, + cPropertyNameChangePackage, + cPropertySelectionChangePackage, + cPropertyStateChangePackage, + cPropertyTextChangePackage, + cPropertyValueChangePackage, + cPropertyVisibleDataChangePackage, + cPropertyChildChangePackage, + cPropertyActiveDescendentChangePackage, + + + // AccessibleTable + cGetAccessibleTableInfoPackage = 0x1200, + cGetAccessibleTableCellInfoPackage, + + cGetAccessibleTableRowHeaderPackage, + cGetAccessibleTableColumnHeaderPackage, + + cGetAccessibleTableRowDescriptionPackage, + cGetAccessibleTableColumnDescriptionPackage, + + cGetAccessibleTableRowSelectionCountPackage, + cIsAccessibleTableRowSelectedPackage, + cGetAccessibleTableRowSelectionsPackage, + + cGetAccessibleTableColumnSelectionCountPackage, + cIsAccessibleTableColumnSelectedPackage, + cGetAccessibleTableColumnSelectionsPackage, + + cGetAccessibleTableRowPackage, + cGetAccessibleTableColumnPackage, + cGetAccessibleTableIndexPackage, + + cPropertyTableModelChangePackage, + + + // AccessibleRelationSet + cGetAccessibleRelationSetPackage = 0x1300, + + // AccessibleHypertext + cGetAccessibleHypertextPackage = 0x1400, + cActivateAccessibleHyperlinkPackage, + cGetAccessibleHyperlinkCountPackage, + cGetAccessibleHypertextExtPackage, + cGetAccessibleHypertextLinkIndexPackage, + cGetAccessibleHyperlinkPackage, + + // Accessible KeyBinding, Icon and Action + cGetAccessibleKeyBindingsPackage = 0x1500, + cGetAccessibleIconsPackage, + cGetAccessibleActionsPackage, + cDoAccessibleActionsPackage, + + // Utility methods + cSetTextContentsPackage = 0x1600, + cGetParentWithRolePackage, + cGetTopLevelObjectPackage, + cGetParentWithRoleElseRootPackage, + cGetObjectDepthPackage, + cGetActiveDescendentPackage, + + // Additional methods for Teton + cGetVirtualAccessibleNamePackage = 0x1700, + cRequestFocusPackage, + cSelectTextRangePackage, + cGetTextAttributesInRangePackage, + cGetSameTextAttributesInRangePackage, + cGetVisibleChildrenCountPackage, + cGetVisibleChildrenPackage, + cSetCaretPositionPackage, + cGetCaretLocationPackage + + + } PackageType; + + + /** + * Union of all package contents + */ + typedef union AllPackagesTag { + + // Initial Rendezvous packages + MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage; + + JavaVMCreatedPackage javaVMCreatedPackage; + JavaVMDestroyedPackage javaVMDestroyedPackage; + WindowsATCreatedPackage windowsATCreatedPackage; + WindowsATDestroyedPackage windowsATDestroyedPackage; + JavaVMPresentNotificationPackage javaVMPresentNotificationPackage; + WindowsATPresentNotificationPackage windowsATPresentNotificationPackage; + + // Core packages + ReleaseJavaObjectPackage releaseJavaObject; + GetAccessBridgeVersionPackage getAccessBridgeVersion; + + // Window packages + GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND; + GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext; + + // AccessibleContext packages + GetAccessibleContextAtPackage getAccessibleContextAt; + GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus; + GetAccessibleContextInfoPackage getAccessibleContextInfo; + GetAccessibleChildFromContextPackage getAccessibleChildFromContext; + GetAccessibleParentFromContextPackage getAccessibleParentFromContext; + + // AccessibleText packages + GetAccessibleTextInfoPackage getAccessibleTextInfo; + GetAccessibleTextItemsPackage getAccessibleTextItems; + GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo; + GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo; + GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo; + GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds; + GetAccessibleTextRangePackage getAccessibleTextRange; + + // AccessibleValue packages + GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext; + GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext; + GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext; + + // AccessibleSelection packages + AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext; + ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext; + GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext; + GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext; + IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext; + RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext; + SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext; + + // Event Notification Registration packages + AddJavaEventNotificationPackage addJavaEventNotification; + RemoveJavaEventNotificationPackage removeJavaEventNotification; + AddAccessibilityEventNotificationPackage addAccessibilityEventNotification; + RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification; + + // Event contents packages + // PropertyChangePackage propertyChange; + PropertyCaretChangePackage propertyCaretChangePackage; + PropertyDescriptionChangePackage propertyDescriptionChangePackage; + PropertyNameChangePackage propertyNameChangePackage; + PropertySelectionChangePackage propertySelectionChangePackage; + PropertyStateChangePackage propertyStateChangePackage; + PropertyTextChangePackage propertyTextChangePackage; + PropertyValueChangePackage propertyValueChangePackage; + PropertyVisibleDataChangePackage propertyVisibleDataChangePackage; + PropertyChildChangePackage propertyChildChangePackage; + PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage; + + PropertyTableModelChangePackage propertyTableModelChangePackage; + + JavaShutdownPackage JavaShutdown; + FocusGainedPackage focusGained; + FocusLostPackage focusLost; + + CaretUpdatePackage caretUpdate; + + MouseClickedPackage mouseClicked; + MouseEnteredPackage mouseEntered; + MouseExitedPackage mouseExited; + MousePressedPackage mousePressed; + MouseReleasedPackage mouseReleased; + + MenuCanceledPackage menuCanceled; + MenuDeselectedPackage menuDeselected; + MenuSelectedPackage menuSelected; + PopupMenuCanceledPackage popupMenuCanceled; + PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible; + PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible; + + // AccessibleRelationSet + GetAccessibleRelationSetPackage getAccessibleRelationSet; + + // AccessibleHypertext + GetAccessibleHypertextPackage _getAccessibleHypertext; + ActivateAccessibleHyperlinkPackage _activateAccessibleHyperlink; + GetAccessibleHyperlinkCountPackage _getAccessibleHyperlinkCount; + GetAccessibleHypertextExtPackage _getAccessibleHypertextExt; + GetAccessibleHypertextLinkIndexPackage _getAccessibleHypertextLinkIndex; + GetAccessibleHyperlinkPackage _getAccessibleHyperlink; + + // Accessible KeyBinding, Icon and Action + GetAccessibleKeyBindingsPackage getAccessibleKeyBindings; + GetAccessibleIconsPackage getAccessibleIcons; + GetAccessibleActionsPackage getAccessibleActions; + DoAccessibleActionsPackage doAccessibleActions; + + // utility methods + SetTextContentsPackage _setTextContents; + GetParentWithRolePackage _getParentWithRole; + GetTopLevelObjectPackage _getTopLevelObject; + GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot; + GetObjectDepthPackage _getObjectDepth; + GetActiveDescendentPackage _getActiveDescendent; + + // Additional methods for Teton + GetVirtualAccessibleNamePackage _getVirtualAccessibleName; + RequestFocusPackage _requestFocus; + SelectTextRangePackage _selectTextRange; + GetTextAttributesInRangePackage _getTextAttributesInRange; + GetVisibleChildrenCountPackage _getVisibleChildrenCount; + GetVisibleChildrenPackage _getVisibleChildren; + SetCaretPositionPackage _setCaretPosition; + + } AllPackages; + + + /** + * Union of all Java-initiated package contents + */ + typedef union JavaInitiatedPackagesTag { + + // Initial Rendezvous packages + JavaVMCreatedPackage javaVMCreatedPackage; + JavaVMDestroyedPackage javaVMDestroyedPackage; + JavaVMPresentNotificationPackage javaVMPresentNotificationPackage; + + // Event contents packages + PropertyCaretChangePackage propertyCaretChangePackage; + PropertyDescriptionChangePackage propertyDescriptionChangePackage; + PropertyNameChangePackage propertyNameChangePackage; + PropertySelectionChangePackage propertySelectionChangePackage; + PropertyStateChangePackage propertyStateChangePackage; + PropertyTextChangePackage propertyTextChangePackage; + PropertyValueChangePackage propertyValueChangePackage; + PropertyVisibleDataChangePackage propertyVisibleDataChangePackage; + PropertyChildChangePackage propertyChildChangePackage; + PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage; + + PropertyTableModelChangePackage propertyTableModelChangePackage; + + JavaShutdownPackage JavaShutdown; + FocusGainedPackage focusGained; + FocusLostPackage focusLost; + + CaretUpdatePackage caretUpdate; + + MouseClickedPackage mouseClicked; + MouseEnteredPackage mouseEntered; + MouseExitedPackage mouseExited; + MousePressedPackage mousePressed; + MouseReleasedPackage mouseReleased; + + MenuCanceledPackage menuCanceled; + MenuDeselectedPackage menuDeselected; + MenuSelectedPackage menuSelected; + PopupMenuCanceledPackage popupMenuCanceled; + PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible; + PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible; + + } JavaInitiatedPackages; + + + /** + * Union of all Windows-initiated package contents + */ + typedef union WindowsInitiatedPackagesTag { + + // Initial Rendezvous packages + MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage; + + WindowsATCreatedPackage windowsATCreatedPackage; + WindowsATDestroyedPackage windowsATDestroyedPackage; + WindowsATPresentNotificationPackage windowsATPresentNotificationPackage; + + // Core packages + ReleaseJavaObjectPackage releaseJavaObject; + GetAccessBridgeVersionPackage getAccessBridgeVersion; + + // Window packages + GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND; + GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext; + + // AccessibleContext packages + GetAccessibleContextAtPackage getAccessibleContextAt; + GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus; + GetAccessibleContextInfoPackage getAccessibleContextInfo; + GetAccessibleChildFromContextPackage getAccessibleChildFromContext; + GetAccessibleParentFromContextPackage getAccessibleParentFromContext; + + // AccessibleText packages + GetAccessibleTextInfoPackage getAccessibleTextInfo; + GetAccessibleTextItemsPackage getAccessibleTextItems; + GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo; + GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo; + GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo; + GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds; + GetAccessibleTextRangePackage getAccessibleTextRange; + + // AccessibleValue packages + GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext; + GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext; + GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext; + + // AccessibleSelection packages + AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext; + ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext; + GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext; + GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext; + IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext; + RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext; + SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext; + + // Event Notification Registration packages + AddJavaEventNotificationPackage addJavaEventNotification; + RemoveJavaEventNotificationPackage removeJavaEventNotification; + AddAccessibilityEventNotificationPackage addAccessibilityEventNotification; + RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification; + + // AccessibleTable + GetAccessibleTableInfoPackage _getAccessibleTableInfo; + GetAccessibleTableCellInfoPackage _getAccessibleTableCellInfo; + + GetAccessibleTableRowHeaderPackage _getAccessibleTableRowHeader; + GetAccessibleTableColumnHeaderPackage _getAccessibleTableColumnHeader; + + GetAccessibleTableRowDescriptionPackage _getAccessibleTableRowDescription; + GetAccessibleTableColumnDescriptionPackage _getAccessibleTableColumnDescription; + + GetAccessibleTableRowSelectionCountPackage _getAccessibleTableRowSelectionCount; + IsAccessibleTableRowSelectedPackage _isAccessibleTableRowSelected; + GetAccessibleTableRowSelectionsPackage _getAccessibleTableRowSelections; + + GetAccessibleTableColumnSelectionCountPackage _getAccessibleTableColumnSelectionCount; + IsAccessibleTableColumnSelectedPackage _isAccessibleTableColumnSelected; + GetAccessibleTableColumnSelectionsPackage _getAccessibleTableColumnSelections; + + GetAccessibleTableRowPackage _getAccessibleTableRow; + GetAccessibleTableColumnPackage _getAccessibleTableColumn; + GetAccessibleTableIndexPackage _getAccessibleTableIndex; + + // AccessibleRelationSet + GetAccessibleRelationSetPackage _getAccessibleRelationSet; + + // Accessible KeyBindings, Icons and Actions + GetAccessibleKeyBindingsPackage _getAccessibleKeyBindings; + GetAccessibleIconsPackage _getAccessibleIcons; + GetAccessibleActionsPackage _getAccessibleActions; + DoAccessibleActionsPackage _doAccessibleActions; + + + IsSameObjectPackage _isSameObject; + + // utility methods + SetTextContentsPackage _setTextContents; + GetParentWithRolePackage _getParentWithRole; + GetTopLevelObjectPackage _getTopLevelObject; + GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot; + GetObjectDepthPackage _getObjectDepth; + GetActiveDescendentPackage _getActiveDescendent; + + // Additional methods for Teton + GetVirtualAccessibleNamePackage _getVirtualAccessibleName; + RequestFocusPackage _requestFocus; + SelectTextRangePackage _selectTextRange; + GetTextAttributesInRangePackage _getTextAttributesInRange; + GetVisibleChildrenCountPackage _getVisibleChildrenCount; + GetVisibleChildrenPackage _getVisibleChildren; + SetCaretPositionPackage _setCaretPosition; + + + } WindowsInitiatedPackages; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/SlinkyNative/include/jdk/win32/jawt_md.h b/SlinkyNative/include/jdk/win32/jawt_md.h new file mode 100644 index 0000000..7d43ff8 --- /dev/null +++ b/SlinkyNative/include/jdk/win32/jawt_md.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JAWT_MD_H_ +#define _JAVASOFT_JAWT_MD_H_ + +#include +#include "jawt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Win32-specific declarations for AWT native interface. + * See notes in jawt.h for an example of use. + */ +typedef struct jawt_Win32DrawingSurfaceInfo { + /* Native window, DDB, or DIB handle */ + union { + HWND hwnd; + HBITMAP hbitmap; + void* pbits; + }; + /* + * This HDC should always be used instead of the HDC returned from + * BeginPaint() or any calls to GetDC(). + */ + HDC hdc; + HPALETTE hpalette; +} JAWT_Win32DrawingSurfaceInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* !_JAVASOFT_JAWT_MD_H_ */ diff --git a/SlinkyNative/include/jdk/win32/jni_md.h b/SlinkyNative/include/jdk/win32/jni_md.h new file mode 100644 index 0000000..b8dce62 --- /dev/null +++ b/SlinkyNative/include/jdk/win32/jni_md.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef _JAVASOFT_JNI_MD_H_ +#define _JAVASOFT_JNI_MD_H_ + +#define JNIEXPORT __declspec(dllexport) +#define JNIIMPORT __declspec(dllimport) +#define JNICALL __stdcall + +typedef long jint; +typedef __int64 jlong; +typedef signed char jbyte; + +#endif /* !_JAVASOFT_JNI_MD_H_ */ diff --git a/SlinkyNative/payload/slinky-named.jar b/SlinkyNative/payload/slinky-named.jar new file mode 100644 index 0000000..6676d54 Binary files /dev/null and b/SlinkyNative/payload/slinky-named.jar differ diff --git a/SlinkyNative/payload/slinky-official.jar b/SlinkyNative/payload/slinky-official.jar new file mode 100644 index 0000000..8c36557 Binary files /dev/null and b/SlinkyNative/payload/slinky-official.jar differ diff --git a/SlinkyNative/payload/slinky-srg.jar b/SlinkyNative/payload/slinky-srg.jar new file mode 100644 index 0000000..d8522e9 Binary files /dev/null and b/SlinkyNative/payload/slinky-srg.jar differ diff --git a/SlinkyNative/src/DllMain.cpp b/SlinkyNative/src/DllMain.cpp new file mode 100644 index 0000000..f7f59b6 --- /dev/null +++ b/SlinkyNative/src/DllMain.cpp @@ -0,0 +1,43 @@ +#include +#include "Logger.hpp" +#include "JvmManager.hpp" +#include "MinecraftDetector.hpp" +#include "PayloadLoader.hpp" + +static HMODULE g_hModule = nullptr; + +DWORD WINAPI SlinkyNativeWorkerThread(LPVOID lpParam) { + HMODULE hModule = (HMODULE)lpParam; + + SlinkyNative::Logger::Initialize(hModule); + + if (!SlinkyNative::JvmManager::Initialize()) { + SlinkyNative::Logger::Log(L"FINAL STATUS: FAILED"); + return 1; + } + + SlinkyNative::MinecraftInfo mcInfo; + if (!SlinkyNative::MinecraftDetector::Detect(mcInfo)) { + SlinkyNative::Logger::Log(L"FINAL STATUS: FAILED"); + return 1; + } + + SlinkyNative::InjectionStatus status = SlinkyNative::PayloadLoader::LoadAndStart(hModule, mcInfo); + + return (status == SlinkyNative::InjectionStatus::Success || status == SlinkyNative::InjectionStatus::AlreadyRunning) ? 0 : 1; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { + switch (fdwReason) { + case DLL_PROCESS_ATTACH: + g_hModule = (HMODULE)hinstDLL; + DisableThreadLibraryCalls(hinstDLL); + CreateThread(nullptr, 0, SlinkyNativeWorkerThread, (LPVOID)hinstDLL, 0, nullptr); + break; + case DLL_PROCESS_DETACH: + SlinkyNative::JvmManager::Shutdown(); + SlinkyNative::Logger::Shutdown(); + break; + } + return TRUE; +} diff --git a/SlinkyNative/src/JvmManager.cpp b/SlinkyNative/src/JvmManager.cpp new file mode 100644 index 0000000..d88aab7 --- /dev/null +++ b/SlinkyNative/src/JvmManager.cpp @@ -0,0 +1,199 @@ +#include "JvmManager.hpp" +#include "Logger.hpp" + +typedef jint(JNICALL* pfn_JNI_GetCreatedJavaVMs)(JavaVM** vmBuf, jsize bufLen, jsize* nVMs); + +namespace SlinkyNative { + +JavaVM* JvmManager::s_JavaVM = nullptr; +JNIEnv* JvmManager::s_JniEnv = nullptr; +jvmtiEnv* JvmManager::s_JvmtiEnv = nullptr; + +std::mutex JvmManager::s_HookMutex; +jclass JvmManager::s_CaptureTarget = nullptr; +std::vector JvmManager::s_CapturedBytes; + +jclass JvmManager::s_ReplacementTarget = nullptr; +const unsigned char* JvmManager::s_ReplacementData = nullptr; +jint JvmManager::s_ReplacementLength = 0; +bool JvmManager::s_ReplacementApplied = false; + +bool JvmManager::Initialize() { + Logger::Log(L"SlinkyNative loaded into PID %lu", GetCurrentProcessId()); + + HMODULE hJvm = nullptr; + for (int i = 0; i < 60; ++i) { + hJvm = GetModuleHandleW(L"jvm.dll"); + if (hJvm) break; + Sleep(100); + } + + if (!hJvm) { + Logger::Log(L"jvm.dll / JNI_GetCreatedJavaVMs not found; is this a Java process?"); + return false; + } + + auto pJNI_GetCreatedJavaVMs = (pfn_JNI_GetCreatedJavaVMs)GetProcAddress(hJvm, "JNI_GetCreatedJavaVMs"); + if (!pJNI_GetCreatedJavaVMs) { + Logger::Log(L"JNI_GetCreatedJavaVMs export not found in jvm.dll"); + return false; + } + + jsize nVMs = 0; + jint res = 0; + for (int i = 0; i < 60; ++i) { + res = pJNI_GetCreatedJavaVMs(&s_JavaVM, 1, &nVMs); + if (res == JNI_OK && nVMs > 0 && s_JavaVM) break; + Sleep(100); + } + + if (res != JNI_OK || nVMs == 0 || !s_JavaVM) { + Logger::Log(L"could not attach to the JVM"); + return false; + } + + // Attach current thread + res = s_JavaVM->AttachCurrentThread((void**)&s_JniEnv, nullptr); + if (res != JNI_OK || !s_JniEnv) { + Logger::Log(L"could not attach to the JVM"); + return false; + } + + // Get JVMTI 1.2 + res = s_JavaVM->GetEnv((void**)&s_JvmtiEnv, JVMTI_VERSION_1_2); + if (res != JNI_OK || !s_JvmtiEnv) { + Logger::Log(L"JVMTI 1.2 is unavailable"); + return false; + } + + // Add capabilities + jvmtiCapabilities potentialCaps = { 0 }; + jvmtiError err = s_JvmtiEnv->GetPotentialCapabilities(&potentialCaps); + if (err != JVMTI_ERROR_NONE) { + Logger::Log(L"GetPotentialCapabilities failed: %d", err); + return false; + } + + if (!potentialCaps.can_retransform_classes) { + Logger::Log(L"JVM cannot retransform classes"); + return false; + } + + jvmtiCapabilities neededCaps = { 0 }; + neededCaps.can_retransform_classes = 1; + neededCaps.can_retransform_any_class = potentialCaps.can_retransform_any_class; + neededCaps.can_get_bytecodes = potentialCaps.can_get_bytecodes; + neededCaps.can_generate_all_class_hook_events = potentialCaps.can_generate_all_class_hook_events; + + err = s_JvmtiEnv->AddCapabilities(&neededCaps); + if (err != JVMTI_ERROR_NONE) { + Logger::Log(L"AddCapabilities failed: %d", err); + return false; + } + + // Set callbacks + jvmtiEventCallbacks callbacks = { 0 }; + callbacks.ClassFileLoadHook = &OnClassFileLoadHook; + err = s_JvmtiEnv->SetEventCallbacks(&callbacks, sizeof(callbacks)); + if (err != JVMTI_ERROR_NONE) { + Logger::Log(L"SetEventCallbacks failed: %d", err); + return false; + } + + return true; +} + +void JvmManager::Shutdown() { + if (s_JvmtiEnv) { + // Disable class file load hook event + s_JvmtiEnv->SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); + s_JvmtiEnv = nullptr; + } + + if (s_JavaVM) { + s_JavaVM->DetachCurrentThread(); + s_JavaVM = nullptr; + } + + s_JniEnv = nullptr; +} + +JavaVM* JvmManager::GetJavaVM() { return s_JavaVM; } +JNIEnv* JvmManager::GetEnv() { return s_JniEnv; } +jvmtiEnv* JvmManager::GetJvmti() { return s_JvmtiEnv; } + +void JvmManager::SetCaptureTarget(jclass targetClass) { + std::lock_guard lock(s_HookMutex); + s_CaptureTarget = targetClass; + s_CapturedBytes.clear(); +} + +std::vector JvmManager::GetCapturedBytes() { + std::lock_guard lock(s_HookMutex); + return s_CapturedBytes; +} + +void JvmManager::ClearCapturedBytes() { + std::lock_guard lock(s_HookMutex); + s_CaptureTarget = nullptr; + s_CapturedBytes.clear(); +} + +void JvmManager::SetReplacementData(jclass targetClass, const unsigned char* data, jint length) { + std::lock_guard lock(s_HookMutex); + s_ReplacementTarget = targetClass; + s_ReplacementData = data; + s_ReplacementLength = length; + s_ReplacementApplied = false; +} + +bool JvmManager::WasReplacementApplied() { + std::lock_guard lock(s_HookMutex); + return s_ReplacementApplied; +} + +void JvmManager::ClearReplacementData() { + std::lock_guard lock(s_HookMutex); + s_ReplacementTarget = nullptr; + s_ReplacementData = nullptr; + s_ReplacementLength = 0; + s_ReplacementApplied = false; +} + +void JNICALL JvmManager::OnClassFileLoadHook( + jvmtiEnv* jvmti_env, + JNIEnv* jni_env, + jclass class_being_redefined, + jobject loader, + const char* name, + jobject protection_domain, + jint class_data_len, + const unsigned char* class_data, + jint* new_class_data_len, + unsigned char** new_class_data) +{ + std::lock_guard lock(s_HookMutex); + + // If capturing bytecode for getClassBytes + if (s_CaptureTarget && class_being_redefined && jni_env->IsSameObject(s_CaptureTarget, class_being_redefined)) { + if (class_data && class_data_len > 0) { + s_CapturedBytes.assign(class_data, class_data + class_data_len); + } + } + + // If applying replacement bytecode for retransformClass + if (s_ReplacementTarget && class_being_redefined && jni_env->IsSameObject(s_ReplacementTarget, class_being_redefined)) { + if (s_ReplacementData && s_ReplacementLength > 0) { + unsigned char* jvmMemory = nullptr; + jvmtiError err = jvmti_env->Allocate(s_ReplacementLength, &jvmMemory); + if (err == JVMTI_ERROR_NONE && jvmMemory) { + memcpy(jvmMemory, s_ReplacementData, s_ReplacementLength); + *new_class_data_len = s_ReplacementLength; + *new_class_data = jvmMemory; + s_ReplacementApplied = true; + } + } + } +} + +} // namespace SlinkyNative diff --git a/SlinkyNative/src/Logger.cpp b/SlinkyNative/src/Logger.cpp new file mode 100644 index 0000000..e588065 --- /dev/null +++ b/SlinkyNative/src/Logger.cpp @@ -0,0 +1,93 @@ +#include "Logger.hpp" +#include +#include + +namespace SlinkyNative { + +CRITICAL_SECTION Logger::s_CriticalSection; +std::wstring Logger::s_LogFilePath; +bool Logger::s_Initialized = false; + +void Logger::Initialize(HMODULE hModule) { + if (s_Initialized) return; + InitializeCriticalSection(&s_CriticalSection); + + wchar_t modulePath[MAX_PATH] = { 0 }; + if (GetModuleFileNameW(hModule, modulePath, MAX_PATH) > 0) { + wchar_t* lastSlash = wcsrchr(modulePath, L'\\'); + if (lastSlash) { + *lastSlash = L'\0'; + s_LogFilePath = std::wstring(modulePath) + L"\\slinky-native.log"; + } + } + + if (s_LogFilePath.empty()) { + wchar_t tempPath[MAX_PATH] = { 0 }; + GetTempPathW(MAX_PATH, tempPath); + s_LogFilePath = std::wstring(tempPath) + L"slinky-native.log"; + } + + s_Initialized = true; +} + +void Logger::Shutdown() { + if (!s_Initialized) return; + DeleteCriticalSection(&s_CriticalSection); + s_Initialized = false; +} + +const std::wstring& Logger::GetLogFilePath() { + return s_LogFilePath; +} + +void Logger::Log(const wchar_t* format, ...) { + va_list args; + va_start(args, format); + LogV(format, args); + va_end(args); +} + +void Logger::LogV(const wchar_t* format, va_list args) { + if (!s_Initialized) return; + + SYSTEMTIME st; + GetLocalTime(&st); + + wchar_t messageBuf[2048] = { 0 }; + vswprintf_s(messageBuf, format, args); + + wchar_t lineBuf[2560] = { 0 }; + swprintf_s(lineBuf, L"[%04u-%02u-%02u %02u:%02u:%02u.%03u] %ls\n", + st.wYear, st.wMonth, st.wDay, + st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, + messageBuf); + + EnterCriticalSection(&s_CriticalSection); + + // Also output to debug string for debugger attach + OutputDebugStringW(lineBuf); + + // Write to slinky-native.log + FILE* fp = nullptr; + if (_wfopen_s(&fp, s_LogFilePath.c_str(), L"a, ccs=UTF-8") == 0 && fp) { + fputws(lineBuf, fp); + fclose(fp); + } + + LeaveCriticalSection(&s_CriticalSection); +} + +void Logger::LogA(const char* format, ...) { + va_list args; + va_start(args, format); + + char charBuf[2048] = { 0 }; + vsprintf_s(charBuf, format, args); + va_end(args); + + wchar_t wideBuf[2048] = { 0 }; + MultiByteToWideChar(CP_UTF8, 0, charBuf, -1, wideBuf, 2048); + Log(L"%ls", wideBuf); +} + +} // namespace SlinkyNative diff --git a/SlinkyNative/src/MinecraftDetector.cpp b/SlinkyNative/src/MinecraftDetector.cpp new file mode 100644 index 0000000..c379673 --- /dev/null +++ b/SlinkyNative/src/MinecraftDetector.cpp @@ -0,0 +1,121 @@ +#include "MinecraftDetector.hpp" +#include "JvmManager.hpp" +#include "Logger.hpp" + +namespace SlinkyNative { + +bool MinecraftDetector::Detect(MinecraftInfo& outInfo) { + JNIEnv* env = JvmManager::GetEnv(); + jvmtiEnv* jvmti = JvmManager::GetJvmti(); + + if (!env || !jvmti) return false; + + // Wait up to 2 minutes for Minecraft 1.8.9 to finish starting + ULONGLONG startTime = GetTickCount64(); + const ULONGLONG timeoutMs = 120000; // 2 minutes + + while (GetTickCount64() - startTime < timeoutMs) { + jint classCount = 0; + jclass* classes = nullptr; + jvmtiError err = jvmti->GetLoadedClasses(&classCount, &classes); + + if (err == JVMTI_ERROR_NONE && classes) { + jclass candidateMinecraft = nullptr; + jclass candidateAve = nullptr; + + for (jint i = 0; i < classCount; ++i) { + char* signature = nullptr; + char* generic = nullptr; + if (jvmti->GetClassSignature(classes[i], &signature, &generic) == JVMTI_ERROR_NONE && signature) { + if (strcmp(signature, "Lnet/minecraft/client/Minecraft;") == 0) { + candidateMinecraft = classes[i]; + } else if (strcmp(signature, "Lave;") == 0) { + candidateAve = classes[i]; + } + jvmti->Deallocate((unsigned char*)signature); + if (generic) jvmti->Deallocate((unsigned char*)generic); + } + } + + // Check candidateMinecraft (MCP or SRG) + if (candidateMinecraft) { + // Check MCP: theMinecraft (Lnet/minecraft/client/Minecraft;) + jfieldID fId = env->GetStaticFieldID(candidateMinecraft, "theMinecraft", "Lnet/minecraft/client/Minecraft;"); + if (fId) { + outInfo.mapping = MappingType::Named; + outInfo.mappingName = "named"; + outInfo.resourceId = 101; + outInfo.minecraftClass = (jclass)env->NewGlobalRef(candidateMinecraft); + + jvmti->GetClassLoader(candidateMinecraft, &outInfo.classLoader); + if (outInfo.classLoader) { + outInfo.classLoader = env->NewGlobalRef(outInfo.classLoader); + } + + jvmti->Deallocate((unsigned char*)classes); + Logger::Log(L"detected Minecraft 1.8.9 with %hs names", outInfo.mappingName.c_str()); + return true; + } + env->ExceptionClear(); + + // Check SRG: field_71432_P (Lnet/minecraft/client/Minecraft;) + fId = env->GetStaticFieldID(candidateMinecraft, "field_71432_P", "Lnet/minecraft/client/Minecraft;"); + if (fId) { + outInfo.mapping = MappingType::Srg; + outInfo.mappingName = "srg"; + outInfo.resourceId = 102; + outInfo.minecraftClass = (jclass)env->NewGlobalRef(candidateMinecraft); + + jvmti->GetClassLoader(candidateMinecraft, &outInfo.classLoader); + if (outInfo.classLoader) { + outInfo.classLoader = env->NewGlobalRef(outInfo.classLoader); + } + + jvmti->Deallocate((unsigned char*)classes); + Logger::Log(L"detected Minecraft 1.8.9 with %hs names", outInfo.mappingName.c_str()); + return true; + } + env->ExceptionClear(); + + Logger::Log(L"net.minecraft.client.Minecraft has neither MCP nor SRG members; unsupported runtime"); + jvmti->Deallocate((unsigned char*)classes); + return false; + } + + // Check candidateAve (Official / Notch) + if (candidateAve) { + // Check official: static field S (Lave;) + jfieldID fId = env->GetStaticFieldID(candidateAve, "S", "Lave;"); + if (fId) { + outInfo.mapping = MappingType::Official; + outInfo.mappingName = "official"; + outInfo.resourceId = 103; + outInfo.minecraftClass = (jclass)env->NewGlobalRef(candidateAve); + + jvmti->GetClassLoader(candidateAve, &outInfo.classLoader); + if (outInfo.classLoader) { + outInfo.classLoader = env->NewGlobalRef(outInfo.classLoader); + } + + jvmti->Deallocate((unsigned char*)classes); + Logger::Log(L"detected Minecraft 1.8.9 with %hs names", outInfo.mappingName.c_str()); + return true; + } + env->ExceptionClear(); + + Logger::Log(L"class ave is not Minecraft 1.8.9; unsupported runtime"); + jvmti->Deallocate((unsigned char*)classes); + return false; + } + + jvmti->Deallocate((unsigned char*)classes); + } + + Sleep(500); + } + + Logger::Log(L"Minecraft 1.8.9 did not finish starting within 2 minutes"); + return false; +} + +} // namespace SlinkyNative diff --git a/SlinkyNative/src/NativeBridge.cpp b/SlinkyNative/src/NativeBridge.cpp new file mode 100644 index 0000000..5383230 --- /dev/null +++ b/SlinkyNative/src/NativeBridge.cpp @@ -0,0 +1,135 @@ +#include "NativeBridge.hpp" +#include "JvmManager.hpp" +#include "Logger.hpp" + +namespace SlinkyNative { + +bool NativeBridge::Register(JNIEnv* env, jobject classLoader) { + jclass bridgeClass = nullptr; + + // First try ClassLoader.loadClass("dev.slinky.inject.NativeBridge") + if (classLoader) { + jclass clClass = env->GetObjectClass(classLoader); + jmethodID loadClassMethod = env->GetMethodID(clClass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); + if (loadClassMethod) { + jstring className = env->NewStringUTF("dev.slinky.inject.NativeBridge"); + bridgeClass = (jclass)env->CallObjectMethod(classLoader, loadClassMethod, className); + env->DeleteLocalRef(className); + env->ExceptionClear(); + } + env->DeleteLocalRef(clClass); + } + + if (!bridgeClass) { + bridgeClass = env->FindClass("dev/slinky/inject/NativeBridge"); + env->ExceptionClear(); + } + + if (!bridgeClass) { + Logger::Log(L"could not find class dev.slinky.inject.NativeBridge"); + return false; + } + + JNINativeMethod methods[] = { + { (char*)"getClassBytes", (char*)"(Ljava/lang/Class;)[B", (void*)&GetClassBytes }, + { (char*)"retransformClass", (char*)"(Ljava/lang/Class;[B)I", (void*)&RetransformClass }, + { (char*)"log", (char*)"(Ljava/lang/String;)V", (void*)&Log } + }; + + jint res = env->RegisterNatives(bridgeClass, methods, sizeof(methods) / sizeof(methods[0])); + if (res != JNI_OK) { + Logger::Log(L"RegisterNatives dev.slinky.inject.NativeBridge failed: %d", res); + return false; + } + + Logger::Log(L"RegisterNatives dev.slinky.inject.NativeBridge succeeded"); + return true; +} + +jbyteArray JNICALL NativeBridge::GetClassBytes(JNIEnv* env, jclass clazz, jclass targetClass) { + if (!targetClass) return nullptr; + + jvmtiEnv* jvmti = JvmManager::GetJvmti(); + if (!jvmti) return nullptr; + + JvmManager::SetCaptureTarget(targetClass); + + // Enable ClassFileLoadHook + jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); + + // Trigger ClassFileLoadHook via RetransformClasses + jvmtiError err = jvmti->RetransformClasses(1, &targetClass); + + // Disable ClassFileLoadHook + jvmti->SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); + + std::vector bytes = JvmManager::GetCapturedBytes(); + JvmManager::ClearCapturedBytes(); + + if (err != JVMTI_ERROR_NONE || bytes.empty()) { + Logger::Log(L"RetransformClasses failed: jvmti=%d, target=%p", err, targetClass); + return nullptr; + } + + jbyteArray result = env->NewByteArray((jsize)bytes.size()); + if (result) { + env->SetByteArrayRegion(result, 0, (jsize)bytes.size(), (const jbyte*)bytes.data()); + } + + return result; +} + +jint JNICALL NativeBridge::RetransformClass(JNIEnv* env, jclass clazz, jclass targetClass, jbyteArray newBytecode) { + if (!targetClass || !newBytecode) return 0x74; // JVMTI_ERROR_NULL_POINTER (0x74 = 116) + + jvmtiEnv* jvmti = JvmManager::GetJvmti(); + if (!jvmti) return 0x6e; // JVMTI_ERROR_UNATTACHED_THREAD + + jsize len = env->GetArrayLength(newBytecode); + jbyte* bytes = env->GetByteArrayElements(newBytecode, nullptr); + if (!bytes) return 0x6e; + + JvmManager::SetReplacementData(targetClass, (const unsigned char*)bytes, len); + + // Enable ClassFileLoadHook + jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); + + // Trigger retransformation + jvmtiError err = jvmti->RetransformClasses(1, &targetClass); + + // Disable ClassFileLoadHook + jvmti->SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); + + bool applied = JvmManager::WasReplacementApplied(); + JvmManager::ClearReplacementData(); + env->ReleaseByteArrayElements(newBytecode, bytes, JNI_ABORT); + + if (err != JVMTI_ERROR_NONE) { + Logger::Log(L"RetransformClasses(apply) failed: jvmti=%d", err); + return (jint)err; + } + + if (!applied) { + Logger::Log(L"RetransformClasses(apply): load hook never matched the target; class unchanged"); + return -1; + } + + return 0; +} + +void JNICALL NativeBridge::Log(JNIEnv* env, jclass clazz, jstring message) { + if (!message) return; + + const char* utfChars = env->GetStringUTFChars(message, nullptr); + if (utfChars) { + int wlen = MultiByteToWideChar(CP_UTF8, 0, utfChars, -1, nullptr, 0); + if (wlen > 0) { + std::vector wbuf(wlen); + MultiByteToWideChar(CP_UTF8, 0, utfChars, -1, wbuf.data(), wlen); + Logger::Log(L"[java] %ls", wbuf.data()); + } + env->ReleaseStringUTFChars(message, utfChars); + } +} + +} // namespace SlinkyNative diff --git a/SlinkyNative/src/PayloadLoader.cpp b/SlinkyNative/src/PayloadLoader.cpp new file mode 100644 index 0000000..e35591a --- /dev/null +++ b/SlinkyNative/src/PayloadLoader.cpp @@ -0,0 +1,485 @@ +#include "PayloadLoader.hpp" +#include "JvmManager.hpp" +#include "NativeBridge.hpp" +#include "Logger.hpp" +#include + +namespace SlinkyNative { + +InjectionStatus PayloadLoader::LoadAndStart(HMODULE hModule, const MinecraftInfo& mcInfo) { + JNIEnv* env = JvmManager::GetEnv(); + if (!env) { + Logger::Log(L"FINAL STATUS: FAILED"); + return InjectionStatus::Failed; + } + + bool alreadyRunning = false; + if (CheckPreviousState(env, mcInfo.classLoader, alreadyRunning)) { + if (alreadyRunning) { + Logger::Log(L"Slinky is already active; no classes or native methods were replaced"); + Logger::Log(L"FINAL STATUS: ALREADY_RUNNING"); + return InjectionStatus::AlreadyRunning; + } else { + Logger::Log(L"atomic payload replacement (class schema must be compatible)"); + } + } + + std::wstring jarPath; + if (!ExtractPayloadJar(hModule, mcInfo, jarPath)) { + Logger::Log(L"FINAL STATUS: FAILED"); + return InjectionStatus::Failed; + } + + // Add JAR to ClassLoader + if (!AddJarToClassLoader(env, mcInfo.classLoader, jarPath)) { + DeleteFileW(jarPath.c_str()); + Logger::Log(L"FINAL STATUS: FAILED"); + return InjectionStatus::Failed; + } + + // Read and define dev.slinky classes + DefinePayloadClasses(env, mcInfo.classLoader, jarPath); + + // Delete temporary jar immediately after loading + DeleteFileW(jarPath.c_str()); + + // Register native bridge methods + if (!NativeBridge::Register(env, mcInfo.classLoader)) { + Logger::Log(L"FINAL STATUS: FAILED"); + return InjectionStatus::Failed; + } + + // Launch Bootstrap + if (!LaunchBootstrap(env, mcInfo.classLoader, mcInfo, hModule)) { + Logger::Log(L"bootstrap failed; unloading"); + Logger::Log(L"FINAL STATUS: FAILED"); + return InjectionStatus::Failed; + } + + // Set reload markers / system properties + jclass systemClass = env->FindClass("java/lang/System"); + if (systemClass) { + jmethodID setPropertyMethod = env->GetStaticMethodID(systemClass, "setProperty", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"); + if (setPropertyMethod) { + jstring key1 = env->NewStringUTF("slinky.injected"); + jstring val1 = env->NewStringUTF("true"); + env->CallStaticObjectMethod(systemClass, setPropertyMethod, key1, val1); + env->DeleteLocalRef(key1); + env->DeleteLocalRef(val1); + + jstring key2 = env->NewStringUTF("slinky.patches.installed"); + jstring val2 = env->NewStringUTF("true"); + env->CallStaticObjectMethod(systemClass, setPropertyMethod, key2, val2); + env->DeleteLocalRef(key2); + env->DeleteLocalRef(val2); + } + env->DeleteLocalRef(systemClass); + } + env->ExceptionClear(); + + Logger::Log(L"Slinky is running"); + Logger::Log(L"FINAL STATUS: RUNNING"); + return InjectionStatus::Success; +} + +bool PayloadLoader::CheckPreviousState(JNIEnv* env, jobject classLoader, bool& outAlreadyRunning) { + outAlreadyRunning = false; + + // Check if dev.slinky.inject.Bootstrap was already loaded + jclass bootstrapClass = nullptr; + if (classLoader) { + jclass clClass = env->GetObjectClass(classLoader); + jmethodID findLoadedClassMethod = env->GetMethodID(clClass, "findLoadedClass", "(Ljava/lang/String;)Ljava/lang/Class;"); + if (findLoadedClassMethod) { + jstring className = env->NewStringUTF("dev.slinky.inject.Bootstrap"); + bootstrapClass = (jclass)env->CallObjectMethod(classLoader, findLoadedClassMethod, className); + env->DeleteLocalRef(className); + env->ExceptionClear(); + } + env->DeleteLocalRef(clClass); + } + + if (!bootstrapClass) { + bootstrapClass = env->FindClass("dev/slinky/inject/Bootstrap"); + env->ExceptionClear(); + } + + if (!bootstrapClass) { + return false; + } + + Logger::Log(L"inspect previous Bootstrap"); + + // Check dev/slinky/client/hook/GameHooks + jclass hooksClass = env->FindClass("dev/slinky/client/hook/GameHooks"); + env->ExceptionClear(); + if (hooksClass) { + Logger::Log(L"inspect previous GameHooks"); + jfieldID modulesField = env->GetStaticFieldID(hooksClass, "modules", "Ldev/slinky/module/ModuleManager;"); + env->ExceptionClear(); + if (modulesField) { + Logger::Log(L"inspect previous module manager"); + jobject moduleManager = env->GetStaticObjectField(hooksClass, modulesField); + if (moduleManager) { + jclass mmClass = env->GetObjectClass(moduleManager); + jfieldID shutdownField = env->GetFieldID(mmClass, "shutdown", "Ljava/util/concurrent/atomic/AtomicBoolean;"); + env->ExceptionClear(); + if (shutdownField) { + Logger::Log(L"read previous shutdown state"); + jobject shutdownObj = env->GetObjectField(moduleManager, shutdownField); + if (shutdownObj) { + jclass abClass = env->GetObjectClass(shutdownObj); + jmethodID getMethod = env->GetMethodID(abClass, "get", "()Z"); + if (getMethod) { + jboolean isShutdown = env->CallBooleanMethod(shutdownObj, getMethod); + if (!isShutdown) { + outAlreadyRunning = true; + } + } + env->DeleteLocalRef(abClass); + env->DeleteLocalRef(shutdownObj); + } + } + env->DeleteLocalRef(mmClass); + env->DeleteLocalRef(moduleManager); + } + } + env->DeleteLocalRef(hooksClass); + } + + env->DeleteLocalRef(bootstrapClass); + return true; +} + +bool PayloadLoader::ExtractPayloadJar(HMODULE hModule, const MinecraftInfo& mcInfo, std::wstring& outJarPath) { + wchar_t dllDir[MAX_PATH] = { 0 }; + if (GetModuleFileNameW(hModule, dllDir, MAX_PATH) > 0) { + wchar_t* lastSlash = wcsrchr(dllDir, L'\\'); + if (lastSlash) *lastSlash = L'\0'; + } + + // Format temp jar path: slinky-%hs-%lu-%llu.jar + wchar_t jarFileName[256] = { 0 }; + swprintf_s(jarFileName, L"slinky-%hs-%lu-%llu.jar", + mcInfo.mappingName.c_str(), + GetCurrentProcessId(), + GetTickCount64()); + + outJarPath = std::wstring(dllDir) + L"\\" + jarFileName; + + // First attempt: embedded resource + HRSRC hRes = FindResourceW(hModule, MAKEINTRESOURCEW(mcInfo.resourceId), (LPCWSTR)10); // RT_RCDATA = 10 + if (hRes) { + DWORD resSize = SizeofResource(hModule, hRes); + HGLOBAL hLoad = LoadResource(hModule, hRes); + if (hLoad && resSize >= 4) { + const unsigned char* pData = (const unsigned char*)LockResource(hLoad); + if (pData && pData[0] == 0x50 && pData[1] == 0x4B) { // PK magic + HANDLE hFile = CreateFileW(outJarPath.c_str(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + if (hFile != INVALID_HANDLE_VALUE) { + DWORD written = 0; + WriteFile(hFile, pData, resSize, &written, nullptr); + CloseHandle(hFile); + + Logger::Log(L"payload %hs written to %ls (%lu bytes)", mcInfo.mappingName.c_str(), outJarPath.c_str(), written); + return true; + } else { + Logger::Log(L"cannot write %ls: %lu", outJarPath.c_str(), GetLastError()); + } + } else { + Logger::Log(L"embedded payload %d is invalid", mcInfo.resourceId); + } + } + } + + Logger::Log(L"embedded payload %d is missing", mcInfo.resourceId); + + // Fallback: check for standalone JAR next to the DLL (slinky-named.jar, slinky-srg.jar, slinky-official.jar, or slinky.jar) + std::wstring candidates[] = { + std::wstring(dllDir) + L"\\slinky-" + std::wstring(mcInfo.mappingName.begin(), mcInfo.mappingName.end()) + L".jar", + std::wstring(dllDir) + L"\\slinky.jar", + std::wstring(dllDir) + L"\\Slinky-0.5.0-settings.jar" + }; + + for (const auto& candidate : candidates) { + if (GetFileAttributesW(candidate.c_str()) != INVALID_FILE_ATTRIBUTES) { + // Copy candidate to outJarPath + if (CopyFileW(candidate.c_str(), outJarPath.c_str(), FALSE)) { + Logger::Log(L"payload %hs loaded from disk %ls", mcInfo.mappingName.c_str(), candidate.c_str()); + return true; + } + } + } + + Logger::Log(L"payload contains no dev.slinky classes"); + return false; +} + +bool PayloadLoader::AddJarToClassLoader(JNIEnv* env, jobject classLoader, const std::wstring& jarPath) { + if (!classLoader) { + Logger::Log(L"game class loader unavailable"); + return false; + } + + jclass fileClass = env->FindClass("java/io/File"); + jclass uriClass = env->FindClass("java/net/URI"); + if (!fileClass || !uriClass) return false; + + jmethodID fileInit = env->GetMethodID(fileClass, "", "(Ljava/lang/String;)V"); + jmethodID fileToURI = env->GetMethodID(fileClass, "toURI", "()Ljava/net/URI;"); + jmethodID uriToURL = env->GetMethodID(uriClass, "toURL", "()Ljava/net/URL;"); + + int u8Len = WideCharToMultiByte(CP_UTF8, 0, jarPath.c_str(), -1, nullptr, 0, nullptr, nullptr); + std::vector u8Path(u8Len); + WideCharToMultiByte(CP_UTF8, 0, jarPath.c_str(), -1, u8Path.data(), u8Len, nullptr, nullptr); + + jstring jPath = env->NewStringUTF(u8Path.data()); + jobject fileObj = env->NewObject(fileClass, fileInit, jPath); + env->DeleteLocalRef(jPath); + + if (!fileObj) return false; + + jobject uriObj = env->CallObjectMethod(fileObj, fileToURI); + jobject urlObj = env->CallObjectMethod(uriObj, uriToURL); + + env->DeleteLocalRef(fileObj); + env->DeleteLocalRef(uriObj); + env->DeleteLocalRef(fileClass); + env->DeleteLocalRef(uriClass); + + if (!urlObj) return false; + + // Try URLClassLoader.addURL(URL) on game classloader or system classloader + jclass uclClass = env->FindClass("java/net/URLClassLoader"); + if (uclClass) { + jmethodID addURLMethod = env->GetMethodID(uclClass, "addURL", "(Ljava/net/URL;)V"); + if (addURLMethod) { + env->CallVoidMethod(classLoader, addURLMethod, urlObj); + if (!env->ExceptionCheck()) { + Logger::Log(L"payload added to the game class loader (addURL)"); + env->DeleteLocalRef(urlObj); + env->DeleteLocalRef(uclClass); + return true; + } + env->ExceptionClear(); + } + env->DeleteLocalRef(uclClass); + } + + // Fallback: add to SystemClassLoader + jclass sysClass = env->FindClass("java/lang/ClassLoader"); + if (sysClass) { + jmethodID getSysClMethod = env->GetStaticMethodID(sysClass, "getSystemClassLoader", "()Ljava/lang/ClassLoader;"); + if (getSysClMethod) { + jobject sysCl = env->CallStaticObjectMethod(sysClass, getSysClMethod); + if (sysCl) { + jclass sysUcl = env->FindClass("java/net/URLClassLoader"); + if (sysUcl) { + jmethodID addURL = env->GetMethodID(sysUcl, "addURL", "(Ljava/net/URL;)V"); + if (addURL) { + env->CallVoidMethod(sysCl, addURL, urlObj); + if (!env->ExceptionCheck()) { + Logger::Log(L"payload appended to the system class loader search"); + env->DeleteLocalRef(urlObj); + env->DeleteLocalRef(sysCl); + env->DeleteLocalRef(sysUcl); + env->DeleteLocalRef(sysClass); + return true; + } + env->ExceptionClear(); + } + env->DeleteLocalRef(sysUcl); + } + env->DeleteLocalRef(sysCl); + } + } + env->DeleteLocalRef(sysClass); + } + + env->DeleteLocalRef(urlObj); + return false; +} + +bool PayloadLoader::DefinePayloadClasses(JNIEnv* env, jobject classLoader, const std::wstring& jarPath) { + jclass jarFileClass = env->FindClass("java/util/jar/JarFile"); + jclass zipEntryClass = env->FindClass("java/util/zip/ZipEntry"); + jclass enumerationClass = env->FindClass("java/util/Enumeration"); + jclass isClass = env->FindClass("java/io/InputStream"); + jclass baosClass = env->FindClass("java/io/ByteArrayOutputStream"); + + if (!jarFileClass || !zipEntryClass || !enumerationClass || !isClass || !baosClass) { + Logger::Log(L"resolve JAR reader failed"); + return false; + } + + jmethodID jarInit = env->GetMethodID(jarFileClass, "", "(Ljava/lang/String;)V"); + jmethodID jarEntries = env->GetMethodID(jarFileClass, "entries", "()Ljava/util/Enumeration;"); + jmethodID jarGetInputStream = env->GetMethodID(jarFileClass, "getInputStream", "(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;"); + jmethodID jarClose = env->GetMethodID(jarFileClass, "close", "()V"); + + jmethodID entryGetName = env->GetMethodID(zipEntryClass, "getName", "()Ljava/lang/String;"); + jmethodID enumHasMore = env->GetMethodID(enumerationClass, "hasMoreElements", "()Z"); + jmethodID enumNext = env->GetMethodID(enumerationClass, "nextElement", "()Ljava/lang/Object;"); + + jmethodID isRead = env->GetMethodID(isClass, "read", "([B)I"); + jmethodID baosInit = env->GetMethodID(baosClass, "", "()V"); + jmethodID baosWrite = env->GetMethodID(baosClass, "write", "([BII)V"); + jmethodID baosToByteArray = env->GetMethodID(baosClass, "toByteArray", "()[B"); + + int u8Len = WideCharToMultiByte(CP_UTF8, 0, jarPath.c_str(), -1, nullptr, 0, nullptr, nullptr); + std::vector u8Path(u8Len); + WideCharToMultiByte(CP_UTF8, 0, jarPath.c_str(), -1, u8Path.data(), u8Len, nullptr, nullptr); + + jstring jPath = env->NewStringUTF(u8Path.data()); + jobject jarObj = env->NewObject(jarFileClass, jarInit, jPath); + env->DeleteLocalRef(jPath); + + if (!jarObj || env->ExceptionCheck()) { + env->ExceptionClear(); + Logger::Log(L"open payload jar failed"); + return false; + } + + jobject entries = env->CallObjectMethod(jarObj, jarEntries); + size_t definedCount = 0; + size_t unresolvedCount = 0; + + jbyteArray buffer = env->NewByteArray(4096); + + while (entries && env->CallBooleanMethod(entries, enumHasMore)) { + jobject entry = env->CallObjectMethod(entries, enumNext); + if (!entry) continue; + + jstring nameStr = (jstring)env->CallObjectMethod(entry, entryGetName); + if (nameStr) { + const char* nameChars = env->GetStringUTFChars(nameStr, nullptr); + if (nameChars) { + std::string entryName = nameChars; + env->ReleaseStringUTFChars(nameStr, nameChars); + + if (entryName.rfind("dev/slinky/", 0) == 0 && entryName.size() > 6 && entryName.substr(entryName.size() - 6) == ".class") { + // Convert "dev/slinky/Foo.class" -> "dev.slinky.Foo" + std::string className = entryName.substr(0, entryName.size() - 6); + for (char& c : className) { + if (c == '/') c = '.'; + } + + // Read bytes + jobject inputStream = env->CallObjectMethod(jarObj, jarGetInputStream, entry); + if (inputStream) { + jobject baos = env->NewObject(baosClass, baosInit); + jint bytesRead = 0; + while ((bytesRead = env->CallIntMethod(inputStream, isRead, buffer)) > 0) { + env->CallVoidMethod(baos, baosWrite, buffer, 0, bytesRead); + } + + jbyteArray classBytesArr = (jbyteArray)env->CallObjectMethod(baos, baosToByteArray); + if (classBytesArr) { + jsize byteLen = env->GetArrayLength(classBytesArr); + jbyte* rawBytes = env->GetByteArrayElements(classBytesArr, nullptr); + if (rawBytes) { + jclass definedClass = env->DefineClass(className.c_str(), classLoader, rawBytes, byteLen); + if (definedClass) { + definedCount++; + env->DeleteLocalRef(definedClass); + } else { + unresolvedCount++; + } + env->ExceptionClear(); + env->ReleaseByteArrayElements(classBytesArr, rawBytes, JNI_ABORT); + } + env->DeleteLocalRef(classBytesArr); + } + env->DeleteLocalRef(baos); + env->DeleteLocalRef(inputStream); + } + } + } + env->DeleteLocalRef(nameStr); + } + env->DeleteLocalRef(entry); + } + + env->DeleteLocalRef(buffer); + env->CallVoidMethod(jarObj, jarClose); + env->DeleteLocalRef(jarObj); + + Logger::Log(L"defined %zu new payload classes in the game class loader; %zu unresolved", definedCount, unresolvedCount); + return true; +} + +bool PayloadLoader::LaunchBootstrap(JNIEnv* env, jobject classLoader, const MinecraftInfo& mcInfo, HMODULE hModule) { + jclass bootstrapClass = nullptr; + + if (classLoader) { + jclass clClass = env->GetObjectClass(classLoader); + jmethodID loadClassMethod = env->GetMethodID(clClass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;"); + if (loadClassMethod) { + jstring className = env->NewStringUTF("dev.slinky.inject.Bootstrap"); + bootstrapClass = (jclass)env->CallObjectMethod(classLoader, loadClassMethod, className); + env->DeleteLocalRef(className); + env->ExceptionClear(); + } + env->DeleteLocalRef(clClass); + } + + if (!bootstrapClass) { + bootstrapClass = env->FindClass("dev/slinky/inject/Bootstrap"); + env->ExceptionClear(); + } + + if (!bootstrapClass) { + Logger::Log(L"resolve Bootstrap.start failed: class not found"); + return false; + } + + jmethodID startMethod = env->GetStaticMethodID(bootstrapClass, "start", "(Ljava/lang/String;Ljava/lang/String;)V"); + if (!startMethod) { + Logger::Log(L"resolve Bootstrap.start failed: method not found"); + env->DeleteLocalRef(bootstrapClass); + return false; + } + + wchar_t dllPath[MAX_PATH] = { 0 }; + GetModuleFileNameW(hModule, dllPath, MAX_PATH); + int u8Len = WideCharToMultiByte(CP_UTF8, 0, dllPath, -1, nullptr, 0, nullptr, nullptr); + std::vector u8DllPath(u8Len); + WideCharToMultiByte(CP_UTF8, 0, dllPath, -1, u8DllPath.data(), u8Len, nullptr, nullptr); + + jstring jMapping = env->NewStringUTF(mcInfo.mappingName.c_str()); + jstring jDllPath = env->NewStringUTF(u8DllPath.data()); + + Logger::Log(L"Bootstrap.start calling with mapping=%hs", mcInfo.mappingName.c_str()); + env->CallStaticVoidMethod(bootstrapClass, startMethod, jMapping, jDllPath); + + env->DeleteLocalRef(jMapping); + env->DeleteLocalRef(jDllPath); + env->DeleteLocalRef(bootstrapClass); + + if (env->ExceptionCheck()) { + jthrowable ex = env->ExceptionOccurred(); + env->ExceptionClear(); + if (ex) { + jclass exClass = env->GetObjectClass(ex); + jmethodID toString = env->GetMethodID(exClass, "toString", "()Ljava/lang/String;"); + if (toString) { + jstring msg = (jstring)env->CallObjectMethod(ex, toString); + if (msg) { + const char* chars = env->GetStringUTFChars(msg, nullptr); + if (chars) { + Logger::Log(L"Bootstrap.start failed: %hs", chars); + env->ReleaseStringUTFChars(msg, chars); + } + env->DeleteLocalRef(msg); + } + } + env->DeleteLocalRef(exClass); + env->DeleteLocalRef(ex); + } + return false; + } + + return true; +} + +} // namespace SlinkyNative diff --git a/assets/deobf.jpg b/assets/deobf.jpg new file mode 100644 index 0000000..fa8dbde Binary files /dev/null and b/assets/deobf.jpg differ diff --git a/assets/deobf2.png b/assets/deobf2.png new file mode 100644 index 0000000..1d4014d Binary files /dev/null and b/assets/deobf2.png differ diff --git a/assets/hack.jpg b/assets/hack.jpg new file mode 100644 index 0000000..c4252ef Binary files /dev/null and b/assets/hack.jpg differ diff --git a/assets/jak.jpg b/assets/jak.jpg new file mode 100644 index 0000000..162bfe5 Binary files /dev/null and b/assets/jak.jpg differ diff --git a/assets/ss.png b/assets/ss.png new file mode 100644 index 0000000..041b33a Binary files /dev/null and b/assets/ss.png differ