Note: this is not a plug-in, but a desktop application. Don't put it in your plugins folder. This is the configuration tool for my custom items plug-in.
This tool is a graphical user application (although very ugly) that is needed to configure my custom items plug-in (which items you want, which textures to give them, and many other features).
Installation
The Editor.jar file can be found here (on Spigot). If you have a working Java installation on your home computer, you should be able to run it by downloading Editor.jar and double-clicking it. If not, you can either install Java or grab a native Editor version from https://github.com/knokko/custom-items-gradle/releases (open the Assets).
Discord server:
https://discordapp.com/invite/bmF3Zvu
Note: these tutorials were made before the installation procedure changed in Custom Items 12. I'm planning to make new tutorials.
Basic tutorials:
Text: https://knokko.github.io/custom items/index.html
Video: https://www.youtube.com/playlist?list=PLcc-tPs9PuADC-shEBRynL9s2j6slSWCa
Advanced tutorials:
Custom containers (video): https://knokko.github.io/custom items/tutorials/containers/index.html
Wands and guns (text): https://knokko.github.io/custom items/tutorials/wands and guns/index.html
Why a GUI rather than just a simple config file?
Adding new textures to a minecraft server isn't really possible without a resourcepack. Writing resourcepacks is generally a nasty task, and is even more terrifying when you need to work with custom items.
Example of such a resourcepack file
{
"parent": "item/handheld",
"textures": {
"layer0": "item/stone_hoe"
},
"overrides": [
{ "predicate": {"damaged": 0, "damage": 0.007633587786259542}, "model": "customitems/steel_bar"},
{ "predicate": {"damaged": 0, "damage": 0.015267175572519083}, "model": "customitems/iron_bar"},
{ "predicate": {"damaged": 0, "damage": 0.022900763358778626}, "model": "customitems/iron_scrap"},
{ "predicate": {"damaged": 0, "damage": 0.030534351145038167}, "model": "customitems/steel_scrap"},
{ "predicate": {"damaged": 0, "damage": 0.03816793893129771}, "model": "customitems/withered_iron_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.04580152671755725}, "model": "customitems/withered_iron_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.05343511450381679}, "model": "customitems/mithril_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.061068702290076333}, "model": "customitems/mithril_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.06870229007633588}, "model": "customitems/aetherium_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.07633587786259542}, "model": "customitems/aetherium_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.08396946564885496}, "model": "customitems/enderite_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.0916030534351145}, "model": "customitems/enderite_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.09923664122137404}, "model": "customitems/steel_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.10687022900763359}, "model": "customitems/lead_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.11450381679389313}, "model": "customitems/lead_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.12213740458015267}, "model": "customitems/withered_bone"},
{ "predicate": {"damaged": 0, "damage": 0.1297709923664122}, "model": "customitems/powered_metheorite"},
{ "predicate": {"damaged": 0, "damage": 0.13740458015267176}, "model": "customitems/titanium_ingot"},
{ "predicate": {"damaged": 0, "damage": 0.1450381679389313}, "model": "customitems/titanium_scraps"},
{ "predicate": {"damaged": 0, "damage": 0.15267175572519084}, "model": "customitems/iron_plate"},
{ "predicate": {"damaged": 0, "damage": 0.16030534351145037}, "model": "customitems/steel_plate"},
{ "predicate": {"damaged": 0, "damage": 0.16793893129770993}, "model": "customitems/lead_plate"},
{ "predicate": {"damaged": 0, "damage": 0.17557251908396945}, "model": "customitems/mithril_plate"},
{ "predicate": {"damaged": 0, "damage": 0.183206106870229}, "model": "customitems/withered_iron_plate"},
{ "predicate": {"damaged": 0, "damage": 0.19083969465648856}, "model": "customitems/aetherium_plate"},
{ "predicate": {"damaged": 0, "damage": 0.1984732824427481}, "model": "customitems/enderite_plate"},
{ "predicate": {"damaged": 0, "damage": 0.20610687022900764}, "model": "customitems/titanium_plate"},
{ "predicate": {"damaged": 0, "damage": 0.21374045801526717}, "model": "customitems/netherite_plate"},
{ "predicate": {"damaged": 0, "damage": 0.22137404580152673}, "model": "customitems/withered_iron_bar"},
{ "predicate": {"damaged": 0, "damage": 0.22900763358778625}, "model": "customitems/mithril_bar"},
{ "predicate": {"damaged": 0, "damage": 0.2366412213740458}, "model": "customitems/lead_bar"},
{ "predicate": {"damaged": 0, "damage": 0.24427480916030533}, "model": "customitems/netherite_bar"},
{ "predicate": {"damaged": 0, "damage": 0.25190839694656486}, "model": "customitems/enderite_bar"},
{ "predicate": {"damaged": 0, "damage": 0.2595419847328244}, "model": "customitems/aetherium_bar"},
{ "predicate": {"damaged": 0, "damage": 0.26717557251908397}, "model": "customitems/titanium_bar"},
{ "predicate": {"damaged": 0, "damage": 0.2748091603053435}, "model": "customitems/steel_handgrip"},
{ "predicate": {"damaged": 0, "damage": 0.2824427480916031}, "model": "customitems/enchanted_handgrip"},
{ "predicate": {"damaged": 0, "damage": 0.2900763358778626}, "model": "customitems/guardian_plated_handgrip"},
{ "predicate": {"damaged": 0, "damage": 0.29770992366412213}, "model": "customitems/vorpal_handgrip"},
{ "predicate": {"damaged": 0, "damage": 0.3053435114503817}, "model": "customitems/aetherium_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.31297709923664124}, "model": "customitems/enderite_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.32061068702290074}, "model": "customitems/lead_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.3282442748091603}, "model": "customitems/mithril_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.33587786259541985}, "model": "customitems/netherite_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.3435114503816794}, "model": "customitems/steel_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.3511450381679389}, "model": "customitems/titanium_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.35877862595419846}, "model": "customitems/withered_iron_axehead"},
{ "predicate": {"damaged": 0, "damage": 0.366412213740458}, "model": "customitems/comp_block_lapis"},
{ "predicate": {"damaged": 0, "damage": 0.37404580152671757}, "model": "customitems/comp_block_gold"},
{ "predicate": {"damaged": 0, "damage": 0.3816793893129771}, "model": "customitems/comp_block_redstone"},
{ "predicate": {"damaged": 0, "damage": 0.3893129770992366}, "model": "customitems/comp_block_coal"},
{ "predicate": {"damaged": 0, "damage": 0.3969465648854962}, "model": "customitems/comp_block_iron"},
{ "predicate": {"damaged": 0, "damage": 0.40458015267175573}, "model": "customitems/comp_block_diamond"},
{ "predicate": {"damaged": 0, "damage": 0.4122137404580153}, "model": "customitems/comp_block_emerald"},
{ "predicate": {"damaged": 0, "damage": 0.4198473282442748}, "model": "customitems/comp_block_cobblestone"},
{ "predicate": {"damaged": 0, "damage": 0.42748091603053434}, "model": "customitems/comp_block_andesite"},
{ "predicate": {"damaged": 0, "damage": 0.4351145038167939}, "model": "customitems/comp_block_granite"},
{ "predicate": {"damaged": 0, "damage": 0.44274809160305345}, "model": "customitems/comp_block_diorite"},
{ "predicate": {"damaged": 0, "damage": 0.45038167938931295}, "model": "customitems/comp_block_stone"},
{ "predicate": {"damaged": 0, "damage": 0.4580152671755725}, "model": "customitems/comp_block_blackstone"},
{ "predicate": {"damaged": 0, "damage": 0.46564885496183206}, "model": "customitems/comp_block_basalt"},
{ "predicate": {"damaged": 0, "damage": 0.4732824427480916}, "model": "customitems/comp_block_sand"},
{ "predicate": {"damaged": 0, "damage": 0.48091603053435117}, "model": "customitems/comp_block_netherrack"},
{ "predicate": {"damaged": 0, "damage": 0.48854961832061067}, "model": "customitems/comp_block_gravel"},
{ "predicate": {"damaged": 0, "damage": 0.4961832061068702}, "model": "customitems/comp_block_obsidian"},
{ "predicate": {"damaged": 0, "damage": 0.5038167938931297}, "model": "customitems/comp_block_crying"},
{ "predicate": {"damaged": 1, "damage": 0}, "model": "item/stone_hoe"}
]
}
When I would have forgotten a single quote or curly bracket in the example file above, it wouldn't work at all. This GUI will write the entire resourcepack, so that you don't need to do it yourself.
Why is the GUI so ugly?
First of all, designing and implementing a good GUI takes a lot of time. Big companies have an entire art team for this. But, this plug-in is primarily maintained by a college student in this spare time, so time is limited. Also, I used this project to try my own GUI library, and... well... I discovered some flaws while doing so. Improving it would require rewriting it all in a better GUI library, which would probably take more than 100 hours.
Similar projects
Config →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
26.2MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.9MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
4.7MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta