Skip to content

Commit

Permalink
Night Vision Module
Browse files Browse the repository at this point in the history
Leclowndu93150 committed Jul 31, 2024
1 parent 20a6883 commit 78adfcd
Showing 27 changed files with 260 additions and 42 deletions.
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -94,6 +94,12 @@ dependencies {
runtimeOnly("mezz.jei:jei-1.21-neoforge:${jei_version}")
}

minecraft {
accessTransformers {
file('src/main/resources/META-INF/accesstransformer.cfg')
}
}


// This block of code expands all declared replace properties in the specified resource targets.
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@ mod_name=Modular Angel Ring

mod_license=All Rights Reserved

mod_version=1.2.2
mod_version=1.3.0

mod_group_id=com.leclowndu93150.modular_angelring

Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
// 1.21 2024-07-21T15:40:26.5492721 Recipes
// 1.21 2024-07-30T20:04:02.1024129 Recipes
f17592b4c061b661cf746015e75f22fcf01645b6 data/modular_angelring/advancement/recipes/misc/shapeless/bat_wings.json
60e10bfceda809b0d29bccfbf515bbc8108d0a36 data/modular_angelring/advancement/recipes/misc/shapeless/big_dragon_wings.json
77aaca00c49d23276780e641d94ace386e07d571 data/modular_angelring/advancement/recipes/misc/shapeless/blue_dragon_wings.json
04a06356d896629269e200ddbdf34d5e4af4299d data/modular_angelring/advancement/recipes/misc/shapeless/butterfly_wings.json
aa6d3293522b91fdd14f9a7eb7474be41355e17c data/modular_angelring/advancement/recipes/misc/shapeless/dragon_wings.json
3f8fa5cfcc6f4e51185066f9f6515effbb6c9383 data/modular_angelring/advancement/recipes/misc/shapeless/fishron_wings.json
687ed025f23a6adfacba4eae9c34b0b8cdbdae7c data/modular_angelring/advancement/recipes/misc/shapeless/golden_wings.json
65202209cc88b99ab965dc01f3f760800da0120e data/modular_angelring/advancement/recipes/misc/shapeless/gold_wings.json
00e147d4f016b3199064d4bfd84d7493e1232b37 data/modular_angelring/advancement/recipes/misc/smithing/bat_ring.json
4f655a562774fe3a1332f8dc87f6597706350a27 data/modular_angelring/advancement/recipes/misc/smithing/big_dragon_ring.json
2dacaefa20920ee8a0a84f0012869493fb66ccdf data/modular_angelring/advancement/recipes/misc/smithing/blue_dragon_ring.json
4ce2ea21e509be494bfe97fb18e5a63cfa6b2b1b data/modular_angelring/advancement/recipes/misc/smithing/butterfly_ring.json
c6c4decb45826dd77e59331251d5b79dd73f3ee5 data/modular_angelring/advancement/recipes/misc/smithing/dragon_ring.json
104a27e04c09bb21bf723ec64e73a0605ccd7227 data/modular_angelring/advancement/recipes/misc/smithing/fishron_ring.json
f92cd203cb2f209f45649bf11c5767900f9f412e data/modular_angelring/advancement/recipes/misc/smithing/golden_ring.json
3c49e4070752f43d72430b7853a509f4ccdc8fae data/modular_angelring/advancement/recipes/misc/smithing/gold_ring.json
029b5d630f07cd1c858cabae289779749780bb82 data/modular_angelring/advancement/recipes/misc/smithing/inertia_modifier.json
c3a202cab90b96fcfbca1c361ecda50bab394319 data/modular_angelring/advancement/recipes/misc/smithing/inertia_module.json
a0dc22764c73d9316bb0b85b29997d9365f7b45f data/modular_angelring/advancement/recipes/misc/smithing/mining_modifier.json
8237f8dcfbee2bdcb3d8e2b89edd7d5122120bfc data/modular_angelring/advancement/recipes/misc/smithing/mining_module.json
73977f566db2b9f06c8693b1fd13ef32ebd25084 data/modular_angelring/advancement/recipes/misc/smithing/night_vision_modifier.json
8f6ea5b210f341a655589504088eb0ebd0ef6a0d data/modular_angelring/advancement/recipes/misc/smithing/night_vision_module.json
c67e97befc317e7aa403b24548e0cb56bce37945 data/modular_angelring/advancement/recipes/misc/smithing/speed_modifier.json
60d0974c62d441b44fc6d767b4d0a3996c8bdbf3 data/modular_angelring/advancement/recipes/misc/smithing/speed_module.json
338211e946079ac219f667f012a1ec5407a1a021 data/modular_angelring/recipe/shapeless/bat_wings.json
26f324fa318e69fc366290b6b420d36cc8cb6422 data/modular_angelring/recipe/shapeless/big_dragon_wings.json
05a14336ea6244f3495c28f470f3dc7eb020243e data/modular_angelring/recipe/shapeless/blue_dragon_wings.json
c0f80736525f2a785fecc2676e0cd08369b2c16e data/modular_angelring/recipe/shapeless/butterfly_wings.json
1c4c361b74109b88806af2df77b19ba925e95785 data/modular_angelring/recipe/shapeless/dragon_wings.json
212c1f4fcd1edde5d17945571a4e1e2f45c69a92 data/modular_angelring/recipe/shapeless/fishron_wings.json
812a547bade21c6bb505ac8f1a3ac889459b4604 data/modular_angelring/recipe/shapeless/golden_wings.json
3b42d7b9986dfed67044555309f1de4ff0140669 data/modular_angelring/recipe/shapeless/gold_wings.json
7a40eeb1be907f2488bbcaa9144352ab72a55836 data/modular_angelring/recipe/smithing/bat_ring.json
1a54f7ac84c1294fdec1b1a20f8be1d6ae1cc78e data/modular_angelring/recipe/smithing/big_dragon_ring.json
157320876ad579ba776b5eeaf39410c1d8e2cc7b data/modular_angelring/recipe/smithing/blue_dragon_ring.json
1669692a6804987d19da46bb68b333bf32a736cf data/modular_angelring/recipe/smithing/butterfly_ring.json
af726588555948e0f0e6e4845b1dab4f6d49eb07 data/modular_angelring/recipe/smithing/dragon_ring.json
42384eb1e8b31b65931719f2f6ce00f4a52e1c44 data/modular_angelring/recipe/smithing/fishron_ring.json
d6169c70ce43550d661b37da27a0fa0477721504 data/modular_angelring/recipe/smithing/golden_ring.json
4024587a665571a880a0a1ccad9dd4893952329b data/modular_angelring/recipe/smithing/gold_ring.json
4a64dbc2945e0dc540683f0887cabe80f44f6b84 data/modular_angelring/recipe/smithing/inertia_modifier.json
c5dc2b2592e671c413a9a829934d4499e5d361a1 data/modular_angelring/recipe/smithing/inertia_module.json
d1a7a0ceb72cb10c980a74abad99a4dc9763577a data/modular_angelring/recipe/smithing/mining_modifier.json
f685d562402e5a1cc2005ab166d2c9b2d0a43c81 data/modular_angelring/recipe/smithing/mining_module.json
b95080909de0a567e64cf73bad4f9cba45d063b8 data/modular_angelring/recipe/smithing/night_vision_modifier.json
a583373da457971bb320680107353d2ea8a86fe7 data/modular_angelring/recipe/smithing/night_vision_module.json
cd4540c2177dc441f76ac5b854f48888b19dd510 data/modular_angelring/recipe/smithing/speed_modifier.json
79ab4bc8ccf70b42ce30c72323509331f6398a71 data/modular_angelring/recipe/smithing/speed_module.json
Original file line number Diff line number Diff line change
@@ -5,15 +5,15 @@
"conditions": {
"items": [
{
"items": "modular_angelring:angel_wings"
"items": "modular_angelring:angel_ring"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "modular_angelring:shapeless/fishron_wings"
"recipe": "modular_angelring:smithing/night_vision_modifier"
},
"trigger": "minecraft:recipe_unlocked"
}
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
"modular_angelring:shapeless/fishron_wings"
"modular_angelring:smithing/night_vision_modifier"
]
}
}
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
},
"has_the_recipe": {
"conditions": {
"recipe": "modular_angelring:smithing/fishron_ring"
"recipe": "modular_angelring:smithing/night_vision_module"
},
"trigger": "minecraft:recipe_unlocked"
}
@@ -26,7 +26,7 @@
],
"rewards": {
"recipes": [
"modular_angelring:smithing/fishron_ring"
"modular_angelring:smithing/night_vision_module"
]
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "modular_angelring:fishron_wings"
"item": "modular_angelring:night_vision_module"
},
"base": {
"item": "modular_angelring:angel_ring"
},
"result": {
"components": {
"minecraft:custom_model_data": 8,
"modular_angelring:wing_component": "FISHRON"
"modular_angelring:night_vision_modifier": true
},
"count": 1,
"id": "modular_angelring:angel_ring"
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "minecraft:golden_carrot"
},
"base": {
"item": "modular_angelring:blank_module"
},
"result": {
"count": 1,
"id": "modular_angelring:night_vision_module"
},
"template": []
}
Original file line number Diff line number Diff line change
@@ -144,6 +144,12 @@ public void appendHoverText(@NotNull ItemStack stack, @NotNull TooltipContext pC
if (stack.has(DataComponentRegistry.SPEED_MODIFIER) && !data.speedModifierEnabled()) {
pTooltipComponents.add(Component.literal("Speed Module: ").append(String.valueOf(FlightSpeedPercentage.speedToPercentage(AngelRingModules.getSpeedModifier(stack)))).append("%").withStyle(ChatFormatting.RED));
}
if (AngelRingModules.getNightVisionModifier(stack) && data.nightVisionEnabled()) {
pTooltipComponents.add(Component.literal("Night Vision Module: ").append("Enabled").withStyle(ChatFormatting.GREEN));
}
if (AngelRingModules.getNightVisionModifier(stack) && !data.nightVisionEnabled()) {
pTooltipComponents.add(Component.literal("Night Vision Module: ").append("Disabled").withStyle(ChatFormatting.RED));
}

super.appendHoverText(stack, pContext, pTooltipComponents, pTooltipFlag);
}
Original file line number Diff line number Diff line change
@@ -30,4 +30,12 @@ public static Float getSpeedModifier(ItemStack stack) {
return stack.getOrDefault(DataComponentRegistry.SPEED_MODIFIER, 0.02F );
}

