Working Power Command and save data
build / build (push) Has been cancelled

This commit is contained in:
2026-08-07 16:59:33 +02:00
parent 91bdbbf8ff
commit f2a5083cc1
16 changed files with 136 additions and 24 deletions
@@ -1,5 +1,7 @@
package gamer.noir.curseenc.client.mixin; package gamer.noir.curseenc.client.mixin;
import gamer.noir.curseenc.client.value.GlobalVariable;
import gamer.noir.curseenc.data.AttachmentsServer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.LightTexture;
import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Final;
@@ -17,7 +19,7 @@ public class NightVisionMixin {
@ModifyVariable(method = "updateLightTexture" ,at = @At(value = "NEW", target = "(FFF)Lorg/joml/Vector3f;",ordinal = 0), ordinal = 6) @ModifyVariable(method = "updateLightTexture" ,at = @At(value = "NEW", target = "(FFF)Lorg/joml/Vector3f;",ordinal = 0), ordinal = 6)
float customNightVision(float original) { float customNightVision(float original) {
if (this.minecraft.player != null && this.minecraft.player.isSpectator()) { if (this.minecraft.player != null && GlobalVariable.nocturnal_Vision ) {
return 1 ; return 1 ;
} }
else { else {
@@ -1,9 +1,11 @@
package gamer.noir.curseenc.client package gamer.noir.curseenc.client
import gamer.noir.curseenc.client.key.Keys
import net.fabricmc.api.ClientModInitializer import net.fabricmc.api.ClientModInitializer
object CurseOfEienNoChiClient : ClientModInitializer { object CurseOfEienNoChiClient : ClientModInitializer {
override fun onInitializeClient() { override fun onInitializeClient() {
// This entrypoint is suitable for setting up client-specific logic, such as rendering. // This entrypoint is suitable for setting up client-specific logic, such as rendering.
Keys.initialize()
} }
} }
@@ -0,0 +1,53 @@
package gamer.noir.curseenc.client.key
import com.mojang.blaze3d.platform.InputConstants
import gamer.noir.curseenc.CurseOfEienNoChi
import gamer.noir.curseenc.client.value.GlobalVariable
import gamer.noir.curseenc.data.AttachmentsServer
import gamer.noir.curseenc.data.AttachmentsServer.Powers
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
import net.minecraft.client.KeyMapping
import net.minecraft.network.chat.Component
import net.minecraft.resources.ResourceLocation
import org.lwjgl.glfw.GLFW
object Keys {
val nocturnalVision: KeyMapping = KeyBindingHelper.registerKeyBinding(
KeyMapping(
"key.${CurseOfEienNoChi.MOD_ID}.nocturnal_vision", // The translation key for the key mapping.
InputConstants.Type.KEYSYM, // // The type of the keybinding; KEYSYM for keyboard, MOUSE for mouse.
GLFW.GLFW_KEY_N, // The GLFW keycode of the key.
"key.${CurseOfEienNoChi.MOD_ID}.keys_category" // The category of the mapping.
)
)
fun initialize() {
ClientTickEvents.END_CLIENT_TICK.register({ client ->
// Régler le fait que il reste activé et qu'il n'y a pas de vérification pour le désactiver quand on a plus le pouvoir
while (nocturnalVision.consumeClick()) {
val player = client.player
if (player != null) {
val power_list =player.getAttached(AttachmentsServer.Powers)
if (power_list?.contains(ResourceLocation.fromNamespaceAndPath(CurseOfEienNoChi.MOD_ID ,"nocturnal_vision") ) == true) {
if (GlobalVariable.nocturnal_Vision) {
GlobalVariable.nocturnal_Vision = false
client.player!!.sendSystemMessage(Component.literal("Nocturnal Vision disabled"))
} else {
GlobalVariable.nocturnal_Vision = true
client.player!!.sendSystemMessage(Component.literal("Nocturnal Vision enabled"))
}
}
else{
if (GlobalVariable.nocturnal_Vision) {
GlobalVariable.nocturnal_Vision = false
client.player!!.sendSystemMessage(Component.literal("Nocturnal Vision no longer exists"))
}
}
}
}
})
}
}
@@ -0,0 +1,6 @@
package gamer.noir.curseenc.client.value
object GlobalVariable {
@JvmField
var nocturnal_Vision = false
}
@@ -17,7 +17,6 @@ object CurseOfEienNoChi : ModInitializer {
ModItems.initialize() ModItems.initialize()
Effect.initialize() Effect.initialize()
ModCommands.initialize() ModCommands.initialize()
// This code runs as soon as Minecraft is in a mod-load-ready state. // This code runs as soon as Minecraft is in a mod-load-ready state.
// However, some things (like resources) may still be uninitialized. // However, some things (like resources) may still be uninitialized.
// Proceed with mild caution. // Proceed with mild caution.
@@ -1,5 +0,0 @@
package gamer.noir.curseenc.client
class AttachmentsClient {
var Nighte_vision = true
}
@@ -1,10 +0,0 @@
package gamer.noir.curseenc.client
import net.fabricmc.api.ClientModInitializer
object FabricClient: ClientModInitializer {
override fun onInitializeClient() {
//nop
}
}
@@ -0,0 +1,20 @@
package gamer.noir.curseenc.command
import net.minecraft.client.Minecraft
import net.minecraft.world.item.Items
import net.minecraft.world.item.Tier
import net.minecraft.world.item.crafting.Ingredient
enum class Materials: Tier {
DaggerSacrificialMaterial {
override fun getUses(): Int {
return 300
}
override fun getAttackDamageBonus(): Float {
return 1.5f
}
override fun getRepairIngredient(): Ingredient {
return Ingredient.of(Items.IRON_INGOT)
}
}
}
@@ -90,7 +90,7 @@ object ModCommands {
val argument_power = Commands.argument("Power", StringArgumentType.string()).suggests { context, builder -> val argument_power = Commands.argument("Power", StringArgumentType.string()).suggests { context, builder ->
builder.suggest("night_vision") builder.suggest("nocturnal_vision")
.suggest("hyper_speed") .suggest("hyper_speed")
.suggest("bat_mod") .suggest("bat_mod")
.suggest("...") .suggest("...")
@@ -0,0 +1,9 @@
package gamer.noir.curseenc.command
import net.minecraft.world.item.Item
import net.minecraft.world.item.Items
import net.minecraft.world.item.Items.registerItem
class SacrificialDagger: Item {
val dageur:Item = registerItem()
}
@@ -2,19 +2,19 @@ package gamer.noir.curseenc.item
import gamer.noir.curseenc.CurseOfEienNoChi import gamer.noir.curseenc.CurseOfEienNoChi
import gamer.noir.curseenc.effect.Effect import gamer.noir.curseenc.effect.Effect
import gamer.noir.curseenc.effect.GarlicStatus
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents.ModifyEntries import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents.ModifyEntries
import net.minecraft.core.Registry import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.resources.ResourceLocation import net.minecraft.resources.ResourceLocation
import net.minecraft.world.effect.MobEffect
import net.minecraft.world.effect.MobEffectInstance import net.minecraft.world.effect.MobEffectInstance
import net.minecraft.world.effect.MobEffects
import net.minecraft.world.food.FoodProperties import net.minecraft.world.food.FoodProperties
import net.minecraft.world.item.CreativeModeTabs import net.minecraft.world.item.CreativeModeTabs
import net.minecraft.world.item.Item import net.minecraft.world.item.Item
import net.minecraft.world.item.SwordItem
object ModItems { object ModItems {
@@ -28,22 +28,27 @@ object ModItems {
// Return the registered item! // Return the registered item!
return registeredItem return registeredItem
} }
val GARLIC_FOOD: FoodProperties = FoodProperties.Builder() val GARLIC_FOOD: FoodProperties = FoodProperties.Builder()
.alwaysEdible() .alwaysEdible()
.effect(MobEffectInstance(Effect.GARLIC_STATUS, 6 * 20, 0), 1.0f) .effect(MobEffectInstance(Effect.GARLIC_STATUS, 6 * 20, 0), 1.0f)
.build() .build()
val GARLIC: Item = register( val GARLIC: Item = register(
Item(Item.Properties().food(GARLIC_FOOD)), Item(Item.Properties().food(GARLIC_FOOD)),
"garlic" "garlic"
) )
val SACRIFICIAL_DAGGER: Item = register(
SwordItem(Test.INSTANCE,
Item.Properties()),
"sacrificial_dagger"
)
fun initialize() { fun initialize() {
ItemGroupEvents.modifyEntriesEvent(CreativeModeTabs.INGREDIENTS) ItemGroupEvents.modifyEntriesEvent(CreativeModeTabs.INGREDIENTS)
.register(ModifyEntries { entries: FabricItemGroupEntries -> .register(ModifyEntries { entries: FabricItemGroupEntries ->
entries.accept(GARLIC) entries.accept(GARLIC)
entries.accept(SACRIFICIAL_DAGGER)
}) })
} }
} }
@@ -1,6 +1,9 @@
{ {
"item.curseenc.garlic": "Garlic", "item.curseenc.garlic": "Garlic",
"item.curseenc.sacrificial_dagger": "Sacrificial D agger",
"effect.curseenc.garlic_status": "Garlic Status",
"effect.curseenc.garlic_status": "Garlic Status" "key.curseenc.keys_category": "Curse Of Eien No Chi",
"key.curseenc.nocturnal_vision": "Nocturnal Vision"
} }
@@ -0,0 +1,28 @@
{
"parent": "item/handheld",
"textures": {
"layer0": "curseenc:item/sacrificial_dagger"
},
"display": {
"thirdperson_righthand": {
"rotation": [45, 90, 0],
"translation": [ 0, 2.5, 0.5 ],
"scale": [ 0.68, 0.68, 0.68 ]
},
"firstperson_righthand": {
"rotation": [35, 90, 0],
"translation": [ 0, 4, 1.75 ],
"scale": [ 0.5, 0.5, 0.5 ]
},
"firstperson_lefthand": {
"rotation": [35, -90, 0],
"translation": [ 0, 4, 1.75 ],
"scale": [ 0.5, 0.5, 0.5 ]
},
"thirdperson_lefthand": {
"rotation": [45, -90, 0],
"translation": [ 0, 2.5, 0.5 ],
"scale": [ 0.68, 0.68, 0.68 ]
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 432 B