Pocket and limbo sky renderin
This commit is contained in:
parent
8eccb31f95
commit
4f309acfea
13 changed files with 235 additions and 38 deletions
|
@ -32,6 +32,8 @@ public class MyRenderLayer extends RenderLayer {
|
|||
VertexFormats.POSITION_COLOR,
|
||||
VertexFormat.DrawMode.QUADS,
|
||||
256,
|
||||
false,
|
||||
false,
|
||||
MultiPhaseParameters.builder()
|
||||
.cull(DISABLE_CULLING)
|
||||
.lightmap(RenderPhase.DISABLE_LIGHTMAP)
|
||||
|
@ -53,6 +55,8 @@ public class MyRenderLayer extends RenderLayer {
|
|||
VertexFormats.POSITION_COLOR_TEXTURE,
|
||||
VertexFormat.DrawMode.QUADS,
|
||||
256,
|
||||
false,
|
||||
false,
|
||||
MultiPhaseParameters.builder()
|
||||
.cull(DISABLE_CULLING)
|
||||
.lightmap(RenderPhase.DISABLE_LIGHTMAP)
|
||||
|
|
|
@ -6,8 +6,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||
* A Transformer is a matrix stack consumer.
|
||||
*
|
||||
* <p>It modifies the matrices' transformations.
|
||||
* It is not recommended to push/pop in any of
|
||||
* the methods</p>
|
||||
* It is not recommended to push/pop</p>
|
||||
*/
|
||||
public interface Transformer {
|
||||
void transform(MatrixStack matrices);
|
||||
|
|
|
@ -58,7 +58,9 @@ public class RiftConfigurationToolItem extends ModItem {
|
|||
EntityUtils.chat(player, Text.of("Id: " + ((IdMarker) rift.getDestination()).getId()));
|
||||
} else {
|
||||
int id = counter.increment();
|
||||
sync(stack, player, hand);
|
||||
|
||||
ServerPacketHandler.get((ServerPlayerEntity) player).sync(stack, hand);
|
||||
|
||||
EntityUtils.chat(player, Text.of("Rift stripped of data and set to target id: " + id));
|
||||
|
||||
rift.setDestination(new IdMarker(id));
|
||||
|
@ -95,7 +97,8 @@ public class RiftConfigurationToolItem extends ModItem {
|
|||
}
|
||||
} else if (CounterComponent.get(stack).count() != 0) {
|
||||
CounterComponent.get(stack).reset();
|
||||
sync(stack, player, hand);
|
||||
|
||||
ServerPacketHandler.get((ServerPlayerEntity) player).sync(stack, hand);
|
||||
|
||||
EntityUtils.chat(player, Text.of("Counter has been reset."));
|
||||
return TypedActionResult.success(false);
|
||||
|
@ -112,15 +115,4 @@ public class RiftConfigurationToolItem extends ModItem {
|
|||
list.add(new TranslatableText(this.getTranslationKey() + ".info"));
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: put in ServerPacketHandler
|
||||
private void sync(ItemStack stack, PlayerEntity player, Hand hand) {
|
||||
ServerPlayerEntity serverPlayer = (ServerPlayerEntity) player;
|
||||
|
||||
if (hand == Hand.OFF_HAND) {
|
||||
ServerPacketHandler.sendPacket(serverPlayer, new PlayerInventorySlotUpdateS2CPacket(45, stack));
|
||||
} else {
|
||||
ServerPacketHandler.sendPacket(serverPlayer, new PlayerInventorySlotUpdateS2CPacket(serverPlayer.getInventory().selectedSlot, stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import org.dimdev.dimdoors.block.RiftProvider;
|
|||
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
||||
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
|
||||
import org.dimdev.dimdoors.mixin.accessor.ListTagAccessor;
|
||||
import org.dimdev.dimdoors.network.ServerPacketHandler;
|
||||
import org.dimdev.dimdoors.rift.registry.Rift;
|
||||
import org.dimdev.dimdoors.util.EntityUtils;
|
||||
import org.dimdev.dimdoors.util.Location;
|
||||
|
@ -17,15 +18,20 @@ import org.jetbrains.annotations.Nullable;
|
|||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.item.TooltipContext;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUsageContext;
|
||||
import net.minecraft.nbt.IntArrayTag;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.collection.DefaultedList;
|
||||
import net.minecraft.util.dynamic.DynamicSerializableUuid;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
@ -41,8 +47,6 @@ public class RiftKeyItem extends Item {
|
|||
if (isEmpty(stack)) {
|
||||
tooltip.add(new TranslatableText("item.dimdoors.rift_key.no_links"));
|
||||
} else if (context.isAdvanced()) {
|
||||
tooltip.add(LiteralText.EMPTY);
|
||||
tooltip.add(new TranslatableText("item.dimdoors.rift_key.ids"));
|
||||
for (UUID id : getIds(stack)) {
|
||||
tooltip.add(new LiteralText(" " + id.toString()));
|
||||
}
|
||||
|
@ -65,6 +69,11 @@ public class RiftKeyItem extends Item {
|
|||
return 30;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCraft(ItemStack stack, World world, PlayerEntity player) {
|
||||
stack.setTag(this.getDefaultStack().getTag());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getDefaultStack() {
|
||||
ItemStack stack = super.getDefaultStack();
|
||||
|
@ -91,6 +100,7 @@ public class RiftKeyItem extends Item {
|
|||
entranceRiftBlockEntity.setLocked(false);
|
||||
entranceRiftBlockEntity.markDirty();
|
||||
EntityUtils.chat(player, new TranslatableText("rifts.unlocked"));
|
||||
ServerPacketHandler.get((ServerPlayerEntity) player).sync(context.getStack(), context.getHand());
|
||||
return ActionResult.SUCCESS;
|
||||
} else {
|
||||
EntityUtils.chat(player, new TranslatableText("rifts.cantUnlock"));
|
||||
|
@ -100,6 +110,7 @@ public class RiftKeyItem extends Item {
|
|||
add(context.getStack(), rift.getId());
|
||||
entranceRiftBlockEntity.markDirty();
|
||||
EntityUtils.chat(player, new TranslatableText("rifts.locked"));
|
||||
ServerPacketHandler.get((ServerPlayerEntity) player).sync(context.getStack(), context.getHand());
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
|
@ -108,7 +119,7 @@ public class RiftKeyItem extends Item {
|
|||
|
||||
public static boolean tryRemove(ItemStack stack, UUID id) {
|
||||
IntArrayTag arrayTag = new IntArrayTag(DynamicSerializableUuid.toIntArray(id));
|
||||
return stack.getOrCreateTag().getList("Ids", NbtType.LIST).remove(arrayTag);
|
||||
return stack.getTag().getList("Ids", NbtType.LIST).remove(arrayTag);
|
||||
}
|
||||
|
||||
public static void add(ItemStack stack, UUID id) {
|
||||
|
@ -134,4 +145,11 @@ public class RiftKeyItem extends Item {
|
|||
.map(DynamicSerializableUuid::toUuid)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendStacks(ItemGroup group, DefaultedList<ItemStack> stacks) {
|
||||
if (this.isIn(group)) {
|
||||
stacks.add(this.getDefaultStack());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ public class ClientPlayNetworkHandlerMixin {
|
|||
|
||||
@Inject(method = "onPlayerPositionLook", at = @At("RETURN"), locals = LocalCapture.CAPTURE_FAILHARD)
|
||||
public void onPlayerLookPositionPacket(PlayerPositionLookS2CPacket packet, CallbackInfo ci, PlayerEntity playerEntity, Vec3d vec3d, boolean bl, boolean bl2, boolean bl3, double f, double g, double j, double k, double n, double o, float p, float q) {
|
||||
if (ModDimensions.isLimboDimension(this.world)) {
|
||||
this.world.addParticle(ModParticleTypes.MONOLITH, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), 0.0D, 0.0D, 0.0D);
|
||||
}
|
||||
// if (ModDimensions.isLimboDimension(this.world)) {
|
||||
// this.world.addParticle(ModParticleTypes.MONOLITH, playerEntity.getX(), playerEntity.getY(), playerEntity.getZ(), 0.0D, 0.0D, 0.0D);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ public abstract class GameRendererMixin {
|
|||
@Shadow
|
||||
protected abstract class_5944 method_34522(ResourceFactory arg, String string, VertexFormat vertexFormat) throws IOException;
|
||||
|
||||
@Inject(method = "method_34538", at = @At(value = "INVOKE", ordinal = 1, target = "Lnet/minecraft/client/render/GameRenderer;method_34522(Lnet/minecraft/class_5912;Ljava/lang/String;Lnet/minecraft/client/render/VertexFormat;)Lnet/minecraft/class_5944;"))
|
||||
@Inject(method = "method_34538", at = @At(value = "INVOKE", ordinal = 1, target = "Lnet/minecraft/client/render/GameRenderer;method_34522(Lnet/minecraft/resource/ResourceFactory;Ljava/lang/String;Lnet/minecraft/client/render/VertexFormat;)Lnet/minecraft/class_5944;"))
|
||||
public void onReload(ResourceManager resourceManager, CallbackInfo ci) throws IOException {
|
||||
ModShaders.setDimensionalPortal(this.method_34522(resourceManager, "dimensional_portal", VertexFormats.POSITION));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,168 @@
|
|||
package org.dimdev.dimdoors.mixin.client;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import org.dimdev.dimdoors.world.ModDimensions;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
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.callback.CallbackInfo;
|
||||
|
||||
import net.minecraft.client.render.BufferBuilder;
|
||||
import net.minecraft.client.render.BufferRenderer;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
import net.minecraft.client.render.Tessellator;
|
||||
import net.minecraft.client.render.VertexFormat;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.Matrix4f;
|
||||
import net.minecraft.util.math.Vec3f;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class WorldRendererMixin {
|
||||
@Unique
|
||||
private static final Identifier MOON_RENDER_PATH = new Identifier("dimdoors:textures/other/limbo_moon.png");
|
||||
@Unique
|
||||
private static final Identifier SUN_RENDER_PATH = new Identifier("dimdoors:textures/other/limbo_sun.png");
|
||||
|
||||
@Shadow
|
||||
private ClientWorld world;
|
||||
|
||||
@Shadow
|
||||
@Final
|
||||
private static Identifier END_SKY;
|
||||
|
||||
@Inject(method = "renderSky", at = @At("HEAD"), cancellable = true)
|
||||
public void beforeRenderSky(MatrixStack matrices, Matrix4f matrix4f, float f, CallbackInfo ci) {
|
||||
if (ModDimensions.isLimboDimension(this.world)) {
|
||||
renderLimboSky(matrices);
|
||||
ci.cancel();
|
||||
} else if (ModDimensions.isPrivatePocketDimension(this.world)) {
|
||||
this.renderPocketSky(matrices, 255, 255, 255);
|
||||
ci.cancel();
|
||||
} else if (ModDimensions.isPocketDimension(this.world)) {
|
||||
this.renderPocketSky(matrices, 0, 0, 0);
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@Unique
|
||||
private void renderLimboSky(MatrixStack matrices) {
|
||||
Matrix4f matrix4f = matrices.peek().getModel();
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder bufferBuilder = tessellator.getBuffer();
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.defaultBlendFunc();
|
||||
RenderSystem.depthMask(false);
|
||||
RenderSystem.setShader(GameRenderer::method_34543);
|
||||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
for(int i = 0; i < 6; ++i) {
|
||||
matrices.push();
|
||||
if (i == 1) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(90.0F));
|
||||
}
|
||||
|
||||
if (i == 2) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90.0F));
|
||||
}
|
||||
|
||||
if (i == 3) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(180.0F));
|
||||
}
|
||||
|
||||
if (i == 4) {
|
||||
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(90.0F));
|
||||
}
|
||||
|
||||
if (i == 5) {
|
||||
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-90.0F));
|
||||
}
|
||||
|
||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||
bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, -100.0F).color(40, 40, 40, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, 100.0F).color(40, 40, 40, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, 100.0F).color(40, 40, 40, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, -100.0F).color(40, 40, 40, 255).next();
|
||||
tessellator.draw();
|
||||
matrices.pop();
|
||||
}
|
||||
|
||||
float s = 30.0F;
|
||||
RenderSystem.setShader(GameRenderer::method_34542);
|
||||
RenderSystem.setShaderTexture(0, SUN_RENDER_PATH);
|
||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE);
|
||||
bufferBuilder.vertex(matrix4f, -s, 100.0F, -s).texture(0.0F, 0.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, s, 100.0F, -s).texture(1.0F, 0.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, s, 100.0F, s).texture(1.0F, 1.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, -s, 100.0F, s).texture(0.0F, 1.0F).next();
|
||||
bufferBuilder.end();
|
||||
BufferRenderer.draw(bufferBuilder);
|
||||
RenderSystem.setShaderTexture(0, MOON_RENDER_PATH);
|
||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE);
|
||||
bufferBuilder.vertex(matrix4f, -s, -100.0F, -s).texture(0.0F, 0.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, s, -100.0F, -s).texture(1.0F, 0.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, s, -100.0F, s).texture(1.0F, 1.0F).next();
|
||||
bufferBuilder.vertex(matrix4f, -s, -100.0F, s).texture(0.0F, 1.0F).next();
|
||||
bufferBuilder.end();
|
||||
BufferRenderer.draw(bufferBuilder);
|
||||
|
||||
RenderSystem.depthMask(true);
|
||||
RenderSystem.enableTexture();
|
||||
RenderSystem.disableBlend();
|
||||
}
|
||||
|
||||
private void renderPocketSky(MatrixStack matrices, int r, int g, int b) {
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.defaultBlendFunc();
|
||||
RenderSystem.depthMask(false);
|
||||
RenderSystem.setShader(GameRenderer::method_34540);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder bufferBuilder = tessellator.getBuffer();
|
||||
|
||||
for(int i = 0; i < 6; ++i) {
|
||||
matrices.push();
|
||||
if (i == 1) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(90.0F));
|
||||
}
|
||||
|
||||
if (i == 2) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90.0F));
|
||||
}
|
||||
|
||||
if (i == 3) {
|
||||
matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(180.0F));
|
||||
}
|
||||
|
||||
if (i == 4) {
|
||||
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(90.0F));
|
||||
}
|
||||
|
||||
if (i == 5) {
|
||||
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-90.0F));
|
||||
}
|
||||
|
||||
Matrix4f matrix4f = matrices.peek().getModel();
|
||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||
bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, -100.0F).color(r, g, b, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, -100.0F, -100.0F, 100.0F).color(r, g, b, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, 100.0F).color(r, g, b, 255).next();
|
||||
bufferBuilder.vertex(matrix4f, 100.0F, -100.0F, -100.0F).color(r, g, b, 255).next();
|
||||
tessellator.draw();
|
||||
matrices.pop();
|
||||
}
|
||||
|
||||
RenderSystem.depthMask(true);
|
||||
RenderSystem.enableTexture();
|
||||
RenderSystem.disableBlend();
|
||||
}
|
||||
}
|
|
@ -12,9 +12,4 @@ public interface RenderLayerAccessor {
|
|||
static RenderLayer.MultiPhase callOf(String name, VertexFormat vertexFormat, VertexFormat.DrawMode drawMode, int expectedBufferSize, boolean hasCrumbling, boolean translucent, RenderLayer.MultiPhaseParameters phases) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Invoker
|
||||
static RenderLayer.MultiPhase callOf(String name, VertexFormat vertexFormat, VertexFormat.DrawMode drawMode, int expectedBufferSize, RenderLayer.MultiPhaseParameters phaseData) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ public class ClientPacketHandler {
|
|||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
private final ClientPlayNetworkHandler networkHandler;
|
||||
private final MinecraftClient client;
|
||||
private boolean initialized = false;
|
||||
|
||||
private final Set<Identifier> registeredChannels = new HashSet<>();
|
||||
|
@ -65,7 +64,6 @@ public class ClientPacketHandler {
|
|||
|
||||
public ClientPacketHandler(ClientPlayNetworkHandler networkHandler) {
|
||||
this.networkHandler = networkHandler;
|
||||
this.client = ((ExtendedClientPlayNetworkHandler) networkHandler).dimdoorsGetClient();
|
||||
}
|
||||
|
||||
private void registerReceiver(Identifier channelName, Supplier<? extends SimplePacket<ClientPacketHandler>> supplier) {
|
||||
|
@ -98,8 +96,8 @@ public class ClientPacketHandler {
|
|||
}
|
||||
|
||||
public void onPlayerInventorySlotUpdate(int slot, ItemStack stack) {
|
||||
if (client.player != null) {
|
||||
client.player.getInventory().setStack(slot, stack);
|
||||
if (MinecraftClient.getInstance().player != null) {
|
||||
MinecraftClient.getInstance().player.getInventory().setStack(slot, stack);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,9 @@ package org.dimdev.dimdoors.network;
|
|||
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
|
||||
import net.fabricmc.fabric.api.networking.v1.PacketSender;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketByteBuf;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
||||
|
@ -19,6 +21,7 @@ import org.apache.logging.log4j.Logger;
|
|||
import org.dimdev.dimdoors.item.ModItem;
|
||||
import org.dimdev.dimdoors.network.c2s.HitBlockWithItemC2SPacket;
|
||||
import org.dimdev.dimdoors.network.c2s.NetworkHandlerInitializedC2SPacket;
|
||||
import org.dimdev.dimdoors.network.s2c.PlayerInventorySlotUpdateS2CPacket;
|
||||
import org.dimdev.dimdoors.network.s2c.SyncPocketAddonsS2CPacket;
|
||||
import org.dimdev.dimdoors.world.ModDimensions;
|
||||
import org.dimdev.dimdoors.world.level.registry.DimensionalRegistry;
|
||||
|
@ -50,6 +53,14 @@ public class ServerPacketHandler {
|
|||
registerReceiver(HitBlockWithItemC2SPacket.ID, HitBlockWithItemC2SPacket::new);
|
||||
}
|
||||
|
||||
public static ServerPacketHandler get(ServerPlayerEntity player) {
|
||||
return get(player.networkHandler);
|
||||
}
|
||||
|
||||
public static ServerPacketHandler get(ServerPlayNetworkHandler networkHandler) {
|
||||
return ((ExtendedServerPlayNetworkHandler) networkHandler).getDimDoorsPacketHandler();
|
||||
}
|
||||
|
||||
public static boolean sendPacket(ServerPlayerEntity player, SimplePacket<?> packet) {
|
||||
try {
|
||||
ServerPlayNetworking.send(player, packet.channelId(), packet.write(PacketByteBufs.create()));
|
||||
|
@ -60,6 +71,10 @@ public class ServerPacketHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean sendPacket(SimplePacket<?> packet) {
|
||||
return sendPacket(getPlayer(), packet);
|
||||
}
|
||||
|
||||
public ServerPacketHandler(ServerPlayNetworkHandler networkHandler) {
|
||||
this.networkHandler = networkHandler;
|
||||
this.server = ((ExtendedServerPlayNetworkHandler) networkHandler).dimdoorsGetServer();
|
||||
|
@ -120,4 +135,12 @@ public class ServerPacketHandler {
|
|||
public void markPocketSyncDirty(int id) {
|
||||
if (lastSyncedPocketId == id) pocketSyncDirty = true;
|
||||
}
|
||||
|
||||
public void sync(ItemStack stack, Hand hand) {
|
||||
if (hand == Hand.OFF_HAND) {
|
||||
sendPacket(new PlayerInventorySlotUpdateS2CPacket(45, stack));
|
||||
} else {
|
||||
sendPacket(new PlayerInventorySlotUpdateS2CPacket(getPlayer().getInventory().selectedSlot, stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
package org.dimdev.dimdoors.particle;
|
||||
|
||||
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
|
||||
import org.dimdev.dimdoors.particle.client.RiftParticle;
|
||||
import org.dimdev.dimdoors.mixin.accessor.DefaultParticleTypeAccessor;
|
||||
import org.dimdev.dimdoors.particle.client.MonolithParticle;
|
||||
import org.dimdev.dimdoors.particle.client.RiftParticle;
|
||||
import org.dimdev.dimdoors.particle.client.RiftParticleEffect;
|
||||
|
||||
import net.minecraft.particle.DefaultParticleType;
|
||||
import net.minecraft.particle.ParticleType;
|
||||
|
@ -13,7 +12,7 @@ import net.minecraft.util.registry.Registry;
|
|||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
|
||||
import org.dimdev.dimdoors.particle.client.RiftParticleEffect;
|
||||
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
|
||||
|
||||
public class ModParticleTypes {
|
||||
public static final DefaultParticleType MONOLITH = FabricParticleTypes.simple(true);
|
||||
|
|
|
@ -44,11 +44,11 @@ public final class ModDimensions {
|
|||
}
|
||||
|
||||
public static boolean isLimbo(StructureWorldAccess world) {
|
||||
return world != null && (world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION);
|
||||
return world != null && world.getDimension() == LIMBO_TYPE;
|
||||
}
|
||||
|
||||
public static boolean isLimboDimension(World world) {
|
||||
return world != null && (world.getRegistryKey().equals(LIMBO) || world.getDimension() == LIMBO_TYPE || world == LIMBO_DIMENSION);
|
||||
return world != null && world.getRegistryKey().equals(LIMBO);
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
|
|
|
@ -28,7 +28,8 @@
|
|||
"client.ExtendedClientPlayNetworkHandlerMixin",
|
||||
"client.GameRendererMixin",
|
||||
"client.InGameHudMixin",
|
||||
"client.accessor.RenderLayerAccessor"
|
||||
"client.accessor.RenderLayerAccessor",
|
||||
"client.WorldRendererMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
Loading…
Add table
Reference in a new issue