diff --git a/common/src/main/java/org/dimdev/dimdoors/network/client/ClientPacketHandler.java b/common/src/main/java/org/dimdev/dimdoors/network/client/ClientPacketHandler.java index 77139620..057e882b 100644 --- a/common/src/main/java/org/dimdev/dimdoors/network/client/ClientPacketHandler.java +++ b/common/src/main/java/org/dimdev/dimdoors/network/client/ClientPacketHandler.java @@ -3,13 +3,15 @@ package org.dimdev.dimdoors.network.client; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.resources.ResourceKey; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dimdev.dimdoors.DimensionalDoors; import org.dimdev.dimdoors.client.CustomBreakBlockHandler; -import org.dimdev.dimdoors.entity.MonolithEntity; import org.dimdev.dimdoors.mixin.client.accessor.WorldRendererAccessor; import org.dimdev.dimdoors.network.packet.s2c.*; import org.dimdev.dimdoors.particle.client.MonolithParticle; @@ -18,13 +20,14 @@ import org.dimdev.dimdoors.world.pocket.type.addon.AutoSyncedAddon; import java.util.ArrayList; import java.util.List; -import static org.dimdev.dimdoors.network.packet.s2c.MonolithAggroParticlesPacket.spawnParticles; +import static org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO; @Environment(EnvType.CLIENT) public class ClientPacketHandler implements ClientPacketListener { private static final Logger LOGGER = LogManager.getLogger(); private final net.minecraft.client.multiplayer.ClientPacketListener networkHandler; + private static final RandomSource clientRandom = RandomSource.create(); private ResourceKey pocketWorld; private int gridSize = 1; @@ -101,6 +104,23 @@ public class ClientPacketHandler implements ClientPacketListener { Minecraft.getInstance().execute(() -> spawnParticles(packet.getAggro())); } + @Environment(EnvType.CLIENT) + public static void spawnParticles(int aggro) { + Player player = Minecraft.getInstance().player; + if (aggro < 120) { + return; + } + int count = 10 * aggro / MAX_AGGRO; + for (int i = 1; i < count; ++i) { + //noinspection ConstantConditions + player.level().addParticle(ParticleTypes.PORTAL, player.getX() + (clientRandom.nextDouble() - 0.5D) * 3.0, + player.getY() + clientRandom.nextDouble() * player.getBbHeight() - 0.75D, + player.getZ() + (clientRandom.nextDouble() - 0.5D) * player.getBbWidth(), + (clientRandom.nextDouble() - 0.5D) * 2.0D, -clientRandom.nextDouble(), + (clientRandom.nextDouble() - 0.5D) * 2.0D); + } + } + @Override public void onMonolithTeleportParticles(MonolithTeleportParticlesPacket packet) { Minecraft client = Minecraft.getInstance(); diff --git a/common/src/main/java/org/dimdev/dimdoors/network/packet/s2c/MonolithAggroParticlesPacket.java b/common/src/main/java/org/dimdev/dimdoors/network/packet/s2c/MonolithAggroParticlesPacket.java index ebc9057d..8f576049 100644 --- a/common/src/main/java/org/dimdev/dimdoors/network/packet/s2c/MonolithAggroParticlesPacket.java +++ b/common/src/main/java/org/dimdev/dimdoors/network/packet/s2c/MonolithAggroParticlesPacket.java @@ -18,8 +18,6 @@ import static org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO; public class MonolithAggroParticlesPacket { public static final ResourceLocation ID = DimensionalDoors.id("monolith_aggro_particles"); - @Environment(EnvType.CLIENT) - private static final RandomSource clientRandom = RandomSource.create(); private int aggro; @@ -47,21 +45,4 @@ public class MonolithAggroParticlesPacket { public int getAggro() { return aggro; } - - @Environment(EnvType.CLIENT) - public static void spawnParticles(int aggro) { - Player player = Minecraft.getInstance().player; - if (aggro < 120) { - return; - } - int count = 10 * aggro / MAX_AGGRO; - for (int i = 1; i < count; ++i) { - //noinspection ConstantConditions - player.level().addParticle(ParticleTypes.PORTAL, player.getX() + (clientRandom.nextDouble() - 0.5D) * 3.0, - player.getY() + clientRandom.nextDouble() * player.getBbHeight() - 0.75D, - player.getZ() + (clientRandom.nextDouble() - 0.5D) * player.getBbWidth(), - (clientRandom.nextDouble() - 0.5D) * 2.0D, -clientRandom.nextDouble(), - (clientRandom.nextDouble() - 0.5D) * 2.0D); - } - } } diff --git a/common/src/main/java/org/dimdev/dimdoors/recipe/TesselatingShapelessRecipe.java b/common/src/main/java/org/dimdev/dimdoors/recipe/TesselatingShapelessRecipe.java index e36d310a..384daf66 100644 --- a/common/src/main/java/org/dimdev/dimdoors/recipe/TesselatingShapelessRecipe.java +++ b/common/src/main/java/org/dimdev/dimdoors/recipe/TesselatingShapelessRecipe.java @@ -149,6 +149,8 @@ public class TesselatingShapelessRecipe implements TesselatingRecipe { ingredient.toNetwork(buffer); } buffer.writeItem(recipe.result); + buffer.writeInt(recipe.weavingTime); + buffer.writeBoolean(recipe.showNotification); } } } diff --git a/forge/build.gradle b/forge/build.gradle index 12605927..eae02705 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -45,8 +45,8 @@ dependencies { modApi "com.sk89q.worldedit:worldedit-forge-mc${rootProject.world_edit_minecraft_version}:${rootProject.worldedit}" modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-forge:$rei_version" -// modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-forge:$rei_version" -// modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-forge:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-forge:$rei_version" + modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-forge:$rei_version" } processResources { diff --git a/forge/src/main/java/org/dimdev/dimdoors/compat/TesselatingReiCompatClientForge.java b/forge/src/main/java/org/dimdev/dimdoors/compat/TesselatingReiCompatClientForge.java new file mode 100644 index 00000000..254f33a6 --- /dev/null +++ b/forge/src/main/java/org/dimdev/dimdoors/compat/TesselatingReiCompatClientForge.java @@ -0,0 +1,10 @@ +package org.dimdev.dimdoors.compat; + +import me.shedaniel.rei.forge.REIPlugin; +import me.shedaniel.rei.forge.REIPluginClient; +import org.dimdev.dimdoors.compat.rei.TesselatingReiCompatClient; + +@REIPluginClient +public class TesselatingReiCompatClientForge extends TesselatingReiCompatClient { + +} diff --git a/forge/src/main/java/org/dimdev/dimdoors/mixin/forge/TessellatingRecipeMixin.java b/forge/src/main/java/org/dimdev/dimdoors/mixin/forge/TessellatingRecipeMixin.java index 6c27119c..365e922a 100644 --- a/forge/src/main/java/org/dimdev/dimdoors/mixin/forge/TessellatingRecipeMixin.java +++ b/forge/src/main/java/org/dimdev/dimdoors/mixin/forge/TessellatingRecipeMixin.java @@ -6,20 +6,20 @@ import org.dimdev.dimdoors.recipe.ShapedTesselatingRecipe; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -//@Mixin(ShapedTesselatingRecipe.class) -//public abstract class TessellatingRecipeMixin implements IShapedRecipe { -// @Unique -// private ShapedTesselatingRecipe self() { -// return (ShapedTesselatingRecipe) (Object) this; -// } -// -// @Override -// public int getRecipeWidth() { -// return self().getWidth(); -// } -// -// @Override -// public int getRecipeHeight() { -// return self().getHeight(); -// } -//} +@Mixin(ShapedTesselatingRecipe.class) +public abstract class TessellatingRecipeMixin implements IShapedRecipe { + @Unique + private ShapedTesselatingRecipe self() { + return (ShapedTesselatingRecipe) (Object) this; + } + + @Override + public int getRecipeWidth() { + return self().getWidth(); + } + + @Override + public int getRecipeHeight() { + return self().getHeight(); + } +}