Skip to content

Commit

Permalink
feat(forge20): port to 1.20.1
Browse files Browse the repository at this point in the history
  • Loading branch information
danorris709 committed Aug 24, 2023
1 parent b39d94f commit 2439d01
Show file tree
Hide file tree
Showing 16 changed files with 796 additions and 1 deletion.
2 changes: 2 additions & 0 deletions forge16/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ plugins {
id("com.github.johnrengelman.shadow") version "8.1.1"
}

java.toolchain.languageVersion = JavaLanguageVersion.of(17)

forgeVersion = "1.16.5"

minecraft {
Expand Down
72 changes: 72 additions & 0 deletions forge20/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
plugins {
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
id("com.github.johnrengelman.shadow") version "8.1.1"
}

forgeVersion = "1.20.1"

minecraft {
mappings channel: 'official', version: '1.20.1'
}

sourceSets.main.resources { srcDir 'src/generated/resources' }

repositories {
maven {
name = 'spongepowered-repo'
url = 'https://repo.spongepowered.org/maven'
}

maven { url 'https://jitpack.io' }
maven { url "https://maven.envyware.co.uk/releases" }

ivy {
setUrl('https://download.nodecdn.net/containers/reforged/server/release')
metadataSources {
artifact()
}
patternLayout {
artifact('[revision]/[artifact].[ext]')
}
}
}

dependencies {
minecraft "net.minecraftforge:forge:1.20.1-47.1.44"

implementation 'pixelmon:Pixelmon-1.20.1-9.2.0-server:9.2.0'

implementation 'com.github.EnvyWare.ForgePlaceholderAPI:api:2.0.4'

implementation group: 'org.spongepowered', name: 'configurate-yaml', version: '4.0.0'

shadow group: 'com.envyful.api', name: 'commons', version: '5.0.1'
shadow (group: 'com.envyful.api', name: 'forge20', version: '5.0.1') {
transitive = false;
}
shadow (group: 'com.envyful.api', name: 'reforged20', version: '5.0.1') {
transitive = false;
}
}

shadowJar {
finalizedBy('reobfJar')
configurations = [project.configurations.shadow]
zip64 = true
setArchiveClassifier('')
setArchiveBaseName(rootProject.name + "-Forge")

relocate('org.spongepowered.configurate', 'com.envyful.better.poke.broadcaster.shade.configurate')
relocate('org.yaml.snakeyaml', 'com.envyful.better.poke.broadcaster.shade.snakeyaml')
relocate('io.leangen.geantyref', 'com.envyful.better.poke.broadcaster.shade.geantyref')
relocate('com.google.gson', 'com.envyful.better.poke.broadcaster.shade.gson')
relocate('com.zaxxer', 'com.envyful.better.poke.broadcaster.shade.hikari')
relocate('org.slf4j', 'com.envyful.better.poke.broadcaster.shade.slf4j')
relocate('com.envyful.api', 'com.envyful.better.poke.broadcaster.shade.envy.api')
relocate('org.bstats', 'com.envyful.better.poke.broadcaster.shade.bstats')

exclude "**/module-info.class"
}

jar.finalizedBy('shadowJar')
build.finalizedBy('versionedRelease')
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.envyful.better.poke.broadcaster;

import com.envyful.api.concurrency.UtilLogger;
import com.envyful.api.config.yaml.YamlConfigFactory;
import com.envyful.api.forge.command.ForgeCommandFactory;
import com.envyful.better.poke.broadcaster.api.type.BroadcasterTypeRegistry;
import com.envyful.better.poke.broadcaster.command.PokeBroadcasterCommand;
import com.envyful.better.poke.broadcaster.config.BetterPokeBroadcasterConfig;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.IOException;

@Mod(BetterPokeBroadcaster.MOD_ID)
public class BetterPokeBroadcaster {

public static final String MOD_ID = "betterpokebroadcaster";

private static BetterPokeBroadcaster instance;

private ForgeCommandFactory commandFactory = new ForgeCommandFactory();

private BetterPokeBroadcasterConfig config;
private Logger logger = LogManager.getLogger(MOD_ID);

public BetterPokeBroadcaster() {
UtilLogger.setLogger(logger);
instance = this;
MinecraftForge.EVENT_BUS.register(this);
BroadcasterTypeRegistry.init();
}

@SubscribeEvent
public void onServerStart(ServerStartingEvent event) {
this.reloadConfig();
}

public void reloadConfig() {
try {
this.config = YamlConfigFactory.getInstance(BetterPokeBroadcasterConfig.class);
} catch (IOException e) {
e.printStackTrace();
}
}

@SubscribeEvent
public void onCommandRegister(RegisterCommandsEvent event) {
this.commandFactory.registerCommand(event.getDispatcher(), new PokeBroadcasterCommand());
}

public static BetterPokeBroadcaster getInstance() {
return instance;
}

public BetterPokeBroadcasterConfig getConfig() {
return this.config;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.envyful.better.poke.broadcaster.api.type;

import com.pixelmonmod.pixelmon.entities.pixelmon.PixelmonEntity;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.eventbus.api.Event;

public interface BroadcasterType<A extends Event> {

String id();

boolean isCorrectEvent(Event e);

PixelmonEntity getPixelmon(Event e);

ServerPlayer getNearestPlayer(Event e, PixelmonEntity entity, double range);

String translateMessage(Event e, String line, PixelmonEntity pixelmon, ServerPlayer nearestPlayer);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.envyful.better.poke.broadcaster.api.type;

import com.envyful.better.poke.broadcaster.api.type.impl.type.CaptureBroadcasterType;
import com.envyful.better.poke.broadcaster.api.type.impl.type.DefeatBroadcasterType;
import com.envyful.better.poke.broadcaster.api.type.impl.type.FleeBroadcasterType;
import com.envyful.better.poke.broadcaster.api.type.impl.type.SpawnBroadcasterType;
import com.google.common.collect.Maps;
import com.pixelmonmod.pixelmon.Pixelmon;
import net.minecraftforge.common.MinecraftForge;

import java.util.Map;

public class BroadcasterTypeRegistry {

private static final Map<String, BroadcasterType<?>> TYPES = Maps.newHashMap();

public static void init() {

}

static {
register(new SpawnBroadcasterType());
register(new CaptureBroadcasterType());
register(new DefeatBroadcasterType());
register(new FleeBroadcasterType());
}

public static void register(BroadcasterType<?> type) {
TYPES.put(type.id().toLowerCase(), type);

MinecraftForge.EVENT_BUS.register(type);
Pixelmon.EVENT_BUS.register(type);
}

public static BroadcasterType<?> get(String id) {
return TYPES.get(id.toLowerCase());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.envyful.better.poke.broadcaster.api.type.impl;

import com.envyful.better.poke.broadcaster.api.type.BroadcasterType;
import com.pixelmonmod.pixelmon.entities.pixelmon.PixelmonEntity;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.eventbus.api.Event;

public abstract class AbstractBroadcasterType<A extends Event> implements BroadcasterType<A> {

protected final String id;
protected final Class<A> clazz;

public AbstractBroadcasterType(String id, Class<A> clazz) {
this.id = id;
this.clazz = clazz;
}

@Override
public String id() {
return this.id;
}

@Override
public boolean isCorrectEvent(Event e) {
if (!e.getClass().isAssignableFrom(this.clazz)) {
return false;
}

return this.isEvent(this.clazz.cast(e));
}

protected abstract boolean isEvent(A a);

@Override
public PixelmonEntity getPixelmon(Event e) {
return this.getEntity(this.clazz.cast(e));
}

protected abstract PixelmonEntity getEntity(A a);

@Override
public String translateMessage(Event e, String line, PixelmonEntity pixelmon, ServerPlayer nearestPlayer) {
return this.translateEventMessage(this.clazz.cast(e), line, pixelmon, nearestPlayer);
}

protected abstract String translateEventMessage(A a, String line, PixelmonEntity pixelmon, ServerPlayer nearestPlayer);

@Override
public ServerPlayer getNearestPlayer(Event event, PixelmonEntity entity, double range) {
return this.findNearestPlayer(this.clazz.cast(event), entity, range);
}

protected abstract ServerPlayer findNearestPlayer(A a, PixelmonEntity entity, double range);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.envyful.better.poke.broadcaster.api.type.impl.type;

import com.envyful.api.forge.world.UtilWorld;
import com.envyful.api.reforged.pixelmon.sprite.UtilSprite;
import com.envyful.better.poke.broadcaster.BetterPokeBroadcaster;
import com.envyful.better.poke.broadcaster.api.type.impl.AbstractBroadcasterType;
import com.envyful.better.poke.broadcaster.api.util.BroadcasterUtil;
import com.pixelmonmod.pixelmon.api.events.CaptureEvent;
import com.pixelmonmod.pixelmon.api.util.helpers.BiomeHelper;
import com.pixelmonmod.pixelmon.entities.pixelmon.PixelmonEntity;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.eventbus.api.SubscribeEvent;

public class CaptureBroadcasterType extends AbstractBroadcasterType<CaptureEvent.SuccessfulCapture> {

public CaptureBroadcasterType() {
super("capture", CaptureEvent.SuccessfulCapture.class);
}

@Override
protected boolean isEvent(CaptureEvent.SuccessfulCapture event) {
return true;
}

@Override
protected PixelmonEntity getEntity(CaptureEvent.SuccessfulCapture event) {
return event.getPokemon();
}

@Override
protected String translateEventMessage(CaptureEvent.SuccessfulCapture event, String line, PixelmonEntity pixelmon, ServerPlayer nearestPlayer) {
return UtilSprite.replacePokemonPlaceholders(line.replace("%player%", nearestPlayer.getName().getString())
.replace("%x%", pixelmon.getX() + "")
.replace("%y%", pixelmon.getY() + "")
.replace("%z%", pixelmon.getZ() + "")
.replace("%world%", UtilWorld.getName(pixelmon.level()) + "")
.replace("%pokemon%", pixelmon.getPokemonName())
.replace("%biome%", BiomeHelper.getLocalizedBiomeName(pixelmon.level().getBiome(pixelmon.blockPosition())).getString()), pixelmon.getPokemon(), BetterPokeBroadcaster.getInstance().getConfig().getPlaceholderFormat());
}

@Override
protected ServerPlayer findNearestPlayer(CaptureEvent.SuccessfulCapture successfulCapture, PixelmonEntity entity, double range) {
return successfulCapture.getPlayer();
}

@SubscribeEvent
public void onCapture(CaptureEvent.SuccessfulCapture event) {
BroadcasterUtil.handleEvent(event);
}
}
Loading

0 comments on commit 2439d01

Please sign in to comment.