Skip to content

Commit

Permalink
Fix bugs.
Browse files Browse the repository at this point in the history
Add forge support.

Signed-off-by: 秋雨落 <[email protected]>
  • Loading branch information
qyl27 committed Feb 23, 2024
1 parent fb7f640 commit 2e84091
Show file tree
Hide file tree
Showing 29 changed files with 616 additions and 88 deletions.
29 changes: 22 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
plugins {
id 'architectury-plugin' version "${architect_plugin_version}"
id 'dev.architectury.loom' version "${architectury_loom_version}" apply false
id 'dev.architectury.loom' version "${architectury_loom_version}"
}

architectury {
minecraft = project.minecraft_version
common(project.enabled_platforms.split(','))
}

loom {
runConfigs.configureEach {
ideConfigGenerated = true
}
}

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

allprojects {
apply plugin: 'architectury-plugin'
apply plugin: 'dev.architectury.loom'
Expand All @@ -20,6 +33,12 @@ allprojects {
}

repositories {
repositories {
maven {
name = 'Mod Menu'
url = 'https://maven.terraformersmc.com/releases'
}
}
}

dependencies {
Expand All @@ -38,6 +57,7 @@ allprojects {
developmentForge.extendsFrom common
developmentFabric.extendsFrom common
developmentNeoForge.extendsFrom common
developmentQuilt.extendsFrom common
}

def targetJavaVersion = 17
Expand Down Expand Up @@ -68,6 +88,7 @@ allprojects {
var replaceTokens = [
minecraft_version: minecraft_version,
mod_version: mod_version,
forge_loader_version: forge_loader_version,
forge_version: forge_version,
fabric_loader_version: fabric_loader_version,
fabric_api_version: fabric_api_version,
Expand Down Expand Up @@ -104,9 +125,3 @@ allprojects {
}
}
}

architectury {
common(project.enabled_platforms.split(','))
}

sourceSets.main.resources.srcDir 'src/main/generated'
2 changes: 2 additions & 0 deletions catsplus-fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ dependencies {
modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
modApi "dev.architectury:architectury-fabric:${project.architectury_version}"

modRuntimeOnly "com.terraformersmc:modmenu:${project.mod_menu_version}"

common(project(path: ':', configuration: 'namedElements')) { transitive = false }
shadowCommon(project(path: ':', configuration: 'transformProductionFabric')) { transitive = false }
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package cuteneko.catsplus.fabric;

import cuteneko.catsplus.CatsPlus;
import cuteneko.catsplus.item.ModItems;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
import net.minecraft.item.DyeableItem;

public class CatsPlusFabric implements ModInitializer {
public class CatsPlusFabric implements ModInitializer, ClientModInitializer {
private final CatsPlus mod;

public CatsPlusFabric() {
Expand All @@ -14,4 +18,14 @@ public CatsPlusFabric() {
public void onInitialize() {
mod.init();
}

@Override
public void onInitializeClient() {
mod.initClient();

ColorProviderRegistry.ITEM.register(
((stack, tintIndex) -> tintIndex > 0 ? -1 : ((DyeableItem) stack.getItem()).getColor(stack)),
ModItems.CAT_BAG.get()
);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ public void setTotem(boolean totem) {
((ICatEntityMixin) cat).catsplus$setTotem(totem);
}

@Override
public boolean canRespawn() {
return hasTotem() || getLives() > 0;
}

@Override
public int getFavorability(PlayerEntity player) {
return ((ICatEntityMixin) cat).catsplus$getFavorability(player);
Expand All @@ -40,25 +35,18 @@ public int getFavorability(PlayerEntity player) {
public void setFavorability(int favorability, PlayerEntity player) {
((ICatEntityMixin) cat).catsplus$setFavorability(favorability, player);

if (cat.isOwner(player) && getFavorability(player) <= 0) {
if (getFavorability(player) <= 0) {
cat.tryAttack(player);
cat.setOwnerUuid(null);
cat.setTamed(false);
cat.setSitting(false);
setLives(0);
cat.onTamedChanged();
cat.getWorld().sendEntityStatus(cat, EntityStatuses.ADD_VILLAGER_ANGRY_PARTICLES);
}
}

@Override
public void addFavorability(int value, PlayerEntity player) {
setFavorability(getFavorability(player) + value, player);
}

@Override
public void subFavorability(int value, PlayerEntity player) {
setFavorability(getFavorability(player) - value, player);
if (cat.isOwner(player)) {
cat.setOwnerUuid(null);
cat.setTamed(false);
cat.setSitting(false);
setLives(0);
cat.onTamedChanged();
}
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public abstract class CatEntityMixin implements ICatEntityMixin {

@Override
public int catsplus$getFavorability(PlayerEntity player) {
if (catsplus$favorability.containsKey(player.getUuid())) {
if (!catsplus$favorability.containsKey(player.getUuid())) {
catsplus$favorability.put(player.getUuid(), 0);
}

Expand Down Expand Up @@ -109,12 +109,12 @@ private void write(NbtCompound nbt, CallbackInfo ci) {
}
tag.put(Constants.TAG_GENIUS_CAT_FAVORABILITY, favorability);

nbt.put(Constants.TAG_GENIUS_CAT_DATA, tag);
nbt.put(Constants.CAP_GENIUS_CAT.toString(), tag);
}

@Inject(method = "readCustomDataFromNbt", at = @At("HEAD"))
private void read(NbtCompound nbt, CallbackInfo ci) {
var tag = nbt.getCompound(Constants.TAG_GENIUS_CAT_DATA);
var tag = nbt.getCompound(Constants.CAP_GENIUS_CAT.toString());

catsplus$lives = tag.getInt(Constants.TAG_GENIUS_CAT_LIVES);
catsplus$hasTotem = tag.getBoolean(Constants.TAG_GENIUS_CAT_TOTEM);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ private void write(NbtCompound nbt, CallbackInfo ci) {

tag.putBoolean(Constants.TAG_CAT_PLAYER_IS_CAT, catsplus$isCat);

nbt.put(Constants.TAG_CAT_PLAYER_DATA, tag);
nbt.put(Constants.CAP_CAT_PLAYER.toString(), tag);
}

@Inject(method = "readCustomDataFromNbt", at = @At("HEAD"))
private void read(NbtCompound nbt, CallbackInfo ci) {
var tag = nbt.getCompound(Constants.TAG_CAT_PLAYER_DATA);
var tag = nbt.getCompound(Constants.CAP_CAT_PLAYER.toString());

var catTag = tag.getCompound(Constants.TAG_CAT_PLAYER_INNER_CAT);
catsplus$getCatEntity().readNbt(catTag);
Expand Down
2 changes: 1 addition & 1 deletion catsplus-fabric/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"environment": "*",
"entrypoints": {
"client": [
"cuteneko.catsplus.fabric.client.CatsPlusFabricClient"
"cuteneko.catsplus.fabric.CatsPlusFabric"
],
"main": [
"cuteneko.catsplus.fabric.CatsPlusFabric"
Expand Down
62 changes: 62 additions & 0 deletions catsplus-forge/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
plugins {
id 'com.github.johnrengelman.shadow' version "${shadow_plugin_version}"
id 'me.shedaniel.unified-publishing' version "${unified_publishing_version}"
}

architectury {
platformSetupLoomIde()
forge()
}

loom {
accessWidenerPath = project(':').loom.accessWidenerPath

forge {
convertAccessWideners = true
extraAccessWideners.add loom.accessWidenerPath.get().asFile.name
}
}

dependencies {
forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}"
modApi "dev.architectury:architectury-forge:${project.architectury_version}"

common(project(path: ':', configuration: 'namedElements')) { transitive = false }
shadowCommon(project(path: ':', configuration: 'transformProductionFabric')) { transitive = false }
}

shadowJar {
exclude 'fabric.mod.json'
exclude 'architectury.common.json'

configurations = [project.configurations.shadowCommon]
archiveClassifier = 'dev-shadow'
}

remapJar {
injectAccessWidener = true
input.set shadowJar.archiveFile
dependsOn shadowJar
}

sourcesJar {
def commonSources = project(':').sourcesJar
dependsOn commonSources
from commonSources.archiveFile.map { zipTree(it) }
}

components.java {
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
skip()
}
}

publishing {
publications {
mavenFabric(MavenPublication) {
artifactId = project.name
version = "true".equalsIgnoreCase(System.getenv("MOD_RELEASE")) ? version : "${version}-SNAPSHOT"
from components.java
}
}
}
1 change: 1 addition & 0 deletions catsplus-forge/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
loom.platform=forge
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package cuteneko.catsplus.forge;

import cuteneko.catsplus.data.ICatPlayer;
import cuteneko.catsplus.data.IGeniusCat;
import cuteneko.catsplus.forge.capability.ModCapabilities;
import net.minecraft.entity.passive.CatEntity;
import net.minecraft.entity.player.PlayerEntity;

public class CatsPlusDataImpl {
public static ICatPlayer getCatPlayer(PlayerEntity player) {
return player.getCapability(ModCapabilities.CAT_PLAYER).orElseThrow(RuntimeException::new);
}

public static IGeniusCat getGeniusCat(CatEntity cat) {
return cat.getCapability(ModCapabilities.GENIUS_CAT).orElseThrow(RuntimeException::new);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package cuteneko.catsplus.forge;

import cuteneko.catsplus.CatsPlus;
import dev.architectury.platform.forge.EventBuses;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

@Mod(CatsPlus.MODID)
public class CatsPlusForge {
private final CatsPlus mod;

public CatsPlusForge() {
mod = new CatsPlus();

var bus = FMLJavaModLoadingContext.get().getModEventBus();

bus.addListener(this::onSetup);
bus.addListener(this::onClientSetup);

EventBuses.registerModEventBus(CatsPlus.MODID, bus);
}

public void onSetup(FMLCommonSetupEvent event) {
mod.init();
}

public void onClientSetup(FMLClientSetupEvent event) {
event.enqueueWork(mod::initClient);
}
}
Loading

0 comments on commit 2e84091

Please sign in to comment.