Skip to content

Commit

Permalink
重写网络包
Browse files Browse the repository at this point in the history
  • Loading branch information
DancingSnow0517 committed Sep 7, 2024
1 parent 47f6424 commit 42e88e9
Show file tree
Hide file tree
Showing 53 changed files with 811 additions and 721 deletions.
1 change: 0 additions & 1 deletion src/main/java/dev/dubhe/anvilcraft/AnvilCraft.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ public static void init() {
ModItemGroups.register();
ModBlockEntities.register();
ModMenuTypes.register();
ModNetworks.register();
ModDispenserBehavior.register();
ModEnchantments.register();
ModResourcePacks.register();
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/dev/dubhe/anvilcraft/api/power/PowerGrid.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
import dev.dubhe.anvilcraft.network.PowerGridSyncPack;
import lombok.Getter;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.phys.shapes.BooleanOp;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;

import java.util.Collection;
Expand Down Expand Up @@ -52,7 +54,7 @@ public PowerGrid(Level level) {
}

public void update() {
new PowerGridSyncPack(this).broadcast(this.level.getChunkAt(this.getPos()));
PacketDistributor.sendToPlayersTrackingChunk((ServerLevel) level, this.level.getChunkAt(this.getPos()).getPos(), new PowerGridSyncPack(this));
}

/**
Expand Down Expand Up @@ -231,7 +233,7 @@ public void remove(IPowerComponent @NotNull ... components) {
for (IPowerComponent component : components) {
set.remove(component);
}
new PowerGridRemovePack(this).broadcast();
PacketDistributor.sendToAllPlayers(new PowerGridRemovePack(this));
PowerGrid.addComponent(set.toArray(IPowerComponent[]::new));
}

Expand Down Expand Up @@ -327,7 +329,7 @@ public synchronized void tick() {
else {
grid[0].merge(powerGrid);
remove.add(powerGrid);
new PowerGridRemovePack(powerGrid).broadcast();
PacketDistributor.sendToAllPlayers(new PowerGridRemovePack(powerGrid));
}
});
grids.removeAll(remove);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,7 @@ public SimplePowerGrid(
* @param buf 缓冲区
*/
public void encode(@NotNull FriendlyByteBuf buf) {
Tag tag = CODEC.encodeStart(NbtOps.INSTANCE, this)
.getOrThrow(false, ignored -> {
});
Tag tag = CODEC.encodeStart(NbtOps.INSTANCE, this).getOrThrow();
CompoundTag data = new CompoundTag();
data.put("data", tag);
buf.writeNbt(data);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import dev.dubhe.anvilcraft.init.ModBlockEntities;
import dev.dubhe.anvilcraft.init.ModItems;
import dev.dubhe.anvilcraft.init.ModMenuTypes;
import dev.dubhe.anvilcraft.network.ClientboundMutedSoundSyncPacket;
import dev.dubhe.anvilcraft.network.MutedSoundSyncPacket;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
Expand All @@ -17,6 +17,7 @@
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -59,7 +60,7 @@ public BlockEntity newBlockEntity(@NotNull BlockPos pos, @NotNull BlockState sta
);
}
ModMenuTypes.open(serverPlayer, eb, pos);
new ClientboundMutedSoundSyncPacket(new ArrayList<>(eb.getMutedSound())).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MutedSoundSyncPacket(new ArrayList<>(eb.getMutedSound())));
}
}
return InteractionResult.SUCCESS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -102,11 +103,11 @@ public int getAnalogOutputSignal(@NotNull BlockState blockState, @NotNull Level
}
if (player instanceof ServerPlayer serverPlayer) {
ModMenuTypes.open(serverPlayer, entity, pos);
new MachineOutputDirectionPack(entity.getDirection()).send(serverPlayer);
new MachineEnableFilterPack(entity.isFilterEnabled()).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MachineOutputDirectionPack(entity.getDirection()));
PacketDistributor.sendToPlayer(serverPlayer, new MachineEnableFilterPack(entity.isFilterEnabled()));
for (int i = 0; i < entity.getFilteredItems().size(); i++) {
new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)).send(serverPlayer);
new SlotFilterChangePack(i, entity.getFilter(i)).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)));
PacketDistributor.sendToPlayer(serverPlayer, new SlotFilterChangePack(i, entity.getFilter(i)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -106,11 +107,11 @@ public int getAnalogOutputSignal(@NotNull BlockState blockState, @NotNull Level
}
if (player instanceof ServerPlayer serverPlayer) {
ModMenuTypes.open(serverPlayer, entity, pos);
new MachineOutputDirectionPack(entity.getDirection()).send(serverPlayer);
new MachineEnableFilterPack(entity.isFilterEnabled()).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MachineOutputDirectionPack(entity.getDirection()));
PacketDistributor.sendToPlayer(serverPlayer, new MachineEnableFilterPack(entity.isFilterEnabled()));
for (int i = 0; i < entity.getFilteredItems().size(); i++) {
new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)).send(serverPlayer);
new SlotFilterChangePack(i, entity.getFilter(i)).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)));
PacketDistributor.sendToPlayer(serverPlayer, new SlotFilterChangePack(i, entity.getFilter(i)));
}
}
}
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/dev/dubhe/anvilcraft/block/ChuteBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -227,11 +228,11 @@ public <T extends BlockEntity> BlockEntityTicker<T> getTicker(
}
if (player instanceof ServerPlayer serverPlayer) {
ModMenuTypes.open(serverPlayer, entity, pos);
new MachineOutputDirectionPack(entity.getDirection()).send(serverPlayer);
new MachineEnableFilterPack(entity.isFilterEnabled()).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MachineOutputDirectionPack(entity.getDirection()));
PacketDistributor.sendToPlayer(serverPlayer, new MachineEnableFilterPack(entity.isFilterEnabled()));
for (int i = 0; i < entity.getFilteredItems().size(); i++) {
new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)).send(serverPlayer);
new SlotFilterChangePack(i, entity.getFilter(i)).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)));
PacketDistributor.sendToPlayer(serverPlayer, new SlotFilterChangePack(i, entity.getFilter(i)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -50,7 +51,7 @@ public CreativeGeneratorBlock(Properties properties) {
&& player instanceof ServerPlayer serverPlayer
) {
ModMenuTypes.open(serverPlayer, entity, pos);
new SliderInitPack(entity.getPower(), -8192, 8192).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SliderInitPack(entity.getPower(), -8192, 8192));
}
return InteractionResult.SUCCESS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -138,10 +139,10 @@ protected void createBlockStateDefinition(@NotNull StateDefinition.Builder<Block
}
if (player instanceof ServerPlayer serverPlayer) {
ModMenuTypes.open(serverPlayer, eb, pos);
new MachineEnableFilterPack(eb.isFilterEnabled()).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MachineEnableFilterPack(eb.isFilterEnabled()));
for (int i = 0; i < eb.getFilteredItems().size(); i++) {
new SlotDisableChangePack(i, eb.getDepository().getDisabled().get(i)).send(serverPlayer);
new SlotFilterChangePack(i, eb.getFilter(i)).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SlotDisableChangePack(i, eb.getDepository().getDisabled().get(i)));
PacketDistributor.sendToPlayer(serverPlayer, new SlotFilterChangePack(i, eb.getFilter(i)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -281,11 +282,11 @@ public void neighborChanged(
}
if (player instanceof ServerPlayer serverPlayer) {
ModMenuTypes.open(serverPlayer, entity, pos);
new MachineOutputDirectionPack(entity.getDirection()).send(serverPlayer);
new MachineEnableFilterPack(entity.isFilterEnabled()).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new MachineOutputDirectionPack(entity.getDirection()));
PacketDistributor.sendToPlayer(serverPlayer, new MachineEnableFilterPack(entity.isFilterEnabled()));
for (int i = 0; i < entity.getFilteredItems().size(); i++) {
new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)).send(serverPlayer);
new SlotFilterChangePack(i, entity.getFilter(i)).send(serverPlayer);
PacketDistributor.sendToPlayer(serverPlayer, new SlotDisableChangePack(i, entity.getDepository().getDisabled().get(i)));
PacketDistributor.sendToPlayer(serverPlayer, new SlotFilterChangePack(i, entity.getFilter(i)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
import dev.dubhe.anvilcraft.api.depository.ItemDepositoryHelper;
import dev.dubhe.anvilcraft.init.ModBlockTags;
import dev.dubhe.anvilcraft.network.LaserEmitPack;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
Expand All @@ -25,8 +22,13 @@
import net.minecraft.world.level.entity.EntityTypeTest;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

public abstract class BaseLaserBlockEntity extends BlockEntity {
private final HashMap<Integer, Integer> levelToTimeMap = new HashMap<>() {{
put(1, 24);
Expand Down Expand Up @@ -201,7 +203,7 @@ public void onCancelingIrradiation(BaseLaserBlockEntity baseLaserBlockEntity) {
}

public void tick(@NotNull Level level) {
new LaserEmitPack(laserLevel, getBlockPos(), irradiateBlockPos).broadcast();
PacketDistributor.sendToAllPlayers(new LaserEmitPack(laserLevel, getBlockPos(), irradiateBlockPos));
tickCount++;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import dev.dubhe.anvilcraft.init.ModBlocks;
import dev.dubhe.anvilcraft.init.ModMenuTypes;
import dev.dubhe.anvilcraft.inventory.BatchCrafterMenu;
import dev.dubhe.anvilcraft.network.ClientboundUpdateDisplayItemPacket;
import dev.dubhe.anvilcraft.network.UpdateDisplayItemPacket;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.core.BlockPos;
Expand Down Expand Up @@ -43,6 +43,7 @@
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f;
Expand Down Expand Up @@ -79,7 +80,7 @@ public void onContentsChanged(int slot) {
.map(craftingRecipe -> craftingRecipe.getResultItem(level.registryAccess()))
.orElse(ItemStack.EMPTY);
if (!level.isClientSide) {
new ClientboundUpdateDisplayItemPacket(displayItemStack, getPos()).broadcast();
PacketDistributor.sendToAllPlayers(new UpdateDisplayItemPacket(displayItemStack, getPos()));
}
}
setChanged();
Expand Down Expand Up @@ -174,7 +175,7 @@ private void craft(@NotNull Level level) {
result = optional.get().assemble(craftingContainer, level.registryAccess());
displayItemStack = result.copy();
if (!level.isClientSide) {
new ClientboundUpdateDisplayItemPacket(displayItemStack, getPos()).broadcast();
PacketDistributor.sendToAllPlayers((new UpdateDisplayItemPacket(displayItemStack, getPos())));
}
if (!result.isItemEnabled(level.enabledFeatures())) return;
int times;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;
import org.joml.Vector3f;

Expand Down Expand Up @@ -132,7 +133,7 @@ public void tick() {
if (level == null) return;
if (level.getGameTime() % (AnvilCraft.config.heliostatsDetectionInterval + 1) != 0) return;
if (irritatePos == null && level.isClientSide)
new HeliostatsIrradiationPack(getBlockPos(), irritatePos).send();
PacketDistributor.sendToServer(new HeliostatsIrradiationPack(getBlockPos(), irritatePos));
workResult = validatePos(irritatePos);
if (workResult.isWork()) {
HeatedBlockRecorder.getInstance(getLevel()).addOrIncrease(irritatePos, this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import dev.dubhe.anvilcraft.AnvilCraft;
import dev.dubhe.anvilcraft.client.gui.component.SilencerButton;
import dev.dubhe.anvilcraft.inventory.ActiveSilencerMenu;
import dev.dubhe.anvilcraft.network.ServerboundAddMutedSoundPacket;
import dev.dubhe.anvilcraft.network.ServerboundRemoveMutedSoundPacket;
import dev.dubhe.anvilcraft.network.AddMutedSoundPacket;
import dev.dubhe.anvilcraft.network.RemoveMutedSoundPacket;
import it.unimi.dsi.fastutil.Pair;
import lombok.Getter;
import net.minecraft.client.Minecraft;
Expand All @@ -18,6 +18,7 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Inventory;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
Expand Down Expand Up @@ -114,7 +115,7 @@ private void onAllSoundButtonClick(int selectedIndex) {
if (filteredSounds.isEmpty() || actualIndex >= filteredSounds.size()) return;
ResourceLocation sound = filteredSounds.get(actualIndex).left();
addMutedSound(sound);
new ServerboundAddMutedSoundPacket(sound).send();
PacketDistributor.sendToServer(new AddMutedSoundPacket(sound));
refreshSoundList();
}

Expand All @@ -124,7 +125,7 @@ private void onMutedSoundButtonClick(int selectedIndex) {
if (mutedSounds.isEmpty() || actualIndex >= mutedSounds.size()) return;
ResourceLocation sound = mutedSounds.get(actualIndex).left();
removeMutedSound(sound);
new ServerboundRemoveMutedSoundPacket(sound).send();
PacketDistributor.sendToServer(new RemoveMutedSoundPacket(sound));
refreshSoundList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.Slot;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;

import java.util.function.BiFunction;
Expand Down Expand Up @@ -84,10 +85,10 @@ protected void slotClicked(@NotNull Slot slot, int slotId, int mouseButton, @Not
if (!slot.getItem().isEmpty()) break start;
int slot1 = slot.getContainerSlot();
if (this.menu.isFilterEnabled()) {
if (!this.menu.isSlotDisabled(slot1)) new SlotDisableChangePack(slot1, false).send();
if (!this.menu.isSlotDisabled(slot1)) PacketDistributor.sendToServer(new SlotDisableChangePack(slot1, false));
break start;
}
new SlotDisableChangePack(slot1, !this.menu.isSlotDisabled(slot1)).send();
PacketDistributor.sendToServer(new SlotDisableChangePack(slot1, !this.menu.isSlotDisabled(slot1)));
}
super.slotClicked(slot, slotId, mouseButton, type);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.Slot;
import net.neoforged.neoforge.network.PacketDistributor;
import org.jetbrains.annotations.NotNull;

import java.util.function.BiFunction;
Expand Down Expand Up @@ -102,10 +103,10 @@ protected void slotClicked(@NotNull Slot slot, int slotId, int mouseButton, @Not
if (!slot.getItem().isEmpty()) break start;
int slot1 = slot.getContainerSlot();
if (this.menu.isFilterEnabled()) {
if (!this.menu.isSlotDisabled(slot1)) new SlotDisableChangePack(slot1, false).send();
if (!this.menu.isSlotDisabled(slot1)) PacketDistributor.sendToServer(new SlotDisableChangePack(slot1, false));
break start;
}
new SlotDisableChangePack(slot1, !this.menu.isSlotDisabled(slot1)).send();
PacketDistributor.sendToServer(new SlotDisableChangePack(slot1, !this.menu.isSlotDisabled(slot1)));
}
super.slotClicked(slot, slotId, mouseButton, type);
}
Expand Down
Loading

0 comments on commit 42e88e9

Please sign in to comment.