Fixed issue with recipe packet mismatch. Also add forge REI plugin.
This commit is contained in:
parent
e7642bba53
commit
30c1e82045
6 changed files with 53 additions and 40 deletions
|
@ -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();
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
||||||
|
}
|
|
@ -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();
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
|
Loading…
Reference in a new issue