GUIDELINES ON HOW TO CONTRIBUTE TO THE WIKI

- Go to the repository for this wiki here to contribute any changes: https://github.com/wikiformoddinglegacyminecraftjava/wikiformoddinglegacyminecraftjava.github.io

- Only contribute to the main branch of the repository unless otherwise specified.

- All changes made to the wiki must be approved by me (https://github.com/UEMxMDE/ the owner of this repository and organization) to keep things organized.

- PRIVACY CONCERN: Make sure that when you are pushing a commit to this repository that you are hiding your email address. If you don't, then your GitHub account's email address will be visible to ANYONE that visits your commit URLs and adds ".patch" or ".diff" to the end of the commit URLs. Example: https://stackoverflow.com/questions/42957392/how-to-see-contributors-email-address-on-git-commit-chain
There are 2 things you must do:
1. Login to your GitHub account and go here: https://github.com/settings/emails then enable "Keep my email addresses private". This will make all your commits that you contribute from your web browser use your noreply GitHub address instead of your actual email address. You should enable "Block command line pushes that expose my email" as well.
When I mentioned "contribute from your web browser" earlier, I mean the two options below. Do not do the two options below unless you have followed the above instructions (bullet point #1).
- The repository URL -> Add file -> Create new file -> Type file contents and file name -> Commit changes
- The repository URL -> Add file -> Upload files -> Drag and drop your files -> Commit changes
2. If you are contributing from a local git repository, then you must change your --global user.email to your noreply GitHub address to keep all your commits anonymous. Here are the steps to do this:
  1. Log in to your GitHub account
  2. Visit this page: https://github.com/settings/emails
  3. Copy your noreply GitHub address. It should look something like this: 12345678+yourusername@users.noreply.github.com
  4. Open git bash on the PC with your local git copy of this repository and enter this command: "git config --global user.email <12345678+yourusername@users.noreply.github.com>"
  5. You can now push commits to the repository without exposing your email address in your commits.
/\/\/\/\/\/\/\/\/\/\ The privacy concern above is OPTIONAL but RECOMMENDED. If you are comfortable with people seeing your email address, you do not have to do this. You can still contribute to this website either way. /\/\/\/\/\/\/\/\/\/\

- The copyright in the footer is a temporary placeholder until I can think of a better license for this wiki OR if I decide to leave the license as it is.

- Prioritize adding missing content to the wiki over changing the style of the wiki until sufficient content is added to the wiki to warrant any stylistic changes.

- All CSS styling must be done in separate .css files (only the ones in this repository) and must be applied to HTML elements using classes only. This means no inline CSS and no <style> tags. The only exceptions to this are:
    - If an HTML tag itself (e.g. <b> for bolding text) can be used as an alternative to existing CSS code (e.g. font-weight: bold;)
    - The hidden <div> tags on individual wiki pages that are meant to separate different "pages" within the wiki page itself (search the concept of "Single-page application" (SPA) on the internet because every wiki page must be an SPA).

- Do not implement bootstrap. We can make all the CSS classes ourselves and the website needs to look simple.

- All JavaScript must be done in separate .js files. This means no inline JavaScript and no usage of the <script> tag for JavaScript code directly within the HTML file itself.
    - The <script> tag can only be used to link to external JavaScript files that are inside of this repository.

- Here is a blank template wiki page you can use to start adding content to immediately:

- All letters in sidebar hyperlinks (the sidebar in individual wiki pages) must be lowercase except in specific circumstances (e.g. #configuration).

- Tutorials for custom variants of vanilla items/features are a necessary part of wiki pages so avoid removing them.

- The order of the links in the sidebars of wiki pages MUST be the same order as the hidden divs on the wiki page. For example:
<!-- The CORRECT order -->
. . .
<a href="#item1">Item 1</a>
<a href="#item2">Item 2</a>
<a href="#item3">Item 3</a>
. . . 

. . . 
<div id="item1" class="wiki-page" style="display:none;">
	<hr>
	<h1>Item 1</h1>
</div>

<div id="item2" class="wiki-page" style="display:none;">
	<hr>
	<h1>Item 2</h1>
</div>

<div id="item3" class="wiki-page" style="display:none;">
	<hr>
	<h1>Item 3</h1>
</div>
. . .


<!-- The INCORRECT order --> . . . <a href="#item1">Item 1</a> <a href="#item2">Item 2</a> <a href="#item3">Item 3</a> . . . . . . <div id="item3" class="wiki-page" style="display:none;"> <hr> <h1>Item 3</h1> </div> <div id="item1" class="wiki-page" style="display:none;"> <hr> <h1>Item 1</h1> </div> <div id="item2" class="wiki-page" style="display:none;"> <hr> <h1>Item 2</h1> </div> . . .

TEMPLATE FOR MAKING YOUR OWN WIKI PAGE

HOW TO USE THE TEMPLATE:
  1. In your local copy of the repository, copy the template_wiki_page folder and paste it in the root of the local repository.
  2. Rename the copy of the template_wiki_page folder to the page you want to create.
    1. OFFICIAL FORMAT FOR FOLDER NAMES: <minecraft_version>_<modloader/other>
    2. EXAMPLE FOLDER NAME: 1.12.2_forge
  3. Open the renamed template folder.
  4. Begin adding content to the template by using a text editor to open HTML files.
  5. If you create a new wiki page you need to create a new css file AND a new javascript file for that page.
  6. If you want to use < or > you need to: Replace < with &lt; in the HTML file.
    Replace > with &gt; in the HTML file.
URL to template page: https://wikiformoddinglegacyminecraftjava.github.io/template_wiki_page
GitHub repository URL to template page: https://github.com/wikiformoddinglegacyminecraftjava/wikiformoddinglegacyminecraftjava.github.io/tree/main/template_wiki_page

Every wiki page is a Single Page Application (SPA).

When working on a "page" inside of a wiki SPA, you need to:
  1. Add a hyperlink to each "page" in the sidebar. Example: <a href="#page_href_name">Temporary placeholder list item</a>
  2. Make your own hidden div where all the "page" content will go. Example:
    <div id="page_href_name" class="wiki-page" style="display:none;">
    	<hr>
    	<h1>Page name</h1>
    </div>
    
  3. Edit the inside of the div to add the content to the "page". Example:
    <div id="page_href_name" class="wiki-page" style="display:none;">
    	<hr>
    	<h1>Page name</h1>
    	
    	"Page" content goes here.
    </div>
    
  4. Place each div you make in the correct place in the wiki page HTML file.
  5. You can test any work-in-progress "page" by clicking on it on the sidebar and refreshing the page any time you make any changes.
THE TEMPLATE IS CURRENTLY A WORK IN PROGRESS BUT IT IS ALREADY IN A USABLE STATE.

Here is an example of a generalized folder structure of the whole website: Repository for this webiste
├─ 1.12.2_forge
│  └─ index.html
├─ 1.7.10_special
│  └─ index.html
├─ assets
│  ├─ css
│  │  ├─ 1_12_2_forge_wiki.css
│  │  ├─ 1_7_10_special_wiki.css
│  │  ├─ legacy_modding_minecraft_wiki_styles.css
│  │  └─ universal_styles.css
│  ├─ images
│  │  ├─ image
│  │  └─ Other image files go in this folder.
│  └─ javascript
│     ├─ 1_12_2_forge_wiki.js
│     ├─ 1_7_10_special_wiki.js
│     └─ universal.js
├─ README.md
└─ index.html

Page URLs are not supposed to look like this: wikiformoddinglegacyminecraftjava.github.io/1_12_2_forge.html
They are supposed to look like this: wikiformoddinglegacyminecraftjava.github.io/1.12.2_forge/

That is why the folder structure above has /page/index.html and NOT page.html

Repository:
/page/index.html ----------> website.github.io/page CORRECT
page.html ----------> website.github.io/page.html NOT CORRECT

TO-DO LIST

- Fix bug in the template page when searching for text that comes after "Method 1 (using . . ." (may be an issue with local SPA search functionality in universal.js instead of an issue with the template page).
    - There are other small edge case issues with the local SPA search functionality that need to be fixed (such as searching for the greater than symbol and the less than symbol).

- In the 1.12.2 wiki page, in the "Modding tips" page, finish the tutorial for Hotswapping by including how to hotswap code changes outside of just changes to the method body.

- In the 1.12.2 wiki page, in the "Setting up the development environment" page, elaborate on what installation settings are needed for Java JDK 8u401 before the user installs Java JDK 8u401.
    - In this section also elaborate that the user needs to save the directory/directories that they installed the Java JDK in so it can be used further down in the tutorial.

- In the 1.12.2 wiki page, in the "Setting up the development environment" page, elaborate on what installation settings are needed for IntelliJ IDEA before the user installs IntelliJ IDEA.
    - Maybe merge the "Setting up IntelliJ IDEA" section with the "Setting up the Forge MDK" section? Unless you can include the installation settings in the "Setting up IntelliJ IDEA" section

- In the 1.12.2 wiki page, test if the "Setting up JAVA_HOME (MAY NOT BE NEEDED, NEEDS MORE TESTING)" section is needed.

- In the 1.12.2 wiki page, I'm not sure if I should keep, modify, or remove this line: "You should update this variable when you decide to release updates to your own mods."

- In the 1.12.2 wiki page, improve the explanation of the "group" variable by figuring out what it does.

- In the 1.12.2 wiki page, the folder structure may be incomplete.

- For legacy_modding_minecraft_wiki_styles.css, I'm not sure if having a border-radius for <code> looks good or not. I am leaving border-radius commented for now.

- In the 1.12.2 wiki page (and for any other page that may use these characters), consider replacing ├─ characters in the HTML file itself with their &...; equivalents to make this website compatible with as many devices as possible.

- In the 1.12.2 wiki page, figure out why the tutorial for how to run the server on the bottom of the page doesn't work at all (when I tested it, the server keeps crashing with the error "Connection reset by peer")

- Put this in every wiki page somewhere (or maybe make a separate page accessed directly from the home page instead that talks about these concepts):
    - This tutorial assumes that you already know Java programming concepts. Here are the concepts that are relevant to developing Minecraft Java Edition mods):
        - Polymorphism
        - Events
        - . . .

- In the 1.12.2 Forge wiki page (and 1.7.10 special wiki page), consider replacing some or all of the quoted stuff and directory names with <code> or similar tags to <code> because even though information in the quotes needs to stand out to the reader, surrounding that information with quotes makes it inconvenient for the reader to copy the text inside of the quotes.

- In the 1.12.2 wiki page, implement fixes for the Common Issues and expand this section to cover more common issues that people have with the #setup wiki page and with setting up the development environment in general.

- In the 1.12.2 wiki page, test the "playerIn.sendMessage(new TextComponentString("Insert text here"));" to see how the message shows up in chat
    - For example, if the player says the text or the server or something else
    - Once you find out, mention how it shows up in the #miscellaneous page

- In the 1.12.2 wiki page, the final order of every page in the sidebar is to-be-determined.

- In the 1.12.2 wiki page, finish the "Language Files" page

- In the 1.12.2 wiki page, finish the "Key concepts" page

- In the 1.12.2 wiki page, maybe move "Making your mod's Creative tab" page to the "Items" category to make the wiki more in line with the idea that the whole wiki should be treated as a step-by-step process going from the first page all the way down to the last page.
    - Also mention the "Language files" section here too since language files are relevant to the user making their first item.

- In the 1.12.2 wiki page, remove the "Temporary resources to continue the wiki" section once the rest of the wiki is done.

- In the 1.12.2 wiki page, add a page or section about making custom crafting recipes.

    - Also, add a page for custom loot tables (also overriding vanilla crafting recipes, removing vanilla crafting recipes, overriding vanilla loot tables, removing vanilla loot tables)

- In the 1.12.2 wiki page, add subsections in the Arrow page for custom spectral arrows and custom tipped arrows if it makes sense to do so.

- In the 1.12.2 wiki page, maybe expand the "Enchanted books" page to include general information on enchants instead, such as mentioning how to limit what kinds of enchants can go on items, changing behavior of vanilla enchants/enchanted books
    - Example list of all topics involving enchants:
        - Making your own custom enchanted books
        - How to limit what kinds of enchants can go on which items
        - Changing behavior of vanilla enchants/enchanted books
        - Dealing with the max level for enchants (whether the enchants are vanilla or added by mods)
        - . . .

- In the 1.12.2 wiki page, the Setting up MDK section needs to be tested.

- In the 1.12.2 wiki page:

    - Add a page for custom item models

    - Add a page for custom block models

    - Add a page for custom potion effects coming from items? (inspired by this video by TurtyWurty: https://www.youtube.com/watch?v=u-lCBLEODs4&list=PLaevjqy3XufYkNu2PTTReZm0sSCshr-dW&index=12)

    - Add a page for custom fluids

    - Address this issue only if this is even an issue for people who only read my wiki instead of following TurtyWurty's tutorial: https://www.youtube.com/watch?v=I0ywvCoUegk&list=PLaevjqy3XufYkNu2PTTReZm0sSCshr-dW&index=40

    - Add a page for item-only containers

        - An "item container" is a container that is accessed through items in the inventory rather than a placed block like a chest or furnace.

        - Example: An item you hold in your hand and when you right click it you can see an extra inventory.

        - Example: In the "Sophisticated Backpacks" mod you can press B to open a backpack's inventory while the backpack is in your inventory.

- In the 1.12.2 wiki page, finish the "Making your mod's Creative tab" page by looking at how TurtyWurty did it

- In the 1.12.2 wiki page, add more sidebar pages for items/blocks from TurtyWurty's 1.12.2 tutorial and other people's tutorials (such as McJty, Cubicoder, etc)