Skip to content

Commit

Permalink
1.20.4 networking work, I still need to work on a bit, I don't unders…
Browse files Browse the repository at this point in the history
…tand every change yet

This commit mainly exists because I need to switch machines and for a 1.20.1 merge
  • Loading branch information
SirEndii committed Nov 21, 2024
1 parent c2bc0a0 commit bf26670
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 43 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ dependencies {
runtimeOnly "top.theillusivec4.curios:curios-forge:${curios_version}"

// Refined Storage
implementation "com.refinedmods:refinedstorage:${refinedstorage_version}"
//implementation "com.refinedmods:refinedstorage:${refinedstorage_version}"

// AE2 Things
compileOnly "curse.maven:ae2things-609977:${ae2things_version}-sources"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.registries.DeferredHolder;

import java.util.Collection;
import java.util.Set;
Expand All @@ -16,7 +17,7 @@ public class APCreativeTab {

public static void populateCreativeTabBuilder(CreativeModeTab.Builder builder) {
builder.displayItems((set, out) -> {
Registration.ITEMS.().stream().map(RegistryObject::get).forEach(out::accept);
Registration.ITEMS.getEntries().stream().map(DeferredHolder::get).forEach(out::accept);
out.acceptAll(pocketUpgrade(CCRegistration.ID.COLONY_POCKET));
out.acceptAll(pocketUpgrade(CCRegistration.ID.CHATTY_POCKET));
out.acceptAll(pocketUpgrade(CCRegistration.ID.PLAYER_POCKET));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package de.srendi.advancedperipherals.client;

import dan200.computercraft.shared.network.NetworkMessage;
import dan200.computercraft.shared.network.server.ServerNetworkContext;
import de.srendi.advancedperipherals.network.base.IPacket;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.PacketListener;
import net.minecraft.network.protocol.Packet;
import org.jetbrains.annotations.NotNull;

public final class ClientNetworking {
private ClientNetworking() {
}

public static void sendToServer(IPacket<?> message) {
ClientPacketListener connection = Minecraft.getInstance().getConnection();
if (connection != null) {
connection.send(new Packet<>() {
@Override
public void write(@NotNull FriendlyByteBuf pBuffer) {
message.encode(pBuffer);
}

@Override
public void handle(@NotNull PacketListener pHandler) {
}
});
}

}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package de.srendi.advancedperipherals.client;

import net.minecraft.client.KeyMapping;
import net.neoforged.client.event.RegisterKeyMappingsEvent;
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
import org.lwjgl.glfw.GLFW;

public class KeyBindings {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.neoforged.bus.api.IEventBus;

import net.neoforged.neoforge.registries.DeferredRegister;

public class Registration {

public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(Registries.BLOCK, AdvancedPeripherals.MOD_ID);
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(Registries.ITEM, AdvancedPeripherals.MOD_ID);
public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(AdvancedPeripherals.MOD_ID);
public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(AdvancedPeripherals.MOD_ID);
public static final DeferredRegister<BlockEntityType<?>> TILE_ENTITIES = DeferredRegister.create(Registries.BLOCK_ENTITY_TYPE, AdvancedPeripherals.MOD_ID);
public static final DeferredRegister<MenuType<?>> CONTAINER_TYPES = DeferredRegister.create(Registries.MENU, AdvancedPeripherals.MOD_ID);
public static final DeferredRegister<PoiType> POI_TYPES = DeferredRegister.create(Registries.POINT_OF_INTEREST_TYPE, AdvancedPeripherals.MOD_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,10 @@
import net.minecraft.world.level.block.StructureBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.*;
import net.neoforged.common.ForgeHooks;
import net.neoforged.common.ForgeMod;
import net.neoforged.common.util.FakePlayer;
import net.neoforged.event.ForgeEventFactory;
import net.neoforged.event.entity.player.PlayerInteractEvent;
import net.neoforged.eventbus.api.Event;
import net.neoforged.bus.api.Event;
import net.neoforged.neoforge.common.CommonHooks;
import net.neoforged.neoforge.common.util.FakePlayer;
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

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

public APFakePlayer(ServerLevel world, Entity owner, GameProfile profile) {
super(world, profile != null && profile.isComplete() ? profile : PROFILE);
super(world, PROFILE);
if (owner != null) {
setCustomName(owner.getName());
this.owner = new WeakReference<>(owner);
Expand Down Expand Up @@ -220,7 +218,7 @@ public InteractionResult useOnFilteredEntity(Predicate<Entity> filter) {
public InteractionResult useOnSpecificEntity(@NotNull Entity entity, HitResult result) {
InteractionResult simpleInteraction = interactOn(entity, InteractionHand.MAIN_HAND);
if (simpleInteraction == InteractionResult.SUCCESS) return simpleInteraction;
if (ForgeHooks.onInteractEntityAt(this, entity, result.getLocation(), InteractionHand.MAIN_HAND) != null) {
if (CommonHooks.onInteractEntityAt(this, entity, result.getLocation(), InteractionHand.MAIN_HAND) == InteractionResult.FAIL) {
return InteractionResult.FAIL;
}

Expand Down Expand Up @@ -276,7 +274,7 @@ public InteractionResult use(boolean skipEntity, boolean skipBlock, @Nullable Pr
ItemStack copyBeforeUse = stack.copy();
InteractionResult result = stack.useOn(new UseOnContext(level(), this, InteractionHand.MAIN_HAND, stack, blockHit));
if (stack.isEmpty()) {
ForgeEventFactory.onPlayerDestroyItem(this, copyBeforeUse, InteractionHand.MAIN_HAND);
CommonHooks.onPlayerDestroyItem(this, copyBeforeUse, InteractionHand.MAIN_HAND);
}
return result;
} else if (hit instanceof EntityHitResult entityHit) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import de.srendi.advancedperipherals.AdvancedPeripherals;
import de.srendi.advancedperipherals.network.base.IPacket;
import de.srendi.advancedperipherals.network.toclient.ToastToClientPacket;
import net.minecraft.client.gui.components.toasts.Toast;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
Expand All @@ -12,8 +13,12 @@
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.common.util.FakePlayer;
import net.neoforged.fml.ModLoadingContext;
import net.neoforged.neoforge.network.connection.ConnectionUtils;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlerEvent;
import net.neoforged.neoforge.network.registration.IPayloadRegistrar;
import net.neoforged.network.NetworkDirection;
import net.neoforged.network.NetworkRegistry;
import net.neoforged.network.PacketDistributor;
Expand All @@ -24,27 +29,20 @@

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

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

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

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

/**
* Sends a packet to the server.<p>
* Must be called Client side.
*/
public static void sendToServer(Object msg) {
NETWORK_CHANNEL.sendToServer(msg);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
package de.srendi.advancedperipherals.network.base;

import net.minecraft.network.FriendlyByteBuf;
import net.neoforged.network.NetworkEvent;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import net.neoforged.neoforge.network.handling.IPayloadHandler;

import java.util.function.Supplier;
public interface IPacket<T extends IPacket<?> & CustomPacketPayload> extends IPayloadHandler<T> {

public interface IPacket {

static <MSG extends IPacket> void handle(MSG message, Supplier<NetworkEvent.Context> context) {
NetworkEvent.Context ctx = context.get();
ctx.enqueueWork(() -> message.handle(ctx));
ctx.setPacketHandled(true);
static <MSG extends IPacket<?>> void handlePacket(MSG message) {
}

void handle(NetworkEvent.Context context);

void encode(FriendlyByteBuf buffer);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
import de.srendi.advancedperipherals.network.base.IPacket;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import net.neoforged.network.NetworkEvent;
import org.jetbrains.annotations.NotNull;

public class ToastToClientPacket implements IPacket {
public class ToastToClientPacket implements IPacket<ToastToClientPacket>, CustomPacketPayload {

private final Component title;
private final Component component;
Expand All @@ -19,7 +23,22 @@ public ToastToClientPacket(Component title, Component component) {
}

@Override
public void handle(NetworkEvent.Context context) {
public void encode(FriendlyByteBuf buffer) {
buffer.writeComponent(this.title);
buffer.writeComponent(this.component);
}

public static ToastToClientPacket decode(FriendlyByteBuf buffer) {
return new ToastToClientPacket(buffer.readComponent(), buffer.readComponent());
}


/**
* @param payload The payload.
* @param context The context.
*/
@Override
public void handle(@NotNull ToastToClientPacket payload, @NotNull IPayloadContext context) {
// Should in the theory not happen, but safe is safe.
if (!FMLEnvironment.dist.isClient()) {
AdvancedPeripherals.debug("Tried to display toasts on the server, aborting.");
Expand All @@ -29,12 +48,13 @@ public void handle(NetworkEvent.Context context) {
}

@Override
public void encode(FriendlyByteBuf buffer) {
public void write(@NotNull FriendlyByteBuf buffer) {
buffer.writeComponent(this.title);
buffer.writeComponent(this.component);
}

public static ToastToClientPacket decode(FriendlyByteBuf buffer) {
return new ToastToClientPacket(buffer.readComponent(), buffer.readComponent());
@Override
public @NotNull ResourceLocation id() {
return AdvancedPeripherals.getRL("toasttoclient");
}
}

0 comments on commit bf26670

Please sign in to comment.