Skip to content

Commit

Permalink
fix server issues
Browse files Browse the repository at this point in the history
  • Loading branch information
Thepigcat76 committed Jul 18, 2024
1 parent cb1e33d commit b20fda2
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 61 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ configurations {

dependencies {
implementation "net.neoforged:neoforge:${neo_version}"
implementation "curse.maven:curios-1037991:5441959"
implementation "curse.maven:curios-1037991:5476603"
runtimeOnly("mezz.jei:jei-1.21-neoforge:${jei_version}")
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ mod_name=Modular Angel Ring

mod_license=All Rights Reserved

mod_version=1.0.5
mod_version=1.0.6

mod_group_id=com.leclowndu93150.modular_angelring

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.leclowndu93150.modular_angelring.events;

import com.leclowndu93150.modular_angelring.AngelRingMain;
import com.leclowndu93150.modular_angelring.common.AngelRingModules;
import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent;
import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload;
import com.leclowndu93150.modular_angelring.registry.DataComponentRegistry;
import com.leclowndu93150.modular_angelring.registry.ItemRegistry;
import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
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.InputEvent;
import net.neoforged.neoforge.network.PacketDistributor;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;

import java.util.Optional;

@EventBusSubscriber(modid = AngelRingMain.MODID, value = Dist.CLIENT)
public class AngelRingClientEvents {
@SubscribeEvent
public static void onKey(InputEvent.Key event) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
if (slotResult.isPresent()) {
ItemStack angelRingStack = slotResult.get().stack();
EnabledModifiersComponent data = angelRingStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY);
Level level = player.level();
if (KeyBindRegistry.INERTIA_MODULE.get().consumeClick() && AngelRingModules.getInertiaModifier(angelRingStack)) {
PacketDistributor.sendToServer(new KeyPressedPayload(0));
// Needs to be inverted, since the data component has not yet synced to the client
if (!data.inertiaEnabled()) {
player.displayClientMessage(Component.literal("Inertia Module: Enabled").withStyle(ChatFormatting.GREEN), true);
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f);
} else {
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 (KeyBindRegistry.SPEED_MODULE.get().consumeClick() && angelRingStack.has(DataComponentRegistry.SPEED_MODIFIER)) {
PacketDistributor.sendToServer(new KeyPressedPayload(1));
// Needs to be inverted, since the data component has not yet synced to the client
if (!data.speedModifierEnabled()) {
player.displayClientMessage(Component.literal("Speed Module: Enabled").withStyle(ChatFormatting.GREEN), true);
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f);
} else {
player.displayClientMessage(Component.literal("Speed 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);
}
}
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,31 @@

import com.leclowndu93150.modular_angelring.AngelRingMain;
import com.leclowndu93150.modular_angelring.common.AngelRingItem;
import com.leclowndu93150.modular_angelring.common.AngelRingModules;
import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent;
import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload;
import com.leclowndu93150.modular_angelring.networking.PayloadActions;
import com.leclowndu93150.modular_angelring.registry.DataComponentRegistry;
import com.leclowndu93150.modular_angelring.registry.ItemRegistry;
import com.leclowndu93150.modular_angelring.registry.KeyBindRegistry;
import com.leclowndu93150.modular_angelring.utils.FlightSpeedPercentage;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
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.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.client.event.InputEvent;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
import net.neoforged.neoforge.network.PacketDistributor;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;

Expand All @@ -29,7 +36,7 @@

@EventBusSubscriber(modid = AngelRingMain.MODID)
public class AngelRingEvents {
@SubscribeEvent(priority = EventPriority.LOW)
@SubscribeEvent
public static void setRingBreakSpeed(PlayerEvent.BreakSpeed event) {
Player player = event.getEntity();
Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
Expand All @@ -45,7 +52,7 @@ public static void setRingBreakSpeed(PlayerEvent.BreakSpeed event) {
}
}

@SubscribeEvent(priority = EventPriority.LOW)
@SubscribeEvent
public static void stopDrift(PlayerTickEvent.Pre event) {
Player player = event.getEntity();
Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
Expand All @@ -63,7 +70,7 @@ public static void stopDrift(PlayerTickEvent.Pre event) {
}
}

@SubscribeEvent(priority = EventPriority.LOW)
@SubscribeEvent
public static void onPlayerTick(PlayerTickEvent.Pre event) {
AngelRingItem.tickPlayer(event.getEntity());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.NotNull;

/**
* @param key 0 = inertia, 1 = speed
*/
public record KeyPressedPayload(int key) implements CustomPacketPayload {
public static final Type<KeyPressedPayload> TYPE = new Type<>(ResourceLocation.fromNamespaceAndPath(AngelRingMain.MODID, "keypressed_payload"));
public static final StreamCodec<RegistryFriendlyByteBuf, KeyPressedPayload> STREAM_CODEC = StreamCodec.composite(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ public static void keyPressedAction(KeyPressedPayload payload, IPayloadContext c
if (slotResult.isPresent()) {
ItemStack itemStack = slotResult.get().stack();
EnabledModifiersComponent data = itemStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY);
if (key == KeyBindRegistry.INERTIA_MODULE.get().getKey().getValue()) {
if (key == 0) {
itemStack.set(DataComponentRegistry.MODIFIERS_ENABLED,
new EnabledModifiersComponent(!data.inertiaEnabled(), data.speedModifierEnabled(), data.miningEnabled()));
} else if (key == KeyBindRegistry.SPEED_MODULE.get().getKey().getValue()) {
} else if (key == 1) {
itemStack.set(DataComponentRegistry.MODIFIERS_ENABLED,
new EnabledModifiersComponent(data.inertiaEnabled(), !data.speedModifierEnabled(), data.miningEnabled()));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,21 @@
package com.leclowndu93150.modular_angelring.registry;

import com.leclowndu93150.modular_angelring.common.AngelRingModules;
import com.leclowndu93150.modular_angelring.common.EnabledModifiersComponent;
import com.leclowndu93150.modular_angelring.networking.KeyPressedPayload;
import com.leclowndu93150.modular_angelring.networking.NoKeyPressedPayload;
import com.leclowndu93150.modular_angelring.networking.PayloadActions;
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.nbt.CompoundTag;
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;
import net.neoforged.neoforge.common.util.Lazy;
import net.neoforged.neoforge.network.PacketDistributor;
import org.lwjgl.glfw.GLFW;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;

import java.util.Optional;

import static com.leclowndu93150.modular_angelring.AngelRingMain.MODID;

Expand All @@ -42,52 +27,14 @@ public class KeyBindRegistry {
public static final Lazy<KeyMapping> SPEED_MODULE = Lazy.of(() -> new KeyMapping(
"Speed Module", InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_K, "Modular Angel Ring"));


@SubscribeEvent
public static void registerBindings(RegisterKeyMappingsEvent event) {
event.register(SPEED_MODULE.get());
event.register(INERTIA_MODULE.get());
NeoForge.EVENT_BUS.addListener(KeyBindRegistry::onKey);
}

public static void onKey(InputEvent.Key event) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
if (slotResult.isPresent()) {
ItemStack angelRingStack = slotResult.get().stack();
EnabledModifiersComponent data = angelRingStack.getOrDefault(DataComponentRegistry.MODIFIERS_ENABLED, EnabledModifiersComponent.EMPTY);
Level level = player.level();
if (INERTIA_MODULE.get().consumeClick() && AngelRingModules.getInertiaModifier(angelRingStack)) {
PacketDistributor.sendToServer(new KeyPressedPayload(INERTIA_MODULE.get().getKey().getValue()));
// Needs to be inverted, since the data component has not yet synced to the client
if (!data.inertiaEnabled()) {
player.displayClientMessage(Component.literal("Inertia Module: Enabled").withStyle(ChatFormatting.GREEN), true);
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f);
} else {
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)) {
PacketDistributor.sendToServer(new KeyPressedPayload(SPEED_MODULE.get().getKey().getValue()));
// Needs to be inverted, since the data component has not yet synced to the client
if (!data.speedModifierEnabled()) {
player.displayClientMessage(Component.literal("Speed Module: Enabled").withStyle(ChatFormatting.GREEN), true);
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.01f);
} else {
player.displayClientMessage(Component.literal("Speed 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);
}
}
}

}

@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT)
public static class clientGameStuff {
public static class Client {
@SubscribeEvent
public static void clientTick(ClientTickEvent.Post event) {
Minecraft mc = Minecraft.getInstance();
Expand Down

0 comments on commit b20fda2

Please sign in to comment.