Skip to content

Commit

Permalink
Progress !!!
Browse files Browse the repository at this point in the history
  • Loading branch information
Leclowndu93150 committed Jun 9, 2024
1 parent 634b096 commit 8384821
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
package com.leclowndu93150.flightutils;

import com.leclowndu93150.flightutils.items.AngelRingItem;
import com.leclowndu93150.flightutils.common.AngelRingItem;
import com.leclowndu93150.flightutils.registry.CreativeTabRegistry;
import com.leclowndu93150.flightutils.registry.DataComponentRegistry;
import com.leclowndu93150.flightutils.registry.ItemRegistry;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.registries.DeferredRegister;

@Mod(FlightUtilsMain.MODID)
public class FlightUtilsMain {
public static final String MODID = "flightutils";



public FlightUtilsMain(IEventBus modEventBus) {
CreativeTabRegistry.CREATIVE_MODE_TABS.register(modEventBus);
ItemRegistry.ITEMS.register(modEventBus);
DataComponentRegistry.COMPONENTS.register(modEventBus);
modEventBus.addListener(AngelRingItem::registerCapabilities);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
package com.leclowndu93150.flightutils.items;
package com.leclowndu93150.flightutils.common;

import com.leclowndu93150.flightutils.registry.ItemRegistry;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
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.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.event.entity.player.PlayerEvent;
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
import org.jetbrains.annotations.NotNull;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.CuriosCapability;
import top.theillusivec4.curios.api.SlotContext;
import top.theillusivec4.curios.api.type.capability.ICurio;

import static com.leclowndu93150.flightutils.common.AngelRingModules.getInertiaModifier;
import static com.leclowndu93150.flightutils.common.AngelRingModules.getMiningSpeedModifier;
import static com.mojang.blaze3d.platform.InputConstants.isKeyDown;

public class AngelRingItem extends Item {

public AngelRingItem(Properties pProperties) {
Expand All @@ -41,11 +53,30 @@ private static void stopFlight(Player player) {
}
}

@Override
public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) {
ItemStack itemStack = pPlayer.getMainHandItem();
pPlayer.sendSystemMessage(Component.literal(itemStack.getTags().toList().toString()));
return super.use(pLevel, pPlayer, pUsedHand);
@SubscribeEvent(priority = EventPriority.LOW)
public void setRingBreakSpeed(PlayerEvent.BreakSpeed event) {
ItemStack angelRingStack = CuriosApi.getCuriosHelper().getCuriosHandler(event.getEntity()).get().findFirstCurio(ItemRegistry.ANGEL_RING.get()).get().stack();
float newDigSpeed = event.getOriginalSpeed();
if (getMiningSpeedModifier(angelRingStack) && !event.getEntity().onGround()){
newDigSpeed *= 5f;
}
if (newDigSpeed != event.getOriginalSpeed()) {
event.setNewSpeed(newDigSpeed);
}
}

@SubscribeEvent(priority = EventPriority.LOW)
public void stopDrift(PlayerTickEvent event) {
ItemStack angelRingStack = CuriosApi.getCuriosHelper().getCuriosHandler(event.getEntity()).get().findFirstCurio(ItemRegistry.ANGEL_RING.get()).get().stack();
Vec3 motion = event.getEntity().getDeltaMovement();
if(event.getEntity().getAbilities().flying && getInertiaModifier(angelRingStack)){
Options opt = Minecraft.getInstance().options;
if (!opt.keyUp.isDown() && !opt.keyDown.isDown() && !opt.keyLeft.isDown() && !opt.keyRight.isDown()) {
if (motion.x != 0 || motion.z != 0) {
event.getEntity().setDeltaMovement(0, motion.y, 0);
}
}
}
}

public static void registerCapabilities(final RegisterCapabilitiesEvent evt) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.leclowndu93150.flightutils.common;

import com.leclowndu93150.flightutils.registry.DataComponentRegistry;
import net.minecraft.world.item.ItemStack;


public class AngelRingModules {

public static void setMiningSpeedModifier(ItemStack stack) {
stack.set(DataComponentRegistry.MINING_MODIFIER, true);
}

public static Boolean getMiningSpeedModifier(ItemStack stack) {
return stack.getOrDefault(DataComponentRegistry.MINING_MODIFIER, false);
}

public static void setInertiaModifier(ItemStack stack) {
stack.set(DataComponentRegistry.INERTIA_MODIFIER, true);
}

public static Boolean getInertiaModifier(ItemStack stack) {
return stack.getOrDefault(DataComponentRegistry.INERTIA_MODIFIER, false);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.leclowndu93150.flightutils.registry;

import com.mojang.serialization.Codec;
import net.minecraft.core.component.DataComponentType;
import net.minecraft.network.codec.ByteBufCodecs;
import net.neoforged.neoforge.registries.DeferredRegister;

import java.util.function.Supplier;

import static com.leclowndu93150.flightutils.FlightUtilsMain.MODID;

public class DataComponentRegistry {

public static final DeferredRegister.DataComponents COMPONENTS = DeferredRegister.createDataComponents(MODID);

public static final Supplier<DataComponentType<Boolean>> INERTIA_MODIFIER = COMPONENTS.registerComponentType("inertia_modifier",
builder -> builder.persistent(Codec.BOOL).networkSynchronized(ByteBufCodecs.BOOL));

public static final Supplier<DataComponentType<Boolean>> MINING_MODIFIER = COMPONENTS.registerComponentType("mining_modifier",
builder -> builder.persistent(Codec.BOOL).networkSynchronized(ByteBufCodecs.BOOL));
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.leclowndu93150.flightutils.registry;

import com.leclowndu93150.flightutils.items.AngelRingItem;
import com.leclowndu93150.flightutils.common.AngelRingItem;
import net.minecraft.world.item.Item;
import net.neoforged.neoforge.registries.DeferredItem;
import net.neoforged.neoforge.registries.DeferredRegister;
Expand All @@ -11,7 +11,7 @@ public class ItemRegistry {

public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID);

public static final DeferredItem<Item> ANGEL_RING = ITEMS.register("angel_ring", () -> new AngelRingItem(new Item.Properties()));
public static final DeferredItem<Item> ANGEL_RING = ITEMS.register("angel_ring", () -> new AngelRingItem(new Item.Properties().component(DataComponentRegistry.INERTIA_MODIFIER, false).component(DataComponentRegistry.MINING_MODIFIER, false)));

public static final DeferredItem<Item> INERTIA_MODULE = ITEMS.registerSimpleItem("inertia_module");

Expand Down

0 comments on commit 8384821

Please sign in to comment.