Skip to content

ClickCrystals Development

ImproperIssues edited this page Sep 14, 2023 · 13 revisions

Resource/Texture Pack Development

Getting Resources

Hate how the in-game GUI looks? Did you know that you can actually change the textures with a resource pack? To start off, all ClickCrystals assets can be found here.

The link above will take you to all the default textures on ClickCrystal's Github. In the repository, you can find all the texture assets that ClickCrystals uses, feel free to download them and edit them!

Do you want some examples of how other resource packs for ClickCrystals? Visit ClickCrystalsPlus Pack on Modrinth

Creating the Pack

Just like how you would create a normal texture pack, follow the steps below:

  1. Create a folder with the name of your texture MyPack
  2. Inside of the folder create a new file named "pack.mcmeta" MyPack/pack.mcmeta
  3. In the same folder, create a new folder named "assets" MyPack/assets/
  4. Then in that assets folder create another folder inside of it MyPack/assets/clickcrystals/
  5. Go to the link provided above and download contents from its clickcrystals folder to the one that you just created https://github.com/ItziSpyder/ClickCrystals/tree/main/src/main/resources/assets/clickcrystals -> MyPack/assets/clickcrystals
  6. Start editing the textures and get creative!

ClickCrystals Fork Development

Forking and Cloning Repository

Hating the lack of features, or wanting new modules? Guess what? You can fork this repository and make your own versions of ClickCrystals! (DISCLAIMER: DO NOT MARKET AS OWN WITHOUT GIVING US CREDIT!)

To set up your environment for making your own version of ClickCrystals:

  1. Clone this repository or Github. (It does not matter if you make it public or private.)
  2. Make sure you have your IDE ready
  3. You would also want to make sure Git Desktop is downloaded to your computer
  4. In your IDE projects folder, open up the command prompt and type in git clone <your cloned repository link>
  5. Load up the project in your IDE and get creative!

Creating New Modules

Modules can be created by creating a Java class under the modules.modules package. It is best to note that creating a Module Java file directly under the modules can result in a structure looking rather unorganized. Your new Java class should extend the io.github.itzispyder.clickcrystals.modules.Module class.

public class Foo extends Module {

}

It is also important to implement the abstract methods from the Module class you extended from.

public class Foo extends Module {

 @Override
 public void onEnable() {
 
 }

 @Override
 public void onDisable() {

 }
}

If your new module is going to be firing events, it is important to implement the io.github.itzispyder.clickcrystals.events.Listener interface After implementing the Listener interface, you would want to include a way to register this interface. In this case, we'll register the listener on enable and unregister on disable. The field system comes from the interface io.github.itzispyder.clickcrystals.Global that the Module class implements.

Any events will be fired with a method annotated by @io.github.itzispyder.clickcrystals.EventHandler. This is important, as the event bus wont pass on any methods without this annotation!

public class Foo extends Module {

 @Override
 public void onEnable() {
  system.addListener(this);
 }

 @Override
 public void onDisable() {
  system.removeListener(this);
 }

 @EventHandler // event annotation
 private void foo(/*Target Event*/) {
  // do something
 }
}

While creating your module, there are a few helper util classes that you may want to know about. The utils can be found under the package io.github.itzispyder.clickcrystals.util These include:

  • HotbarUtils which swaps to items in hotbar, or getting in-hand items.
  • InvUtils or inventory utils, sends inventory packets like swapping to offhand or clicking on items, or even dropping items.
  • PlayerUtils which include helper methods for the MinecraftClient's player
  • BlockUtils for managing or checking blocks and interactions
  • InteractionUtils for similating or managing in-game interactions
  • etc.

Firing and Passing Events

Clone this wiki locally