Skip to content
Open
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
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//file:noinspection GroovyAssignabilityCheck
plugins {
id "fabric-loom" version "1.7.+"
id "com.github.johnrengelman.shadow" version "7.1.+"
id "fabric-loom" version "1.10-SNAPSHOT"
id "com.gradleup.shadow" version "8.3.6"
id "me.modmuss50.mod-publish-plugin" version "0.5.2"
}

Expand Down Expand Up @@ -40,7 +40,7 @@ dependencies {
]

apiModules.forEach {
include(modImplementation(fabricApi.module(it, project.fabric_api_version)))
modImplementation(fabricApi.module(it, project.fabric_api_version))
}
}

Expand Down
18 changes: 9 additions & 9 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
org.gradle.jvmargs = -Xmx1G

# minecraft, mappings and loader dependencies
# check these on https://modmuss50.me/fabric.html
minecraft_version = 1.21.4
quilt_mappings = 3
loader_version = 0.16.10
kaleido_config_version = 0.3.1+1.3.2
# check these on https://fabricmc.net/develop/
minecraft_version = 1.21.6
quilt_mappings = 1
loader_version = 0.16.14
kaleido_config_version = 0.3.3+1.3.2

# mod properties
mod_version = 1.3.6+mc1.21.4
mod_version = 1.3.8+mc1.21.6
maven_group = rainglow
archives_base_name = rainglow

# other dependencies
java_version = 21
mod_menu_version = 13.0.0-beta.1
fabric_api_version = 0.118.5+1.21.4
mod_menu_version = 15.0.0-beta.3
fabric_api_version = 0.127.1+1.21.6

pub.should_publish = true
pub.additional_versions = 1.21.4
pub.additional_versions =
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
12 changes: 7 additions & 5 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/main/java/io/ix0rai/rainglow/Rainglow.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ public static RainglowColour generateRandomColour(World world, RandomGenerator r
}

