Skip to content

Commit

Permalink
Networking for Inertia Module
Browse files Browse the repository at this point in the history
Leclowndu93150 committed Jul 17, 2024
1 parent 862e2c2 commit 75325e6
Showing 9 changed files with 79 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -5,6 +5,8 @@
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;

import java.util.List;
Original file line number Diff line number Diff line change
@@ -5,6 +5,8 @@
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;

import java.util.List;
@@ -19,7 +21,6 @@ public int getMaxStackSize(ItemStack stack) {
return 1;
}


@Override
public void appendHoverText(@NotNull ItemStack pStack, @NotNull TooltipContext pContext, List<Component> pTooltipComponents, @NotNull TooltipFlag pTooltipFlag) {
pTooltipComponents.add(Component.literal("Allows you to mine as fast as ground speed").withStyle(ChatFormatting.GRAY));
Original file line number Diff line number Diff line change
@@ -7,6 +7,8 @@
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import org.jetbrains.annotations.NotNull;

import java.util.List;
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
import com.leclowndu93150.modular_angelring.AngelRingMain;
import com.leclowndu93150.modular_angelring.common.AngelRingItem;
import com.leclowndu93150.modular_angelring.networking.PayloadActions;
import com.leclowndu93150.modular_angelring.networking.noKeyPressedPayload;
import com.leclowndu93150.modular_angelring.registry.DataComponentRegistry;
import com.leclowndu93150.modular_angelring.registry.ItemRegistry;
import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry;
@@ -14,15 +15,18 @@
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.EntityEvent;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.Vec3;
import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.entity.living.LivingBreatheEvent;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
import net.neoforged.neoforge.event.tick.EntityTickEvent;
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;
@@ -56,9 +60,8 @@ public static void stopDrift(PlayerTickEvent.Pre event) {
if (slotResult.isPresent()) {
ItemStack angelRingStack = slotResult.get().stack();
Vec3 motion = player.getDeltaMovement();
Options opt = Minecraft.getInstance().options;
if (player.getAbilities().flying && getInertiaModifier(angelRingStack) && PayloadActions.inertiaEnabled) {
if (!opt.keyUp.isDown() && !opt.keyDown.isDown() && !opt.keyLeft.isDown() && !opt.keyRight.isDown()) {
if (PayloadActions.isNoKeysPressed) {
if (motion.x != 0 || motion.z != 0) {
player.setDeltaMovement(0, motion.y, 0);
}
@@ -101,4 +104,5 @@ public static void newFlightSpeed(PlayerInteractEvent.RightClickItem event) {
public static void onPlayerTick(PlayerTickEvent.Pre event) {
AngelRingItem.tickPlayer(event.getEntity());
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.leclowndu93150.modular_angelring.networking;

import com.leclowndu93150.modular_angelring.AngelRingMain;
import com.leclowndu93150.modular_angelring.render.AngelRingRenderer;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
Original file line number Diff line number Diff line change
@@ -12,5 +12,6 @@ public final class NetworkingEvents {
public static void registerPayloads(RegisterPayloadHandlersEvent event) {
PayloadRegistrar registrar = event.registrar(AngelRingMain.MODID);
registrar.playToServer(KeyPressedPayload.TYPE, KeyPressedPayload.STREAM_CODEC, PayloadActions::keyPressedAction);
registrar.playToServer(noKeyPressedPayload.TYPE, noKeyPressedPayload.STREAM_CODEC, PayloadActions::noKeyPressedAction);
}
}
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@
public final class PayloadActions {
public static boolean inertiaEnabled = true;
public static boolean speedEnabled = true;
public static boolean isNoKeysPressed = false;

public static void keyPressedAction(KeyPressedPayload payload, IPayloadContext ctx) {
// SERVER-SIDE
@@ -22,4 +23,9 @@ public static void keyPressedAction(KeyPressedPayload payload, IPayloadContext c
speedEnabled = !speedEnabled;
}
}

public static void noKeyPressedAction(noKeyPressedPayload payload, IPayloadContext ctx) {
// SERVER-SIDE
isNoKeysPressed = payload.pressed();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.leclowndu93150.modular_angelring.networking;

import com.leclowndu93150.modular_angelring.AngelRingMain;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.NotNull;

public record noKeyPressedPayload(boolean pressed) implements CustomPacketPayload {
public static final Type<noKeyPressedPayload> TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(AngelRingMain.MODID, "no_keypressed_payload"));
public static final StreamCodec<RegistryFriendlyByteBuf, noKeyPressedPayload> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.BOOL,
noKeyPressedPayload::pressed,
noKeyPressedPayload::new
);

@Override
public @NotNull Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}
Original file line number Diff line number Diff line change
@@ -3,18 +3,22 @@
import com.leclowndu93150.modular_angelring.common.AngelRingModules;
import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload;
import com.leclowndu93150.modular_angelring.networking.PayloadActions;
import com.leclowndu93150.modular_angelring.networking.noKeyPressedPayload;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.ChatFormatting;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.client.event.ClientTickEvent;
import net.neoforged.neoforge.client.event.InputEvent;
import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent;
import net.neoforged.neoforge.common.NeoForge;
@@ -27,8 +31,9 @@
import java.util.Optional;

import static com.leclowndu93150.modular_angelring.AngelRingMain.MODID;
import static com.leclowndu93150.modular_angelring.common.AngelRingModules.getInertiaModifier;

@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD)
@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class KeyBindRegistry {
public static final Lazy<KeyMapping> INERTIA_MODULE = Lazy.of(() -> new KeyMapping(
"Inertia Module", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_L, "Modular Angel Ring"));
@@ -64,6 +69,7 @@ public static void onKey(InputEvent.Key event) {
player.displayClientMessage(Component.literal("Inertia Module: Disabled").withStyle(ChatFormatting.RED), true);
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f);
}

}
if (SPEED_MODULE.get().consumeClick() && angelRingStack.has(DataComponentRegistry.SPEED_MODIFIER)) {
speedEnabled = !speedEnabled;
@@ -79,4 +85,34 @@ public static void onKey(InputEvent.Key event) {
}

}

public static boolean isNoKeysPressed = false;

@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT)
public static class clientGameStuff{
@SubscribeEvent
public static void clientTick(ClientTickEvent.Post event){
Options opt = Minecraft.getInstance().options;
Minecraft mc = Minecraft.getInstance();
if(mc.level != null){
if(mc.level.isClientSide()){
if (!opt.keyUp.isDown() && !opt.keyDown.isDown() && !opt.keyLeft.isDown() && !opt.keyRight.isDown()) {
if (isNoKeysPressed){
mc.player.sendSystemMessage(Component.literal("No keys pressed").withStyle(ChatFormatting.RED));
return;
}else{
mc.player.sendSystemMessage(Component.literal("No keys pressed but it's false so sending packet").withStyle(ChatFormatting.RED));
PacketDistributor.sendToServer(new noKeyPressedPayload(true));
isNoKeysPressed = true;
}
} else if (isNoKeysPressed){
mc.player.sendSystemMessage(Component.literal("Keys pressed but it's true so sending packet").withStyle(ChatFormatting.GREEN));
PacketDistributor.sendToServer(new noKeyPressedPayload(false));
isNoKeysPressed = false;
}
}
}
}
}

}

0 comments on commit 75325e6

Please sign in to comment.