Skip to content

Commit

Permalink
Merge branch '1.16' into 1.17
Browse files Browse the repository at this point in the history
# Conflicts:
#	common/src/main/java/mcp/mobius/waila/Waila.java
#	common/src/main/java/mcp/mobius/waila/WailaClient.java
#	common/src/main/java/mcp/mobius/waila/overlay/ComponentProvider.java
#	common/src/main/java/mcp/mobius/waila/overlay/Tooltip.java
#	common/src/main/java/mcp/mobius/waila/plugin/core/BlockComponent.java
#	common/src/main/java/mcp/mobius/waila/plugin/core/EntityComponent.java
#	fabric/src/main/java/mcp/mobius/waila/fabric/FabricWaila.java
  • Loading branch information
deirn committed Apr 19, 2021
2 parents 2a05395 + 81925d3 commit 5e48e82
Show file tree
Hide file tree
Showing 29 changed files with 299 additions and 234 deletions.
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: API
about: if you have complaints about the API
title: ''
labels: api
assignees: ''

---


152 changes: 2 additions & 150 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,153 +1,5 @@
# What The Hell Is That?
[![License](https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-blue.svg)](https://bit.ly/cc-by-nc-sa-40)
# What The Hell Is That? [![License](https://img.shields.io/badge/license-CC%20BY--NC--SA%204.0-blue.svg)](https://bit.ly/cc-by-nc-sa-40)

**WTHIT** - a fork of [HWYLA](https://minecraft.curseforge.com/projects/hwyla) by [TehNut](https://www.curseforge.com/members/tehnut) which is a fork of [WAILA](https://minecraft.curseforge.com/projects/waila) by [ProfMobius](https://minecraft.curseforge.com/members/ProfMobius).

*This fork is permitted under the [CC BY-NC-SA 4.0](LICENSE.md) license. Usage of this mod is permitted in all modpacks.*

---

## Creating a WTHIT Plugin

### Add the bad maven to your `build.gradle`

```groovy
repositories {
maven { url "https://bai.jfrog.io/artifactory/maven" }
}
```

### Add WTHIT as a dependency
<details>
<summary>Fabric</summary>

```groovy
dependencies {
modImplementation "mcp.mobius.waila:wthit-fabric:${wthit_version}"
}
```

</details>

<details>
<summary>Forge</summary>

```groovy
dependencies {
compile fg.deobf("mcp.mobius.waila:wthit-forge:${wthit_version}")
}
```

</details>

<details>
<summary>Architectury</summary>

in common subproject:
```groovy
dependencies {
modCompileOnly "mcp.mobius.waila:wthit-common:${wthit_version}"
}
```
in patform subprojects:
```groovy
dependencies {
modRuntimeOnly "mcp.mobius.waila:wthit-${name}:${wthit_version}"
}
```

</details>

### Make a class that implements `IWailaPlugin`
```java
public class ExamplePlugin implements IWailaPlugin {
@Override
public void register(IRegistrar registrar) {
// register your component here
}
}
```

### Register your plugin

<details>
<summary>Fabric</summary>

In your `fabric.mod.json` add a custom value
```json5
{
"waila:plugins": {
"id": "mymod:my_plugin",
"initializer": "foo.bar.Baz",
}
}
```
`waila:plugins` can also be an array of objects instead of a singular object.
A required field can be added to specify mods required for that plugin to be loaded.
It can either be a single string or an array of strings.
```json5
{
"waila:plugins": {
"id": "mymod:my_plugin",
"initializer": "foo.bar.Baz",
"required": "mod_a"
}
}
```

</details>

<details>
<summary>Forge</summary>

In your `mods.toml`
```toml
[[wailaPlugins]]
id = "mymod:my_plugin1"
initializer = "com.example.MyPlugin1"
# with dependency
[[wailaPlugins]]
id = "mymod:my_plugin2"
initializer = "com.example.MyPlugin2"
required = "mod_a"
# also accept an array of dependencies
[[wailaPlugins]]
id = "mymod:my_plugin3"
initializer = "com.example.MyPlugin3"
required = ["mod_a", "mod_b"]
```

**`@WailaPlugin` annotation is deprecated and will be removed in future releases**

</details>

### (Optional) Add WTHIT as a mod dependency
Both on fabric and forge, you can use either `wthit` or `waila` as a dependency in your mod metadata.
Though if you use any WTHIT specific APIs, I suggest depending on `wthit` instead.

<details>
<summary><code>fabric.mod.json</code></summary>

```json5
"depends": {
"wthit": ">=2",
// or
"waila": ">=2"
}
```

</details>

<details>
<summary><code>mods.toml</code></summary>

```toml
[[dependencies.examplemod]]
modId = "wthit" # or waila
versionRange="[2,)"
```

</details>
### WIP Documentation in [badasintended.github.io/wthit](https://badasintended.github.io/wthit)
29 changes: 29 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,35 @@ subprojects {
minecraft "com.mojang:minecraft:${minecraft}"
mappings "net.fabricmc:yarn:${yarn}:v2"
}

afterEvaluate {
task apiJar(type: Jar) {
dependsOn remapJar

classifier "api"

include "fabric.mod.json"
include "mcp/mobius/waila/api/**"
exclude "mcp/mobius/waila/api/impl/**"

from zipTree(remapJar.archiveFile)
}

task apiSourcesJar(type: Jar) {
dependsOn remapSourcesJar

classifier "api-sources"

include "fabric.mod.json"
include "mcp/mobius/waila/api/**"
exclude "mcp/mobius/waila/api/impl/**"

from zipTree(remapSourcesJar.output)
}

tasks.build.dependsOn apiJar, apiSourcesJar
}

}

allprojects {
Expand Down
15 changes: 9 additions & 6 deletions common/src/main/java/mcp/mobius/waila/Waila.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.nio.file.Path;

import com.google.gson.GsonBuilder;
import mcp.mobius.waila.api.IJsonConfig;
import mcp.mobius.waila.config.WailaConfig;
import mcp.mobius.waila.network.PacketSender;
import mcp.mobius.waila.util.JsonConfig;
Expand Down Expand Up @@ -34,12 +35,14 @@ public static Identifier id(String path) {
}

protected static void init() {
CONFIG = new JsonConfig<>(MODID + "/" + MODID, WailaConfig.class).withGson(new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(WailaConfig.ConfigOverlay.ConfigOverlayColor.class, new WailaConfig.ConfigOverlay.ConfigOverlayColor.Adapter())
.registerTypeAdapter(Identifier.class, new Identifier.Serializer())
.create()
);
CONFIG = (JsonConfig<WailaConfig>) IJsonConfig.of(WailaConfig.class)
.file(MODID + "/" + MODID)
.gson(new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(WailaConfig.ConfigOverlay.ConfigOverlayColor.class, new WailaConfig.ConfigOverlay.ConfigOverlayColor.Adapter())
.registerTypeAdapter(Identifier.class, new Identifier.Serializer())
.create())
.build();
}

}
19 changes: 17 additions & 2 deletions common/src/main/java/mcp/mobius/waila/WailaClient.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
package mcp.mobius.waila;

import java.util.function.BiFunction;

import mcp.mobius.waila.config.PluginConfig;
import mcp.mobius.waila.config.WailaConfig;
import mcp.mobius.waila.config.WailaConfig.DisplayMode;
import mcp.mobius.waila.gui.GuiConfigHome;
import mcp.mobius.waila.overlay.TickHandler;
import mcp.mobius.waila.plugin.core.WailaCore;
import mcp.mobius.waila.util.ModIdentification;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.item.ItemStack;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import org.lwjgl.glfw.GLFW;

import java.util.List;
import java.util.function.BiFunction;

public abstract class WailaClient {

public static KeyBinding openConfig;
Expand Down Expand Up @@ -63,4 +69,13 @@ protected static void onCientTick() {
}
}

protected static void onItemTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip) {
if (PluginConfig.INSTANCE.get(WailaCore.CONFIG_SHOW_MOD_NAME)) {
tooltip.add(new LiteralText(String.format(
Waila.CONFIG.get().getFormatting().getModName(),
ModIdentification.getModInfo(stack.getItem()).getName()
)));
}
}

}
57 changes: 57 additions & 0 deletions common/src/main/java/mcp/mobius/waila/api/IJsonConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package mcp.mobius.waila.api;