public static void setNightVisionModifier(ItemStack stack) {
stack.set(DataComponentRegistry.NIGHT_VISION_MODIFIER, true);
}

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

}
Original file line number Diff line number Diff line change
@@ -9,13 +9,14 @@

import java.util.Objects;

public record EnabledModifiersComponent(boolean inertiaEnabled, boolean speedModifierEnabled, boolean miningEnabled) {
public static final EnabledModifiersComponent EMPTY = new EnabledModifiersComponent(false, false, false);
public record EnabledModifiersComponent(boolean inertiaEnabled, boolean speedModifierEnabled, boolean miningEnabled, boolean nightVisionEnabled) {
public static final EnabledModifiersComponent EMPTY = new EnabledModifiersComponent(false, false, false, false);

public static final MapCodec<EnabledModifiersComponent> CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group(
Codec.BOOL.fieldOf("inertia_enabled").forGetter(EnabledModifiersComponent::inertiaEnabled),
Codec.BOOL.fieldOf("speed_enabled").forGetter(EnabledModifiersComponent::speedModifierEnabled),
Codec.BOOL.fieldOf("mining_enabled").forGetter(EnabledModifiersComponent::miningEnabled)
Codec.BOOL.fieldOf("mining_enabled").forGetter(EnabledModifiersComponent::miningEnabled),
Codec.BOOL.fieldOf("night_vision_enabled").forGetter(EnabledModifiersComponent::nightVisionEnabled)
).apply(builder, EnabledModifiersComponent::new));
public static final StreamCodec<RegistryFriendlyByteBuf, EnabledModifiersComponent> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.BOOL,
@@ -24,18 +25,20 @@ public record EnabledModifiersComponent(boolean inertiaEnabled, boolean speedMod
EnabledModifiersComponent::speedModifierEnabled,
ByteBufCodecs.BOOL,
EnabledModifiersComponent::miningEnabled,
ByteBufCodecs.BOOL,
EnabledModifiersComponent::nightVisionEnabled,
EnabledModifiersComponent::new
);

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof EnabledModifiersComponent that)) return false;
return miningEnabled == that.miningEnabled && inertiaEnabled == that.inertiaEnabled && speedModifierEnabled == that.speedModifierEnabled;
return miningEnabled == that.miningEnabled && inertiaEnabled == that.inertiaEnabled && speedModifierEnabled == that.speedModifierEnabled && nightVisionEnabled == that.nightVisionEnabled;
}