public static boolean colourUnloaded(World world, RainglowEntity entityType, RainglowColour colour) {
if (colour == null) return true;

var colours = MODE_CONFIG.getMode(world).getColours();
return !colours.contains(colour) && colour != entityType.getDefaultColour();
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.ix0rai.rainglow.data;

public interface EntityVariantProvider {
RainglowColour rainglow$getVariant();
void rainglow$setVariant(RainglowColour colour);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package io.ix0rai.rainglow.data;

import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.passive.AgingEntity;

public class GlowSquidEntityData extends PassiveEntity.PassiveData {
public class GlowSquidEntityData extends AgingEntity.Data {
private final RainglowColour colour;

public GlowSquidEntityData(RainglowColour colour) {
Expand Down

This file was deleted.

10 changes: 5 additions & 5 deletions src/main/java/io/ix0rai/rainglow/data/ParticleHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@

import net.minecraft.client.particle.ItemBreakParticle;
import net.minecraft.client.particle.Particle;
import net.minecraft.client.render.item.ItemRenderState;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.unmapped.C_hvackyip;

/**
* @author A5ho9999
* Helper for creating particles because Mojang likes to torture everyone
*/
public class ParticleHelper {
public static class CustomItemBreakParticle extends ItemBreakParticle {
public CustomItemBreakParticle(ClientWorld world, double d, double e, double f, C_hvackyip c_hvackyip) {
super(world, d, e, f, c_hvackyip);
public CustomItemBreakParticle(ClientWorld world, double d, double e, double f, ItemRenderState itemRenderState) {
super(world, d, e, f, itemRenderState);
}
}

public static Particle createItemBreakParticle(ClientWorld world, double d, double e, double f, C_hvackyip c_hvackyip) {
return new CustomItemBreakParticle(world, d, e, f, c_hvackyip);
public static Particle createItemBreakParticle(ClientWorld world, double d, double e, double f, ItemRenderState itemRenderState) {
return new CustomItemBreakParticle(world, d, e, f, itemRenderState);
}
}
7 changes: 3 additions & 4 deletions src/main/java/io/ix0rai/rainglow/data/RainglowEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
import net.minecraft.entity.passive.AllayEntity;
import net.minecraft.entity.passive.GlowSquidEntity;
import net.minecraft.item.Item;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.Identifier;
import net.minecraft.util.random.RandomGenerator;
import net.minecraft.world.World;
import net.minecraft.world.storage.DataReader;
import org.jetbrains.annotations.Nullable;

import java.util.Arrays;
Expand Down Expand Up @@ -63,8 +63,8 @@ public Item getItem(int index) {
return RainglowColour.values()[index].getItem();
}

public RainglowColour readNbt(World world, NbtCompound nbt, RandomGenerator random) {
RainglowColour colour = RainglowColour.get(nbt.getString(Rainglow.CUSTOM_NBT_KEY));
public RainglowColour readData(World world, DataReader reader, RandomGenerator random) {
RainglowColour colour = RainglowColour.get(reader.readStringOrDefault(Rainglow.CUSTOM_NBT_KEY, null));

if (Rainglow.colourUnloaded(world, this, colour)) {
colour = Rainglow.generateRandomColour(world, random);
Expand All @@ -86,7 +86,6 @@ public static RainglowEntity get(String id) {
return BY_ID.get(id);
}

@SuppressWarnings("all")
public static RainglowEntity get(Entity entity) {
if (entity instanceof GlowSquidEntity) {
return GLOW_SQUID;
Expand Down

This file was deleted.

31 changes: 16 additions & 15 deletions src/main/java/io/ix0rai/rainglow/mixin/AllayEntityMixin.java
Original file line number Diff line number Diff line change
@@ -1,56 +1,57 @@
package io.ix0rai.rainglow.mixin;

import io.ix0rai.rainglow.Rainglow;
import io.ix0rai.rainglow.data.AllayVariantProvider;
import io.ix0rai.rainglow.data.EntityVariantProvider;
import io.ix0rai.rainglow.data.RainglowColour;
import io.ix0rai.rainglow.data.RainglowEntity;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.AllayEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.world.World;
import net.minecraft.world.storage.DataReader;
import net.minecraft.world.storage.DataWriter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(AllayEntity.class)
public abstract class AllayEntityMixin extends Entity implements AllayVariantProvider {
@Shadow public abstract void writeCustomDataToNbt(NbtCompound nbt);

public abstract class AllayEntityMixin extends Entity implements EntityVariantProvider {
protected AllayEntityMixin(EntityType<? extends AllayEntity> entityType, World world) {
super(entityType, world);
throw new UnsupportedOperationException();
}

@Inject(method = "writeCustomDataToNbt", at = @At("TAIL"))
public void writeCustomDataToNbt(NbtCompound nbt, CallbackInfo ci) {
@Inject(method = "writeCustomData", at = @At("TAIL"))
public void writeCustomData(DataWriter writer, CallbackInfo ci) {
RainglowColour colour = Rainglow.getColour(this.getUuid(), this.getWorld(), RainglowEntity.ALLAY);
nbt.putString(Rainglow.CUSTOM_NBT_KEY, colour.getId());
writer.writeString(Rainglow.CUSTOM_NBT_KEY, colour.getId());
}

@Inject(method = "readCustomDataFromNbt", at = @At("TAIL"))
public void readCustomDataFromNbt(NbtCompound nbt, CallbackInfo ci) {
this.setVariant(RainglowEntity.ALLAY.readNbt(this.getWorld(), nbt, this.random));
@Inject(method = "readCustomData", at = @At("TAIL"))
public void readCustomData(DataReader reader, CallbackInfo ci) {
this.rainglow$setVariant(RainglowEntity.ALLAY.readData(this.getWorld(), reader, this.random));
}

// triggered when an allay duplicates, to apply the same colour as parent
@Redirect(method = "duplicate", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;spawnEntity(Lnet/minecraft/entity/Entity;)Z"))
public boolean spawnWithColour(World instance, Entity entity) {
RainglowColour colour = Rainglow.getColour(this.getUuid(), this.getWorld(), RainglowEntity.ALLAY);
((AllayVariantProvider) entity).setVariant(colour);
((EntityVariantProvider) entity).rainglow$setVariant(colour);
return this.getWorld().spawnEntity(entity);
}

@Override
public RainglowColour getVariant() {
@Unique
public RainglowColour rainglow$getVariant() {
return Rainglow.getColour(this.getUuid(), this.getWorld(), RainglowEntity.ALLAY);
}

@Override
public void setVariant(RainglowColour colour) {
@Unique
public void rainglow$setVariant(RainglowColour colour) {
Rainglow.setColour(this, colour);
}
}
2 changes: 1 addition & 1 deletion src/main/java/io/ix0rai/rainglow/mixin/DyeItemMixin.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ private void useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity
&& !Rainglow.colourUnloaded(user.getWorld(), entityType, colour)
&& Rainglow.CONFIG.isEntityEnabled(entityType)
&& Rainglow.getColour(entity.getUuid(), entity.getWorld(), entityType) != colour) {
entity.getWorld().playSoundFromEntity(user, entity, SoundEvents.BLOCK_AMETHYST_CLUSTER_BREAK, SoundCategory.PLAYERS, 5.0f, 1.0f);
entity.getWorld().playSoundFromEntity(entity, SoundEvents.BLOCK_AMETHYST_CLUSTER_BREAK, SoundCategory.PLAYERS, 5.0f, 1.0f);
if (!user.getWorld().isClient()) {
stack.decrement(1);
}
Expand Down
26 changes: 15 additions & 11 deletions src/main/java/io/ix0rai/rainglow/mixin/GlowSquidEntityMixin.java
Original file line number Diff line number Diff line change
@@ -1,40 +1,42 @@
package io.ix0rai.rainglow.mixin;

import io.ix0rai.rainglow.Rainglow;
import io.ix0rai.rainglow.data.EntityVariantProvider;
import io.ix0rai.rainglow.data.RainglowColour;
import io.ix0rai.rainglow.data.RainglowEntity;
import io.ix0rai.rainglow.data.GlowSquidVariantProvider;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.passive.WaterCreatureEntity;
import net.minecraft.entity.passive.GlowSquidEntity;
import net.minecraft.entity.passive.SquidEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.particle.ParticleEffect;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.World;
import net.minecraft.world.storage.DataReader;
import net.minecraft.world.storage.DataWriter;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(GlowSquidEntity.class)
public abstract class GlowSquidEntityMixin extends SquidEntity implements GlowSquidVariantProvider {
public abstract class GlowSquidEntityMixin extends SquidEntity implements EntityVariantProvider {
protected GlowSquidEntityMixin(EntityType<? extends SquidEntity> entityType, World world) {
super(entityType, world);
throw new UnsupportedOperationException();
}

@Inject(method = "writeCustomDataToNbt", at = @At("TAIL"))
public void writeCustomDataToNbt(NbtCompound nbt, CallbackInfo ci) {
@Inject(method = "writeCustomData", at = @At("TAIL"))
public void writeCustomData(DataWriter writer, CallbackInfo ci) {
RainglowColour colour = Rainglow.getColour(this.getUuid(), this.getWorld(), RainglowEntity.GLOW_SQUID);
nbt.putString(Rainglow.CUSTOM_NBT_KEY, colour.getId());
writer.writeString(Rainglow.CUSTOM_NBT_KEY, colour.getId());
}

@Inject(method = "readCustomDataFromNbt", at = @At("TAIL"))
public void readCustomDataFromNbt(NbtCompound nbt, CallbackInfo ci) {
this.setVariant(RainglowEntity.GLOW_SQUID.readNbt(this.getWorld(), nbt, this.random));
@Inject(method = "readCustomData", at = @At("TAIL"))
public void readCustomData(DataReader reader, CallbackInfo ci) {
this.rainglow$setVariant(RainglowEntity.GLOW_SQUID.readData(this.getWorld(), reader, this.random));
}

/**
Expand All @@ -53,12 +55,14 @@ public void tickMovement(CallbackInfo ci) {
}

@Override
public RainglowColour getVariant() {
@Unique
public RainglowColour rainglow$getVariant() {
return Rainglow.getColour(this.getUuid(), this.getWorld(), RainglowEntity.GLOW_SQUID);
}

@Override
public void setVariant(RainglowColour colour) {
@Unique
public void rainglow$setVariant(RainglowColour colour) {
Rainglow.setColour(this, colour);
}

Expand Down
Loading