import java.io.File;
import java.util.function.Supplier;

import com.google.gson.Gson;
import mcp.mobius.waila.util.JsonConfig;

/**
* An Interface for easy (de)serialization for config classes
* @param <T> the config class
*/
public interface IJsonConfig<T> {

static <T> Builder0<T> of(Class<T> clazz) {
return new JsonConfig.Builder<>(clazz);
}

/**
* Get current value
*/
T get();

/**
* Save value to file
*/
void save();

/**
* Write value to file
*/
void write(T t, boolean invalidate);

/**
* Invalidate current value and force re-read file on next {@link #get}
*/
void invalidate();

interface Builder0<T> {

Builder1<T> file(File file);

Builder1<T> file(String fileName);

}

interface Builder1<T> {

Builder1<T> gson(Gson gson);

Builder1<T> factory(Supplier<T> factory);

IJsonConfig<T> build();

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ public interface ITooltipRenderer {

/**
* Draw method for the renderer.
* TODO: make it not default
*
* @param data The data supplied by the provider
* @param accessor A global accessor for TileEntities and Entities
Expand Down
18 changes: 9 additions & 9 deletions common/src/main/java/mcp/mobius/waila/config/WailaConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -309,30 +309,30 @@ public JsonElement serialize(ConfigOverlayColor src, Type typeOfSrc, JsonSeriali

public static class ConfigFormatting {

private String modName = StringEscapeUtils.escapeJava("\u00A79\u00A7o%s");
private String blockName = StringEscapeUtils.escapeJava("\u00a7f%s");
private String fluidName = StringEscapeUtils.escapeJava("\u00a7f%s");
private String entityName = StringEscapeUtils.escapeJava("\u00a7f%s");
private String registryName = StringEscapeUtils.escapeJava("\u00a77[%s]");
private String modName = "\u00A79\u00A7o%s";
private String blockName = "\u00a7f%s";
private String fluidName = "\u00a7f%s";
private String entityName = "\u00a7f%s";
private String registryName = "\u00a77[%s]";

public void setModName(String modName) {
this.modName = modName;
}

public void setBlockName(String blockName) {
this.blockName = blockName;
this.blockName = StringEscapeUtils.escapeJava(blockName);
}

public void setFluidName(String fluidName) {
this.fluidName = fluidName;
this.fluidName = StringEscapeUtils.escapeJava(fluidName);
}

public void setEntityName(String entityName) {
this.entityName = entityName;
this.entityName = StringEscapeUtils.escapeJava(entityName);
}

public void setRegistryName(String registryName) {
this.registryName = registryName;
this.registryName = StringEscapeUtils.escapeJava(registryName);
}

public String getModName() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package mcp.mobius.waila.mixin;

import java.util.Map;
import java.util.UUID;

import net.minecraft.client.gui.hud.BossBarHud;
import net.minecraft.client.gui.hud.ClientBossBar;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

@Mixin(BossBarHud.class)
public interface AccessorBossBarHud {

@Accessor
Map<UUID, ClientBossBar> getBossBars();

}
Loading

0 comments on commit 5e48e82

Please sign in to comment.