@Override
public int hashCode() {
return Objects.hash(inertiaEnabled, speedModifierEnabled, miningEnabled);
return Objects.hash(inertiaEnabled, speedModifierEnabled, miningEnabled, nightVisionEnabled);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.leclowndu93150.modular_angelring.common;

import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;

import java.util.List;

public class NightVisionModuleItem extends Item {
public NightVisionModuleItem(Properties pProperties) {
super(pProperties);
}

@Override
public int getMaxStackSize(ItemStack stack) {
return 1;
}

@Override
public void appendHoverText(ItemStack pStack, TooltipContext pContext, List<Component> pTooltipComponents, TooltipFlag pTooltipFlag) {
pTooltipComponents.add(Component.literal("Gives Night Vision").withStyle(ChatFormatting.GRAY));
if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(),InputConstants.KEY_LSHIFT)){
pTooltipComponents.add(Component.literal("The texture is so bad i'm gonna change it soon.").withStyle(ChatFormatting.GRAY));
}
}
}
Original file line number Diff line number Diff line change
@@ -18,18 +18,25 @@
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.network.PacketDistributor;
import top.theillusivec4.curios.api.CuriosApi;
import top.theillusivec4.curios.api.SlotResult;

import java.util.Optional;

import static com.leclowndu93150.modular_angelring.common.AngelRingModules.getNightVisionModifier;

