Skip to content

Commit

Permalink
chat: added templating system
Browse files Browse the repository at this point in the history
  • Loading branch information
Snaipe committed Sep 1, 2019
1 parent 9dc1851 commit 3165152
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 7 deletions.
30 changes: 28 additions & 2 deletions pom.xml
Expand Up @@ -17,26 +17,52 @@
</repositories>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.9</maven.compiler.source>
<maven.compiler.target>1.9</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.accessors.chain>true</lombok.accessors.chain>
</properties>

<dependencies>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.14-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.7</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>3.0.0</version>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/cool/foyer/chat/Channel.java
@@ -1,26 +1,38 @@
package cool.foyer.chat;

import java.util.Map;
import java.util.Set;
import java.util.HashSet;

import lombok.experimental.Accessors;
import lombok.*;

import org.apache.commons.text.StringSubstitutor;

import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;

import cool.foyer.chat.Markup;

@Accessors(fluent = true)
@RequiredArgsConstructor
@Getter
@Data
public class Channel {

private final String name;
private final Set<CommandSender> recipients = new HashSet<>();

@NonNull
private String template = "[${channel}] <${sender}> ${message}";

public String format(String sender, String message) {
return "[" + name + "] " + sender + ": " + message;
var params = Map.of(
"channel", name,
"sender", sender,
"message", message
);
var subst = new StringSubstitutor(params);
return subst.replace(template);
}

public void broadcast(String sender, String message) {
Expand Down
15 changes: 12 additions & 3 deletions src/main/java/cool/foyer/chat/Plugin.java
Expand Up @@ -25,6 +25,8 @@ public class Plugin extends net.md_5.bungee.api.plugin.Plugin {
private final Map<String, Channel> channels = new HashMap<>();
private Configuration config;

public static String DEFAULT_TEMPLATE;

private void loadConfig() {
var datadir = getDataFolder();
var file = new File(datadir, "config.yml");
Expand All @@ -44,15 +46,22 @@ private void loadConfig() {
} catch (IOException e) {
e.printStackTrace();
}

DEFAULT_TEMPLATE = config.getString("template");
}

@Override
public void onEnable() {
loadConfig();

var chanconfig = config.getSection("channels");
for (var name : chanconfig.getKeys()) {
channels.put(name, new Channel(name));
var chansconfig = config.getSection("channels");
for (var name : chansconfig.getKeys()) {
var chanconfig = chansconfig.getSection(name);
var template = chanconfig.getString("template", DEFAULT_TEMPLATE);

var chan = new Channel(name)
.template(template);
channels.put(name, chan);
}

var pm = getProxy().getPluginManager();
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/config.yml
Expand Up @@ -4,7 +4,10 @@ default_channels:

default_focus: global

template: '[${channel}] ${sender}: ${message}'

channels:
system:
template: '[${channel}] ${message}'
global:
staff:

0 comments on commit 3165152

Please sign in to comment.