Skip to content

Commit bf26670

Browse files
committed
1.20.4 networking work, I still need to work on a bit, I don't understand every change yet
This commit mainly exists because I need to switch machines and for a 1.20.1 merge
1 parent c2bc0a0 commit bf26670

File tree

9 files changed

+87
-43
lines changed

9 files changed

+87
-43
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ dependencies {
238238
runtimeOnly "top.theillusivec4.curios:curios-forge:${curios_version}"
239239

240240
// Refined Storage
241-
implementation "com.refinedmods:refinedstorage:${refinedstorage_version}"
241+
//implementation "com.refinedmods:refinedstorage:${refinedstorage_version}"
242242

243243
// AE2 Things
244244
compileOnly "curse.maven:ae2things-609977:${ae2things_version}-sources"

src/main/java/de/srendi/advancedperipherals/APCreativeTab.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.minecraft.resources.ResourceLocation;
99
import net.minecraft.world.item.CreativeModeTab;
1010
import net.minecraft.world.item.ItemStack;
11+
import net.neoforged.neoforge.registries.DeferredHolder;
1112

1213
import java.util.Collection;
1314
import java.util.Set;
@@ -16,7 +17,7 @@ public class APCreativeTab {
1617

1718
public static void populateCreativeTabBuilder(CreativeModeTab.Builder builder) {
1819
builder.displayItems((set, out) -> {
19-
Registration.ITEMS.().stream().map(RegistryObject::get).forEach(out::accept);
20+
Registration.ITEMS.getEntries().stream().map(DeferredHolder::get).forEach(out::accept);
2021
out.acceptAll(pocketUpgrade(CCRegistration.ID.COLONY_POCKET));
2122
out.acceptAll(pocketUpgrade(CCRegistration.ID.CHATTY_POCKET));
2223
out.acceptAll(pocketUpgrade(CCRegistration.ID.PLAYER_POCKET));
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package de.srendi.advancedperipherals.client;
2+
3+
import dan200.computercraft.shared.network.NetworkMessage;
4+
import dan200.computercraft.shared.network.server.ServerNetworkContext;
5+
import de.srendi.advancedperipherals.network.base.IPacket;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.client.multiplayer.ClientPacketListener;
8+
import net.minecraft.network.FriendlyByteBuf;
9+
import net.minecraft.network.PacketListener;
10+
import net.minecraft.network.protocol.Packet;
11+
import org.jetbrains.annotations.NotNull;
12+
13+
public final class ClientNetworking {
14+
private ClientNetworking() {
15+
}
16+
17+
public static void sendToServer(IPacket<?> message) {
18+
ClientPacketListener connection = Minecraft.getInstance().getConnection();
19+
if (connection != null) {
20+
connection.send(new Packet<>() {
21+
@Override
22+
public void write(@NotNull FriendlyByteBuf pBuffer) {
23+
message.encode(pBuffer);
24+
}
25+
26+
@Override
27+
public void handle(@NotNull PacketListener pHandler) {
28+
}
29+
});
30+
}
31+
32+
}
33+
}

src/main/java/de/srendi/advancedperipherals/client/KeyBindings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package de.srendi.advancedperipherals.client;
22

33
import net.minecraft.client.KeyMapping;
4-
import net.neoforged.client.event.RegisterKeyMappingsEvent;
4+
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
55
import org.lwjgl.glfw.GLFW;
66

77
public class KeyBindings {

src/main/java/de/srendi/advancedperipherals/common/setup/Registration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@
1010
import net.minecraft.world.level.block.Block;
1111
import net.minecraft.world.level.block.entity.BlockEntityType;
1212
import net.neoforged.bus.api.IEventBus;
13-
1413
import net.neoforged.neoforge.registries.DeferredRegister;
1514

1615
public class Registration {
1716

18-
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(Registries.BLOCK, AdvancedPeripherals.MOD_ID);
19-
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(Registries.ITEM, AdvancedPeripherals.MOD_ID);
17+
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(AdvancedPeripherals.MOD_ID);
18+
public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(AdvancedPeripherals.MOD_ID);
2019
public static final DeferredRegister<BlockEntityType<?>> TILE_ENTITIES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, AdvancedPeripherals.MOD_ID);
2120
public static final DeferredRegister<MenuType<?>> CONTAINER_TYPES = DeferredRegister.create(Registries.MENU, AdvancedPeripherals.MOD_ID);
2221
public static final DeferredRegister<PoiType> POI_TYPES = DeferredRegister.create(Registries.POINT_OF_INTEREST_TYPE, AdvancedPeripherals.MOD_ID);

src/main/java/de/srendi/advancedperipherals/common/util/fakeplayer/APFakePlayer.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,10 @@
3333
import net.minecraft.world.level.block.StructureBlock;
3434
import net.minecraft.world.level.block.state.BlockState;
3535
import net.minecraft.world.phys.*;
36-
import net.neoforged.common.ForgeHooks;
37-
import net.neoforged.common.ForgeMod;
38-
import net.neoforged.common.util.FakePlayer;
39-
import net.neoforged.event.ForgeEventFactory;
40-
import net.neoforged.event.entity.player.PlayerInteractEvent;
41-
import net.neoforged.eventbus.api.Event;
36+
import net.neoforged.bus.api.Event;
37+
import net.neoforged.neoforge.common.CommonHooks;
38+
import net.neoforged.neoforge.common.util.FakePlayer;
39+
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
4240
import org.jetbrains.annotations.NotNull;
4341
import org.jetbrains.annotations.Nullable;
4442

@@ -63,7 +61,7 @@ public class APFakePlayer extends FakePlayer {
6361
private float currentDamage = 0;
6462

6563
public APFakePlayer(ServerLevel world, Entity owner, GameProfile profile) {
66-
super(world, profile != null && profile.isComplete() ? profile : PROFILE);
64+
super(world, PROFILE);
6765
if (owner != null) {
6866
setCustomName(owner.getName());
6967
this.owner = new WeakReference<>(owner);
@@ -220,7 +218,7 @@ public InteractionResult useOnFilteredEntity(Predicate<Entity> filter) {
220218
public InteractionResult useOnSpecificEntity(@NotNull Entity entity, HitResult result) {
221219
InteractionResult simpleInteraction = interactOn(entity, InteractionHand.MAIN_HAND);
222220
if (simpleInteraction == InteractionResult.SUCCESS) return simpleInteraction;
223-
if (ForgeHooks.onInteractEntityAt(this, entity, result.getLocation(), InteractionHand.MAIN_HAND) != null) {
221+
if (CommonHooks.onInteractEntityAt(this, entity, result.getLocation(), InteractionHand.MAIN_HAND) == InteractionResult.FAIL) {
224222
return InteractionResult.FAIL;
225223
}
226224

@@ -276,7 +274,7 @@ public InteractionResult use(boolean skipEntity, boolean skipBlock, @Nullable Pr
276274
ItemStack copyBeforeUse = stack.copy();
277275
InteractionResult result = stack.useOn(new UseOnContext(level(), this, InteractionHand.MAIN_HAND, stack, blockHit));
278276
if (stack.isEmpty()) {
279-
ForgeEventFactory.onPlayerDestroyItem(this, copyBeforeUse, InteractionHand.MAIN_HAND);
277+
CommonHooks.onPlayerDestroyItem(this, copyBeforeUse, InteractionHand.MAIN_HAND);
280278
}
281279
return result;
282280
} else if (hit instanceof EntityHitResult entityHit) {

src/main/java/de/srendi/advancedperipherals/network/APNetworking.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import de.srendi.advancedperipherals.AdvancedPeripherals;
44
import de.srendi.advancedperipherals.network.base.IPacket;
55
import de.srendi.advancedperipherals.network.toclient.ToastToClientPacket;
6+
import net.minecraft.client.gui.components.toasts.Toast;
67
import net.minecraft.core.BlockPos;
78
import net.minecraft.network.FriendlyByteBuf;
89
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
@@ -12,8 +13,12 @@
1213
import net.minecraft.server.level.ServerPlayer;
1314
import net.minecraft.world.level.Level;
1415
import net.minecraft.world.level.block.entity.BlockEntity;
16+
import net.neoforged.bus.api.SubscribeEvent;
1517
import net.neoforged.common.util.FakePlayer;
1618
import net.neoforged.fml.ModLoadingContext;
19+
import net.neoforged.neoforge.network.connection.ConnectionUtils;
20+
import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent;
21+
import net.neoforged.neoforge.network.registration.IPayloadRegistrar;
1722
import net.neoforged.network.NetworkDirection;
1823
import net.neoforged.network.NetworkRegistry;
1924
import net.neoforged.network.PacketDistributor;
@@ -24,27 +29,20 @@
2429

2530
public class APNetworking {
2631
private static final String PROTOCOL_VERSION = ModLoadingContext.get().getActiveContainer().getModInfo().getVersion().toString();
27-
private static final SimpleChannel NETWORK_CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(AdvancedPeripherals.MOD_ID, "main_channel"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
2832
private static int id = 0;
2933

3034
public static void init() {
3135
registerServerToClient(ToastToClientPacket.class, ToastToClientPacket::decode);
3236
}
3337

34-
public static <MSG extends IPacket> void registerServerToClient(Class<MSG> packet, Function<FriendlyByteBuf, MSG> decode) {
35-
NETWORK_CHANNEL.registerMessage(id++, packet, IPacket::encode, decode, IPacket::handle, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
36-
}
38+
@SubscribeEvent
39+
public static void register(final RegisterPayloadHandlerEvent event) {
40+
final IPayloadRegistrar registrar = event.registrar(AdvancedPeripherals.MOD_ID)
41+
.versioned(PROTOCOL_VERSION)
42+
.common(AdvancedPeripherals.getRL("toasttoclient"), ToastToClientPacket::decode, IPacket::handlePacket)
43+
.optional();
3744

38-
public static <MSG extends IPacket> void registerClientToServer(Class<MSG> packet, Function<FriendlyByteBuf, MSG> decode) {
39-
NETWORK_CHANNEL.registerMessage(id++, packet, IPacket::encode, decode, IPacket::handle, Optional.of(NetworkDirection.PLAY_TO_SERVER));
40-
}
4145

42-
/**
43-
* Sends a packet to the server.<p>
44-
* Must be called Client side.
45-
*/
46-
public static void sendToServer(Object msg) {
47-
NETWORK_CHANNEL.sendToServer(msg);
4846
}
4947

5048
/**
Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
package de.srendi.advancedperipherals.network.base;
22

33
import net.minecraft.network.FriendlyByteBuf;
4-
import net.neoforged.network.NetworkEvent;
4+
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
5+
import net.neoforged.neoforge.network.handling.IPayloadContext;
6+
import net.neoforged.neoforge.network.handling.IPayloadHandler;
57

6-
import java.util.function.Supplier;
8+
public interface IPacket<T extends IPacket<?> & CustomPacketPayload> extends IPayloadHandler<T> {
79

8-
public interface IPacket {
9-
10-
static <MSG extends IPacket> void handle(MSG message, Supplier<NetworkEvent.Context> context) {
11-
NetworkEvent.Context ctx = context.get();
12-
ctx.enqueueWork(() -> message.handle(ctx));
13-
ctx.setPacketHandled(true);
10+
static <MSG extends IPacket<?>> void handlePacket(MSG message) {
1411
}
1512

16-
void handle(NetworkEvent.Context context);
17-
1813
void encode(FriendlyByteBuf buffer);
1914

2015
}

src/main/java/de/srendi/advancedperipherals/network/toclient/ToastToClientPacket.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
import de.srendi.advancedperipherals.network.base.IPacket;
66
import net.minecraft.network.FriendlyByteBuf;
77
import net.minecraft.network.chat.Component;
8+
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
9+
import net.minecraft.resources.ResourceLocation;
810
import net.neoforged.fml.loading.FMLEnvironment;
11+
import net.neoforged.neoforge.network.handling.IPayloadContext;
912
import net.neoforged.network.NetworkEvent;
13+
import org.jetbrains.annotations.NotNull;
1014

11-
public class ToastToClientPacket implements IPacket {
15+
public class ToastToClientPacket implements IPacket<ToastToClientPacket>, CustomPacketPayload {
1216

1317
private final Component title;
1418
private final Component component;
@@ -19,7 +23,22 @@ public ToastToClientPacket(Component title, Component component) {
1923
}
2024

2125
@Override
22-
public void handle(NetworkEvent.Context context) {
26+
public void encode(FriendlyByteBuf buffer) {
27+
buffer.writeComponent(this.title);
28+
buffer.writeComponent(this.component);
29+
}
30+
31+
public static ToastToClientPacket decode(FriendlyByteBuf buffer) {
32+
return new ToastToClientPacket(buffer.readComponent(), buffer.readComponent());
33+
}
34+
35+
36+
/**
37+
* @param payload The payload.
38+
* @param context The context.
39+
*/
40+
@Override
41+
public void handle(@NotNull ToastToClientPacket payload, @NotNull IPayloadContext context) {
2342
// Should in the theory not happen, but safe is safe.
2443
if (!FMLEnvironment.dist.isClient()) {
2544
AdvancedPeripherals.debug("Tried to display toasts on the server, aborting.");
@@ -29,12 +48,13 @@ public void handle(NetworkEvent.Context context) {
2948
}
3049

3150
@Override
32-
public void encode(FriendlyByteBuf buffer) {
51+
public void write(@NotNull FriendlyByteBuf buffer) {
3352
buffer.writeComponent(this.title);
3453
buffer.writeComponent(this.component);
3554
}
3655

37-
public static ToastToClientPacket decode(FriendlyByteBuf buffer) {
38-
return new ToastToClientPacket(buffer.readComponent(), buffer.readComponent());
56+
@Override
57+
public @NotNull ResourceLocation id() {
58+
return AdvancedPeripherals.getRL("toasttoclient");
3959
}
4060
}

0 commit comments

Comments
 (0)