Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 55 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,56 @@
# Extended Messages
# enhanmess

Minecraft Forge 1.8.9 mod that extends message length limit to 256 characters
extends 100-character message limit of 1.8.9 up to 256 characters; queues regular messages & configured commands; adds long message splitting; increases default message history length; adds support for command & regular prefixes

## usage

to configure the mod execute `/em` (short for `/enhanmess`):

![enhanmess settings gui](images/gui.png)

or use commands instead:

```
/em toggle

# message prefix
/em mp toggle
/em mp set <prefix>

# command prefix
/em cp toggle
/em cp set <command>

# message cooldown
/em mc set <seconds>

# command cooldown
/em cc set <seconds>

# history
/em h set <lines>
```

P.S. sending more than 100 chars in a single packet works only in singleplayer or on servers that support it, so message splitting is preferred

## installation

you can either install the `.jar` from the releases or build the mod yourself by cloning the repository and running:

### windows

```bat
.\gradlew.bat build
```

### linux

```bash
./gradlew build
```

the built `.jar` will be inside `./build/libs` directory in both cases

## contributions

welcome
17 changes: 1 addition & 16 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ plugins {

val baseGroup: String by project
val mcVersion: String by project
val version: String by project
val mixinGroup = "$baseGroup.mixin"
val modid: String by project
val transformerFile = file("src/main/resources/accesstransformer.cfg")

// Toolchains:
java {
Expand All @@ -34,7 +31,6 @@ tasks.withType<JavaExec>().configureEach {
loom {
launchConfigs {
"client" {
// If you don't want mixins, remove these lines
property("mixin.debug", "true")
arg("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker")
}
Expand All @@ -52,10 +48,6 @@ loom {
pack200Provider.set(dev.architectury.pack200.java.Pack200Adapter())
// If you don't want mixins, remove this lines
mixinConfig("mixins.$modid.json")
if (transformerFile.exists()) {
println("Installing access transformer")
accessTransformer(transformerFile)
}
}
// If you don't want mixins, remove these lines
mixin {
Expand Down Expand Up @@ -103,16 +95,14 @@ tasks.withType(JavaCompile::class) {
}

tasks.withType(org.gradle.jvm.tasks.Jar::class) {
archiveBaseName.set(modid)
archiveBaseName.set("$modid-$mcVersion")
manifest.attributes.run {
this["FMLCorePluginContainsFMLMod"] = "true"
this["ForceLoadAsMod"] = "true"

// If you don't want mixins, remove these lines
this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker"
this["MixinConfigs"] = "mixins.$modid.json"
if (transformerFile.exists())
this["FMLAT"] = "${modid}_at.cfg"
}
}

Expand All @@ -125,8 +115,6 @@ tasks.processResources {
filesMatching(listOf("mcmod.info", "mixins.$modid.json")) {
expand(inputs.properties)
}

rename("accesstransformer.cfg", "META-INF/${modid}_at.cfg")
}


Expand All @@ -150,9 +138,6 @@ tasks.shadowJar {
println("Copying dependencies into mod: ${it.files}")
}
}

// If you want to include other dependencies and shadow them, you can relocate them in here
fun relocate(name: String) = relocate(name, "$baseGroup.deps.$name")
}

tasks.assemble.get().dependsOn(tasks.remapJar)
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
loom.platform=forge
org.gradle.jvmargs=-Xmx2g
baseGroup = com.github.cewko.extendedmessages
baseGroup = com.github.cewko.enhanmess
mcVersion = 1.8.9
modid = extendedmessages
modid = enhanmess
version = 1.0.0
Binary file added images/gui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ plugins {
}


rootProject.name = "extendedMessages"
rootProject.name = "enhanmess"
254 changes: 254 additions & 0 deletions src/main/java/com/github/cewko/enhanmess/EnhanMess.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
package com.github.cewko.enhanmess;

import com.github.cewko.enhanmess.config.EnhanMessConfig;
import com.github.cewko.enhanmess.messaging.MessageQueue;
import com.github.cewko.enhanmess.gui.GuiOpener;

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;

import net.minecraftforge.client.ClientCommandHandler;

@Mod(
modid = Reference.MOD_ID,
name = Reference.NAME,
version = Reference.VERSION,
acceptedMinecraftVersions = Reference.ACCEPTED_VERSIONS,
clientSideOnly = true,
useMetadata = true
)
public class EnhanMess {

private static boolean enabled = Reference.DEFAULT_ENABLED;
private static boolean splitEnabled = Reference.DEFAULT_SPLIT_ENABLED;
private static int messageDelaySeconds = Reference.DEFAULT_MESSAGE_DELAY_SECONDS;
private static int commandDelaySeconds = Reference.DEFAULT_COMMAND_DELAY_SECONDS;

private static boolean messagePrefixEnabled = Reference.DEFAULT_MESSAGE_PREFIX_ENABLED;
private static String messagePrefix = Reference.DEFAULT_MESSAGE_PREFIX;

private static boolean commandPrefixEnabled = Reference.DEFAULT_COMMAND_PREFIX_ENABLED;
private static String commandPrefix = Reference.DEFAULT_COMMAND_PREFIX;

private static int messageHistoryLength = Reference.DEFAULT_MESSAGE_HISTORY_LENGTH;

public static boolean isEnabled() {
return enabled;
}

public static boolean isSplitEnabled() {
return splitEnabled;
}

public static void setSplitEnabled(boolean value) {
if (splitEnabled == value) {
return;
}

splitEnabled = value;
EnhanMessConfig.saveSplitEnabled(value);

MessageQueue.getInstance().clear();
}

public static boolean toggleSplitEnabled() {
setSplitEnabled(!splitEnabled);
return splitEnabled;
}

public static void setEnabled(boolean value) {
if (enabled == value) {
return;
}

enabled = value;
EnhanMessConfig.saveEnabled(value);

if (!enabled) {
MessageQueue.getInstance().clear();
}
}

public static boolean toggleEnabled() {
setEnabled(!enabled);
return enabled;
}

public static int getMessageDelaySeconds() {
return messageDelaySeconds;
}

public static void setMessageDelaySeconds(int seconds) {
SettingsValidation.validateDelaySeconds(seconds);

if (messageDelaySeconds != seconds) {
messageDelaySeconds = seconds;
EnhanMessConfig.saveMessageDelaySeconds(seconds);
}
}

public static int getCommandDelaySeconds() {
return commandDelaySeconds;
}

public static void setCommandDelaySeconds(int seconds) {
SettingsValidation.validateDelaySeconds(seconds);

if (commandDelaySeconds != seconds) {
commandDelaySeconds = seconds;
EnhanMessConfig.saveCommandDelaySeconds(seconds);
}
}

public static boolean isMessagePrefixEnabled() {
return messagePrefixEnabled;
}

public static String getMessagePrefix() {
return messagePrefix;
}

public static boolean isCommandPrefixEnabled() {
return commandPrefixEnabled;
}

public static String getCommandPrefix() {
return commandPrefix;
}

public static void setMessagePrefixEnabled(boolean value) {
if (messagePrefixEnabled == value) {
return;
}

messagePrefixEnabled = value;
EnhanMessConfig.saveMessagePrefixEnabled(value);
}

public static boolean toggleMessagePrefixEnabled() {
setMessagePrefixEnabled(!messagePrefixEnabled);
return messagePrefixEnabled;
}

public static void setMessagePrefix(String prefix) {
String normalized = SettingsValidation.normalizeMessagePrefix(prefix);

if (!messagePrefix.equals(normalized)) {
messagePrefix = normalized;
EnhanMessConfig.saveMessagePrefix(normalized);
}
}

public static void setCommandPrefixEnabled(boolean value) {
if (commandPrefixEnabled == value) {
return;
}

commandPrefixEnabled = value;
EnhanMessConfig.saveCommandPrefixEnabled(value);
}

public static boolean toggleCommandPrefixEnabled() {
setCommandPrefixEnabled(!commandPrefixEnabled);
return commandPrefixEnabled;
}

public static void setCommandPrefix(String prefix) {
String normalized = SettingsValidation.normalizeCommandPrefix(prefix);

if (!commandPrefix.equals(normalized)) {
commandPrefix = normalized;
EnhanMessConfig.saveCommandPrefix(normalized);
}
}

public static int getCurrentMessageLimit() {
return enabled
? Reference.EXTENDED_MESSAGE_LIMIT
: Reference.DEFAULT_MESSAGE_LIMIT;
}

public static int getCurrentPacketMessageLimit() {
if (!enabled) {
return Reference.DEFAULT_MESSAGE_LIMIT;
}

return splitEnabled
? Reference.DEFAULT_MESSAGE_LIMIT
: Reference.EXTENDED_MESSAGE_LIMIT;
}

public static int getMessageHistoryLength() {
return messageHistoryLength;
}

public static void setMessageHistoryLength(int length) {
SettingsValidation.validateHistoryLength(length);

if (messageHistoryLength != length) {
messageHistoryLength = length;
EnhanMessConfig.saveMessageHistoryLength(length);
}
}

public static int getCurrentMessageHistoryLength() {
return enabled ? messageHistoryLength : Reference.VANILLA_MESSAGE_HISTORY_LENGTH;
}

private static String loadMessagePrefix() {
try {
return SettingsValidation.normalizeMessagePrefix(
EnhanMessConfig.getMessagePrefix()
);
} catch (IllegalArgumentException exception) {
return Reference.DEFAULT_MESSAGE_PREFIX;
}
}

private static String loadCommandPrefix() {
try {
return SettingsValidation.normalizeCommandPrefix(
EnhanMessConfig.getCommandPrefix()
);
} catch (IllegalArgumentException exception) {
return Reference.DEFAULT_COMMAND_PREFIX;
}
}

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
EnhanMessConfig.load(event.getSuggestedConfigurationFile());

enabled = EnhanMessConfig.getEnabled();
splitEnabled = EnhanMessConfig.getSplitEnabled();

messageDelaySeconds = EnhanMessConfig.getMessageDelaySeconds();
commandDelaySeconds = EnhanMessConfig.getCommandDelaySeconds();

messagePrefixEnabled = EnhanMessConfig.getMessagePrefixEnabled();
commandPrefixEnabled = EnhanMessConfig.getCommandPrefixEnabled();

messagePrefix = loadMessagePrefix();
commandPrefix = loadCommandPrefix();

EnhanMessConfig.saveMessagePrefix(messagePrefix);
EnhanMessConfig.saveCommandPrefix(commandPrefix);

messageHistoryLength = EnhanMessConfig.getMessageHistoryLength();
}

@Mod.EventHandler
public void init(FMLInitializationEvent event) {
ClientCommandHandler.instance.registerCommand(
new EnhanMessCommand()
);

MinecraftForge.EVENT_BUS.register(MessageQueue.getInstance());
MinecraftForge.EVENT_BUS.register(GuiOpener.getInstance());

System.out.println("[" + Reference.NAME + "] Mod has loaded :3");
}
}
Loading
Loading