{"id":17020879,"url":"https://github.com/rfresh2/notexturerotations","last_synced_at":"2025-03-22T16:31:23.307Z","repository":{"id":238049308,"uuid":"795383525","full_name":"rfresh2/NoTextureRotations","owner":"rfresh2","description":"Prevent Minecraft Texture Rotation Coordinate Exploits","archived":false,"fork":false,"pushed_at":"2024-10-22T20:23:44.000Z","size":1206,"stargazers_count":11,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"1.20.x","last_synced_at":"2025-03-18T13:46:18.996Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rfresh2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-03T06:55:36.000Z","updated_at":"2025-01-13T14:30:41.000Z","dependencies_parsed_at":"2024-08-09T03:21:52.774Z","dependency_job_id":"d299d82a-453a-419e-a3aa-786efd38d895","html_url":"https://github.com/rfresh2/NoTextureRotations","commit_stats":null,"previous_names":["rfresh2/notexturerotations"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfresh2%2FNoTextureRotations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfresh2%2FNoTextureRotations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfresh2%2FNoTextureRotations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rfresh2%2FNoTextureRotations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rfresh2","download_url":"https://codeload.github.com/rfresh2/NoTextureRotations/tar.gz/refs/heads/1.20.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244986611,"owners_count":20543042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T07:06:13.379Z","updated_at":"2025-03-22T16:31:22.690Z","avatar_url":"https://github.com/rfresh2.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NoTextureRotations\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/nJZrSaRKtb\"\u003e\n  \u003cimg alt=\"Discord\" src=\"https://dcbadge.vercel.app/api/server/nJZrSaRKtb\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=https://modrinth.com/mod/notexturerotations \u003e\u003cimg alt=\"Modrinth Downloads\" src=\"https://img.shields.io/modrinth/dt/h4ktIYQ8?style=for-the-badge\u0026logo=modrinth\u0026label=Modrinth\u0026color=00AF5C\"\u003e\u003c/a\u003e\n  \u003ca href=https://legacy.curseforge.com/minecraft/mc-mods/notexturerotations \u003e\u003cimg alt=\"CurseForge Downloads\" src=\"https://cf.way2muchnoise.eu/1013466.svg?badge_style=for_the_badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.21.1-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.21-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.20.6-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.20.4-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.20.2-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.20.1-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.19.4-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MC-1.19.2-brightgreen.svg\" alt=\"Minecraft\"/\u003e\n\u003c/p\u003e\n\n\nA Fabric mod to prevent coordinate exploits based on texture rotation and position offsets. Or if you prefer how it looks!\n\nCompatible with Vanilla MC, Sodium, and custom texture/resource packs\n\n# How the mod works\n\nThis mod can either:\n1. Disable block texture rotations and offsets\n2. Replace the random function with a secure implementation. Will mostly retain the normal visual feel of the game. \nHowever, rotations/offsets may appear to shuffle if reloaded. \n3. Add a random offset generated at game launch to the block position function, which will most faithfully retain the game visuals.\nBe warned, it is possible to reverse the offset if you were to reveal the real coordinates of rotated/offset blocks at any point during the same game session.\n\n\n\n## Configuration\n\nThere are two ways to configure the mod in-game:\n1. Install [YetAnotherConfigLib](https://modrinth.com/mod/yacl) and [ModMenu](https://modrinth.com/mod/modmenu)\n2. Install [Sodium](https://modrinth.com/mod/sodium). A page for NoTextureRotation settings will be added to the Video Settings.\n\nThe configuration file is located at: `.minecraft/config/no-texture-rotations.json`\n\n## What's the exploit?\n\nMany blocks like grass, dirt, and stone have *variations* that rotate or change their textures slightly.\n\nTexture variants are not inherently bad, they make the game visually more interesting as they prevent blocks from looking \"same-y\" when many are next to each other.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/example-texture-rotation.png\" alt=\"Example\"/\u003e\n\u003c/p\u003e\n\nThe problem is that the \"random\" number used to select the variant is seeded by the block's position in-game. No world seed is required.\n\nOffsets works similarly, some blocks like flowers offset their position from the center of the block with a \"random\" offset.\n\nAny screenshots or videos that show examples of these blocks are susceptible to an attacker cracking the block coordinates.\n\nOn anarchy servers, this can be particularly powerful - leading to bases with images or videos shared being found.\n\nThis is not a new discovery, and the method has been known since at least before 2018 and is still regularly used today\nin reversing panorma seeds. Example: https://youtu.be/gE1dMNCyofs?t=57\n\nThere are multiple public tools to perform this:\n* https://github.com/19MisterX98/TextureRotations\n* https://github.com/coolmann24/TextureFinderJava\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfresh2%2Fnotexturerotations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frfresh2%2Fnotexturerotations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frfresh2%2Fnotexturerotations/lists"}