Fixed issue with recipe packet mismatch. Also add forge REI plugin.

This commit is contained in:
Waterpicker 2023-11-16 01:21:02 -06:00
parent e7642bba53
commit 30c1e82045
6 changed files with 53 additions and 40 deletions

View file

@ -3,13 +3,15 @@ package org.dimdev.dimdoors.network.client;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.util.RandomSource;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.DimensionalDoors; import org.dimdev.dimdoors.DimensionalDoors;
import org.dimdev.dimdoors.client.CustomBreakBlockHandler; import org.dimdev.dimdoors.client.CustomBreakBlockHandler;
import org.dimdev.dimdoors.entity.MonolithEntity;
import org.dimdev.dimdoors.mixin.client.accessor.WorldRendererAccessor; import org.dimdev.dimdoors.mixin.client.accessor.WorldRendererAccessor;
import org.dimdev.dimdoors.network.packet.s2c.*; import org.dimdev.dimdoors.network.packet.s2c.*;
import org.dimdev.dimdoors.particle.client.MonolithParticle; 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.ArrayList;
import java.util.List; 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) @Environment(EnvType.CLIENT)
public class ClientPacketHandler implements ClientPacketListener { public class ClientPacketHandler implements ClientPacketListener {
private static final Logger LOGGER = LogManager.getLogger(); private static final Logger LOGGER = LogManager.getLogger();
private final net.minecraft.client.multiplayer.ClientPacketListener networkHandler; private final net.minecraft.client.multiplayer.ClientPacketListener networkHandler;
private static final RandomSource clientRandom = RandomSource.create();
private ResourceKey<Level> pocketWorld; private ResourceKey<Level> pocketWorld;
private int gridSize = 1; private int gridSize = 1;
@ -101,6 +104,23 @@ public class ClientPacketHandler implements ClientPacketListener {
Minecraft.getInstance().execute(() -> spawnParticles(packet.getAggro())); 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 @Override
public void onMonolithTeleportParticles(MonolithTeleportParticlesPacket packet) { public void onMonolithTeleportParticles(MonolithTeleportParticlesPacket packet) {
Minecraft client = Minecraft.getInstance(); Minecraft client = Minecraft.getInstance();

View file

@ -18,8 +18,6 @@ import static org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO;
public class MonolithAggroParticlesPacket { public class MonolithAggroParticlesPacket {
public static final ResourceLocation ID = DimensionalDoors.id("monolith_aggro_particles"); public static final ResourceLocation ID = DimensionalDoors.id("monolith_aggro_particles");
@Environment(EnvType.CLIENT)
private static final RandomSource clientRandom = RandomSource.create();
private int aggro; private int aggro;
@ -47,21 +45,4 @@ public class MonolithAggroParticlesPacket {
public int getAggro() { public int getAggro() {
return aggro; 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);
}
}
} }

View file

@ -149,6 +149,8 @@ public class TesselatingShapelessRecipe implements TesselatingRecipe {
ingredient.toNetwork(buffer); ingredient.toNetwork(buffer);
} }
buffer.writeItem(recipe.result); buffer.writeItem(recipe.result);
buffer.writeInt(recipe.weavingTime);
buffer.writeBoolean(recipe.showNotification);
} }
} }
} }

View file

@ -45,8 +45,8 @@ dependencies {
modApi "com.sk89q.worldedit:worldedit-forge-mc${rootProject.world_edit_minecraft_version}:${rootProject.worldedit}" modApi "com.sk89q.worldedit:worldedit-forge-mc${rootProject.world_edit_minecraft_version}:${rootProject.worldedit}"
modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-forge:$rei_version" modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-forge:$rei_version"
// modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-forge:$rei_version" modCompileOnly "me.shedaniel:RoughlyEnoughItems-api-forge:$rei_version"
// modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-forge:$rei_version" modCompileOnly "me.shedaniel:RoughlyEnoughItems-default-plugin-forge:$rei_version"
} }
processResources { processResources {

View file

@ -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 {
}

View file

@ -6,20 +6,20 @@ import org.dimdev.dimdoors.recipe.ShapedTesselatingRecipe;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.Unique;
//@Mixin(ShapedTesselatingRecipe.class) @Mixin(ShapedTesselatingRecipe.class)
//public abstract class TessellatingRecipeMixin implements IShapedRecipe<Container> { public abstract class TessellatingRecipeMixin implements IShapedRecipe<Container> {
// @Unique @Unique
// private ShapedTesselatingRecipe self() { private ShapedTesselatingRecipe self() {
// return (ShapedTesselatingRecipe) (Object) this; return (ShapedTesselatingRecipe) (Object) this;
// } }
//
// @Override @Override
// public int getRecipeWidth() { public int getRecipeWidth() {
// return self().getWidth(); return self().getWidth();
// } }
//
// @Override @Override
// public int getRecipeHeight() { public int getRecipeHeight() {
// return self().getHeight(); return self().getHeight();
// } }
//} }