@EventBusSubscriber(modid = AngelRingMain.MODID, value = Dist.CLIENT)
public class AngelRingClientEvents {

static boolean isNightVisionEnabled = false;

@SubscribeEvent
public static void onKey(InputEvent.Key event) {
Player player = Minecraft.getInstance().player;
Minecraft minecraft = Minecraft.getInstance();
if (player == null) return;
Optional<SlotResult> slotResult = CuriosApi.getCuriosInventory(player).flatMap(handler -> handler.findFirstCurio(ItemRegistry.ANGEL_RING.get()));
if (slotResult.isPresent()) {
@@ -60,7 +67,46 @@ public static void onKey(InputEvent.Key event) {
level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.NOTE_BLOCK_BELL.value(), SoundSource.PLAYERS, 0.4f, 0.09f);
}
}

if (KeyBindRegistry.NIGHT_VISION_MODULE.get().consumeClick() && angelRingStack.has(DataComponentRegistry.NIGHT_VISION_MODIFIER)) {
PacketDistributor.sendToServer(new KeyPressedPayload(3));
if (!data.nightVisionEnabled()) {
player.displayClientMessage(Component.literal("Night Vision 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("Night Vision 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);
}
}
}

}


@SubscribeEvent
public static void onClientTick(ClientTickEvent.Pre event){
double initialGamma = 1.0;
double maxGamma = 9999.0;
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);
if(getNightVisionModifier(angelRingStack) && data.nightVisionEnabled()){
if (Minecraft.getInstance().options.gamma().get() != maxGamma) {
Minecraft.getInstance().options.gamma().set(maxGamma);
}
}
if (!data.nightVisionEnabled() && Minecraft.getInstance().options.gamma().get() != initialGamma) {
Minecraft.getInstance().options.gamma().set(initialGamma);
}
}

if(slotResult.isEmpty() && Minecraft.getInstance().options.gamma().get() != initialGamma){
Minecraft.getInstance().options.gamma().set(initialGamma);
}
}


}
Loading

0 comments on commit 78adfcd

Please sign in to comment.