From cf267a959d130a22ea4e700621a5298e14b3878c Mon Sep 17 00:00:00 2001 From: TGdoesCode Date: Tue, 14 Apr 2026 13:22:11 +0200 Subject: [PATCH] ender armor --- gradle.properties | 2 +- .../tggamesyt/szar/EnderArmorMaterial.java | 57 ++++++++++++++ src/main/java/dev/tggamesyt/szar/Szar.java | 74 ++++++++++++++++++ .../resources/assets/szar/lang/en_us.json | 7 +- .../assets/szar/models/item/ender_boots.json | 6 ++ .../szar/models/item/ender_chestplate.json | 6 ++ .../assets/szar/models/item/ender_helmet.json | 6 ++ .../szar/models/item/ender_leggings.json | 6 ++ .../assets/szar/textures/item/ender_boots.png | Bin 0 -> 299 bytes .../szar/textures/item/ender_chestplate.png | Bin 0 -> 348 bytes .../szar/textures/item/ender_helmet.png | Bin 0 -> 311 bytes .../szar/textures/item/ender_leggings.png | Bin 0 -> 309 bytes .../textures/models/armor/ender_layer_1.png | Bin 0 -> 1358 bytes .../textures/models/armor/ender_layer_2.png | Bin 0 -> 634 bytes .../data/szar/recipes/ender_boots.json | 15 ++++ .../data/szar/recipes/ender_chestplate.json | 16 ++++ .../data/szar/recipes/ender_helmet.json | 15 ++++ .../data/szar/recipes/ender_leggings.json | 16 ++++ 18 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 src/main/java/dev/tggamesyt/szar/EnderArmorMaterial.java create mode 100644 src/main/resources/assets/szar/models/item/ender_boots.json create mode 100644 src/main/resources/assets/szar/models/item/ender_chestplate.json create mode 100644 src/main/resources/assets/szar/models/item/ender_helmet.json create mode 100644 src/main/resources/assets/szar/models/item/ender_leggings.json create mode 100644 src/main/resources/assets/szar/textures/item/ender_boots.png create mode 100644 src/main/resources/assets/szar/textures/item/ender_chestplate.png create mode 100644 src/main/resources/assets/szar/textures/item/ender_helmet.png create mode 100644 src/main/resources/assets/szar/textures/item/ender_leggings.png create mode 100644 src/main/resources/assets/szar/textures/models/armor/ender_layer_1.png create mode 100644 src/main/resources/assets/szar/textures/models/armor/ender_layer_2.png create mode 100644 src/main/resources/data/szar/recipes/ender_boots.json create mode 100644 src/main/resources/data/szar/recipes/ender_chestplate.json create mode 100644 src/main/resources/data/szar/recipes/ender_helmet.json create mode 100644 src/main/resources/data/szar/recipes/ender_leggings.json diff --git a/gradle.properties b/gradle.properties index 9b74f64..88f5d53 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.20.1 yarn_mappings=1.20.1+build.10 loader_version=0.18.3 # Mod Properties -mod_version=26.4.14 +mod_version=26.4.14.1 maven_group=dev.tggamesyt archives_base_name=szar # Dependencies diff --git a/src/main/java/dev/tggamesyt/szar/EnderArmorMaterial.java b/src/main/java/dev/tggamesyt/szar/EnderArmorMaterial.java new file mode 100644 index 0000000..78628b8 --- /dev/null +++ b/src/main/java/dev/tggamesyt/szar/EnderArmorMaterial.java @@ -0,0 +1,57 @@ +package dev.tggamesyt.szar; + +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.recipe.Ingredient; +import net.minecraft.sound.SoundEvent; +import net.minecraft.sound.SoundEvents; + +import static dev.tggamesyt.szar.Szar.MOD_ID; + +public class EnderArmorMaterial implements ArmorMaterial { + + public static final EnderArmorMaterial INSTANCE = new EnderArmorMaterial(); + + private static final int[] BASE_DURABILITY = {14, 17, 18, 12}; + private static final int[] PROTECTION = {4, 9, 11, 4}; + + @Override + public int getDurability(ArmorItem.Type type) { + return BASE_DURABILITY[type.getEquipmentSlot().getEntitySlotId()] * 42; + } + + @Override + public int getProtection(ArmorItem.Type type) { + return PROTECTION[type.getEquipmentSlot().getEntitySlotId()]; + } + + @Override + public int getEnchantability() { + return 20; + } + + @Override + public SoundEvent getEquipSound() { + return SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE; + } + + @Override + public Ingredient getRepairIngredient() { + return Ingredient.ofItems(Szar.ENDER_INGOT); + } + + @Override + public String getName() { + return MOD_ID + ":ender"; + } + + @Override + public float getToughness() { + return 4F; + } + + @Override + public float getKnockbackResistance() { + return 0.2F; + } +} diff --git a/src/main/java/dev/tggamesyt/szar/Szar.java b/src/main/java/dev/tggamesyt/szar/Szar.java index 77e834a..44af583 100644 --- a/src/main/java/dev/tggamesyt/szar/Szar.java +++ b/src/main/java/dev/tggamesyt/szar/Szar.java @@ -415,6 +415,10 @@ public class Szar implements ModInitializer { entries.add(Szar.ENDER_ORE_ITEM); entries.add(Szar.RAW_ENDER); entries.add(Szar.ENDER_INGOT); + entries.add(Szar.ENDER_HELMET); + entries.add(Szar.ENDER_CHESTPLATE); + entries.add(Szar.ENDER_LEGGINGS); + entries.add(Szar.ENDER_BOOTS); entries.add(Szar.SUPER_DIAMOND); entries.add(Szar.SUPER_APPLE); // blueprint stuff @@ -1457,8 +1461,78 @@ public class Szar implements ModInitializer { } }); TheEndBiomeData.addEndBiomeReplacement(BiomeKeys.END_HIGHLANDS, Szar.CHORUS_FOREST, 0.7); + ServerLivingEntityEvents.ALLOW_DAMAGE.register((entity, source, amount) -> { + if (!(entity instanceof PlayerEntity player)) return true; + + // Check if wearing full Ender armor (optional — remove if you want any piece to trigger) + boolean wearingFullSet = + player.getInventory().getArmorStack(0).isOf(ENDER_BOOTS) && + player.getInventory().getArmorStack(1).isOf(ENDER_LEGGINGS) && + player.getInventory().getArmorStack(2).isOf(ENDER_CHESTPLATE) && + player.getInventory().getArmorStack(3).isOf(ENDER_HELMET); + + if (!wearingFullSet) return true; + + // If player would drop to <= 1 heart (2 HP) + if (player.getHealth() - amount <= 2.0F) { + + if (player.getWorld() instanceof ServerWorld world) { + teleportRandomly(player, world); + } + + return false; // CANCEL DAMAGE + } + + return true; + }); } + private static void teleportRandomly(PlayerEntity player, ServerWorld world) { + Random RANDOM = new Random(); + double x = player.getX(); + double y = player.getY(); + double z = player.getZ(); + + for (int i = 0; i < 16; i++) { + double newX = x + (RANDOM.nextDouble() - 0.5) * 32; + double newY = y + RANDOM.nextInt(16) - 8; + double newZ = z + (RANDOM.nextDouble() - 0.5) * 32; + + BlockPos pos = BlockPos.ofFloored(newX, newY, newZ); + + if (world.isAir(pos)) { + player.teleport(newX, newY, newZ); + world.playSound(null, player.getBlockPos(), + net.minecraft.sound.SoundEvents.ENTITY_ENDERMAN_TELEPORT, + player.getSoundCategory(), 1.0F, 1.0F); + break; + } + } + } + public static final Item ENDER_HELMET = Registry.register( + Registries.ITEM, + new Identifier(Szar.MOD_ID, "ender_helmet"), + new ArmorItem(EnderArmorMaterial.INSTANCE, ArmorItem.Type.HELMET, new Item.Settings()) + ); + + public static final Item ENDER_CHESTPLATE = Registry.register( + Registries.ITEM, + new Identifier(Szar.MOD_ID, "ender_chestplate"), + new ArmorItem(EnderArmorMaterial.INSTANCE, ArmorItem.Type.CHESTPLATE, new Item.Settings()) + ); + + public static final Item ENDER_LEGGINGS = Registry.register( + Registries.ITEM, + new Identifier(Szar.MOD_ID, "ender_leggings"), + new ArmorItem(EnderArmorMaterial.INSTANCE, ArmorItem.Type.LEGGINGS, new Item.Settings()) + ); + + public static final Item ENDER_BOOTS = Registry.register( + Registries.ITEM, + new Identifier(Szar.MOD_ID, "ender_boots"), + new ArmorItem(EnderArmorMaterial.INSTANCE, ArmorItem.Type.BOOTS, new Item.Settings()) + ); + public static final Block TIC_TAC_TOE_BLOCK = Registry.register( Registries.BLOCK, new Identifier(MOD_ID, "tictactoe"), new TicTacToeBlock(AbstractBlock.Settings.create().strength(2f)) diff --git a/src/main/resources/assets/szar/lang/en_us.json b/src/main/resources/assets/szar/lang/en_us.json index ee91088..7f6100d 100644 --- a/src/main/resources/assets/szar/lang/en_us.json +++ b/src/main/resources/assets/szar/lang/en_us.json @@ -218,5 +218,10 @@ "item.szar.hun_disc": "Music Disc", "item.szar.hun_disc.desc": "Kölcsey Ferenc - Hungarian Anthem", "item.szar.orban_spawn_egg": "Orbán Spawn Egg", - "item.szar.magyar_spawn_egg": "Magyar Spawn Egg" + "item.szar.magyar_spawn_egg": "Magyar Spawn Egg", + + "item.szar.ender_chestplate": "Ender Chestplate", + "item.szar.ender_leggings": "Ender Leggings", + "item.szar.ender_boots": "Ender Boots", + "item.szar.ender_helmet": "Ender Helmet" } diff --git a/src/main/resources/assets/szar/models/item/ender_boots.json b/src/main/resources/assets/szar/models/item/ender_boots.json new file mode 100644 index 0000000..8c812b9 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/ender_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:item/ender_boots" + } +} diff --git a/src/main/resources/assets/szar/models/item/ender_chestplate.json b/src/main/resources/assets/szar/models/item/ender_chestplate.json new file mode 100644 index 0000000..749f1a7 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/ender_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:item/ender_chestplate" + } +} diff --git a/src/main/resources/assets/szar/models/item/ender_helmet.json b/src/main/resources/assets/szar/models/item/ender_helmet.json new file mode 100644 index 0000000..98f73be --- /dev/null +++ b/src/main/resources/assets/szar/models/item/ender_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:item/ender_helmet" + } +} diff --git a/src/main/resources/assets/szar/models/item/ender_leggings.json b/src/main/resources/assets/szar/models/item/ender_leggings.json new file mode 100644 index 0000000..ac99e36 --- /dev/null +++ b/src/main/resources/assets/szar/models/item/ender_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "szar:item/ender_leggings" + } +} diff --git a/src/main/resources/assets/szar/textures/item/ender_boots.png b/src/main/resources/assets/szar/textures/item/ender_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2f6328677fbac76672c6995a5125e58ef61da8 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`4?JBQLn;{0Ow{E*6d=*MewGhg z;>m=lZ8LqEj?RB%zu{-{nQw^#K4!U_9yMhuWPM@Dd)$h+$zH6)w zH&vZ)ud|}uy3@;l`F)?SC24&O2ApZfVcRsazkHbz2@5{8zfU zv}QSj691Xc33Hp21T6gh7%y1%NycmHK46MIT=!5-Hoi}nV$xL^BV zlRVvn(L|AHPrLP+kUv3Rr(879wP5jXW|*HC;>fkp?FomQvF47o*ETV7Wd5)`nKRLw uu{%C=*8^4thX4Q1s4F-D{mKUND>K84q(;TpCM@(~>a2w$O9=w3P3ZT%4YeZ*!RvVE3 z#BU+!HX;GOQ)r0eBLQ3zW*3B@vDyd)a4}qx&j^QxCpG{91IE*2E;iuM@Yo1VpaqOR uXx&~v00030|7-^@D*ylh21!IgR09A}F1#W08JVd70000jsPTMYlIOM@|*r;JkN8x`L%YL7A&*>J1IENykK1GA&a2r{M8Kw=-okH(n+XNL4 zE{6~M>;n{*lmljtrTlXv6h>X6?&VBHl(}u|=%LKX`RUA--(ha?ub2Z6NN5qagE?sDgPAC)%UtL;+P4S#axl@^$I!%m2V_R8gh9QmM#m( zHFcG`9F?%dPQuOcUrE{g=iZ+dys&X&Y>ci*khoE^wqbIP;;b$pt)S2MLZ@QF*9%dM z`*pY(PgG^tIBE-gp8XT(>Hq(goW4W?ea!~)H8aE1)=I_9X@x~V5e83JKbLh*2~7a^ Crh4uG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/szar/textures/models/armor/ender_layer_1.png b/src/main/resources/assets/szar/textures/models/armor/ender_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f91ca875d75c116f32b8d6727f58665229bca23 GIT binary patch literal 1358 zcmV-U1+n^xP)Dk_3jEix!@ z(Z*Fm5M*vt5ELGWqHbI~y@>d4;gjq8jQlR+aNa#n?|ojc@O|^0@9%r&%x})joH^HS zYWerX+i&(^?xXkmdoG{pZ~AFhAE!afUWO>ElH zIspB}Ub=C9F;OJL^c zLgqBFX-z!(-8ukav#NXI2An3=O;zhZK8}1ad6ID>oTh%S{MLRJlbD1(K{qmeJXIIbyspFpWnElH0XGnSA28)jXTWJmUW};=>V?t+OPrntq^dU7!NPtG%*8Tf)+7+t&o2a@+9I0 ze#f&8)g|kdQpW2#UkQo1&Zegwz-eNo7pIAt_UeGs#MIXkc@vZrxRKH>3V3M2o9eU@ zo@`EF`Nvk%AE%X`l8f<}S%A|@&;9bY>uv)80RR6U90d9R000I_L_t&o0JsHujV`vK Q5dZ)H07*qoM6N<$f*$~#+5i9m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/szar/textures/models/armor/ender_layer_2.png b/src/main/resources/assets/szar/textures/models/armor/ender_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8315e6ce4ad2ca59727926443bbcb5f93e65c426 GIT binary patch literal 634 zcmV-=0)_pFP)(@GTJY3iuX?`3CS`f!MWxyW>9;pt`p^wBb%DH~&Kc%1vM)J-z^iDpc-# z@V~Q7d;V8bLkQ}J22}HF`bM6QPsHW%|FpO2oR*!{P?IA(1Qp4IRMjQrZ%eaOC2Lg5 z$ikfbuB%nwQ@_2#Cw9tjp5zo*)q4&cdAqqScSk8L3ckzZpKtBTQ#Px4kuShY=1w)_#s1JAf4B&NE@BPD zY*>_N_PkK6kSZ15AGRjwxIg_oTe9u>gLSLVJfZ~&Va93YoDaNI#?xrgjMt^%7FoCZob z=ng1mea;T^qO=ifaXugd8(zsmNWMxjL(z z6Lr0^CPy<13TzYC9CC9x#Aq{~w44oMaK(x*H2)m{0RR819)bk`000I_L_t&o0A82$ U+H*Rh`2YX_07*qoM6N<$f>&E500000 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/szar/recipes/ender_boots.json b/src/main/resources/data/szar/recipes/ender_boots.json new file mode 100644 index 0000000..df4d6d5 --- /dev/null +++ b/src/main/resources/data/szar/recipes/ender_boots.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "X X" + ], + "key": { + "X": { + "item": "szar:ender_ingot" + } + }, + "result": { + "item": "szar:ender_boots" + } +} \ No newline at end of file diff --git a/src/main/resources/data/szar/recipes/ender_chestplate.json b/src/main/resources/data/szar/recipes/ender_chestplate.json new file mode 100644 index 0000000..1b3fe94 --- /dev/null +++ b/src/main/resources/data/szar/recipes/ender_chestplate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "key": { + "X": { + "item": "szar:ender_ingot" + } + }, + "result": { + "item": "szar:ender_chestplate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/szar/recipes/ender_helmet.json b/src/main/resources/data/szar/recipes/ender_helmet.json new file mode 100644 index 0000000..a9a8e09 --- /dev/null +++ b/src/main/resources/data/szar/recipes/ender_helmet.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X" + ], + "key": { + "X": { + "item": "szar:ender_ingot" + } + }, + "result": { + "item": "szar:ender_helmet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/szar/recipes/ender_leggings.json b/src/main/resources/data/szar/recipes/ender_leggings.json new file mode 100644 index 0000000..9b8e583 --- /dev/null +++ b/src/main/resources/data/szar/recipes/ender_leggings.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X", + "X X" + ], + "key": { + "X": { + "item": "szar:ender_ingot" + } + }, + "result": { + "item": "szar:ender_leggings" + } +} \ No newline at end of file